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

ADS1263: 测电压会发生数据移位的情况,为什么?

Part Number:ADS1263Other Parts Discussed in Thread: MSP430F149, ISO6742

用ADS1263测接地点电压测出来是0.0029左右为什么?我是连续测量200次取电压平均值,会发生数据移位很多次测出电压值为0.63,也有别的甚至负的电压值,我是采用双电源供电,内部参考电源,read command读取ADC1数据,spi通信频率为750kHz,sps2400,最后用检验checksum字节解决了这个问题,正常应该怎么解决?

? ?:

用的是内部晶振,CS和start引脚都接地

,

Amy Luo:

您好,

您用 checksum 时是有错吗?如果是这样的话,那就是SPI通信时SPI信号波形存在干扰,造成了SPI主控端识别高低电平错误造成的。您可以用示波器测量SPI波形以验证是SPI信号质量的问题吗?

SPI信号质量与SPI走线长度、通信速率、PCB layout都有关系。

,

? ?:

用checksum没错,但是我参考ti官方程序发现readdata函数没有用到checksum功能,正常是不是不应该出现数据移位错误,用的单片机是msp430f149

,

Amy Luo:

SPI通信质量不好,造成通信错误可以用checksum来检查。

您描述的“数据移位错误”具体指什么?或者您可以附上测量波形图以说明吗?是读取转换结果时存在时序问题吗

,

? ?:

测一点得到的数据大多ad输出的信号是0000 0000 00101000 10010110 00011001 检验字节

测错的输出的是 00100000 10000000 00010100 01000111检验字节

sclk信号

DIN

好像是DOUT

我用了一个数字隔离ISO6742会有影响吗?

,

Amy Luo:

? ? 说:

测一点得到的数据大多ad输出的信号是0000 0000 00101000 10010110 00011001 检验字节

测错的输出的是 00100000 10000000 00010100 01000111检验字节

我没明白您这里要表达的意思,您可以再详细说明吗?

不知道您怎样捕获的信号波形,高低电平看不清,不过看上去没有干扰。

您可以附上 ADS1263+ISO6742 的电路图吗?

,

? ?:

  电路图

就是测地点电压正常测出来是0.0028V有时候会测出来0.63v看了下ads1263测出来的数据分别是

0000 0000 00101000 10010110 00011001 检验字节

00100000 10000000 00010100 01000111检验字节

,

Amy Luo:

您的意思是短接输入端,测出来电压是0.0028V,有时候测出来是0.63V,测量结果相差很大?如果是这样的话,建议您用示波器测量下供电电压、参考电压看下电压是否稳定、纹波大不大?也测量下输入时钟是否无干扰?

有原理图吗?PCB 看不清楚信号定义、感觉不直观。

? ? 说:最后用检验checksum字节解决了这个问题,

我想知道您是怎样用checksum 解决的,您可以对此进行说明吗?

,

? ?:

  完整原理图比较大,这里是

ads1263部分,实际电路中我通过外界导线将AINCOM接地

通过以下程序判断checksum文本(2023-12-07 135414).txt

int32_t ADS126xReadData(uint8_t NumBytes, uint8_t DataByteStartNum){assert((4 == NumBytes) || (5 == NumBytes) || (6 == NumBytes));// Aborts program if FALSEassert((0 == DataByteStartNum) || (1 == DataByteStartNum));// Aborts program if FALSEuint8_t ADC_Bytes[6];int32_t ADC_Data_Only;uint8_t Checksum = 0x9B;uint8_t Sum = 0;while (1){ADS126xXferByte(RDATA1);for (int i = 0; i < NumBytes; ++i)ADC_Bytes[i] = ADS126xXferByte(0);if (ADC_Bytes[0] >= 0x40 && ADC_Bytes[0] <= 0x41){for (int i = 1; i < NumBytes-1; ++i){Sum += ADC_Bytes[i];}Sum += Checksum;if ((Sum & 0xFF )!= ADC_Bytes[NumBytes - 1]){Sum = 0;continue;}else{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	//set_adc_CS(1);break;}}}return ADC_Data_Only;}

,

Amy Luo:

Amy Luo 说:您的意思是短接输入端,测出来电压是0.0028V,有时候测出来是0.63V,测量结果相差很大?如果是这样的话,建议您用示波器测量下供电电压、参考电压看下电压是否稳定、纹波大不大?也测量下输入时钟是否无干扰?

您可以对这些问题做出反馈吗?

关于原理图:

ADC-RESET-2是不是用同样的方法隔离了?隔离前后SPI信号质量一样吗?

Amy Luo 说:您用 checksum 时是有错吗?

我这里表达的可能不明确,我想再确认下这个问题,也就是:您是通过判断checksum 然后将校验结果不对的数据舍弃了是吗? 也就是说接收到的数据有校验不对的?

,

? ?:

供电电压稳定

Amy Luo 说:ADC-RESET-2是不是用同样的方法隔离了?隔离前后SPI信号质量一样吗?

是的,信号一样

Amy Luo 说:我这里表达的可能不明确,我想再确认下这个问题,也就是:您是通过判断checksum 然后将校验结果不对的数据舍弃了是吗? 也就是说接收到的数据有校验不对的?

对,有校验不对的,通过程序将他舍弃了

,

? ?:

没有用到的输入引脚是不是也可以接到REFOUT?如果没有用到ADS1263内部参考电压也可以接到REFOUT吗?

,

Amy Luo:

? ? 说:对,有校验不对的,通过程序将他舍弃了

那应该是通信质量问题了,所以还是建议您再抓一下通信波形,建议将SPI信号捕获的清楚一些,不要高低电平混合在一起,也希望SPI信号显示在同一屏幕下,这样也可以看下时序。

? ? 说:没有用到的输入引脚是不是也可以接到REFOUT?如果没有用到ADS1263内部参考电压也可以接到REFOUT吗?

您使用的±2.5V供电,不使用的模拟输入接地就可以了。

,

? ?:

用同样的通道测1V电压时,数据出现错误频率很低,只有测接地点时数据出现错误频率很高,是 SPI信号的原因吗

,

Amy Luo:

既然您描述说“有校验不对的,通过程序将他舍弃了”,然后解决了这个问题,那就说明是通信有问题。

? ? 说:只有测接地点时数据出现错误频率很高,

您的意思是校验不对的有很多?您具体是怎样连接的输入端测量的接地点?看您使用的±2.5V供电,信号输入范围应该满足规格要求。

我看了datasheet 如下截图部分,这个校验和就是检测信号传输是否发生错误的:

赞(0)
未经允许不得转载:TI中文支持网 » ADS1263: 测电压会发生数据移位的情况,为什么?
分享到: 更多 (0)

© 2024 TI中文支持网   网站地图 鲁ICP备2022002796号-1