如何基于PSoC® 4000T 测量CapSense Sensor的 Cshield 和 Cp? 1. 概述 PSoC® 4000T 是英飞凌(Infineon)推出的第五代CAPSENSE™ 技术微控制器,集成超低功耗触控功能。可以通过 自测库(BIST)实现 Cshield(屏蔽电容) 与 Cp(寄生电容) 的高精度测量。 2. 硬件配置 2.1 传感器设计 - 自电容模式(CSD):
传感器直连至 PSoC 的 CapSense 模块(如 CSD0),通过单端测量获取原始电容值。 - 互电容模式(CSX):
使用发射(Tx)和接收(Rx)电极对,通过差分测量计算互电容(CM)。
2.2 屏蔽层配置 - 驱动屏蔽技术:
在传感器下方布置屏蔽电极,通过 CSD_SHIELD 引脚连接至专用驱动电路,动态调节屏蔽电压达到防水的效果。
3. 软件实现 3.1 Setup EZI2C的buffer //ezi2c buffer setup typedef struct I2CRamBuffer { uint16_t u16_cshieldValue; uint16_t u16_cpValue[CY_CAPSENSE_SENSOR_COUNT]; }I2CRamBuffer; struct I2CRamBuffer MyI2CRegs; 3.2 初始化 CapSense 模块 /* Initialize MSCCAPSENSE™ */ initialize_capsense(); 3.3 设置需要测试的参数的标志位 Cy_CapSense_RunSelfTest(CY_CAPSENSE_BIST_SNS_CAP_MASK |CY_CAPSENSE_BIST_SHIELD_CAP_MASK , &cy_capsense_context); 3.4 测量Cp(寄生电容) MyI2CRegs.u16_cpValue = CY_CAPSENSE_BIST_BUTTON1_ROW0_COL0_SNS_CAP_VALUE; 3.5 测量Cshield(屏蔽电容) MyI2CRegs.u16_cshieldValue = *(uint32_t*)(cy_capsense_context.ptrBistContext->ptrChShieldCap); 4:关键API解释: Function definition | | cy_en_capsense_bist_status_t Cy_CapSense_RunSelfTest( uint32_t testEnMask, cy_stc_capsense_context_t * context) | The function performs various self-tests on all the enabled widgets and sensors in the project. Select the required set of tests using the bit-mask in testEnMask parameter. testEnMask: - CY_CAPSENSE_BIST_CRC_WDGT_MASK - CY_CAPSENSE_BIST_SNS_INTEGRITY_MASK - CY_CAPSENSE_BIST_SNS_CAP_MASK - CY_CAPSENSE_BIST_ELTD_CAP_MASK - CY_CAPSENSE_BIST_SHIELD_CAP_MASK -CY_CAPSENSE_BIST_RUN_AVAILABLE_SELF_TEST_MASK |
附带的示例代码可以使用这些函数测量Cshield 和 Cp,然后通过 EZ_I2C 输出测试结果。 Eclipse IDE for ModusToolbox™ Version:3.5.0 Reference:
|