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.

[参考译文] ADS7038-Q1:自动模式下轮询 OSR_DONE 位的 CRC 错误

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

https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/1296794/ads7038-q1-crc-error-in-auto-mode-polling-the-osr_done-bit

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

您好!  

我在自主模式下使用 ADS7038。 我打开了过采样以获得更精确的采样、并且我正在使用已启用 CRC 的 SPI 接口。 在应用节点中

ADS7138使用可编程平均滤波器可实现更高的分辨率

提到要轮询 OSR_DONE 位以确定过采样已完成。

所以芯片配置好后(接通 CRC、统计模块使能、自主模式接通、选择信道、选择过采样) 我开始了顺序。  

之后、我尝试通过读取状态寄存器来轮询状态寄存器。 但这会导致 CRC 错误(CRCERR_IN ist 集)。

我n´t 如何在所选模式下读取 OSR_DONE 位、而不是读取状态寄存器。

感谢您的帮助

托马斯·容格

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

    尊敬的 Thomas:

    您是否已使用 CRC 计算器工具生成8位 CRC 输入值?

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

    您好、Tom、

    n´t、我没有使用此工具、但在初始化期间、我始终在启用 CRC 的情况下多次读取状态寄存器、并且 CRC 从未出现问题。 因此我的 CRC 计算应该没问题。  刚开始转换后、除了读取状态寄存器、我收到 CRC 错误。

    谢谢 Thomas

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

    尊敬的 Thomas:

    只是好奇、但您是否设置了阈值限值?  进入自主模式后、ADS7038将在自包含模式下运行、并且只会在设置警报后查询。  我不确定这是否是问题、所以我将深入研究一下。  很有意思的一点是、如果您设置了限制、然后施加了"过压"、是否仍会得到 CRC 错误。

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

    您好、Tom、

    我没有设置限值,我也没有设置警报直到现在,因为我不是为依赖.

    我配置了5个模拟输入和3个数字输出。 一个输出连接至 LED、在另两个输出上、我连接了一个电压偏转器(两个电阻器)并将其连接至第一个模拟输入。 是的、我向模拟输入0施加了2.3V 电压、所有其他输入都悬空。

    我将尝试设置限制并获得警报。 这需要一段时间。

    您能否告诉我是否需要设置一些特殊设置?

    谢谢

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

    尊敬的 Thomas:

    没有特殊设置-您实际上并不需要将 ALERT 设置为控制器的中断-如果您可以用示波器进行监控、那就足够好了。  如果您将 CH0的限制设置为2.3V、并将模拟输入推至2.4V、它应该会触发警报。  看到这一情况后、请尝试发送命令以读取状态。

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

    您好、Tom、

    n´t、我n´t 重现了带有 CRC 错误的故障、不要问我所见过的内容。 然而,主要问题仍然存在。

    正如我在第一篇文章中提到的、我想通过过采样在自动模式下运行器件。 因此我初始化该器件以使用5通道序列和过采样自主运行、并希望轮询 OSR_DONE 标志以确定过采样序列何时完成。

    但我从未看到设置 OSR_DONE 标志。 我还尝试了 SEQ_STATUS 标志。 我也不n´t 此标志将为´0´。

    在这里、首先执行初始化(第一个参数是寄存器地址、第二个参数是数据、第三个参数是启用 CRC 的标志)

    //将 AIN5-7设置为 DIG

    ads7038_writeReg (0x05、0xE0.1);

    ads7038_writeReg (0x07、0xE0、1);

    ads7038_writeReg (0x09、0xE0、1);

    ads7038_writeReg (0x0B、0xC0、1);

    //设置修复 PATTEN

    // ads7038_writeReg (0x02、0x80、1);

    //读取后启用状态位

    // ads7038_writeReg (0x02、0x20、1);

    //开启 OSR 模式= 128

    ads7038_writeReg (0x03、0x07、1);

    //选择序列通道

    ADS7038_writeReg (0x12、0x1F、1);

    //设置计时和自动模式

    ads7038_writeReg (0x04、0x3F、1);

    //动态模式切换

    // ads7038_writeReg (0x10、0x02、1);

    //打开自动模式

    ads7038_writeReg (0x10、0x01、1);

    //开始转换

    ADS7038_writeReg (0x00、0x0B、1);

    ads7038_readReg (0x00、1);

    ads7038_setBit (0x10、0x10、1);

    ads7038_readReg (0x00、1);

    此处是状态寄存器读取的屏幕截图(SALEA)。

    抱歉 CRC。 感谢您的帮助。

    托马斯

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

    尊敬的 Thomas:

    在自主模式下、您首先需要退出、然后才能读取任何内容。  是否尝试过在自动序列模式下运行?  这应该适用于您正在尝试实现的目标。

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

    您好、Tom、

    自动序列模式不是一个选项。 同一总线上有多个器件(不同 CS)、我们希望器件自主运行。 我们决定使用自主模式、等待必要的时间并从统计信息模块(last_value)中读出值。 数据表的图37中对此进行了介绍。 似乎不可能检查我们是否确实有新值(忙标志或已完成或类似的内容)。

    在图37中提到、我们可以在不停止序列的情况下读取最后的值寄存器。 真的是这样吗? 我如何确保我读取的是同一转换的高字节和低字节? 是否有任何保护措施、或者我是否必须在读取值之前停止序列?

    停止该序列(SEQ_START = 0)后、正在运行的转换是完成还是转换立即停止?

    谢谢

    托马斯

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

    尊敬的 Thomas:

    您在查看哪个数据表?  ADS7038-Q1 (文献编号 SBAS981)数据表中没有图37。