Part Number: ADS7128
I have not been able to implement RMS function, because the RMS_DONE flag is never set.
Setting RMS_EN (bit 7) in the GENERAL_CFG register is supposed to start conversion, but even after very long time periods the RMS_DONE flag (bit 4 in the SYSTEM_STATUS register) is never set.
This is output from my host program. I have tried several RMS sample rates, but this example is for 16384 samples. After setting RMS_EN, the SYSTEM_STATUS register is polled every 10 milliseconds:
<Arduino serial comm started>
Found I2C device at address: 23 (0x17)
Will reset I2C device.
GENERAL_CFG reg: 0
SYSTEM_STATUS reg: 0
RMS_CFG reg: 100010
GENERAL_CFG reg: 10000000
SYSTEM_STATUS reg: 10001000 MSB reg 0xC2 = 0 LSB reg 0xC1 = 0
SYSTEM_STATUS reg: 10001000 MSB reg 0xC2 = 0 LSB reg 0xC1 = 0
SYSTEM_STATUS reg: 10001000 MSB reg 0xC2 = 0 LSB reg 0xC1 = 0
SYSTEM_STATUS reg: 10001000 MSB reg 0xC2 = 0 LSB reg 0xC1 = 0
SYSTEM_STATUS reg: 10001000 MSB reg 0xC2 = 0 LSB reg 0xC1 = 0
SYSTEM_STATUS reg: 10001000 MSB reg 0xC2 = 0 LSB reg 0xC1 = 0
SYSTEM_STATUS reg: 10001000 MSB reg 0xC2 = 0 LSB reg 0xC1 = 0
SYSTEM_STATUS reg: 10001000 MSB reg 0xC2 = 0 LSB reg 0xC1 = 0
SYSTEM_STATUS reg: 10001000 MSB reg 0xC2 = 0 LSB reg 0xC1 = 0
SYSTEM_STATUS reg: 10001000 MSB reg 0xC2 = 0 LSB reg 0xC1 = 0
SYSTEM_STATUS reg: 10001000 MSB reg 0xC2 = 0 LSB reg 0xC1 = 0
So far, I have been able to use an Arduino microcontroller to program and use this ADS7128 using the OSR (oversampling) feature successfully on many different Ain channels. Thus, I am confident that this particular ADS7128 is connected properly, and that my microcontroller can properly program this particular ADS7128. So, the problem seems to be specific to the RMS function.