打印
[CAPSENSE™]

【英飞凌PSOC 4000T DIY】电容4按键测试检测实验

[复制链接]
49|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
wuyu40|  楼主 | 2025-4-30 13:40 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
首先通过链接: HYPERLINK "https://www.infineon.com/cms/en/product/microcontroller/32-bit-psoc-arm-cortex-microcontroller/psoc-4-32-bit-arm-cortex-m0-mcu/psoc-4000-entry-level/psoc-4000t/"
找到ModusToolbox™ ,该软件是支持 Infineon 器件的开发工具和嵌入式资源的集合。ModusToolbox™ 工具包包括桌面应用程序,支持创建新的嵌入式项目、管理软件资源、配置设备外设和中间件,以及用于编译、编程和调试的多个 IDE 选项。支持Windows、Linux和MacOS。这些 ModusToolbox™ 应用程序利用了大量 GitHub 托管的存储库,其中包括来自 Infineon 及其合作伙伴的代码示例、板级支持包和中间件。中间件库包括 CAPSENSE™ HMI、连接性、机器学习、图形、安全性等。要注意的是这个软件只能在win10或者以上系统运行,某些低版本插件还要升级才能完成全部功能测试;如图所示打开软件安装其他调试软件,要注意安装文件的版本,如果低了在使用时会出现莫名其妙的问题。

打开软件Eclipse IDE for ModusToolbox™ 3.4,新建工程,选择合适芯片,如图:

在next的对话框中选择合适传感器:

选择最后一项4个金属按键传感器DEMO生成代码,编译之后生成代码下载调试:


如果需要在电脑端观察液位波形图,可以打开CAPSENSE Tuner7.10,这里要注意这个版本需要自动升级,不然不会出现I2C接口,没办法接收数据。所以重新安装了部分软件,将ModusToolbox™Toolspackage3.40版本升级为3.50版本,再打开工程,运行CAPSENSE Tuner8.0依次进行设置,注意主板上的拨码要设置到I2C,在下图上边的圆框中有三个按键,第一个时进行连接方式配置,第二个是连接,第三个是启动传感器波形运行界面:

运行主板上代码,并且启动CAPSENSE Tuner8.0之后,按动金属键会有如下波形;

当按动力度变化也能在CAPSENSE Tuner8.0上观察到波形;

还能在键盘上方观察到LED随按键的反应;

然后阅读代码:
主函数完成初始化电容传感器
初始化tuner通信I2C协议模块
用3种不同模式扫描传感器
根据按键传感器状态控制LED
void led_control()                   //LED控制函数
{if(CAPSENSE_WIDGET_INACTIVE!=Cy_CapSense_IsWidgetActive(CY_CAPSENSE_BUTTON0_WDGT_ID, &cy_capsense_context))  //电容传感器按下点亮LED
{Cy_GPIO_Write(CYBSP_KEYPAD_LED1_PORT,CYBSP_KEYPAD_LED1_NUM,CYBSP_LED_ON); }
  else
  {Cy_GPIO_Write(CYBSP_KEYPAD_LED1_PORT,CYBSP_KEYPAD_LED1_NUM,CYBSP_LED_OFF);}   if(CAPSENSE_WIDGET_INACTIVE!=Cy_CapSense_IsWidgetActive(CY_CAPSENSE_BUTTON1_WDGT_ID,&cy_capsense_context))  //电容传感器按下点亮对应LED
{Cy_GPIO_Write(CYBSP_KEYPAD_LED2_PORT,CYBSP_KEYPAD_LED2_NUM,CYBSP_LED_ON);}
else{Cy_GPIO_Write(CYBSP_KEYPAD_LED2_PORT,CYBSP_KEYPAD_LED2_NUM,CYBSP_LED_OFF);}
if(CAPSENSE_WIDGET_INACTIVE!=Cy_CapSense_IsWidgetActive(CY_CAPSENSE_BUTTON2_WDGT_ID, &cy_capsense_context))
{Cy_GPIO_Write(CYBSP_KEYPAD_LED3_PORT,CYBSP_KEYPAD_LED3_NUM,CYBSP_LED_ON);}
    else   {Cy_GPIO_Write(CYBSP_KEYPAD_LED3_PORT,CYBSP_KEYPAD_LED3_NUM,CYBSP_LED_OFF);}
if(CAPSENSE_WIDGET_INACTIVE!=Cy_CapSense_IsWidgetActive(CY_CAPSENSE_BUTTON3_WDGT_ID, &cy_capsense_context))
{Cy_GPIO_Write(CYBSP_KEYPAD_LED4_PORT,CYBSP_KEYPAD_LED4_NUM,CYBSP_LED_ON);}
    else
{Cy_GPIO_Write(CYBSP_KEYPAD_LED4_PORT,CYBSP_KEYPAD_LED4_NUM, CYBSP_LED_OFF);}
}
#endif

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

5

主题

23

帖子

0

粉丝