Part Number:ADS8686S
我在使用stm32来控制并读取ADS8686S数据时出现AIN0-7八个通道数据出现交替性重复的问题,而BIN0-7的数据就能一一对应。这个问题是我在对应的评估板上没有遇到的,使用同样的代码,评估板上的现象就比较正常。
重复的现象是:AIN1读取AIN0的波形,AIN2读取AIN3的波形,AIN5读取AIN4的波形,AIN6读取AIN7的波形,ALDO读取AVDD的波形等现象,而AIN0、AIN3、AIN4、AIN7、AVDD和BIN0-7就是读取本通道信号的数据。不管是使用序列模式,还是发送CHANNEL_SEL寄存器选择单独的一对通道,现象是一致的。由于在评估板上的现象是正常的,所以排除了软件代码的原因。在芯片手册中,描述说“避免在 REFCAP 引脚和去耦电容器之间放置过孔。”但是在我测试的板卡上,没有避免这个问题,不知道是不是这个原因造成的。或者软件模式下的模式配置引脚的外接的电阻会不会产生相应的影响。
Kailyn Chen:
cp Huang 说:描述说“避免在 REFCAP 引脚和去耦电容器之间放置过孔。”但是在我测试的板卡上,没有避免这个问题,不知道是不是这个原因造成的。
我认为不是这个原因造成的。放置过孔会增加去耦电容和器件之间的电感并降低去耦电容的有效性。 此外,也是为了避免防止过孔也是为了确保电容器具有短的低阻抗接地回路。
cp Huang 说:AIN1读取AIN0的波形,AIN2读取AIN3的波形,AIN5读取AIN4的波形,AIN6读取AIN7的波形,ALDO读取AVDD的波形等现象,而AIN0、AIN3、AIN4、AIN7、AVDD和BIN0-7就是读取本通道信号的数据。不管是使用序列模式,还是发送CHANNEL_SEL寄存器选择单独的一对通道,现象是一致的。
也就是AIN1,AIN2和AIN5,AIN6读取的数据是不对的,我再看下这个问题。
,
cp Huang:
好的,谢谢,问题已经解决了。我在尝试将写入的配置寄存器数据信息读取出来,然后与写入的数据进行对比,发现读取的数据在最后两位出现异常。最后两位数据始终是00或者11,当写入数据为01的时候,读取的数据为00,而写入数据为10的时候,读取的数据为11,发送00和11则是对应的。这个现象与AI上表现出来的现象是能够匹配上的,因为AIN_xA通道的选择是在最后四位,比如通道选择AIN_1A发送的后四位为0001,而写入的数据实际上是0000,为通道AIN_0A的数据。原因是由于SPI的模式选择造成的,在ADS8686S中描述的是使用的是SPI 00模式,即空闲状态为低电平,在上升沿采样数据。在我的代码中使用的模式是SPI 11,即空闲状态位高电平,在上升沿采样数据。而实际上,改为模式10(空闲状态为高电平,在下升沿采样数据)后,读取寄存器能够与写入的寄存器匹配,ADC读取的数据也正常了。11模式和10模式的差异是前者是下降沿采样数据后者是上升沿采样,模式的差异使得数据写入时序出现了偏差,导致不能正常的写入寄存器数据信息。之前在评估板上能够读取正常的数据,可能是因为stm32和ADS8686S之间是由杜邦线连接,造成信号的延时,时序刚好能够匹配上。
,
Kailyn Chen:
非常感谢您的反馈和分享。如果其他客户遇到类似问题,也是一个参考。感谢。
那这个帖子我暂时就先关闭了,后续有问题,再讨论。