工具/软件:
大家好:
我正在处理一个项目、设计了一个定制 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 ()等)。
-
我的特定请求:
我目前坚持最基本的观点:
-
初始化: 如何 使用仅 SPI 控制(忽略/PWDN、/RESET 和 START 硬件引脚)、使用上述设置(40kSPS、PGA 增益= 64、内部2.5V 基准)正确地初始化单个 ADS1261实例?
-
测量: 如何在 AIN0和 AIN1之间正确地执行单次差分测量(即正确设置 INPMUX 寄存器、发出 START 命令、等待 DRDY、然后读取转换数据)?
如果有人有关于 ADS1261的基于 ESP32的驱动程序示例、或者可以提供关于对此单器件配置进行故障排除的指导、我将非常感谢您的帮助。 一旦我可以成功初始化一个器件并在 AIN0和 AIN1之间获得正确的读数、我就可以调整该设计以实现与两个 ADC 并联运行。
提前感谢您的帮助!
此致、
巴拉兹