ADS1282: ADS1282 死机

Part Number: ADS1282

我用ADS1282芯片,上电正常启动没问题。某些偶发条件,芯片返回值为全零,此时 DRY 引脚不产生中断。需要重新上电才能恢复正常。我用的连续采样模式,采集代码如下:

int16_t ADS1282_Read_Data(void) 
{
    unsigned char tx_data[2] = {0};
    unsigned char rx_data[2] = {0};

    rx_data[0] = SPI_ReadWrite(ads1282Gpio_hard.spi,tx_data[0]);
    rx_data[1] = SPI_ReadWrite(ads1282Gpio_hard.spi,tx_data[1]);
        
    int16_t result = ((int16_t)(rx_data[0]) << 8) | ((int16_t)(rx_data[1]));

    return result;
}

void drt_int(void)
{
  adc_val_tem = ADS1282_Read_Data();            // 读取ADC数据
  adc_cnt++;                                    // 采样计数+1
  ads1282_overtime_cnt = 0;
}

GPIO_EnableInt(ads1282Gpio_hard.dry, INT_HI2LO, drt_int);  // 使能Dry引脚中断

 

  • 您好,
    已经收到了您的案例,调查需要些时间,感谢您的耐心等待。

  • 您好,
    您说的某些偶发条件是什么? 如果DRDY一直为高电平,请确认供电电压,CLK时钟,RESET信号是否正常。
    ADC转换结果是24bit或32bit,至少需读24bit,看似代码中只读了16bit数据,那么SCLK时钟是否超过24位?
    猜测您是使用的“9.26.1 Read Data Continuous”,请参考数据手册9.26 Reading Data中的时序图检查代码中SPI_ReadWrite函数。
    芯片产品网页上提供了示例代码请参考。