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.

[参考译文] ADS1198:ADS1198数据提取问题

Guru**** 2384440 points
Other Parts Discussed in Thread: ADS1198, ADS1198ECGFE-PDK
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/581574/ads1198-problem-with-ads1198-data-extraction

部件号:ADS1198

您好:

我正在研究一个与ECG相关的项目,将TI ADS1198与Arduino配合使用。  我成功地通过SPI总线写入/读取寄存器(例如获取ads1198的ID寄存器值182并将每个输入通道设置 为正常电极)。

 我想通过串行comport向MATLAB显示频道,但我得到了类似于下图的奇怪波形。

 我只是首先显示5个通道,通道1,4,5是奇数的(但我确实在正常电极模式下设置了这个通道 ),通道2,3似乎是正确的吗?

 但不确定。 所以我很困惑为什么通道2,3似乎可以正常获取数据,但其他通道却不能。

  

下面是我写入ads1198寄存器的设置,

1.问: 此设置是否错误?

由于我不太确定0x0D到0x19的函数,只需按照我在TI软件ADS1198演示套件中看到的寄存器映射表,它就可以看到所有通道波均正确。

void adsNormalElectro()
{
ADC_wreg (0x01,0x04);//Config1 //0x0.45万SPS
ADC_wreg (0x02,0x10);//Config2 //0x10
ADC_wreg (0x03,0xDC);//Config3 //0xDC
ADC_wreg (0x04, 0x03);//LoFF //0x03
ADC_wreg (0x05,0x00);/CCH1SET//0x00
ADC_wreg (0x06,0x00);
ADC_wreg (0x07, 0x00);
ADC_wreg (0x08,0x00);
ADC_wreg (0x09,0x00);
ADC_wreg (0x0A,0x00);
ADC_wreg (0x0B,0x00);
ADC_wreg (0x0C, 0x00);/CH8SET //0x00

ADC_wreg (0x0D,0x00);//RLD_SENSP //0x00
ADC_wreg (0x0E,0x00); //RLD_SENSN //0x00
ADC_wreg (0x0F,0xFF);//LoFF_SENSP //0xFF
ADC_wreg (0x10,0x02);//LoFF_SENSN //0x02
ADC_wreg (0x11, 0x00);//LoFF_flip //0x00
ADC_wreg (0x12,0x00);//LoFF_STATP //0x00
ADC_wreg (0x13,0x00); //LoFF_statn //0x00
ADC_wreg (0x14,0x00);//GPIO //0x00
ADC_wreg (0x15,0x00);//PACE //0x00
ADC_wreg (0x16,0x00);//resp. //0x00
ADC_wreg (0x17,0x00);//CONFIIG4 //0x00
ADC_wreg (0x18,0x00);//WCT1 //0x00
ADC_wreg (0x19,0x00);//WCT2 //0x00
} 

我将ads1198置于RDATAC模式(0x10),并使用Agilent逻辑分析器检查其波形,似乎是正确的

  

我确信我会将每个通道16位数据(2的补码二进制)转换为十进制值并在MATLAB中绘制。  

我在Matlab中处理16位数据的方式

s=serial ('COM9','bandrate',11.52万);% setup comport fopen(s);% Open comport
t1=fread (s,1);//获取通道第一字节
t2=fread (s,1);//获取通道第二字节
ch_1=t1*256+t2;//将其转换为16bit change2dec=2sec_21
;dec_twin
= 

这是我在RDATAC模式下输入ads1198后发送每个字节的方式

int adc_read_data(void)//函数读取5个数据通道
{
int i =0;
digitalWrite (slaveSelectPin,low);
//仅尝试读取一个通道。 3字节状态+ 2字节一个通道数据
int numSerialBytes =13;//现在只需读取5个通道来检查
unsigned char serialBytes[numSerialBytes];
对于(i =0;i < numSerialBytes;+I)
{
serialBytes[i]= SPI.transfer(0);
}
delayMicroseconds(1);
digitalWrite(slaveSelectPin,高);

用于(I =3;I < numSerialBytes;+I)
{
	Serial.write(serialBytes[I]);//将字节发送到MATLAB
}

2.Q:当DRDY引脚变低时,其时间是长还是短? cuz在逻辑分析器中,有时我看到DRDY引脚在较低的时间更长,但有时更短 (可能是个问题? 只是猜测)

 这是我使用的环境:  ECG模拟器,D15电缆,60-80BPM,1mV

是否有人可以指导我,我在获取此结果的数据时遇到了什么问题? 如何修复?  

期待您的宝贵建议,提前感谢您的参与。

最佳

Frank | frank61.3055万@gmail.com

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好,Frank,

    您能否将您的示意图发送给我? 我现在的理论是WCT模块配置不正确,所以胸部导联通道有一些奇怪的输入。

    此致,
    Brian
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    大脑:

    谢谢你回复我。  

    我不把ads1198制作成PCB板。  我 只是先使用ADS1198ECGFE-PDK来尝试,而不是使用MMB0 主板(仅用于电源)

    我如何设置您所说的"WCT module is not configured properly (WCT模块配置不正确) ",WCT1,WCT2寄存器对我来说是错误的?

    因为我只需遵循TI软件的寄存器映射,就可以通过ECG模拟器获得正确的值。

    顺便说一句,我用我的MATLAB公式仔细检查了2的声道测试硅干( 方波)补码,我认为它工作正常。 (只需让问题更加清晰)

    谢谢你

    此致,
    弗兰克

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好,Frank,

    在代码中,您需要将WCT1更改为0x0A,将WCT2更改为0xDC。

    Brian