因为项目有12路模拟量需要转换,所以使用DG408DY进行单路选通到ADS8332进行AD转换,在调试过程中遇到几个问题:
ADS8332的寄存器配置为:0xE6FD
1 如果不间断读取12路数据,那么读出的码值不准确,如果适当的增加延时(至少1ms),那么读出的数据也比较准确;
如果不间断只读取一路数据更接近实际值;
这种现象是逐次逼近型AD的特点么?大概代码如下
DG408DY_IO_Switch(0);//切换到第一路模拟量进行采样
Delay_ms(1);
u16 val[0] = ADS8332_ReadData(ADS8332_Channel_0);
val[0] = ADS8332_ReadData(ADS8332_Channel_0);//如果不连续读取两次,则采样的数据是第上一模拟量即第十二路的数据
DG408DY_IO_Switch(1);//切换到第二路模拟量进行采样
Delay_ms(1);
val[1] = ADS8332_ReadData(ADS8332_Channel_0);
val[1] = ADS8332_ReadData(ADS8332_Channel_0);
。。。。。
DG408DY_IO_Switch(11);//切换到第十二路模拟量进行采样
Delay_ms(1);
val[11] = ADS8332_ReadData(ADS8332_Channel_0);
val[11] = ADS8332_ReadData(ADS8332_Channel_0);
2 如果ADS8332的寄存器配置成自动模式即:0x8FD,那么要怎么读取转换值呢,因为是8个通道进行自动循环采样和转换的,那读取的时候 是不用发送通道选择数据的,那读取的数据怎么知道是0~8哪个通道的数据呢?Datasheet里好像没有介绍
3 有没有ADS8332的例程代码,自动模式和手动模式的