首先通过链接: 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
|