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.

[FAQ] [参考译文] [常见问题解答] ADS7128:使用 RMS 模块

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

https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/1225819/faq-ads7128-using-the-rms-module

器件型号:ADS7128

您好!

如何使用 ADS7128中的均方根模块?

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

    下面的步骤概述了 RMS 模块的使用过程:

    1. 使用 RMS_CFG 寄存器中的 RMS_Chid 字段选择 RMS 计算通道。
    2. 通过配置 RMS_SAMPLES 字段定义要计算 RMS 的时间。
    3. 通过在 GENERAL_CFG 寄存器中将 RMS_EN 设置为1来开始 RMS 计算。
    4. 当在为 RMS 计算选择的模拟输入上转换由 RMS_SAMPLES 定义的样本大小时、器件开始计算 RMS 结果。 必须转换额外的40个样本以完成 RMS 计算。
    5. 要监控 RMS 计算何时完成、请轮询 SYSTEM_STATUS 寄存器中的 RMS_DONE 位。 通过配置 ALERT_MAP 寄存器中的 ALERT_RMS 位、ALERT 引脚还可用于请求中断。
    6. 读取 RMS 结果、清除 RMS_DONE 位并禁用 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

    在自主模式下启动转换。
    空闲、SEQ_MODE =‘00'
    无需写入、默认工作

    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"(自动序列)模式
    SEQ_MODE = 01b

    4.

    OPMODE_CFG 寄存器

    0x04

    0x20

    配置模拟输入的采样率
    将 MODE 设置为自主监控(CONV_MODE = 01b)
    自主模式、高速振荡器、采样频率= 1000ksps

    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
    RMS_MSB

    0xC1
    0xC2

     

    从 RMS 寄存器中读取 RMS 结果

    6.

    System_STATUS

    0x00

    0x10

    清除 RMS_DONE 位

    6.

    GENERAL_CFG

    0x01

    0x20

    禁用 RMS 模块
    (RMS_EN = 0)

     

    类似的流程图可用于不同的配置。 通过设置寄存器上的相应位、可以实现不同数量的样本、输入通道、采样频率、减去直流值或任何其他可用配置。

    手动模式遵循一组类似的步骤。 不同之处在于您需要每次读取数据以触发新的转换启动。  根据产品说明书第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 寄存器中进行下一次计算。

    此致、

    天使