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.

[参考译文] ADS1293:ADS1293 DRDYB 中断信号停止

Guru**** 2771175 points

Other Parts Discussed in Thread: ADS1293EVM, ADS1293

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

https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/838706/ads1293-ads1293-drdyb-interrupt-signals-stop

器件型号:ADS1293

您好!

我使用的是 ADS1293 EVM 板、但使用的是外部 Tensy 3.6、而不是板载微控制器(因为 ADS1293仅是另一个较大项目的一部分)。 使用3通道 ECG 的寄存器配置和连接的 ECG 仿真器、我可以获得良好的输出数据(数据循环寄存器的流读数)、直到所有 DRDYB 信号突然停止。 我已通过示波器和屏幕截图确认了这一点(我希望他们能正确上传)。 我在代码中没有执行任何可以停止器件的操作、我很确定它在早期测试中可以正常工作。 我仍然可以在 DRDYB 引脚上看到非常小的尖峰、其频率与之前传入的中断信号相同。 我获取中断单的持续时间是随机的。 我已确认评估板的一般情况下没有任何问题(使用 ADS1293EVM 测试软件)。

一旦数据停止(或之前的数据、我无法在错误寄存器中看到任何相关内容、因为我也在中断 Alarm 引脚):

ERROR_LOD:0x00
ERROR_STATUS:0x00
ERROR_RANGE1:0x00
ERROR_RANGE2:0x00
ERROR_Range3:0x00
ERROR_SYNC:0x00
ERROR_MISC:0x00

是否有人有可以帮助的想法? 现在、我将读取所有其他寄存器、看看那里是否有任何问题...

谢谢!

e2e.ti.com/.../ADS1293_5F00_DataRdyProblem02.pdf

e2e.ti.com/.../ADS1293_5F00_DataRdyProblem01.pdf

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

    寄存器设置:

    地址
    0x00 0x00
    0x01 0x11
    0x02 0x19
    0x03 0x00
    0x04 0x00
    0x05 0x00
    0x06 0x00
    0x07 0x0F
    0x08 0xFF
    0x09 0x00
    0x0A 0x07
    0x0B 0x00
    0x0C 0x04
    0x0D 0x00
    0x0E 0x00
    0x0F 0x00
    0x10 0x00
    0x11 0x00
    0x12 0x04
    0x13 0x00
    0x14 0x00
    0x15 0x00
    0x16 0x00
    0x17 0x05
    0x18 0x00
    0x19 0x00
    0x1a 0x01
    0x1b 0x00
    0x1c 0x17
    0x1d 0x00
    0x21 0x02
    0x22 0x02
    0x23 0x02
    0x24 0x02
    0x25 0x00
    0x26 0x00
    0x27 0x08
    0x28 0x00
    0x29 0x00
    0x2a 0x00
    0x2b 0x00
    0x2C 0x00
    0x2D 0x00
    0x2E 0x33
    0x2F 0x30
    0x30 0x00
    0x31 0x00
    0x32 0x00
    0x33 0x00
    0x34 0x00
    0x35 0x00
    0x36 0x00
    0x37 0x00
    0x38 0x00
    0x39 0x00
    0x3a 0x00
    0x3B 0x00
    0x3c 0x00
    0x3D 0x00
    0x3E 0x00
    0x3F 0x00
    0x40 0x01
    0x50 0x00
    0x60 0x00
    0x62 0x00
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Johnny、

    感谢您的发帖、欢迎加入论坛!  

    您是否有一个10k 上拉电阻器从您的 Tensy 连接到 DRDYB 和/或您的 ALARMB 线路?  

    此主题可能相关: https://e2e.ti.com/support/data-converters/f/73/t/272146

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

    感谢您的回答。

    我最初依靠 EVM 板上的1M 上拉电阻、暂时启用了 Tensy 的内部上拉电阻、甚至添加了一些外部上拉电阻。 不过、明天我将再试一次10k 电阻器。

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

    其他上拉电阻器不能帮助我再次测试了这个、我之前也测试过这个(至少在我看来、这个问题不太可能出现- ADS1293EVM 确实有一个板载上拉电阻器)。  我还在 MSP430中刷写了其他固件、以确保它不会以某种方式干扰(只是一个想法)-我使用了 MSP430固件升级示例中的闪烁示例代码。

    我再次阅读了数据表、找不到任何其他可能导致这种情况的东西-因为我理解这种情况、停止转换的唯一方法应该是将 CONFIG 寄存器中的 START_CON 位写入0。 当问题发生时、它不是0。

    我再次检查的另一件事是与中断相关的寄存器(MASK_DRDYB 和 DRDYB_SRC):

    DRDYB_SRC: 0 0  1 0 0 0

    MASK_DRDYB:0 0

    (SYNC_SRC:0 0)

    应该是正确的。

    如果有人对 ADS1293为何只需停止转换/停止发送中断有另一个想法、我很高兴听到这个想法。 我还将在此处添加相关的代码位:

    void ADS1293_3LeadECG (){
       uint8_t 计数、I = 0;
       uint8_t read_buf[ch_data_size];
       uint32_t ADC_DATA_CH1、ADC_DATA_CH2;
       uint32_t count2 = 0;

       ADS1293_Reset();

       attachInterrupt (digitalPinToInterrupt (ADS1293_DataRdyPin)、ADS1293_IntHandler、下降);
       attachInterrupt (digitalPinToInterrupt (ADS1293_AlarmPin)、ADS1293_AlarmHandler、下降);

       ADS1293_WriteRegSettings3LeadECG ();  //为通道扫描设置 ADS1293

       计数= CH_DATA_SIZE;                                                       //要读取的字节:ADC_DOUT2 - ADCDOUT0
       ADS1293_SPIWriteReg (ADS1293_CONFIG_REG、ADS1293_START);
       while (1){
          IF (ADS1293_DataRdy = 1){
             ADS1293_SPIStreamReadReg (READ_Buf、COUNT);                           //将 ADC 输出读取到 READ_BUf 中

             //格式化原始 ADC 输出数据
             ADC_DATA_CH1 =((uint32_t) READ_BUF[0]<< 16)|((uint16_t) READ_BUF[1]<< 8)| READ_BUF[2];
             ADC_DATA_CH2 =((uint32_t) READ_BUF[3]<< 16)|((uint16_t) READ_BUF[4]<< 8)| READ_BUF[5];

             serial.printf ("%d\t %d\t\n"、ADC_DATA_CH1、ADC_DATA_CH2);

             如果(+i == sample_array_size)   i = 0;      //样本数组已满

             ADS1293_DataRdy = 0;                                               //清除标志
          }
          IF (ADS1293_Alarm = 1){
             serial.println ("ADS1293:发生错误:");


             serial.printf ("ERROR_LOD:%d\n"、convertDecimalToBinary (ADS1293_SPIReadReg (ADS1293_ERROR_LOD_REG)));
             serial.printf ("error_status:%d\n"、convertDecimalToBinary (ADS1293_SPIReadReg (ADS1293_ERROR_STATUS_REG)));
             serial.printf ("error_range1:%d\n"、convertDecimalToBinary (ADS1293_SPIReadReg (ADS1293_error_range1_REG)));
             serial.printf ("error_range2:%d\n"、convertDecimalToBinary (ADS1293_SPIReadReg (ADS1293_error_range2_REG)));
             serial.printf ("error_Range3:%d\n"、convertDecimalToBinary (ADS1293_SPIReadReg (ADS1293_error_Range3_REG)));
             serial.printf ("error_sync:%d\n"、convertDecimalToBinary (ADS1293_SPIReadReg (ADS1293_error_SYNC_REG)));
             serial.printf ("error_MISC:%d\n"、convertDecimalToBinary (ADS1293_SPIReadReg (ADS1293_error_MISC_REG)));

             //清除 ADS1293_Alarm 标志
             ADS1293_Alarm = 0;
          }
       }

    void ADS1293_SPIStreamReadReg (uint8_t*缓冲器、uint8_t 计数){
     ADS1293_CsSet();
     SPI.transfer (ADS1293_read_bit + ADS1293_data_loop_REG);//将地址设置为初始寄存器

     对于(uint8_t i = 0;i < count;i++){
       Buffer[i]= SPI.transfer (0x00);
     }
     ADS1293_CsReset();

    中断在下降沿被置位、ISR 只是将中断标志设定为1。

    寄存器配置如下:

    地址
    0x00 0x00
    0x01 0x11
    0x02 0x19
    0x03 0x00
    0x04 0x00
    0x05 0x00
    0x06 0x00
    0x07 0x0F
    0x08 0xFF
    0x09 0x00
    0x0A 0x07
    0x0B 0x00
    0x0C 0x04
    0x0D 0x00
    0x0E 0x00
    0x0F 0x00
    0x10 0x00
    0x11 0x00
    0x12 0x04
    0x13 0x00
    0x14 0x00
    0x15 0x00
    0x16 0x00
    0x17 0x05
    0x18 0x00
    0x19 0x00
    0x1a 0x01
    0x1b 0x00
    0x1c 0x17
    0x1d 0x00
    0x21 0x02
    0x22 0x02
    0x23 0x02
    0x24 0x02
    0x25 0x00
    0x26 0x00
    0x27 0x08
    0x28 0x00
    0x29 0x00
    0x2a 0x00
    0x2b 0x00
    0x2C 0x00
    0x2D 0x00
    0x2E 0x33
    0x2F 0x30
    0x30 0x00
    0x31 0x00
    0x32 0x00
    0x33 0x00
    0x34 0x00
    0x35 0x00
    0x36 0x00
    0x37 0x00
    0x38 0x00
    0x39 0x00
    0x3a 0x00
    0x3B 0x00
    0x3c 0x00
    0x3D 0x00
    0x3E 0x00
    0x3F 0x00
    0x40 0x01
    0x50 0x00
    0x60 0x00
    0x62 0x00

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

    您好、Johnny、

    很抱歉耽误你的时间、我出差。  

    遗憾的是、我无法提供更多支持、因为这很可能是 Tensy 接口的问题-这不是 TI 器件。