您好!
如何使用 ADS7128中的均方根模块?
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.
下面的步骤概述了 RMS 模块的使用过程:
下表所示为 RMS 计算示例以及根据上述步骤在自主转换模式下使用模拟输入通道0、4096个样本、无直流减法写入每个寄存器的值。
请参考数据表以了解正在配置每个寄存器中的每个单独位。
步骤 |
寄存器 |
寄存器地址 |
寄存器值 |
停止 |
1和2 |
RMS_CFG 寄存器 |
0xC0 |
0x01 |
CH0上的 RMS 计算、请勿减去直流、样本数= 4096 |
3. |
GENERAL_CFG |
0x01 |
0xA0 |
启用 RMS 计算 RMS_EN = 1、无 CRC、STATS_EN、无比较器、正常转换启动、 默认通道配置、无校准、无复位 |
4. |
SEQUILD_CFG |
0x10 |
0x00 |
在自主模式下启动转换。 |
4. |
OPMODE_CFG 寄存器 |
0x04 |
0x00 |
CONV_MODE =‘00' |
4. |
PIN_CFG |
0x05 |
0x00 |
将通道配置为模拟输入 |
4. |
AUTO_SEQ_CH_SEL |
0x12 |
0x01 |
使能用于时序控制的模拟输入。 这将选择通道 AIN0作为序列中的唯一通道 |
4. |
SEQUILD_CFG |
0x10 |
0x01 |
选择"Auto-Sequence"(自动序列)模式 |
4. |
OPMODE_CFG 寄存器 |
0x04 |
0x20 |
配置模拟输入的采样率 |
4. |
SEQUILD_CFG |
0x10 |
0x11 |
启用自主监控(SEQ_START = 1b) |
5. |
SYSEM_STATUS |
0x00 |
|
等待至4096 + 40次转换发生、或在位4 =‘1'上监控 RMS_DONE 的状态 |
5. |
SEQUILD_CFG |
0x10 |
0x01 |
停止序列发生器 |
6. |
RMS_LSB |
0xC1 |
|
从 RMS 寄存器中读取 RMS 结果 |
6. |
System_STATUS |
0x00 |
0x10 |
清除 RMS_DONE 位 |
6. |
GENERAL_CFG |
0x01 |
0x20 |
禁用 RMS 模块 |
类似的流程图可用于不同的配置。 通过设置寄存器上的相应位、可以实现不同数量的样本、输入通道、采样频率、减去直流值或任何其他可用配置。
手动模式遵循一组类似的步骤。 不同之处在于您需要每次读取数据以触发新的转换启动。 根据产品说明书第8.4.2节"当读取输出数据的最后一个字节时、在 SCL 的第九个下降沿(ACK 位)启动新的转换。" 因此、您需要读出请求的 RMS 样本数(配置中为1024、4096、16384或65536)的数据、再加上额外的40次转换、然后才能设置 RMS_done 标志。 在自主模式下、即使主器件未读取转换、ADC 也将进行转换、并且一旦完成必要的转换次数、RMS 结果将显示在 RMS_LSB 和 RMSB 寄存器中。
我们发现使用 RMS 模块时常见缺失的步骤是、若要重新启动另一个 RMS 计算、应清除 RMS_EN 位(设置为0)、然后重新设置为"1"、以在 GENERAL_CFG 寄存器中进行下一次计算。
此致、
天使