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.

ADS1292RECG-FE: 关于例程中数据解析及滤波的问题

Part Number: ADS1292RECG-FE
Other Parts Discussed in Thread: ADS1292R, ADS1292

我在移植官方给的ADS1292R例程库的时候,有个地方一直不明白。望有人给解答一下。

例程中将9个字节的原始数据读回来之后,做了合并处理,将没3个字节合成一个32位的数据存放在ADS1x9x_ECG_Data_buf中。ADS1x9x_ECG_Data_buf[1]存放的是ch1的数据,ADS1x9x_ECG_Data_buf[2]存放的是ch2的数据。

代码如下:这段代码没有问题,可以理解。

for (ECG_Chan_num = 0; ECG_Chan_num < 3; ECG_Chan_num++)
{
ADS1x9x_ECG_Data_buf[ECG_Chan_num] = (signed long)SPI_Rx_buf[3*ECG_Chan_num];
ADS1x9x_ECG_Data_buf[ECG_Chan_num] = ADS1x9x_ECG_Data_buf[ECG_Chan_num] << 8;
ADS1x9x_ECG_Data_buf[ECG_Chan_num] |= SPI_Rx_buf[3*ECG_Chan_num+1];
ADS1x9x_ECG_Data_buf[ECG_Chan_num] = ADS1x9x_ECG_Data_buf[ECG_Chan_num] << 8;
ADS1x9x_ECG_Data_buf[ECG_Chan_num] |= SPI_Rx_buf[3*ECG_Chan_num+2];
}

可是后面在滤波 之前又做了处理,代码如下:

ADS1x9x_ECG_Data_buf[1] = ADS1x9x_ECG_Data_buf[1];
ADS1x9x_ECG_Data_buf[2] = ADS1x9x_ECG_Data_buf[2] >> 4;

ADS1x9x_ECG_Data_buf[1] &= 0xFFFF;
ADS1x9x_ECG_Data_buf[2] &= 0xFFFF;

ECGRawData[0] = (short)ADS1x9x_ECG_Data_buf[1];
ECGRawData[1] = (short)ADS1x9x_ECG_Data_buf[2];

ECGRawData[0-1]是需要进行滤波的原始数据,为什么又24bit数据变成了16bit的,重点是标红出的代码怎么理解。

后面将两个16bit的数据带入了滤波函数中。代码如下:

Resp_ProcessCurrSample(&ECGRawData[0],&ECGFilteredData[0]);
ECG_ProcessCurrSample(&ECGRawData[1],&ECGFilteredData[1]);

望有大神解答一下。谢谢