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.

[参考译文] ADS7038Q1EVM-PDK:自动定序不符合#39;清除 CRCERR_IN 标志后无法重新启动

Guru**** 2455360 points
Other Parts Discussed in Thread: ADS7038-Q1, ADS7038Q1EVM-PDK

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

https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/1410124/ads7038q1evm-pdk-auto-sequencing-doesn-t-restart-after-clearing-crcerr_in-flag

器件型号:ADS7038Q1EVM-PDK
主题中讨论的其他器件:ADS7038-Q1

工具与软件:

尊敬的先生/马安先生:

我尝试 在自动定序模式下使用 ADS7038Q1芯片。 我已启用过采样、CRC、通道 ID 附加。 然后、我已激活通道1至7的自动定序。 CONV_ON_ERR 被设置为1b。 我看到通道在开始排序后会递增。 然后、我从微控制器引入 CRC 误差、以观察反应。 序列发生器停止。 我清除了 CRCERR_IN 标志。 这应该会重新启动时序、但不会。  

此时读取的状态寄存器显示 SEQ_STATUS = 0b (已停止)。 请您仔细研究并提供建议吗? 我无法附加.Sal 文件。 稍后会尝试上传。 下面我写我的命令序列:

1.复位

2. BOR 标志重置

3.通道 ID 附加启用

4.启用 CRC

5. OSR 启用

6.通道1至7已激活、用于自动定序

7. Seq 模式= 1、 转换模式左至默认值(0)

8. Conv_ON_ERR 设置  

9.启动序列发生器

10.状态寄存器读取、该寄存器在回复中提供0xC0

***** 允许序列发生器工作一段时间、然后介绍 CRC 错误*****

11.清除 CRC_ERR_IN 标志

12。 状态寄存器读取、它提供0x80作为回复。

期待您的建议!

非常感谢、此致

Deepak Verma

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

    Deepak、您好!

    您是否能够尝试读取 SEQUENCE_CFG 寄存器(地址= 0x10)中 SEQ_START 位(位4)的值? 有可能会在检测到 CRC 错误时复位。 如果是、在清除 CRCERR_IN 位后必须再次设置 SEQ_START 位。

    此致、
    Joel

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

    Joel、您好!  

    感谢您的快速回复。 我实际上已经尝试过它。 这个位仍然被设置。 我甚至尝试了重置它、然后再次设置它。 仍然无法正常工作。  

    此致

    Deepak

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

    Deepak、您好!

    您能否说明一下、您是在原始设计中使用 ADS7038-Q1、还是通过在线 GUI 使用 ADS7038Q1EVM-PDK? 如果是第二个(根据标记的线程)、我可以帮助提供更具体的支持。 谢谢。

    此致、
    Joel

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

    您好、Joel:

    我将 ADS7038Q1EVM-PDK 与我们自己的电路板配合使用。 不是套件随附的主板。 因此未使用在线 GUI。 谢谢。

    此致、

    Deepak

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

    Deepak、您好!

    感谢您的澄清。 触发 CRC 错误后、SYSTEM_STATUS 寄存器应读取0xC2。 您能否确认这一点?

    通过向该位写入1来清除 CRCERR_IN 位。 我使用"Set Bit"操作码实现了这一点。

    之后、我像在 CRC 错误触发之前那样读取 SYSTEM_STATUS 寄存器并读取0xC0、因此我很有意思的是您会得到0x80、并且 SEQ_STATUS 位不再设置。 触发 CRC 错误后、您之间是否进行了任何其他配置? 您是否可以修改 OPMODE_CFG 寄存器中的 CONV_ON_ERR 参数?

    此致、
    Joel

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

    您好、Joel:

    感谢您的观看。 触发 CRC 错误后、SYSTEM_STATUS 寄存器读取0x82 (不是应读取的0xC2)。 此处不再设置 SEQ_STATUS 位。 之后我不进行任何配置。  我之前已将 CONV_ON_ERR 设置为1。 因此、我的 SYSTEM_STATUS 从0xC0 (出错前)变为0x82 (出错后)。 并在  使用 "Set Bit"操作码清除 CRCERR_IN 后设置为0x80。

    此致、

    Deepak

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

    Deepak、您好!

    我的错。 我忘记了设置 CONV_ON_ERR 的地方。  

    然后、发生 CRC 错误后、SYSTEM_STATUS 寄存器会返回0x82、表示序列已停止。 读取 SEQUENCE_CFG 寄存器会读回0x11、其中表示仍是 SEQ_START。 不过、提供转换帧实际上并不会如所述通过通道进行排序。

    在 CRC 错误之后、我找到重新启动该序列的唯一方法是将 SEQ_START 位切换为低电平、然后再次切换为高电平。 之后、转换后的通道 ID 字段再次增加。  

    我会咨询我的团队、了解这是记录在案的问题还是预期行为。 目前、我建议在清除 CRCERR_IN 位后将 SEQ_START 位切换为低电平、然后再切换为高电平、以重新启动多路复用器的时序控制。

    此致、
    Joel

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

    您好、Joel:

    感谢您的推荐。 是的、它是这样工作的。

    此致、

    Deepak