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.

[参考译文] OSR_DONE 位未更改

Guru**** 2460850 points


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

https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/1377331/osr_done-bit-not-changing

器件型号:ADS7038-Q1

工具与软件:

您好!

我无法使均值计算正常工作。 我已尝试过手动和自动定序模式。 OSR_DONE 位永远不会变为1。 下面我将向您展示使用2个样本平均值计算和手动模式的尝试。

首先、在启动后配置 ADS 7038 (首先清除 BOR 位、然后除 OSR_CFG 寄存器之外全部为0):

初始化的回读成功。 现在、手动转换设置和通道选择、然后读取 SYSTEM_STATUS 寄存器。

进一步读取 SYSTEM_STATUS 寄存器将始终返回0x80 (此处未显示)。 你有什么建议该怎么做?

大家好

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

    尊敬的 Christoph:

    请允许我确保您通过 MOSI 线路为器件编程时所尝试使用的内容的理解是正确的。 请告诉我、您是否希望完成我没有指出的特定任务。 如果您可以突出显示与您尝试执行的配置相关的关键传输、这也将非常有用。

    08 01 22:写入 GENERAL_CFG 寄存器、 清除最小值、最大值和最近的统计信息、并校准偏移

    08 05 00:对 PIN_CFG 寄存器进行写入、将所有通道设置为模拟输入

    08 07 00:对 GPIO_CFG 寄存器进行写入、将所有通道设置为数字输入。 我认为这不是必要的、因为如果 PIN_CFG 位为低电平、则相应的 GPIO_CFG 位无关紧要、因此不需要显式将其设置为低电平。  

    08 09 00:写入 GPO_DRIVE_CFG 寄存器、将所有数字输出设置为开漏。 同样、如果通道是模拟输入而不是 GPIO、则不要认为这是必要的。

    08 03 01:对 OSR_CFG 寄存器进行写入、启用过采样和对2个样本取平均值

    08 02 00:写入 DATA_CFG 寄存器、正常运行、无通道 ID 或状态标志、SPI 模式0

    08 10 00:写入 SEQUENCE_CFG 寄存器、定序禁用、手动定序模式

    08 11 00:写入 MANUAL_CH_SEL 寄存器、选择通道0

    10 00 00和00 00 00:读取 SYSTEM_STATUS 寄存器、仅返回保留读取为1位

    由此、看起来平均值计算设置已经正确完成。 我能不能看到您在设置之后在 SDO 引脚上得到了哪些数据(假设您向器件发出了 no-op 命令)? 第一次转换必须通过将 CS 置为低电平并提供 SCLK 来手动启动。 在将 CS 置为高电平后、将使用内部振荡器来控制下一次转换。 然后、在再次将 CS 拉低后、您应该在 SDO 上预期16位 ADC 输出值、因此您应该提供16个 SCLK 周期。

    此致、
    Joel  

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

    您好、Joel:

    是的、您所说的都是正确的。 一些不必要的寄存器写入是因为 这是一个 通用初始化函数、用于其他 ADS 7038器件和其他配置。 我在写入之前没有检查寄存器默认值。

    "假设您向器件提供了 no-op 命令、我是否能够在设置之后在 SDO 引脚上获得怎样的数据?"

    下一个数据与第二张图片非常相似。 我先进行通道选择、然后 读取 SYSTEM_STATUS 寄存器。 从 ADS 7038返回的数据与上面的数据完全相同。 如果您坚持要求我可以提供逻辑分析仪软件的屏幕截图、但我目前正在从事另一个项目、因此  必须 再次设置环境。

    "第一次转换必须通过将 CS 置为低电平并提供 SCLK 来手动启动。 在将 CS 置为高电平后、将使用内部振荡器来控制下一次转换。 然后、在再次将 CS 拉低后、您应该在 SDO 上预期得到16位 ADC 输出值、因此您应该提供16个 SCLK 周期。"

    这应该 通过定期选择频道来实现、或者我是否会错过这里的一些东西?

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

    尊敬的 Christoph:

    我有多位客户面临您遇到的同样问题。 我正在运行测试的过程中、以确定 OSR_DONE 位是否在运行期间发生切换。 请允许我在一周结束前跟进此事。

    此致、
    Joel