我现在用的是CY8CKIT-040这一套件搭配着CY8CKIT-024屏蔽板,来实现实例项目“10厘米的接近感应”,参考文档是“AN92239_Proximity_Sensing_with_CapSense”。
所有的配置和代码用的都是官网上下载的。现在我想通过原始计数raw counts和公式文档AN85951中的公式3-9来计算电容值Cs,不知道这样一种方法是否具有可行性?
但是目前遇到的困难是无法知道公式3-9中其他必要的参数,因为示例中用得是CapSense CSD v2.6,不能通过查看CSD配置来获得所有参数,比如补偿IDAC和调制IDAC的电流,以及感应时钟频率Fsw等。
另外想问一下,是否有其他方法能够获得电容Cs的值?如果有的话,应该如何获取读数呢?
已解决! 转到解答。
我们假设你参考的工程名称是 “Proximity_Distance_040”, 在这个工程中调校模式选择的是 Manual,使能了 auto-calibration 功能,感应时钟频率Fsw 是组件参数设定的,调制 IDAC 和补偿 IDAC 的值是芯片上电是根据算法计算得到的。CapSense 组件设定,接近传感器的 Sense clock Divider 是 2,模式是 PRS-Auto,系统时钟 HFCLK 频率是 12MHz。根据下图得知,Fsw 的计算值为:
Fsw = (HFCLK/ASD)/4 = (12MHz/2)/4 = 1.5MHz
调制 IDAC 和补偿 IDAC 的值是系统计算得到的,所以没有办法得知具体指,只能在芯片上电以后通过代码读取出来。你可以在 main.c 中声明下面两个数组,然后直接把接近传感器的两个 IDAC 值读取出来,如果你没有修改过工程的话,接近传感器 sensor 的数组元素ID应该是0, 所以CapSense_modulationIDAC[0] 和 CapSense_compensationIDAC [0] 中存放着接近传感器 sensor 的两个 IDAC 计算值。我们假设两个值都是5,那么实际的 Imod = 5 * 1200nA = 6uA, Icomp = 5*1200nA = 6uA.
extern uint8 CapSense_modulationIDAC[CapSense_TOTAL_SENSOR_COUNT];
extern uint8 CapSense_compensationIDAC[CapSense_TOTAL_SENSOR_COUNT];