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

ADS1299: 为什么ADS1299的好几个通道读到的数据都是相同的呢?

Part Number:ADS1299

请问我用两片ADS1299通过级联的连接模式组成16通道进行采集,然后各个通道CHnSET均设置为ADS_REG(num,WREG|CH1SET,0X60); 也就是24倍的PGA和电极输入,但是为什么读取16通道数据时有好几个通道读到的数据均是一样的,而且用手去触摸输入通道时也没有变化,这是什么原因呢?

Amy Luo:

您好,

16通道您每个通道输入的信号是什么呢?上图中00 ~ 16代表的是对应的16通道采集的数据是吗?那么右边一列,00 ~ 17是什么数据呢?

,

wu:

输入信号现在还没接,也就是处于浮空状态,两个图代表的是连续采集两次的数据,右边00~17也是16通道采集到的数据,左边图是截图少了一个通道

,

Amy Luo:

00 ~ 16是17个数据,00~17是18个数据,不太确定您是怎样对应的16个通道的数据?不管怎样,模拟输入是不可以悬空的,悬空的话输入电平是不确定的,所以请输入确定有效电平电压进行数据采集

,

wu:

我是00~07代表第一片芯片的8个通道,10~17代表第二片芯片的8个通道,上面第一张图00~16是因为我在截图的时候截少了17这个通道,这个都不用管,问题是:即使是输入电平不确定,那也不应该是好几个通道都是一样的数据,而且多次采集的结果都是一样的,这几个通道的数据都不会变化,这是不对的把

,

Amy Luo:

因为输入的信号电平不确定,什么可能性都可能存在,不建议在这种不确定的条件下进一步分析采集的数据;

您可以配置寄存器CHnSET和CONFIG2 ,Channel input配置为内部测试信号,对内部测试信号进行采集,看采集结果

,

wu:

使用内部方波测试的时候只要前三个通道有数据输出,后面几个通道都是0,请问是什么原因呢

,

Amy Luo:

您仅测试一片ADS1299的8个通道也是这种情况吗?

您可以附上您的寄存器配置吗

,

wu:

ADS_REG(num,WREG|ID,0X3e); //ID:0X3E usleep(5); ADS_REG(num,WREG|CONFIG1,0xf6); // 启动CLK时钟输出 数据速率为1ksps usleep(5); ADS_REG(num,WREG|CONFIG2,0Xd0);//测试方波信号内部产生,方波幅值(VREFP–VREFN)/2400=±3.75mV 增益24 实际测到的电压±90mV 权值 4500000uV/8838606 = 0.509uV usleep(5); ADS_REG(num,WREG|CONFIG3,0Xec); //使用内部参考电压,BIASREF使用内部产生(AVDD+AVSS)/2,使能BIAS buffer ec usleep(5);

ADS_REG(num,WREG|LOFF,0X00); //关闭导联脱落检测相关 usleep(5);

ADS_REG(num,WREG|CH1SET,0X65); //amplified x1 usleep(5); ADS_REG(num,WREG|CH2SET,0X65); //amplified x1 usleep(5); ADS_REG(num,WREG|CH3SET,0X65); //amplified x1 usleep(5); ADS_REG(num,WREG|CH4SET,0X65); //amplified x1 usleep(5); ADS_REG(num,WREG|CH5SET,0X65); //amplified x1 usleep(5); ADS_REG(num,WREG|CH6SET,0X65); //amplified x1 usleep(5); ADS_REG(num,WREG|CH7SET,0X65); //amplified x1 usleep(5); ADS_REG(num,WREG|CH8SET,0X65); //amplified x1 usleep(5);

ADS_REG(num,WREG|BIAS_SENSP,0X01); //使用对应通道右腿驱动 usleep(5); ADS_REG(num,WREG|BIAS_SENSN,0X01); //使用对应通道右腿驱动 usleep(5); ADS_REG(num,WREG|LOFF_SENSP,0X00); //使用对应通道右腿驱动 usleep(5); ADS_REG(num,WREG|LOFF_SENSN,0X00); //使用对应通道右腿驱动 usleep(5); ADS_REG(num,WREG|LOFF_FLIP,0X00); //使用对应通道右腿驱动 usleep(5); ADS_REG(num,WREG|LOFF_STATP,0X00); //使用对应通道右腿驱动 usleep(5); ADS_REG(num,WREG|LOFF_STATN,0X00); //使用对应通道右腿驱动 usleep(5); ADS_REG(num,WREG|GPIO,0X00); //使用对应通道右腿驱动 usleep(5); ADS_REG(num,WREG|MISC1,0X20); //使用对应通道右腿驱动 usleep(5); ADS_REG(num,WREG|MISC2,0X00); //使用对应通道右腿驱动 usleep(5); ADS_REG(num,WREG|CONFIG4,0X00); //使用对应通道右腿驱动 usleep(5);

,

Amy Luo:

Amy Luo 说:您仅测试一片ADS1299的8个通道也是这种情况吗?

请给出上面问题回复,以排除因级联连接造成的问题

,

wu:

是的,仅测试一片的8个通道

,

wu:

请问应该怎么解决这种问题呢,一般是什么原因造成的呢

,

Amy Luo:

上面所附寄存器值,您是否已经读出来以验证按期望值写进去?

您可以附上您读取转换结果的SPI示波器波形吗?用示波器实测ADS1299输出是否只有前3个通道有数据?

,

wu:

是的,写进去了,我测试的时候读取了CH6SET的寄存器值,是能够正确读出所配置的值的,SPI通信应该没问题吧,我都能够进行寄存器读写,前3个通道的数据我打印出来了

,

Amy Luo:

您是否发送了216 SCLKs?建议您还是用示波器实际测量下,可以判断是ADS1299的本身问题还是主控端的问题

,

wu:

您说的是读取一次数据发送216个SCLKs嘛

,

Amy Luo:

是Status寄存器值+8个通道数据,共216个SCLKs

,

wu:

我用确定的3.3V电平输入时是可以转换成正确的输出的,但是我用2片级联组成16通道时用串口打印时前5个通道没有打印出数据出来

,

wu:

当我用2片芯片级联时,使用输入3.3V电平,增益设置为1,输出却是约等于7.3V,这是为什么呢

,

wu:

算错了,当我用2片芯片级联时,使用输入3.3V电平,增益设置为1,输出却是约等于1.6V,这是为什么呢

,

Amy Luo:

也就是说目前单片ADS1299时,您是可以正确读取转换结果的,是吗?

ADS1299是差分输入,在2片芯片级联时,您的差分输入电压(VINxP – VINxN),VINxP 和VINxN分别是多少?

输入3.3V电平,增益设置为1,输出却是约等于1.6V,此时您使用的是内部基准电压吗?此时输出代码是多少?

,

wu:

VINxP就是输入3.3V,VINxN是悬空,我们用的是单通道,是的,用法内部基准电压,输出的电平转换出来约等于-1.6V

,

Amy Luo:

ADS1299是差分输入,有2种输入方法,1种是伪差分输入,即VINxN接固定电平,一般是供电电压的中间值,VINxP接交流信号;一种是VINxP 和 VINxN都是含有共模电压的交流信号。具体见datasheet 9.3.1.2 Analog Input部分。

悬空VINxN是不可以的,一般不能悬空模拟输入管脚,请查看datasheet 9.3.1.3.1 Input Common-Mode Range 和 9.3.1.3.2 Input Differential Dynamic Range 部分,设置合适的输入信号,再验证是否可以正确转换输出

赞(0)
未经允许不得转载:TI中文支持网 » ADS1299: 为什么ADS1299的好几个通道读到的数据都是相同的呢?
分享到: 更多 (0)