内容介绍
内容介绍
项目介绍
使用MPLAB开发,尝试让部分管脚实现触摸功能,并通过滑动实现呼吸灯速率切换。
完成的功能
将引脚上的PB4,PB5,PB6定义为一个触摸滑块,当左滑呼吸灯速度变快,右滑呼吸灯速率变慢
硬件介绍
SAME51J20A Curiosity Nano 评估套件(EV76S68A)是用于评估 SAME51J20A 微控制器(MCU)的硬件平台,由 MPLAB® X 集成开发环境(IDE)提供支持,支持MPLAB Harmony开发框架,集成低功耗与高性能特性,支持TrustZone安全技术和丰富外设。板载调试器支持数据可视化分析,适用于物联网终端、工业控制及人机交互场景。
- SAME51J20A 微控制器
- 一个用户 LED(黄色)
- 一个机械用户开关
- 板载调试器
- MPLAB X IDE 中的电路板识别
- 一个绿色电源/状态 LED
- 编程和调试
- 虚拟 COM 端口(CDC)
- 一个逻辑分析仪(DGI GPIO)
- USB 供电
- 可调目标电压
- MIC5353 由板载调试器控制的 LDO 稳压器
- 1.8-3.6v 输出电压
- 500 mA 最大输出电流(受环境温度和输出电压限制)
项目设计
本项目使用MPLAB开发
- 呼吸灯实现
配置一个100us的定时器,编写自己的定时器中断函数,采用定时器中断的方式来模拟pwm波。
uint16_t tick, duty, step, mode=20;
void tc0callback(TC_TIMER_STATUS status, uintptr_t context);
void tc0callback(TC_TIMER_STATUS status, uintptr_t context)
{
if(tick++ == 200)
tick = 0;
static uint16_t temp;
if(temp++ >= mode)
{
temp = 0;
if(duty >= 200)
step = -1;
if(duty <= 20)
step = 1;
duty += step;
}
if(tick > duty)
LED_Clear();
else
LED_Set();
}
当然不要忘记在主函数中将自己的定时器中断函数绑定并且开启定时器
TC0_TimerCallbackRegister(tc0callback, 0);
TC0_TimerStart();
- 触摸滑块实现
在 MCC Content Manager 中下载需要的touch库,并且在mcc中添加滑条以及滑条所对应的端口数量的端口号
、
配置后生成代码,可以在工程中找到touch_example.c的文件,可以找到官方给我们提供的触摸函数模版
void touch_mainloop_example(void){
/* call touch process function */
touch_process();
if(measurement_done_touch == 1u)
{
measurement_done_touch = 0u;
// process touch data
}
}
根据模版,编写自己的触摸函数
void touch_task()
{
touch_process();
if(measurement_done_touch == 1u)
{
measurement_done_touch = 0u;
if (KEY_TOUCHED_MASK == (get_scroller_state(0) & KEY_TOUCHED_MASK))
{
if ((qtm_scroller_data1[0].right_hyst & 0x08) == 0x08)
{
// slide right
mode = 20;
}
else if ((qtm_scroller_data1[0].left_hyst & 0x08) == 0x08)
{
// slide left
mode = 500;
}
}
// process touch data
}
}
- 硬件配置
系统框图以及引脚分布图
- 程序流程图
- main.c完整内容
心得体会
第一次接触pic这类的板卡,学习到很多东西,SAME51J20A 功能强大,且资源库资源丰富,以后会去实现给更多好玩的功能(虽然但是,MPLAB真的很不好用)
软硬件
元器件
团队介绍
个人
团队成员
LGX
评论
0 / 100
查看更多
猜你喜欢
Funpack4-2 - 用SAME51J20A实现触摸控制呼吸灯该项目使用了SAME51J20A Curiosity Nano 评估套件和自制的触摸扩展板,结合microchip的触摸外设控制器,实现了通过触摸按键调节呼吸灯亮度,通过触摸滑条来调节呼吸灯“闪烁速度”的设计,它的主要功能为:使用MPLAB开发,让部分管脚实现触摸功能,搭配自行设计的触摸扩展面板,通过按键和滑动实现呼吸灯速率切换。。
littlestudent
29
Funpack4-2 - 用SAME51J20A Curiosity Nano 触摸控制呼吸灯该项目使用了SAME51J20A Curiosity Nano,实现了触摸控制呼吸灯的设计,它的主要功能为:通过电容触摸模块实现左滑、右滑控制 WS2812B LED 呼吸灯的速率,并且在 OLED 上显示当前速度。
学嵌入式的Momo
33
Funpack4-2 - 基于SAME51J20A开发板实现触摸呼吸灯该项目使用了MPLAB开发,实现了呼吸灯触摸控制的设计,它的主要功能为:通过触摸按键,控制LED呼吸闪烁。
CX反C
20