背景:由于更换采样芯片,需要移植程序。
问题1:采样速率从960SPS(1.04ms)改为3571SPS(280us),其他设置未变,20ms从采样点20个改为72个,但是采集数据符合3.75个周期,理论应为一个周期。
分析:单片机读取RDY标志位的时间超过了280us。
解决方法:IIC设置从模拟方式改为硬件方式,scl引脚的频率改为400kHz。再次获取这20ms的AD值,绘制出来的图形符合一个周期。满足要求!
问题2:由于该采样芯片还有温度功能,切换温度和AD功能(修改config register的IS_MODE),读取输出的数值不是温度值。
分析:分别配置AD功能、温度功能,SDA引脚可以读取到正确的数值。两个功能交叉进行,获取的温度值错误。调试时,断点打在读取温度结果的代码处,再运行读取温度值的代码,可以获得正确温度值。
解决方法:配置采样芯片需要一段时间(1ms以上)才可以读取数值,采样速率选择了3571sps(280us),比较极限,不适合切换功能。只能降低采样速率或者选择其中一种功能来使用。
问题3:采样芯片有20位数值,温度值读取不准确。
分析:
20位数据的读取结果顺序:
高16位来自conversion register
低4位来自conversion_EXTRA register
Temperature data are represented as a 14-bit result that is left-justified within the 20-bit conversion result. ----摘自数据手册
解决方法:14位选择高16位的数值右移2位。