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.

[参考译文] ADS1191:如何将ECG信号从ADS1191传输到我的Cortex M0控制器

Guru**** 2556550 points
Other Parts Discussed in Thread: ADS1191, ADS1192

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

https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/592915/ads1191-how-can-i-get-the-ecg-signal-out-of-the-ads1191-into-my-cortex-m0-controller

部件号:ADS1191
在“线程: 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时停止
  }
           中断;
      
      默认:
           中断;

 }

}

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

    您发布的代码是为ADS1192 EVM开发的,是为MSP430编写的,非常特定于EVM的操作,而不是针对通用终端应用进行优化。 我们没有用于此设备的ARM处理器的代码。 但是,该设备使用标准SPI接口。 也许您的微控制器的制造商已经为SPI创建了一些库,使其易于编程。

    此致,
    Brian Pisani