在“线程: ADS1192”中讨论的其他部件
有关ADS1191的SPI接口和TI主页的现有固件的问题
在tidcbr3.zip示例中,有一个名为ADS1x9x.c的文件
对我来说,还不清楚DATA_STRELEMing_State和ECG_recording_State之间的区别
我正在使用Cortex M0,如何从ADS1191前端获得ECG信号到M0?
也许有人会有更容易的C示例来获取ECG数据
以下是不清楚的代码的部分
void ADS1191_parse_data_packet (void)
{
UINT8_t ECG_Chan_num;
开关(ECG_Recoder状态)
{
案例空闲状态:
中断;
案例数据流状态:
{
对于(ECG_Chan_num = 0;ECG_Chan_num < 2;ECG_Chan_num++)
{
ADS1x9X_ECG_Data_buf[ECG_Chan_num]=(签名长) SPI_Rx_buf[2*ECG_Chan_num]; //获取MSB 8位
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[2*ECG_Chan_num+1]; //获取LSB 8位
}
ADS1x9X_ECG_Data_buf[0]= ADS1x9X_ECG_Data_buf[0]<8; //以兼容24位器件
}
中断;
案例Acquire数据状态:
病例ECG_RECORDING_STATE:
{
UINT8_t * PTR;
PTR =&ECGRecorder_data_buf[Recorder_head <<3];//头部的点到圆形缓冲区*8;
*PTR++= SPI_Rx_buf[0]; //存储状态
*PTR++= SPI_Rx_buf[1]; //存储状态
// if ((SPI_Rx_buf[2]& 0x80 )== 0x80)// CH0[15-8]= MSB (16位设备)
// *PTR++= 0xFF; // CH0[23-16]= 0xFF (16位设备)符号
// 其他
// *PTR++= 0; // CH0[23-16]= 0 (16位设备)
*PTR++= SPI_Rx_buf[2]; // CH0[15-8]= MSB (16位设备)
*PTR++= SPI_Rx_buf[3]; // CH0[7-0]= LSB (16位设备)
*PTR++= 0;
// if ((SPI_Rx_buf[2]& 0x80 )== 0x80)// CH0[15-8]= MSB (16位设备)
// *PTR++= 0xFF; // CH0[23-16]= 0xFF (16位设备)符号
// 其他
// *PTR++= 0; // CH0[23-16]= 0 (16位设备)
*PTR++= SPI_Rx_buf[2]; // CH0[15-8]= MSB (16位设备)
*PTR++= SPI_Rx_buf[3]; // CH0[7-0]= LSB (16位设备)
*PTR++= 0;
recorder_head ++; //增量循环缓冲指针
IF (Recorder_head == 32) //检查循环器缓冲深度。
recorder_head = 0; //到达MAX时停止
}
中断;
默认:
中断;
}
}