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.

[参考译文] ADS1261:Okring、ADS1261连接到 ESP32

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

https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/1496536/ads1261-wokring-with-ads1261-connected-to-esp32

器件型号:ADS1261

工具/软件:

大家好:

我正在处理一个项目、设计了一个定制 PCB、该 PCB 使用两个 ADS1261 ADC 来测量16个电极之间的差分电压。 以下是我的设置:

  • 电极接线:

    • ADS1261 #1: 电极1至电极10分别连接到 AIN0–AIN9。

    • ADS1261 #2: 电极10至电极16连接到 AIN0–AIN6、电极0 (环绕电极)连接到 AIN7。

  • ESP32连接:

    • 两个 ADS1261器件共享同一条 SPI 总线。 我已连接:

      • /DOUT_DRDY (从两个 ADC)到 MISO (GPIO19)

      • SCLK 连接到 GPIO18

      • DIN 至 MOSI (GPIO23)

    • 片选引脚是独立的:ADC1使用 GPIO14、ADC2使用 GPIO15。

    • 另外、我已经将绑定了 START、/RESET、/PWDN 和/DRDY 两个 ADC 的引脚一起连接在一起(这可能是个问题、但我认为使用正确的解决方法可以解决此问题)。

  • 测量方法:

    • 我计划并行初始化两个 ADC 、以 PGA 增益为64 (适合我的电极电压范围)的40kSPS 模式运行、并使用内部2.5V 基准。 我的想法是同时向两个器件发送相同的 SPI 命令(一次将两条 CS 线路拉低)、以便它们并行接收命令并执行相应的并行操作。

    • 初始化后、我将两个 ADC 的 INPMUX (寄存器0x11)设置为适当的差分通道(例如、AIN0–AIN1、AIN1–AIN2、…μ s)、然后并行发出 START 命令。 一旦任一器件的 DRDY 变为低电平、我都会等待1us、这样我就可以确保两个 ADC 都完成采样、然后通过切换各自的 CS 线路按顺序读取每个 ADC 的转换结果。

    • 在测试中、我尝试初始化一个器件并在 AIN0和 AIN1之间执行差分测量、但读取失败(始终返回0或意外值)。

  • 开发环境:

    • 我正在使用带有 PlatformIO 的 Arduino 框架进行编程。

    • 我采用了 ADS1261驱动程序(TI 示例中的代码)、并为我的 ESP32实现了所需的 HAL 函数(使用 spi.transfe ()、digitalWrite ()、delay ()等)。

我的特定请求:
我目前坚持最基本的观点:

  1. 初始化: 如何 使用仅 SPI 控制(忽略/PWDN、/RESET 和 START 硬件引脚)、使用上述设置(40kSPS、PGA 增益= 64、内部2.5V 基准)正确地初始化单个 ADS1261实例?

  2. 测量: 如何在 AIN0和 AIN1之间正确地执行单次差分测量(即正确设置 INPMUX 寄存器、发出 START 命令、等待 DRDY、然后读取转换数据)?

如果有人有关于 ADS1261的基于 ESP32的驱动程序示例、或者可以提供关于对此单器件配置进行故障排除的指导、我将非常感谢您的帮助。 一旦我可以成功初始化一个器件并在 AIN0和 AIN1之间获得正确的读数、我就可以调整该设计以实现与两个 ADC 并联运行。

提前感谢您的帮助!

此致、
巴拉兹

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

    尊敬的 Balazs Hazi:

    您能否在初始化期间提供逻辑分析仪数据通信捕获图? 请包括 DIN、DOUT、SCLK、CS、DRDY、 RESET、START 和 PWDN

    -布莱恩

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

    尊敬的 Balazs Hazi:

    诊断这些类型的代码/通信问题的最快和最佳方法是使用逻辑分析仪。 例如、您的代码可能是完美的、但 SPI 模式设置错误、因此 ADC 不会响应任何命令。 并非所有控制器都对 SPI 模式使用相同的约定、因此您不能直接依赖设置 SPI 模式= 01、然后假设它很好、您确实需要进行检查

    此外、还可能存在在代码中无法识别的时序问题、您需要查看发送到 ADC 的内容以及 ADC 如何响应以检测任何问题

    确实收到示波器时、应首先尝试为器件上电、应用时钟(如果不使用内部振荡器)、将 START 引脚拉至高电平、然后探测 DRDY 引脚。 您应该会看到 DRDY 引脚以~50Hz 切换、因为默认数据速率为20SPS。 这很好地表明器件已正确通电并且时钟正在工作、这是第一步

    然后、从小值开始:发送 RESET 命令并确保 ADC 响应与数据表中所示的完全相同。 然后尝试读取默认值为非零的单个寄存器(例如 IMUX)、然后查看响应是否与数据表中所示的响应完全相同。 然后写入单个寄存器并读回。 此时、您应该能够识别代码中存在的问题、然后将其展开以执行所需操作

    -布莱恩

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

    您好 Bryan、  

    很抱歉,迟来的回复,本周已经有很多试错了。 我发现了我的设计中的一些缺陷,并在纠正后,我遵循了你刚才描述的步骤. 这是非常有帮助的,我让我的 ADC 通过这个分步"教程"工作:).

    非常感谢您的帮助!

    此致、
    Balázs μ s

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

    尊敬的 Balazs Hazi:

    很高兴我们能帮助您让您的系统正常工作!

    -布莱恩