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

ADS1262采集到的数据一直是-2.4990000

ADS1262的寄存器配置和读写都没有问题,但是发现采集到的32位数据一直为128 0 0 0,这是怎么回事呀?

adc_code = ADS1262ReadData(6,1); //AD读取数据
val = ((long double)adc_code/0x7fffffff);
val*=2.499;
printf("CODE: %10d CODE: %10d VOL: %.8Lf \r\n ",adc_code,adc_code,val);

下面是AD读取数据的程序

int32_t ADS1262ReadData(uint8_t NumBytes, uint8_t DataByteStartNum)
{

// assert((4 == NumBytes) || (5 == NumBytes) || (6 == NumBytes)); //Aborts program if FALSE
// assert((0 == DataByteStartNum) || (1 == DataByteStartNum)); //Aborts program if FALSE

uint8_t ADC_Bytes[6]; //Holds
int32_t ADC_Data_Only;
int i;
DACNCSS(0);
// while(ADS_DRDY);
for( i = 0; i < NumBytes; ++i)
ADC_Bytes[i] = SPI_DAC_SendByte(0);
ADC_Data_Only = ((int32_t)ADC_Bytes[DataByteStartNum + 0] << 24) | //Data MSB
((int32_t)ADC_Bytes[DataByteStartNum + 1] << 16) |
((int32_t)ADC_Bytes[DataByteStartNum + 2] << 8) |
((int32_t)ADC_Bytes[DataByteStartNum + 3] << 0); //Data LSB
DACNCSS(1);

return ADC_Data_Only;
}

user151383853:

xyz549040622:

1.你是单电源供电还是双电源?参考电压是多少?
2.你应该是溢出了吧

user6063817:

回复 xyz549040622:

这是我的电路原理图,用的单电源供电,参考电压选择的是内部2.5V。REFOUT引脚输出2.5V,START引脚启动后为高电平。

user6063817:

回复 user151383853:

我们选择的是默认的内部参考电压,芯片的REFOUT引脚输出2.5V。

user6063817:

将差分输入的两个引脚共地接,也还一直是这样。

xyz549040622:

回复 user6063817:

如果读取的是32位数据的话,单电源供电出现128 0 0 0,说明输入检测到的是负电压。还有没看懂你的ADC读取程序,你读的是24位数据还是32位数据呢,说实话,没看懂,ADC_Bytes的数据是哪来的,用的中断吗?提供的资料太少了。

user6063817:

回复 xyz549040622:

我采用的是read data by command的方式读取32位数据,ADC_Bytes就是通过SPI通信发送操作码后的返回数据,一共有6个八位的数据,中间四位为32位的ADC采集到的数据。

顺便问您一下如果像我这样采用单电源供电,然后用内部2.5V的参考电压,PGA设置为1倍放大,那么ADC的电压输入范围应为多少呢?

user6063817:

问题已找到,第一次测试的时候把芯片给烧了!
驱动是没问题的
结贴,感谢各位大佬的关注。

xyz549040622:

回复 user6063817:

你把芯片烧了,还能读写寄存器吗?不应该吧。

user6063817:

回复 xyz549040622:

是可以的,由于不会用我烧坏了好几片AD了,寄存器读写没问题但就是读不出来数据,同样的代码放在另一个同样的硬件里就能跑通。

能问您一下关于ADS1262的校准问题吗,我看datasheet上有写offset和gain的校准命令,但是我没有看懂offset校准寄存器OFCAL[2:0] 里的值与实际数值的对应关系。能指点一下吗。

赞(0)
未经允许不得转载:TI中文支持网 » ADS1262采集到的数据一直是-2.4990000
分享到: 更多 (0)