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.

[参考译文] ADS127L21:M_CRC_ERR

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

https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/1262821/ads127l21-m_crc_err

器件型号:ADS127L21

您好、TI 支持团队

我有一个关于 ADC STATUS2寄存器中的 M_CRC_ERR 的问题。
我的配置是:
CONFIG1 = 0x03
CONFIG2 = 0x07
CONFIG3 = 0x67
FILTER1 = 0xE7
FILTER2 = 0x01
FILTER3 = 0x00
OFFSET2 = 0x00
OFFSET1 = 0x00
OFFSET0 = 0x00
GAIN2 = 0x40
GAIN1 = 0x00
GAIN0 = 0x00

包含 DevID 和 REVID 的计算出的 CRC 为 0xBE。 这似乎是正确的。 我还 使用另一个工具对其进行了仔细检查。 在将该值写入 MAIN_CRC 寄存器后、通过 向 STATUS2寄存器中写入"1"来复位该寄存器的标志。 之后、我读 回 STATUS2寄存器、并且 M_CRC_ERR 仍为"1"。  我回读所有寄存器以检查它们是否正确以及没有错误。 用我的示波器进行仔细检查、发现它显示了 正确的值。

 复位标志后、我是否必须等待?

此致 Theo

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

    尊敬的 Theo:

    在向任何包含的寄存器和 MAIN_CRC 寄存器写入数据后、必须留有延迟、然后才能向 STATUS2寄存器中的 M_CRC_ERR 位写入1b。  当任何寄存器更新时、ADC 需要有限的时间来计算 CRC。  我没有确切的时间、但您应该允许几个时钟周期。

    请告诉我、这是否会在短暂的延迟后清除标志。

    此致、
    N·基思
    精密 ADC 应用

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

    尊敬的 Theo:

    您是否也在 CRC 计算中包含 MUX 寄存器(地址0x05h)?  此外、MUX 的值(0x00?)是多少? 和 REVID 来定义它。

    此致、
    基思

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

    Keith、您好

    这是我的顺序:
    1. 我通过 SPI 复位器件(128 * 0xff)。 然后我等待10ms。
    2. 在 CONTROL_REG 中开始转换。  
    3.清除状态寄存器中的所有 ERR 标志。
    4.写入 CONFIG3以启用 CRC
    5.读取 DevID 以计算 CRC
    6.读取 REVID 以计算 CRC
    7.写回 MUX 寄存器并计算 CRC。 然后等待1ms。
    8.
    9.再次写入和读回 CONFIG3 并计算 CRC。  然后等待1ms。
    10.
    11.写入和读回 GAIN_LSB 并计算 CRC。  然后等待1ms。
    12. wire 和读回 CRC 寄存器。   然后等待10ms。
    13.将0x01更改为 STATUS2以复位 M_CRC_ERR。  然后等待1ms。
    14.读取 STATUS2 以检查 M_CRC_ERR。

    如果我在两次写入之间不等待的情况下写入 ADS、则会收到错误。 我有一个开发板、我将其修改为3.3V、因为我只需要低速模式。 REVID 为0x00。 我还 修改后的电路板连接到了 Devkit 附带的 TI 测试板、该电路板仍然有效。

    此致 Theo  

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

    Keith、您好

    它现在有点起作用了。
    我切换到了首先使用其 CRC_REG 写入 FIR_BANK、然后 按照数据表中所述切换 CONFIG3中的 REG_CRC 位。  这之后、我 将执行其余的配置。 但是、它需要运行全部文件两次才能使 M_CRC_ERR 变为"0"。 我现在只在将 CRC 写入其寄存器后使用等待计时器、而不再在每个写入命令之间使用等待计时器。 噢、我删除了步骤"2.   在 CONTROL_REG"中启动转换。 现在、我在成功 配置后执行该操作。

    是否有任何信息表明正确的顺序是什么?低速模式是否对计算 CRC 所需的时间有影响?

    此致 Theo

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

    您好、theo:

    寄存器存储器 CRC 的建议顺序如下:

    1. 使用所需的值写入所有主程序存储器寄存器。
    2. 计算主程序存储器寄存器的 CRC (包括设置为1的 REG_CRC 位)。
    3. 向 MAIN_CRC 寄存器写入 CRC 值。
    4.  使用所需的值将 FIR 系数写入 FIR_BANK。
    5. 计算 FIR 系数的 CRC
    6. 将 CRC 值写入 FIR_CRC1和 FIR_CRC0寄存器。
    7. 使用所需的值将 IIR 系数写入 IIR_BANK。
    8. 计算 IIR 系数的 CRC。
    9. 将 CRC 值写入 IIR_CRC 寄存器。
    10. 向 REG_CRC 位写入0、然后向 REG_CRC 位写入1。
      1. 这将启用 CRC 校验、并清除 STATUS2寄存器中的 M_CRC_ERR 位、F_CRC_ERR 位和 I_CRC_ERR 位以及 STATUS1寄存器中的 CRC_ERR 位。
      2. 如果 REG_CRC 位已经为0、则可以只向 REG_CRC 位写入1、或通过先写入0然后再写入1来保持相同的流程。  正是 REG_CRC 位的0->1个转换既启用 CRC 检查、又将所有 x_CRC_ERR 位清零。

    关于计算 CRC 所需的时间、我无法确定确切的数字、但它基于多个 CLK 周期。  如果从高速(25.6MHz)更改为低速并使用内部8分频、则所需的延迟不会发生变化、因为外部时钟频率是相同的。  不过、如果您不使用内部分频器(无分频)而是将外部时钟更改为3.2MHz、则所需的延迟时间将增加8倍。

    此致、
    基思

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

    Keith、您好

    感谢您提供的信息。 我休假了2周、但回来之后、我会调整我认为顺序有误的积分。 但我认为这可以解决问题。  

    感谢你的帮助。 我真的很感激。  

    此致 Theo