Part Number:ADS8688
在调试ADS8688的过程中遇到了一个问题,就是在芯片在掉电不充分的情况下,比如电压降到2.4V,这时突然加电至5V的正常电压。这种情况下读到的转换结果是错误的,固定为0xffff,且无法通过RST管脚进行复位或掉电。只有通过彻底断电才能解决。我们使用的是单次转换模式。下面是部分代码。
ads8688_reset(&ads8688_OBJ); // 初始化结构体,拉低RST管脚1us。
delay20ms(); //延时20ms
ads8688_range_selc (&ads8688_OBJ, CH2, BIPOLAR_VREF_0P625);
ads8688_range_selc (&ads8688_OBJ, CH3, BIPOLAR_VREF_0P625);
ads8688_range_selc (&ads8688_OBJ, CH4, BIPOLAR_VREF_0P625);
ads8688_manual_mode(&ads8688_OBJ, CMD_MAN_CH_2);
lastdata[0][0] = ads8688_manual_mode (&ads8688_OBJ, CMD_MAN_CH_3);
lastdata[1][0] = ads8688_manual_mode (&ads8688_OBJ, CMD_MAN_CH_4);
lastdata[2][0] = ads8688_manual_mode (&ads8688_OBJ, CMD_MAN_CH_2);
1、这种情况是什么原因造成的,有没有解决办法?
2、我们的代码是否有问题,怎么调整?
Amy Luo:
您好,
将供电电压降到2.4V时,SPI控制接口与主控端控制电平就不再兼容,SPI通信就会出现问题,即使供电电压恢复至正常5V供电,SPI通信时序无法恢复至正常,因此在这种情况下读到的转换结果是错误的。
nuanfeng liu 说:且无法通过RST管脚进行复位或掉电
这里具体是什么现象,为什么说“无法通过RST管脚进行复位或掉电”
nuanfeng liu 说:
ads8688_range_selc (&ads8688_OBJ, CH2, BIPOLAR_VREF_0P625); ads8688_range_selc (&ads8688_OBJ, CH3, BIPOLAR_VREF_0P625); ads8688_range_selc (&ads8688_OBJ, CH4, BIPOLAR_VREF_0P625); ads8688_manual_mode(&ads8688_OBJ, CMD_MAN_CH_2);
lastdata[0][0] = ads8688_manual_mode (&ads8688_OBJ, CMD_MAN_CH_3); lastdata[1][0] = ads8688_manual_mode (&ads8688_OBJ, CMD_MAN_CH_4); lastdata[2][0] = ads8688_manual_mode (&ads8688_OBJ, CMD_MAN_CH_2);
我没看明白上述代码的含义,您要执行什么操作呢?
,
nuanfeng liu:
可能是我描述的不全面,我们设备在使用过程中会出现掉电在加电的情况,这个过程中会遇到电压没掉到底又上电的情况。MCU与AD采用相同的电源,不存在电平不兼容的情况。2v多的时候单片机还是可以正常工作的。当电压恢复5V后,spi通信是正常的,读写寄存器的值也没问题。就是转换结果一直是0xFFFF。说明书上说拉低RST管脚大于400nS可以复位所有寄存器的值,当我们复位并初始化寄存器值之后,转换结果依然是0xFFFF。
意思就是AD一旦出现欠压工作状态,除了重新从零加电,AD结果总是错的。
我发的部分代码就是配置量程和读取转换结果的代码。正常情况下,结果都是对的。
,
Amy Luo:
在正常状态下拉低RST管脚大于400nS,然后再拉高,是否可以正常转换输出正确转换结果?
,
nuanfeng liu:
可以,只要电源不出现问题,其它操作都正常。
,
Amy Luo:
我仔细查看了手册,看到如下截图信息,数字电源DVDD的范围可低至1.65V,但为保证手册规定下的性能则至少需要2.7V。
,
nuanfeng liu:
能保证电源一直稳定自然是没问题,我现在要解决的是在芯片出现异常的情况下,如何复位芯片?手册介绍的复位时序不能有效复位。
,
Amy Luo:
我上面的意思是如果在工作期间,ADC的供电电压降到2.4V(低于2.7V)应该会使内部复位电路异常,即使后来恢复至正常工作电压。如果让ADC恢复正常,恐怕只能像您上面所述通过断电解决。