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.

[参考译文] CCS/ADS1292R:使用 ADS1292R 获取读数

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

https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/739827/ccs-ads1292r-get-readings-with-ads1292r

器件型号:ADS1292R
主题中讨论的其他器件: ADS1292

工具/软件:Code Composer Studio

朋友们、您好!
ADS1292R 传感器有问题、在对该器件进行几个月的工作后、我终于在通道末端看到一个小灯。

我已经创建了所有 SPI 驱动程序和器件寄存器、我开始创建 main、但现在我已经死了。有人可以帮助我?!e2e.ti.com/.../ADS1292_5F00_R.ce2e.ti.com/.../ADS1292_5F00_R.he2e.ti.com/.../2260.main.ce2e.ti.com/.../0243.main.h

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

    我很高兴我们能够解决最后一个问题、并期待继续这一项目!

    您有一个我可以帮助您的具体问题吗?

    数据表第62页和第63页的"加电排序和为基本数据采集设置器件"部分应提供指导!
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    是的、最后一个问题是不同功率级别的问题、我的电源电压为5V、然后使用 LaunchPad 连接项目、

    我必须连接到电路板的接地端、即必须将所有接地端连接到一个点上。

    现在,问题是我喜欢使用 ads1292r 获取读数,我已经测试了 SPI 通信,使用逻辑分析仪,该部件的设计和功能都很好。

    现在的问题是调用可以执行转换的例程,甚至创建允许转换的软件包... 我认为这部分远远超出了我的知识范围。

    #include 
    //#include 
    #include 
    #include "main.h"
    #include "ADS1292_R.h"
    
    
    extern unsigned char ADS1292R_REG_Value[16];
    extern unsigned char SPI_Rx_BUF[];
    extern unsigned char ECG_DATA_RDY;
    extern long ADS1292R_ECG_DATA_BUF[6];
    extern unsigned char ECG_STATE
    
    
    
    (exvoid)、ADS12256_t RECORTE_STAT_LEADDRESR、void [256
    volatile unsigned short i、j;
    WATCHDOGHOLD();
    init_Start_up();
    ADS1292R_POWER_ON_INIT ();
    start_read_data_continuous ();
    对于(i = 0;i < 10000;i++);
    对于(i = 0;i < 10000;i++);
    对于(i = 0;i < 10000;i++);
    
    ADS1292R_disable_start ();
    ADS1292R_ENABLE_START ();
    
    对于(i = 0;i < 10000;i++);
    对于(i = 0;i < 10000;i++);
    对于(i = 0;i < 10000;i++);
    
    
    ecgState.state = IDLE_STATE;
    ecgState.command = 0;
    
    while (1){
    if ((ecgState.state = idle_State)){
    /**/
    ADS1292R_disable_start ();
    ADS1292R_ENABLE_START ();
    
    ADS1292R_disable_start ();
    
    ADS1292R_CHIP_ENABLE();
    
    CLEAR_ADS1292R_CHIP_ENABLE();
    
    ADS1292R_CHIP_ENABLE();
    start_read_data_continuous ();
    
    ENABLE_ADS1292R_DRDY_INTERRUPT ();
    ADS1292R_ENABLE_START ();
    
    ecgState.state = ECG_recording_State;
    
    }否则(((ecgState.state = ECG_recording_State)){
    ecgState.state = IDLE_STATE;
    disable_ADS1292R_DRDY_INTERRUPT ();
    stop_read_data_continuous ();
    }
    
    switch (ecgState.state){
    IDLE_STATE 情况:
    if (ecgState.command!= 0){
    ecgState.command = 0;
    }
    中断;
    
    案例 DATA_STREGUSE_STATE:
    
    中断;
    
    案例 ACK_DATA_STATE:
    中断;
    
    案例 ECG_recording_State:
    if (reconer_head!= reconer_tail){
    RECORDER TAIL++;
    if ((recore_tail % 4)==0){
    /*每8个样本后,将心电图数据存储到内存中*/
    if (RECORDER TAIL == 32) /*32个采样后重置尾数*/
    RECORDER TAIL = 0;
    }
    }
    中断;
    
    默认值:
    中断;
    
    }
    
    
    }/*while */
    }/*main*/
    
    void init_Start_Up (void){
    _disable_interrupt ();
    //init_Clock ();
    __ENABLE_INTERRUPT ();
    }
    
    void WATCHDOGHOLD (void){
    WDTCTL = WDTPW + WDTHOLD; /*停止看门狗计时器*/
    
    }
    

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

    应用程序当然是一个困难的应用程序、但您正在取得巨大进展!

    第一步,重点是正确为设备加电,第62页,读取 ID 寄存器,并监控 DRDY 切换。

    此主题中的问题列表可能会有所帮助: e2e.ti.com/.../2727329
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Alexander、
    我在我的应用程序中做了一些更改、但存在一些问题、我想私下与您分享我的所有代码、为了给我一些反馈、我已经尝试了所有操作、但这是非常困难的

    /*include*/
    #include 
    #include 
    #include "main.h"#include
    
    #include "ads1292r.h"
    #define LOW_STATE 0x00
    unsigned short numPackets、samplesRequired;
    unsigned char numFrame;
    
    extern unsigned char ECG_REACK_DATA_bu[512]、headRecorder、tailRecorder;
    extern unsigned char SPI_TX_BUF[];
    unsigned char ECG_TX_packet[64]、ECG_TX_packet[64]、ECG_Q_TX_packet
    、ECT_TX_packet、RQ_COUNT_Q_64] dummy;
    
    extern long ECG_DATA_buff [6];
    
    unsigned char ECG_record_buff [256];
    unsigned char * ECGPacketAcqPrt;
    unsigned char ECGR_head;
    
    struct ads1292R_status recorer_status;
    
    
    /* static*/
    extern unsigned char ads1292R_Adress [11];
    extern uint8_t ads1292R_Regval[11];
    static volatile uint8_t SPI_RXCOUNT = 0;
    volatile bool ads1292data8=0_unsigned
    t_unsigned
    
    
    
    ve8
    ;unsigned quotr_t degaturs=0=uint8;unsigned uint8 uints=uint8 uints=uint8;unsigned uintuint8 uints=uint8 uints=uint8 uintuintuints=uint8;unsigned uintuintuintuints=uint8 uintuints=
    
    
    /*main 例程*/
    void main (void){
    volatile unsigned short i、j;
    unsigned char regInit;
    P2->DIR |= BIT0 | BIT1;
    
    看门狗狗犬; /*功能看门狗定时器*/
    ads1292R_Init_Resources();
    
    ads1292r_Reset(); /**/
    ads1292R_Start_DS (); /*禁用启动 PIN*/
    delayADS1292R (20); /*稳定的小延迟*/
    ads1292R_Start_EN (); /*启用启动 PIN*/
    delayADS1292R (20); /*稳定的小延迟*/
    ads1292R_Start_DS (); /*禁用启动 PIN*/
    
    ads1292R_SPI_CMD_DATA (start_); /*发送命令数据开始*/
    ads1292R_SPI_CMD_DATA (STOP_); /*发送命令数据停止*/
    delayADS1292R (50); /*稳定的小延迟*/
    ads1292R_SPI_CMD_DATA (S_DATA_C);/*发送命令数据连续读取*/
    delayADS1292R (300); /*稳定的小延迟*/
    
    for (regInit = 0;regInit < sizeof (ads1292R_RegVal);regInit++){
    ads1292R_REG_WRITE (ads1292R_Adress [regInit]、ads1292R_RegVal[regInit]);
    delayADS1292R (10);
    }
    ads1292R_SPI_CMD_DATA (R_DATA_C);/*命令停止连续读取数据*/
    delayADS1292R (20);
    /*在 NVIC 模块中启用 ECCIB0中断*/
    NVIC->ISER[0]= 1 <<((EUSCIB0_IRQn)& 31);
    NVIC->ISER[1]= 1 <<(port2_IRQn)& 31);
    
    clearPowerLosses();
    /*启用全局中断*/
    _enable_interrupt ();
    
    while (1){
    if ((P2->IN & BIT3)=true){
    P2->OUT |= BIT0;
    P2->OUT &=~(BIT1);
    }否则{
    P2->OUT |= BIT1;
    P2->OUT &=~(BIT0);
    read1292R = true;
    }
    /**/
    if (ads1292dataReceived == true){
    J=0;
    //通过 USB 传输数据
    
    for (i=0;i<6;i+=3){//数据输出为(24个状态位+ 24位呼吸数据+ 24位 ECG 数据)
    
    uecgtemp =(unsigned long)(((unsigned long) SPI_RX_BUF[i+3]<< 16)|
    ((无符号长整型) SPI_RX_BUF[I+4]<< 8)|
    (无符号长整型) SPI_RX_BUF[I+5]);
    
    uecgtemp =(unsigned long)(uecgtemp << 8);
    secgtemp =(带符号长整型)(uecgtemp);
    secgtemp =(带符号长整型)(secgtemp >> 8);
    
    s32DaqVals[j++]=secgtemp;
    }
    DataPacketHeader[0]= CES_CMDIF_PKT_START_1;//数据包头1:0x0A
    DataPacketHeader[1]= CES_CMDIF_PKT_START_2;//数据包头2:0xFA
    
    DataPacketHeader[2]=(uint8_t)(data_len); //数据长度
    DataPacketHeader[3]=(uint8_t)(data_len>8);
    DataPacketHeader[4]= CES_CMDIF_TYPE_DATA; //数据包类型:0x02 -数据0x01 -命令
    
    DataPacketHeader[5]= s32DaqVals[1]; // 4字节 ECG 数据
    DataPacketHeader[6]= s32DaqVals[1]>> 8;
    DataPacketHeader[7]= s32DaqVals[1]>> 16;
    DataPacketHeader[8]= s32DaqVals[1]>> 24;
    
    DataPacketHeader[9]= s32DaqVals[0]; // 4字节呼吸数据
    DataPacketHeader[10]= s32DaqVals[0]>> 8;
    DataPacketHeader[11]= s32DaqVals[0]>> 16;
    DataPacketHeader[12]= s32DaqVals[0]>> 24;
    
    DataPacketHeader[13]= CES_CMDIF_TYPE_DATA;//数据包 footer1:0x00
    DataPacketHeader[14]= CES_CMDIF_PKT_STOP;//数据包 footer2:0x0B
    
    for (i=0;i<15;i++){
    // printf ("value:%c\n"、DataPacketHeader[i]); //通过 USB 发送数据
    }
    ads1292dataReceived = false;
    SPI_RXCOUNT = 0;
    
    }
    
    }
    
    
    空看门狗狗狗(空){
    WDTCTL = WDTPW | WDTHOLD; /*stop watchdog timer*/
    }
    
    void clearPowerLosses (void){
    printf ("端口引脚低电平:%s\n"、"确定");
    P2->DIR |= 0xFF;P2->OUT = 0;
    P3->DIR |= 0xFF;P3->OUT = 0;
    P4->DIR |= 0xFF;P4->OUT = 0;
    P5->DIR |= 0xFF;P5->OUT = 0;
    P6->DIR |= 0xFF;P6->OUT = 0;
    P7->DIR |= 0xFF;P7->OUT = 0;
    P8->DIR |= 0xFF;P8->OUT = 0;
    P9->DIR |= 0xFF;P9->OUT = 0;
    P10->DIR |= 0xFF;P10->OUT = 0;
    
    }
    

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

    您有一个我可以帮助您的具体问题吗?

    EVM 的源代码现已推出、可帮助您调试代码。 可在 ADS1292ECG-PDK 产品页面上找到该代码。 www.ti.com/.../ADS1292ECG-FE

    请记住,此源“按原样”提供,不支持修改/更改。 另请注意、该软件针对我们的评估平台进行了优化、因此可能不适合终端设备应用。