我用的板子是师兄设计的~ADS1298电路图设计如附件所示,设计的时候加上了跟CC2430的SPI通信,通信部分目前没有问题。现在遇到的问题是ADS1298的采集信号问题,我之前设置TEST signal ,CHxSET均设置成0x05(这里的PGA为默认6),CONFIG2设置成0x10,得到的波形良好,均为方波。但是现在想要采集正常的波形,便遇到了很多问题。采集出来的波形跟预期想得到的波形差的实在是太远了,现在有几个问题想请教一下各位老师们,希望能够得到你们的指点啊……
1)从这个电路图上面来看,要正确地采集波形,是否有必要在一些跳线上面加上帽,让电路导通。如果这个电路设计不行的话,那需要怎么样的改进呢?
2)要正常地采集波形,需要怎么样设置寄存器呢?我参考了http://www.deyisupport.com/question_answer/f/58/t/6132.aspx,这个帖子上说的办法,但是依然得不到正确的波形,都是一串混乱的波形,所以想请问一下,要得到理想的波形,最基本应该设置哪几个寄存器?
因为最近需要尽快把波形采出来,希望能够尽快得到各位老师的答复,实在是感激不尽了,想给JHL老师发邮件,但是好像没有联系方式啊……
che lin:
TI专家的回复率有点低啊……
我就是问问如果ADS1298要实现最基本的采集信号的功能的话,应该配置哪几个寄存器……这个对你们来说应该不难吧……最近真的很急啊
Michael Yang:
回复 che lin:
如果你的问题对于现象的描述更加详细一些会引起更多工程师关注您的帖子,这样才能方便做过的工程师解决您的问题。
首先关于您的信号源,你现在测试的信号源是否为Cardiosim ECG Simulator Tool产生的模拟ECG信号,若不是能否详细的描述一下您现在使用的ECG信号源。
然后您提到的波形非常的失真,你是用TI的ads1298ecgfe-pdk 软件来观察到的吗?能否把失真的图发过来。
在你附件中的电路,如果按照你需要实现基本的心电检测则不需要在跳线上加帽子。
一般这个器件实现基本的心电检测主要如下几个寄存器
配置Configuration Register 1enables the user to control the resolution mode (that is, high-resolution or low-power mode), enable the daisy-chain configuration options, and program the data rate.
然后参考基准源寄存器,配置参考基准电压和是否启用右腿驱动信号,
然后根据你当前的连接方式配置Channel Control Registers。
以上供您参考,希望我的回复能够帮您起到抛砖引玉的作用,让更多工程师一起关注您的这个问题。
che lin:
回复 Michael Yang:
谢谢Michael Yang老师的回复。
1、我用的信号源其实只是一个函数信号发生器,输出一路100mv,70hz的信号给其中的一个通道,比如通道1,然后用正常采集的功能,观察这一路的AD采样是不是跟设定的值一样,但是采样出来的数值,跟我们设定的不一样。
2、我观测到的波形,是我自己编写的一个程序画出来的数据,因为我无法用ads1298ecgfe-pdk来查看我的波形,因为我的电路是用CC2430跟ADS1298进行SPI通信,然后将数据发送到电脑上,我待会把图形贴出来。
3、我想知道的是,要正确的采集信号的话,寄存器要怎么配置,我自己是这么配置的:CONFIG1=0x86,CONFIG2=0x00,CONFIG3=0xCC,CHxSET均设置为0x00,然后开始采集,我采集数据使用的是单步读取的模式,程序是这样子的:
U0DBUF = 0x12; //read data
while(U0CSR&0x02 == 0); //Last byte written to Data Buffer register transmitted
Delay(0x3FF);
for(BYTE j=0;j<9;j++)
{
U0DBUF = 0xFF; //write 0xFF,随意发送,目的是为了得到接收数据
while(U0CSR&0x04 == 0); //Received byte ready
Delay(0x3FF);
temptest[j][0] = U0DBUF & 0xFF;
U0DBUF = 0xFF; //write 0xFF,随意发送,目的是为了得到接收数据
while(U0CSR&0x04 == 0); //Received byte ready
Delay(0x3FF);
temptest[j][1] = U0DBUF & 0xFF;
U0DBUF = 0xFF; //write 0xFF,随意发送,目的是为了得到接收数据
while(U0CSR&0x04 == 0); //Received byte ready
Delay(0x3FF);
temptest[j][2] = U0DBUF & 0xFF;
}
然后把数据放在temptest这个9×3的数组里面,不知道这样的采集方法是不是有问题 呢?
真的是很着急啊,多谢各位老师帮忙了!!
PS:当我把CHxSET=0x01,也就是测试噪声的时候,发现测出来的噪声其实是挺小的,都是FFFF20之类的数值,但是一旦进行正常的采集数据的时候,出来的数据就是800000或者7FFFFF,不知道老师们能不能跟我解释一下,这个噪声测的到底是什么呢?多谢了!!
che lin:
回复 Michael Yang:
yang老师,你好,这几天调试板子,软件方面基本是没什么问题了,硬件的话,板子的干扰会达到几十mv的级别,但是心电信号却只有几个mv,请问这个电路的前端滤波跟电压跟随器所起到的作用大概有多少?因为如果我们的信号比干扰还要小,那怎么进行AD转换啊……
Michael Yang:
回复 che lin:
您观察到的干扰信号是在哪一个频率段的,如果它与心电信号的频率是分开的,那么您可以在输入端再加一些对应的滤波器将干扰频段的能量抑制。由于现在在您的实验中使用的是信号发生器产生的信号源,它并不是实际的心电信号,最理想的方法是您找到产生干扰信号的源头,避免干扰信号的产生,如果没有办法消除其产生,那么只能在ADS1298的输入端再加对应的滤波器将其滤除。
che lin:
回复 Michael Yang:
yang老师您好,干扰信号目前测出来应该是比较高频的,但是加了低通滤波器之后还有高频干扰信号,不知道是不是示波器的问题,我现在有可能的干扰问题是,电源,前端的低通滤波器采用的稳压二极管出现了问题……电压跟随器也有可能有问题
che lin:
回复 Michael Yang:
yang老师您好,干扰信号目前测出来应该是比较高频的,但是加了低通滤波器之后还有高频干扰信号,不知道是不是示波器的问题,我现在有可能的干扰问题是,电源,前端的低通滤波器采用的稳压二极管出现了问题……电压跟随器也有可能有问题
Michael Yang:
回复 che lin:
关于您提到的这个问题还是与您观察到的噪音信号的频率非常相关,而与稳压二极管并没有太大的关系(我认为这个稳压二极管的作用一个是防止输入端过压,此外从电路图上看它也给输入端提供了一个泄放从GND导入的噪音或ESD的通道,总之它能够起到比较好的保护输入端的作用)
在您第一个帖子中的电路图显示的输入低通滤波器,其中r=33K欧姆,c=100pf,那么意味着当前的低通滤波器的-3db截止频率为fH=1/(2πRC)=1/(2*3.14*33K*100p)=48.253KHZ,如果您当前观察到的噪音频率在这个频率fH附近,说明需要使用一个fH更加低的低通滤波器(在不会影响到正常心电信号频率的前提下),即您可以选择一个更大的C 来滤除比截止频率低的噪音信号。
che lin:
回复 Michael Yang:
杨老师,我想问一下数字滤波的问题
信号经过前端放大后,加上一个右腿驱动到人体,然后AD转换,没有加高通低通滤波器,现在需要对转换后的数据进行滤波,请问这个可能吗?AD转换速率默认是500sps
fei dong:
回复 che lin:
提问:
同学,你好。我最近也在调试ADS1298板,使用它时需要如何设置?要做初始化设置吗?还是直接配置寄存器即可?能否分享一下经验?dongfei_1986@126.com.
TI的老师,哪位有时间可否帮我解答一下?急!非常感谢!