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

ADS1241 采样值异常

各位好:

    如下图所示,我们采用ADS1241采用AVDD=5V,Vref=2.5V,AIN5引脚的待测量信号为0~5V,AIN6为2.5V基准电压,用于测量-2.5V~+2.5V的应用场景    

 

 

源码初始化步骤如下:

ba_ads_writeReg(ADS1241_SETUP, 0x00) ;  //PGA=1

ba_ads_writeReg(ADS1241_MUX, 0x56);  //AIN5+, AIN6-

ba_ads_writeReg(ADS1241_ACR,  0x00);  //Bipolar、RANGE=±VREF、DR=00(30Hz)

ba_ads_writeCmd(ADS1241_SELFCAL);  //失调和增益校准

。。。。等待6个DRDY周期

读取OCR=0x000101, FSR=0F0701

……

DRDY就绪后调用RDATA命令读取AD采样值

AIN5=3.111V时,AD值为0x1FD81F,在稍大些时,AD采样值变成从0x000000开始

请问是什么原因导致这个现象?

user151383853:

信号大了会溢出, 结果应该是 FFFFF,全0的情况应该不是溢出,端口断开?

Amy Luo:

您好,

寄存器ACR中BUFEN bit 未使能,但buffer上拉使能了,buffer是否使能与输入信号范围有关,建议硬件与软件设置统一起来再看采样情况。

user6216951:

回复 user151383853:

是0x1FFFFF就发生溢出了

user6216951:

回复 Amy Luo:

BUFEN引脚和ACR的BUFEN位都为1时才会使能Buffer,我们不准备启用BUFFER功能,因此,将ACR的BUFEN位置为0

Amy Luo:

回复 user6216951:

采样值异常可能与您的SPI读写时序也有关系,注意,当POL pin为高时,数据在SCLK的上升沿锁定,SCLK应该在HIGH上空闲。

user6216951:

回复 Amy Luo:

Hi Amy,

下图是利用示波器靠近ADS1241的SCKL和Din引脚,通过WREG命令将IOCON寄存器配置为0x13捕获的图片,然后利用RREG读取IOCON寄存器的值一直都等于0x07, 麻烦帮忙抽空看看问题可能出在哪?

user6216951:

回复 Amy Luo:

Amy,

    我们在发送RESET命令后等待14ms后,利用RREG命令读取SETUP寄存器值,发现与数据手册描述的值不一致,烦请帮忙抽空看看可能发生的原因

SETUP (Address 00H) Setup RegisterReset Value = iiii0000

    1、发送的复位命令波形:

    2、RREG读取SETUP寄存器波形:

Amy Luo:

回复 user6216951:

看您测的波形,时序操作好像是在sclk下降沿进行操作的,当POL pin为高时,应在SCLK上升沿进行读写操作。

user6216951:

回复 Amy Luo:

由于POL=1,示波器部份确实是先进行Din置位,然后操作进行SCLK操作,逻辑分析仪部份就是SCLK先拉低,Din置位,延迟再SCLK拉高,但从Saleae的第三个字节的波形来看,ADS1241的Dout引脚感觉像是在SCLK接高时置位

user6216951:

回复 Amy Luo:

Amy,

   从我们的碰到的现象来看,通过WREG写入IOCON=0x13,将AIN0、AIN1、AIN4配置为Data引脚 ,再写入DIO值对应的引脚都可以得到正确的输出,这样是否能够说明MCU向ADS1241的写入的通信是正常的,但利用RREG和RDATA命令从ADS1241读取数据时,没有得到正确的预期,针对这个现象,我已更换了3片ADS1241,同时,也对POL从原来的1调整为0进行了反复的验证,同时,也反复核对了数据手册中的下图:

    

    下图为ADS1241晶振频率:4.9152MHz,POL=0,在发送复位命令后,等待14.6ms后,利用RREG命令读取SETUP寄存器值的波形截图:

根据上图可以对照数据手册:

赞(0)
未经允许不得转载:TI中文支持网 » ADS1241 采样值异常
分享到: 更多 (0)