This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

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

Part Number: ADS1263
Other Parts Discussed in Thread: MSP430F149, ISO6742

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

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

  • 您好,

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

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

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

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

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

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

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

    sclk信号

    DIN

    好像是DOUT

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

  • 测一点得到的数据大多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检验字节

  • 您的意思是短接输入端,测出来电压是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 FALSE
        assert((0 == DataByteStartNum) || (1 == DataByteStartNum));     // Aborts program if FALSE
    
        uint8_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;
    }

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

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

    关于原理图:

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

    您用 checksum 时是有错吗?

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

  • 供电电压稳定

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

    是的,信号一样

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

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

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

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

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

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

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

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

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

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

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

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