我无法实现 RMS 函数、因为从不设置 RMS_done 标志。
在 GENERAL_CFG 寄存器中设置 RMS_EN (位7)应开始转换、但即使在经过很长时间之后、RMS_DONE 标志(SYSTEM_STATUS 寄存器中的位4)也不会设置。
这是主机程序的输出。 我尝试了多个 RMS 采样率、但此示例针对16384个采样。 设置 RMS_EN 后、每10毫秒轮询一次 SYSTEM_STATUS 寄存器:
在地址:23 (0x17)处找到 I2C 器件
将复位 I2C 器件。
GENERAL_CFG 寄存器:0
SYSTEM_STATUS 寄存器:0
RMS_CFG 寄存器:100010
GENERAL_CFG 寄存器:10000000
SYSTEM_STATUS 寄存器:10001000 MSB 寄存器0xC2 = 0 LSB 寄存器0xC1 = 0
SYSTEM_STATUS 寄存器:10001000 MSB 寄存器0xC2 = 0 LSB 寄存器0xC1 = 0
SYSTEM_STATUS 寄存器:10001000 MSB 寄存器0xC2 = 0 LSB 寄存器0xC1 = 0
SYSTEM_STATUS 寄存器:10001000 MSB 寄存器0xC2 = 0 LSB 寄存器0xC1 = 0
SYSTEM_STATUS 寄存器:10001000 MSB 寄存器0xC2 = 0 LSB 寄存器0xC1 = 0
SYSTEM_STATUS 寄存器:10001000 MSB 寄存器0xC2 = 0 LSB 寄存器0xC1 = 0
SYSTEM_STATUS 寄存器:10001000 MSB 寄存器0xC2 = 0 LSB 寄存器0xC1 = 0
SYSTEM_STATUS 寄存器:10001000 MSB 寄存器0xC2 = 0 LSB 寄存器0xC1 = 0
SYSTEM_STATUS 寄存器:10001000 MSB 寄存器0xC2 = 0 LSB 寄存器0xC1 = 0
SYSTEM_STATUS 寄存器:10001000 MSB 寄存器0xC2 = 0 LSB 寄存器0xC1 = 0
SYSTEM_STATUS 寄存器:10001000 MSB 寄存器0xC2 = 0 LSB 寄存器0xC1 = 0
到目前为止、我已经能够使用 Arduino 微控制器通过在许多不同 AIN 通道上成功使用 OSR (过采样)功能对该 ADS7128进行编程和使用。 因此、我确信此特定 ADS7128已正确连接、而且我的微控制器可以正确地对此特定 ADS7128进行编程。 所以、这个问题似乎特定于 RMS 函数。