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.

[参考译文] ADS1263:ADS1263

Guru**** 2554560 points
Other Parts Discussed in Thread: ADS1263

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

https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/1568027/ads1263-ads1263

器件型号:ADS1263


工具/软件:

您好:

我将 ADS1263差分模式下的 teensy 4.1 微控制器搭配使用

我的应用需要我在三个不同通道 (AIN0、AIN1、AIN2) 之间切换、从而按顺序从每个通道采集单个样本。 我的当前配置为:

  • 数据速率:7200 SPS

  • 过滤器:SINC4

根据数据表的表 9-13、此配置的第一次转换延迟为 0.980ms。 为此、我在每个通道切换后都实施了短延迟。 但是、我遇到了只有第一个通道 (AIN0) 提供正确读数的问题。 后续通道 (AIN1 和 AIN2) 似乎包含前一个通道的残留数据或“垃圾值“、这表明数字滤波器在读取下一次转换之前不会完全稳定。

我已尝试使用delayMicroseconds()呼叫来确保所需的稳定时间、但问题仍然存在。

您能否提供建议的高速连续信道切换方法、以确保所有信道的数据完整性? 是否有比使用简单延迟更稳健的方法?

感谢您的帮助。

此致、

Sania


#include
#include “ADS1263.h"</s>“
#include

const uint32_t SerialUSBSpeed = 19200

const uint8_t CSPin = 7、DrPin = 6、StartPin = 5

Volatile double v1、v2、v3 = 0.0
双倍 CF = 0.0

ADS1263 ADC (CSPin、Drpin);

void setup(){
 Serial.begin(SerialUSBSpeed);
 SPI.begin();
 ADC.BEGIN (FALSE);
 ADC.SetADC1Gain (ADS1263::ADC1GainValue::V1V);
 ADC.SetIntRefActive (TRUE);
 
 //将数据速率设置为 7200SPS
 ADC.SetADC1DataRate (ADS1263::ADC1DataRateValue::SPS7200);

 //将过滤器设置为 SINC4
 ADC.SetFilter (ADS1263::FilterValue:::SINC4);
 
 延迟 (50);
 ADC.StartADC1 ();
 
 通道增益振幅=(double)(1 << static_cast <uint8_t>(ADC.ADC1GainSetting));
 CF = ADC.ReferenceVoltage/增益幅度/2147483647.0
}

void loop(){
 //读取通道 0
 ADC.SetDiffChannal (0);
 delayMicroseconds (980);//等待 0.980ms 的延迟
 ADC.WaitDRDY()
 V1 = CF * ADC.READ_ADC1_Data ();

 //读取通道 1
 ADC.SetDiffChannal (1);
 delayMicroseconds (980);
 ADC.WaitDRDY()
 V2 = CF * ADC.READ_ADC1_Data ();

 //读取通道 2
 ADC.SetDiffChannal (2);
 delayMicroseconds (980);
 ADC.WaitDRDY()
 V3 = CF * ADC.READ_ADC1_Data ();

 serial.printf(“%f %f %f \n“、v1、v2、v3);
}
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Sania Rahman:

    开关多路复用器时无需考虑第一次转换延迟、从寄存器映射中可以看到、在写入 INPMUX 寄存器时(假设器件处于连续转换模式)、ADC 将自动重新启动转换过程。 我在下图中突出显示了这一点

    因此、您只需等到每次 DRDY 下降至低电平、然后开始读回数据。 您的序列如下所示:

    • 执行初始化
    • 开始转换
    • 等待 DRDY 降至低电平
    • 时钟输出数据
    • 更改 INPMUX 设置
    • 等待 DRDY 降至低电平
    • 时钟输出数据
    • 更改 INPMUX 设置

    如果这不起作用、那么您需要提供逻辑分析仪捕获结果、显示 ADC 和控制器之间的通信。 请包括 SCLK、DIN、DOUT、CS 和 DRDY。

    -布莱恩

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

    您好 Bryan、

    感谢您确认我的问题并提供有用的指导。 我完成了您的指示并遵循了建议的方法。 但是、我仍然无法解决设备上的问题。 有趣的是、当我的同事尝试相同的解决方案时、它就开始了他的设置。

    然后、我们将相同的代码编程到我的器件中、但仍然失败。 这导致我们调查了硬件方面。 在调试过程中、我们发现 IC 与其各自的焊盘错位。 由于制造商对器件进行了预焊接、因此我们最初没有注意到这个组装问题。 错位导致连接不正确、从而导致读数不正确。

    重新加工硬件并确保 IC 与 PCB 焊盘正确对齐后、读数变得准确。

    主席先生、再次感谢你的宝贵支持和指导。

    此致、
    Sania

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

    尊敬的 Sania Rahman:

    很高兴您能解决这个问题

    -布莱恩