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

ADS1299: 关于ADS1299运行几分钟后就出现失真的问题

Part Number:ADS1299

我利用信号发生器输出接到ADS1299上进行测试的时候,发现刚开始运行的时候各个通道都没有问题,但是过了四五分钟左右之后就出现了好几个通道都出现了失真的情况,请问这是什么原因呢?

Amy Luo:

您好,

用示波器检查下基准电压是否是稳定的?您采集内部测试信号也有这种现象吗?

,

wu:

内部测试信号是将CHnSET 设置成0x61进行内部噪声测试呢还是将其设置成0x65进行方波测试呢?

,

Amy Luo:

设置成0x65进行方波测试

,

wu:

设置成0x65后测了十几分钟没有出现相关的通道有失真的情况,但是这个波形好像不是方波吧,这个波形怎么这么奇怪呢?这个是正确的波形嘛?

,

Amy Luo:

此时您使用的fCLK是多少?CONFIG2配置的值是什么?因为PGA Gain 与信号带宽有关(数据表 table 5),PGA设置24,不知道是不是带宽太窄的原因造成的。您将增益设置为1 看是怎样的输出?

基准电压用示波器检查是稳定的吗?值是多少?

另外,您可以您读取转换结果的SPI通信波形吗?看下通信时序是否存在问题

,

wu:

fCLK=2.048MHZ

CONFIG2设置成0xd0;

增益改为1也是一样的波形

,

wu:

基准电压是VREFP嘛?测电压不是用万用表测的嘛?

,

Amy Luo:

基准电压是VREFP和VREFN之间的电压,用万用表量测不出来是否波动,万用表测量的是有效值。

,

wu:

因为我的板子都是贴片,没有引出来的引脚接口,所以用示波器不可能一直戳着去测量的啊,有一个点是,我用内部方波信号去测量的时候并没有出现失真的现象,但是用信号发生器的时候过了四五分钟后就会出现部分通道波形失真的情况,这应该跟基准电压没有关系吧,如果有关系为什么内部信号是正常的呢?

顺便提一下,为什么我的内部方波信号出来的波形这么奇怪呢?正常的测试信号应该是什么样子的呢?需要怎么修改呢?

麻烦尽快回复解决一下。谢谢

,

Amy Luo:

现在看您测量出的内部方波信号异常,不是正常的方波信号,以及运行四五分钟后出现失真,这都可能是基准电压、供电电压不稳定或引入干扰造成的。

为了排除与输入信号、输入电路等有关,建议先调试好先能够正确测量内部test信号。

您可以飞线从测试点或芯片管脚引出测试线连接到示波器探头上进行测量。

,

wu:

内部测试信号除了将CHnSET设置成0x65之外,其他寄存器需不需要修改呢?比如CONFIG2或者其他寄存器

,

Amy Luo:

是的,需要通过CONFIG2寄存器配置测试信号源、幅值和频率的。

,

wu:

那一般需要配置成什么呢

,

Amy Luo:

为方便测试,一般都选内部测试信号。

幅值都可以;

方波信号的话,CAL_FREQ[1:0]就是00或01。

通过内部测试信号,主要是想排除与外部输入信号源、输入电路等有关的因素。

,

wu:

我是把VREFP、VREFN引出来接到示波器观察就可以是嘛?

还有就是正常的内部测试信号波形是什么样的呢?

,

Amy Luo:

是的;

配置成交流信号的话,采集电压值绘制波形出来,就是方波信号。

,

wu:

怎么知道配置的是不是交流信号,配置成交流信号需要修改哪些寄存器呢?

,

Amy Luo:

就是配置CONFIG2寄存器 bit CAL_FREQ[1:0]为00或01以选择不同的频率。

,

wu:

我将VREFP引出来后,观察其一直是高电平,没有问题啊,因为我的VREFN接的是地

,

wu:

我针对一个通道输入稳定的正弦波的时候,观察了十几分钟之后并没有出现波形失真的情况,但是为什么测试信号输出不正确呢?

,

Amy Luo:

fclk是多少?将增益设置为1再看看,因为增益设置与带宽有关,看看是不是将增益设置为24导致带宽太窄的原因

,

Amy Luo:

wu 说:我针对一个通道输入稳定的正弦波的时候,观察了十几分钟之后并没有出现波形失真的情况

这里的正弦波输出幅值是正确的吗?

,

Amy Luo:

另外,上述异常的方波您是怎样由输出代码转换成的?这个转换过程是否验证过是正常的?

,

wu:

fclk采用外部的2.048MHZ,之前设置成内部测试信号的时候有将增益设置成1的,它也是一样的波形。

,

wu:

上述正弦波我是使用信号发生器输出幅值为2mv的波形,增益为24,这样的输出正弦波幅值是正确的吧。

,

Amy Luo:

这个在您之前的回复中我看到了,抱歉,上一条回复我该删掉的,忘记删掉了

,

wu:

异常的方波的输出还是跟输入正弦波一样的,就是设置成DRDY中断形式,然后中断后就去读取数据。

,

Amy Luo:

wu 说:上述正弦波我是使用信号发生器输出幅值为2mv的波形,增益为24,这样的输出正弦波幅值是正确的吧。

输出幅值是多少?是2*24=48mV吗?

,

Amy Luo:

wu 说:异常的方波的输出还是跟输入正弦波一样的,就是设置成DRDY中断形式,然后中断后就去读取数据。

您采集的是ADC转换输出的数字信号,我的意思是您是怎样将数字信号转换成上述波形的?这个转换过程是否验证过是正确的

,

wu:

这个转换是在上位机进行转换的,我这边没有处理。输出的幅值是正确的。

,

wu:

我之前有用直接输入固定的电平值,然后再计算其输出电平值,结果是正确的。

,

Amy Luo:

抱歉,点错了,本来想点“回复”的,不过也没啥关系。

您可以将采集内部测试信号时的寄存器配置附在这里吗?我想看一下是否使能了偏置电路。

将数字信号转换成上述波形的过程,建议您验证其过程的正确性

,

wu:

/**ADS1299上电复位 **/
void ADS_PowerOnInit(uint8_t num)
{uint8_t temp=0;switch(num){case 0:GPIO_write(CONFIG_ADS1299_CS1, 0);//Low to communicatedusleep(1000);SPI_ReadWriteByte(ADS_RESET);usleep(1000);//wait for stable,最小2个SCLKSPI_ReadWriteByte(SDATAC);//STOP命令在硬件上已经将START拉低了usleep(1000);//wait for stable//*fc for bias testADS_REG(num,WREG|ID,0X3e);//ID:0X3Eusleep(5);ADS_REG(num,WREG|CONFIG1,0xf4); //启动CLK时钟输出 数据速率为1kspsusleep(5);ADS_REG(num,WREG|CONFIG2,0Xd0);//测试方波信号内部产生,方波幅值(VREFP–VREFN)/2400=±3.75mV 增益24 实际测到的电压±90mV权值 4500000uV/8838606 = 0.509uVusleep(5);ADS_REG(num,WREG|CONFIG3,0Xec); //使用内部参考电压,BIASREF使用内部产生(AVDD+AVSS)/2,使能BIAS buffer ecusleep(5);ADS_REG(num,WREG|LOFF,0X00);//关闭导联脱落检测相关usleep(5);//0x65 内部方波测试,0x61 内部噪声测试ADS_REG(num,WREG|CH1SET,0X65);//amplified x24usleep(5);ADS_REG(num,WREG|CH2SET,0X65);//amplified x24usleep(5);ADS_REG(num,WREG|CH3SET,0X65);//amplified x24usleep(5);ADS_REG(num,WREG|CH4SET,0X65);//amplified x24usleep(5);ADS_REG(num,WREG|CH5SET,0X65);//amplified x24usleep(5);ADS_REG(num,WREG|CH6SET,0X65);//amplified x24usleep(5);ADS_REG(num,WREG|CH7SET,0X65);//amplified x24usleep(5);ADS_REG(num,WREG|CH8SET,0X65);//amplified x24usleep(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);GPIO_write(CONFIG_ADS1299_CS1, 1);temp=ADS_REG(num,RREG|CONFIG1,0xf4);//250Hz 0x96;500hz,0x95LOG_INFO("CONFIG1: 0X%x", temp);break;case 1:GPIO_write(CONFIG_ADS1299_CS2, 0);//Low to communicatedusleep(5);SPI_ReadWriteByte(ADS_RESET);usleep(9);//wait for stableSPI_ReadWriteByte(SDATAC);usleep(10);//wait for stable//*fc for bias testADS_REG(num,WREG|ID,0X3e);//ID:0X3Eusleep(5);ADS_REG(num,WREG|CONFIG1,0xd4); //启动CLK时钟输出 数据速率为1kspsusleep(5);ADS_REG(num,WREG|CONFIG2,0Xd0);//测试方波信号内部产生,方波幅值(VREFP–VREFN)/2400=±3.75mV 增益24 实际测到的电压±90mV权值 4500000uV/8838606 = 0.509uVusleep(5);ADS_REG(num,WREG|CONFIG3,0Xe8); //使用内部参考电压,BIASREF使用内部产生(AVDD+AVSS)/2,使能BIAS buffer ecusleep(5);ADS_REG(num,WREG|LOFF,0X00);//关闭导联脱落检测相关usleep(5);ADS_REG(num,WREG|CH1SET,0X65);//amplified x24usleep(5);ADS_REG(num,WREG|CH2SET,0X65);//amplified x24usleep(5);ADS_REG(num,WREG|CH3SET,0X65);//amplified x24usleep(5);ADS_REG(num,WREG|CH4SET,0X65);//amplified x24usleep(5);ADS_REG(num,WREG|CH5SET,0X65);//amplified x24usleep(5);ADS_REG(num,WREG|CH6SET,0X65);//amplified x24usleep(5);ADS_REG(num,WREG|CH7SET,0X65);//amplified x24usleep(5);ADS_REG(num,WREG|CH8SET,0X65);//amplified x24usleep(5);ADS_REG(num,WREG|BIAS_SENSP,0X00);//使用对应通道右腿驱动usleep(5);ADS_REG(num,WREG|BIAS_SENSN,0X00);//使用对应通道右腿驱动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);GPIO_write(CONFIG_ADS1299_CS2, 1);temp=ADS_REG(num,RREG|CONFIG1,0xf4);//250Hz 0x96;500hz,0x95LOG_INFO("CONFIG1: 0X%x", temp);break;}}

,

Amy Luo:

看上面代码有2种配置方式,case0和case1,在采集内部方波信号的时候,您使用的是哪种?

两种配置方式MISC1寄存器SRB1 都置1了,电路图中SRB1管脚接的是什么?

,

wu:

case0和case1是因为我们使用了两片ADS1299,在采集内部方波信号时我将两片的16个通道都设置成了0x65

,

Amy Luo:

看上图SRB1是连接导联的,SRB1置1的话,那么它是连接到采样通道的负输入端的,会影响内部测试信号的。 

我不知道 BIAS电路是怎样连接的,为排除影响,您将寄存器 BIAS_SENSP、BIAS_SENSN和SRB1都置0,看采集内部信号是否正常?

,

wu:

我按照你说的将BIAS_SENSP、BIAS_SENSN和SRB1都置0了,但是内部测试信号还是跟之前一样

,

Amy Luo:

将数字信号转换成上述波形的过程,您是否验证其过程的正确性?

为方便跟进您的问题,您可以针对内部测试信号异常重新发个帖子吗?这个帖子太长了,不方便跟进

,

wu:

这个转换过程应该没有问题,因为我使用信号发生器输出正弦波的时候是能够正常转换的,而且也将信号发生器接到示波器去观察其其波形是非常稳定和顺滑的

,

Amy Luo:

wu 说:使用信号发生器输出正弦波的时候是能够正常转换的

您这里描述的应该是ADC过程。

我上述描述的转换过程,是将采集的数字信号转换成您上图显示的模拟信号,是DAC过程,我需要您确认的是这个DAC过程。

赞(0)
未经允许不得转载:TI中文支持网 » ADS1299: 关于ADS1299运行几分钟后就出现失真的问题
分享到: 更多 (0)