关于ADS1118的使用问题,低温下出现异常
我的ADS1118在室外较低温度下(北京零下3、4度)工作异常,开始以为是串口232芯片或单片机出了问题,但是最后还是确定是ADC出了问题。
具体如下:
当温度降低时(大概6、7度),ADC完成一次转换时间变长,当温度继续下降,ADC就完成不了转换了。
我用示波器观察了下,当在室内10度多的时候工作正常,我是每200ms读取上一次ADC转换数据,并开始下一次的转换,因此在示波器上能看到MISO口(设置成5V,1s)每秒钟大概有5次转换进行;当我把电路板放在室外后,上述较为规律的波形就会出现异常,具体表现为某一次转换时间变长;当温度继续下降时,ADC的一次转换就无法完成,由于我的程序中有一个判断ADC转换是否完成的while语句,所以程序就一直卡在这里不断读取ADC数据,示波器里看就是单片机不断地向ADC发送数据的波形了。
总共焊接了3个板子,都有上述问题
我的单片机用的是Atemga32a,ADC设置的是8sps,用的是AIN0 AIN1的差分输入
do
{
ADC_dat[0] = SPI_MasterTransmit(ADC_cmd[0]);
ADC_dat[1] = SPI_MasterTransmit(ADC_cmd[1]);
ADC_dat[2] = SPI_MasterTransmit(ADC_cmd[0]);
ADC_dat[3] = SPI_MasterTransmit(ADC_cmd[1]);
}
while(ADC_dat[3] & 0x01);
最后一位一直是1,所以一直在这个while循环里了
我有些怀疑是电源的问题,因为芯片本身都经受过高低温测试,不会出现连续3片都出现问题的情况。
想问下你这套系统是如何给ADS1118提供电源的,提供的是多少电压?你可以测量下在低温时电压是否正常。
如果你有ADS1118的EVM板的话也可以将该EVM板置于低温下看是否正常工作以完全排除芯片的影响。
我是用Config Register转换完成的标志位(CNV_RDY_FL)来判断转换是否完成的,后来在这里查了一下,说要用9PIN来判断转换是否完成,和DS上写的不太一样。
问题就出在了这里应该。