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.

[参考译文] ADS7138:CRC 模块

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

https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/1009936/ads7138-crc-module

器件型号:ADS7138
主题中讨论的其他器件: ADS7066

您好!
我正在为 ADS7138编写驱动程序。 我仍然没有硬件、希望加快开发速度、因此我目前无法进行任何实验来帮助我了解器件。
我对 CRC 模块有几个问题、因为我不知道自己是否理解正确:

1)上电 CRC -这是否意味着器件根据预期的默认值计算 CRC 并在与预编程值不匹配时将故障(CRC_ERR_FUSE)置为有效?  

2) 2)写入  ADS7138 -这是否意味着每当我写入一些数据并且 启用 ADS7138 CRC 时、我需要附加写入字节的 CRC? 那么、当我将一个字节写入 General_CFG 时、我实际上需要通过 I2C 发送两个字节(General_CFG 值加上它的 CRC)?  

3) 3)从 ADS7138读取数据。 数据表中的一般信息表明、CRC 也适用于输出数据。 我看不到任何启用输出 CRC 的配置位。 如果启用此选项、是否意味着从 Recent CH0_LSB 读取的值将返回 Recent CH0_LSB 值+其 CRC 字节? 即使 CRC 被激活、我也能使用突发寄存器读取吗?


谢谢、
Vlastimil

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

    您好!

    CRC_ERR_FUSE 有助于确认 CRC 已正确设置或已正确启用。 这与 CRC_ERR_IN 寄存器不同、该寄存器指示使用 CRC 时传入通信是否存在错误。 这意味着传入 CRC 的值不是预期值。  

    2.如果启用了 CRC,则所有传入通信都需要附加 CRC。 您的理解是正确的。  

    3. 要启用 CRC 模块,请设置 General_CFG 寄存器中的 CRC_EN 位。 数据表中的表3 显示了配置 ADS7138时如何检测到 CRC 错误。 正确、来自 ADC 的所有输出数据也会附加 CRC。  

    以下文档介绍了 CRC 模块、它参考了 ADS7066、但功能和行为与 ADS7138相同。  

    ADS7066的 CRC 实现

    此致

    Cynthia

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

    您好、Cynthia、

    感谢您提供更多信息。 我仍然不理解  CRC_ERR_FUSE 的用途。 检查哪个 CRC 设置? 设置 CRC_EN 后是否应检查该位?

    此外、我不知道如何在连续 读取模式下启用 CRC 的情况下使用该器件。 CRC 被附加为帧中的最后一个字节、但是当主器件不定义字节数并且传输结束根据 I2C 协议由主器件的 NAK 指示时、器件如何知道最后一个字节已经被发送。 当我想读取通道寄存器作为连续寄存器块时、可以使用 CRC 模块吗?

    谢谢、

    Vlastimil  

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

    您好 Vlastimil、

    CRC_ERR_FUSE 位用于检测 ADC 上电过程中的任何问题。 这是一个只读位、在加电期间由 ADC 进行评估。 如果 CRC_ERR_FUSE 位为1b、则需要通过下电上电 AVDD 或使用 RST 位来复位器件。

     ADS7138在 ADC 启动的每8位 I2C 数据中附加一个8位 CRC 代码。 因此、主机将针对从 ADS7138接收到的每个数据字节接收 CRC 代码。 这就是 ADS7138无需知道 I2C 帧长度的原因。

    您可以使用 CRC 模块读取寄存器以及 ADC 转换结果。  ADS7138将在每8位输出数据中附加一个8位 CRC 代码。

    此致、

    Rahul

      

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

    您好、Rahul、

    谢谢、这很有意义。 CRC 现已清除。 我在阅读您的回答时、还会想到另外一个问题。 当我读取 ADC 结果时、我只需在手动模式下设置通道 ID 或设置自动序列、然后使用类似这样的简单读取帧读取数据即可?

    我是说我不需要指定结果寄存器(例如、通道0为0xA0)、然后读取结果?

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

    您好 Vlastimil、

    你是对的。 您可以在手动模式(通过设置所需的通道 ID)或自动序列模式下直接读取 ADC 数据、如帖子中的图像所示。 无需读取任何寄存器即可读取 ADC 转换结果。

    此致、

    Rahul

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

    非常感谢您的解释。

    Vlastimil