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.

ADS1291: 采集设置

Part Number: ADS1291

你好,工程师,我将ADS1291设置成 config1(02), config2(A3), loff(10), ch1set(05), ch2set(81), RLD(00), LOFF_SENS(00), RSP1(02),  RSP2(07), GPIO(0C) 用于方波测试信号(1mv,500sps),得到的数据用MTLAB仿真出来发现一个周期包含512个点,不是500。  然后正常采集设置成config1(02), config2(A0), loff(10), ch1set(00), ch2set(81), RLD(33), LOFF_SENS(00), RSP1(02),  RSP2(07), GPIO(0C) ,通过心电发生器发出心率60,幅值1mv的信号,比对发现,采集得到的信号幅值是方波的一半还少,请问这个该怎样处理,怎么回事

  • 使用的是内部电源,时钟512khz,sclk为1mhz

  • 您好,

    您是否验证了寄存器写入后可以正确读出?

    您实测基准电压是正常的吗?

    在测试信号模式下,您可以用示波器测量下DRDY的脉冲频率吗?看其频率是否为设置的DATA RATE?在测试信号模式下采集的信号是1mV方波信号吗?

    建议采集内部测试信号无问题后,再采集外部输入信号。

  • 只是验证了读取寄存器ID,读出52,基准电压设置2.42v, DRDY周期约

    2ms(500hz).然后我用方波最大值减最小值得出的结果除以2^24然后*2.42最后除以6得出1mv

  • 请问我这种算法是对的吗

  • 只是验证了读取寄存器ID,读出52,基准电压设置2.42v, DRDY周期约

    2ms(500hz).然后我用方波最大值减最小值得出的结果除以2^24然后*2.42最后除以6得出1mv

    寄存器读取没问题,建议再验证下寄存器写入;

    DRDY频率为500HZ说明采样率是对的,我不太明白您为什么是512个点,您是根据DRDY信号读取的数据吗?读出的sample数应该与DRDY数一致才对。

    1mV的计算方法好像不太对,信号幅值应该是= ±(VREFP – VREFN) / 2400,即±1mV。最大值减最小值应该是2mV,而不是1mV

    关于code至电压的转换,应该使用输出code乘以1LSB。这里的 1LSB=VREF / [Gain*(2^23 – 1)]

    这样看,输出code是对的,仅是转换计算过程不对。题中描述的采集心电发生器幅值1mv的信号,是输入幅值的一半应该是这里的问题。原理图我稍后再看下。

  • 关于DRDY, 检测到DRDY下降沿,我等待了一个t(mod)也就是4tclk时间后才开始读的,tclk=512khz,我看到手册建议等待一个tMOD,

  • 我用心电发生器输出幅度1mV,1hz的方波,算出的最大减最小是测试方波的一半,是不是要将输出幅度设置成2mv才是对的

  • 关于原理图:

    请确认PGA1P/N接4.7nF电容;

    如果您区分模拟地和数字的地话,VCAP1、VCAP2对地电容应该接模拟地;C311应该接数字地,因为reset管脚是数字管脚;

    DGND_ISO需与AGND_ISO单点连接,请确认这一点;

    测试外部输入信号时,或者说采集心电发生器 的信号时,应禁用RLD,即 RLD_SENS寄存器Bit 5应置0,RLD1N置0,RLD1P置0,以避免RLD信号对外部输入信号产生影响:

  • 关于DRDY, 检测到DRDY下降沿,我等待了一个t(mod)也就是4tclk时间后才开始读的,tclk=512khz,我看到手册建议等待一个tMOD,

    这里没问题,如果您是检测DRDY下降沿读取的数据,读到的数据个数应该与DRDY数一致,

    得到的数据用MTLAB仿真出来发现一个周期包含512个点

    这里MATLAB仿真是否有可能出错?

    我用心电发生器输出幅度1mV,1hz的方波,算出的最大减最小是测试方波的一半,是不是要将输出幅度设置成2mv才是对的

    在上面的回复中,我可能理解有误。如果心电发生器输出的峰峰幅度是1mVpp,那么算出的最大减最小是测试方波的一半,那么是正常的,因为测试方波的峰峰幅值是2mVpp。这样正好是一半。

  • 这是原来的PGA1N和PGA1P, 现在在他们之间并联4.7nf后,测试方波最大值减最小值差是16754000,没改之前只有22000,一件还有问题吗?还是我设置问题

  • 测试方波最大值减最小值差是16754000,

    这是code的十进制值吗?

    一件还有问题吗?

    您这里是指哪里?

  • 不好意思,我想问是硬件问题还是我的代码问题

  •  这里是将三个字节和到一块转换成一个十进制数

  • 我想问一下,如果测试pace的话,PGA1N和PGA1P, 还需要接4.7nf吗,而且并联之后,测试方波差值会变得非常大

  • 抱歉,我不知道您同时还检测了pace信号,如果检测pace信号的话,就不能接4.7nf电容了,因为pace信号频率比较高,接4.7nF形成的RC滤波会对pace信号产生影响。并且这里的pace检测电路不应对ECG信号造成影响。

    我的建议是先断开pace检测电路,将ADS1291设置在最基本的工作状态,先使ADC能够正确采集数据,然后再去实现其他功能。

    如前所述,1LSB=VREF / [Gain*(2^23 – 1)],在gain=6,VREF=2.42V时,1LSB约为48nV。乘以 22000约为1mV。输出22000时,输出信号幅值是1mVpp吗?如果是的话,说明数据采集和转换没有问题。

  • 好的,工程师,我现在加上了去掉pace电路加上了4.7nf,外面采集信号最大减最小差值为22000,但是内部测试1hz方波确是16754900,这是怎么回事?

  • 您的意思是说采集外部1mV方波没有问题,但是采集内部测试1mV方波结果幅值不对?

    我不清楚您这个外部1mV方波是怎样产生的,它是需要使能RLD电路是吗?

    采集内部测试1mV方波是不需要使能RLD电路的,关于这一点,请确认您采集内部方波的寄存器配置

  • 并联4.7nf后,内部测试1hz方波时,没有使能RLD,设置RLD_SENS=00,其他设置config1(02), config2(A3), loff(10), ch1set(05), ch2set(81),  LOFF_SENS(00), RSP1(02),  RSP2(03), GPIO(0C),然后输出的波形很大,就是上面那副波形图。并联4.7nf后,采集外部波形使用了心电发生器输出幅度1mv,心率60的心电波形,设置config1(02), config2(E0), loff(F0), ch1set(00), ch2set(81),  RLD_SENS(23), LOFF_SENS(00), RSP1(02),  RSP2(03), GPIO(0C)结果是下面这幅图

  • 这两幅图横坐标和纵坐标分别表示的是什么?

    按照您之前的说法,不是可以正确检测外部1mV心电波形了吗?现在又不可以了吗?您现在可以将您的问题明确一下吗?您给出这两幅图的用意是什么?是想说明内部方波和外部信号都不能正确采集吗?如果是这样的话,那么咱们就先就内部方波进行分析,内部方波没问题后,再讨论采集外部方波的问题,不要混在一起说,问题要一个接一个的去解决,很可能内部方波的问题解决后,采集外部信号的问题也同时解决了。

    如果内部方波不能正确采集,并且确认寄存器读写没有问题,建议附上SPI采集数据的波形图,看下是时序问题还是信号上存在干扰

  • 横坐标采样点,纵坐标是读取的后三字节转换的十进制数,我现在就想问,PAG1N和PAG2P并联4.7nf后,内部测试1Hz方波,为什么数据这么大?我的寄存器设置是不是有问题?config1(02), config2(A3), loff(10), ch1set(05), ch2set(81),  RLD(00) ,  LOFF_SENS(00),  RSP1(02),  RSP2(03), GPIO(0C),

  • PAG1N和PAG2P并联4.7nf后

    这里指与pace检测电路并联吗?还是PAG1N和PAG1P管脚间仅连接4.7nf电容?如果是后者,那很可能是AD采集问题,寄存器配置我没看出问题,所以请附上SPI采集数据的波形图以便分析;如果是前者,那说明pace检测电路与并联的4.7nf电容的共同作用影响了内部测试信号。

  • 无论是与pace检测电路并联,还是PAG1N和PAG1P管脚间仅连接4.7nf电容,结果都是外面采集的心电波形比较正常,内部测试方波非常大

  • 我自己再改一下吧

  • 我自己再改一下吧

  • 好的,等您后续反馈