TI中文支持网
TI专业的中文技术问题搜集分享网站

ADS1258调试问题

在调试ADS1258中遇到的问题:

通过SPI读写ADS1258内部的寄存器均是正确的,

但是设置auto scan模式,读Vref的值时和预期的差别非常大(读到的值在1E0A16H左右跳动,跳动在最低二位,或其他范围内跳动),

在断电后再次上电时,用上述方法去读VREF,其值与前一次加电时读到的值偏差非常多,和上一次相比有可能倒数第四位都变化了,希望能够有技术支持,是ADS1258没有初始化好吗,还是别的愿意?

 

电路设计中,ADC的参考电压VREFP=2.5V,VREFN接地,AVDD是5V,DVDD是3.3V,ADC的输入全部设为单端输入,

初始化过程是按照手册上的说明进行设置的,手册P42的CONFIGURATION GUIDE

MAN SUPER:

没有人来支持吗!这个问题我折腾好久了,还是没有搞定!

John11513:

VREF读出值1E0A16H表示外部参考电压是2.503V,和您实际所用的基准电压相符,因此可以认为此功能是正常的。此项功能仅用于粗略监视外部参考是否正常,因此,精度不会很高。据手册,此ADC的最高有效位数是21.6位,因此,您观察到的最低两位跳动可能是正常的噪声表现。

断电后再次上电VREF读数值偏差较大,我怀疑是基准电压尚未稳定造成的。外部VREF是用一个内部基准进行测量的。外部VREF也好,内部基准也好,在断电-上电循环后,不会立即稳定到一个精确值,需要一定的稳定时间。若在VREF或内部基准尚未稳定的情况下就去测量VREF,就会出现您观察到的现象。

MAN SUPER:

回复 John11513:

请问如何通过1E0A16H这个值计算出来2.503V?手册里没有相关说明啊!请指教,谢谢!

另一种情况:

我们在同样的模式下,读出vcc的电压值,在不理解VREF读出的数据情况下,单纯的按照比例计算(假设VREF的转换后的数据1E0A16H是正确的),得出VCC的电压确实是在5V左右,上述没有问题;同样模式下,在外部模拟输入引脚上接入一个3.0V的电压,但是读出的该通道的数据是错误的(即使按照比例计算,其电压也只有2.3V左右),不明白为什么??希望能够解答?

稍后会将内部寄存器的设置补上!

John11513:

回复 MAN SUPER:

DATA SHEET第26页给出了这个公式(EQUATION 9):

External Reference (V) =Code/786432

Vcc和VREF都可按这个公式计算,因为它们都是用内部基准测量的。但外部模拟电压不能用此公式计算,因为,测量外部模拟输入时,ADC所用的参考是外部参考VREF。测量外部模拟输入时,电压值按下式计算:

VIN=VREF*Code/780000h

Thanks,

MAN SUPER:

回复 John11513:

 

上面是图纸,寄存器设置如下,在AIN0上接一个2.5V的电压时,读出该通道的数据为0x130C67H(后二位数据在跳动),计算出的值约0.397V左右(依据公式:VIN=VREF*Code/780000h)。不知道是什么原因造成的,望能够支持,谢谢!

void init_ads1258(){//    ads1258_readid();    spi_xmit(RESET_COMMAND);    delay_loop();    spi_xmit(WRITE_REG|0x02);    spi_xmit(WRITE_REG|0x100|0x70);    spi_xmit(WRITE_REG|0x200|0x00);    spi_xmit(WRITE_REG|0x300|0x00);    #if 1    spi_xmit(WRITE_REG|0x400|0x01);    spi_xmit(WRITE_REG|0x500|0x00);    #endif    spi_xmit(WRITE_REG|0x600|0x00);    spi_xmit(WRITE_REG|0x700|0x00);    spi_xmit(WRITE_REG|0x800|0x88);    ads1258_readid();    #if 1    SpiaRegs.SPITXBUF = READ_REG | 0x000;    while(SpiaRegs.SPIFFRX.bit.RXFFST !=1) { }    ads1258_reg00 = SpiaRegs.SPIRXBUF;    SpiaRegs.SPITXBUF = READ_REG | 0x100;    while(SpiaRegs.SPIFFRX.bit.RXFFST !=1) { }    ads1258_reg01 = SpiaRegs.SPIRXBUF;    #endif}

赞(0)
未经允许不得转载:TI中文支持网 » ADS1258调试问题
分享到: 更多 (0)