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.

[参考译文] ADS131E08:DRDY 中断停止

Guru**** 2392905 points
Other Parts Discussed in Thread: ADS131E08

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

https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/1128561/ads131e08-drdy-interrupt-get-stop

器件型号:ADS131E08

您好!

我正在使用 ADS131E08 ADC。 我已经使用一个控制器完成了 ADC 接口、我正在使用 FreeRTOS。
ADC 初始化在 RTOS 启动调度程序之前完成。
其中我有两个任务、一个任务是简单的打印按摩、另一个任务是使用(RDATAC 模式)通过 SPI 通信读取 ADC 数据。 两个任务具有相同的优先级。
此外、我还配置了外部中断来检测每个 DRDY 中断。 我已将  CONFIG1配置为16kSPS  数据速率。
在中断 ISR 中、我只需增加一个变量(每当发生中断时、计数变量都会递增)。

在 ADC 读取任务中、监控 ISR 的计数变量。 如果计数值大于0、则提供27字节的 SCLK 来读取 ADC 数据。
当 ADC 读取任务开始运行时、我能够读取大约50到60次数据、但在特定时间后、ADC 数据为0、DRDY 中断停止。

请帮我了解为什么 DRDY 从 ADC 停止?   

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

    您好!

    上述问题已解决、但现在我在某些(大约50或60)验证数据字节后获得了一个无效数据字节。

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

    您好、Hardiddh、

    无效数据是什么意思? 这有什么价值? 是通道数据还是状态字?

    此外、我们不是 FreeRTOS 方面的专家、因此无法帮助处理常规调试原则之外的任何代码。

    您是否使用逻辑分析仪验证了 MCU 收集的数据与 SPI 线路上的实际数据相匹配? 如果您能够有时读取正确的数据、则表明 ADC 工作正常、这显然是 MCU 侧的时序问题。 如果我们能够证明 ADC 未按预期工作、我可能会提供帮助。 否则、如果 ADC 工作正常、那么这是一个软件问题、我不确定能否提供帮助。

    最棒的

    Cole

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

    Cole

    感谢您的回答。

    ================================================================================================================================================
    无效数据是什么意思? 这有什么价值? 是通道数据还是状态字?

    我在通道1的输入端施加了0.0V DC。 并且能够接收通道1的0x003F1十六进制值(24位)、该十六进制值是验证数据。 接收到一些经过验证的数据后、我收到一个0x0FF345十六进制值(24位)无效数据。
    ================================================================================================================================================

    下面是我在加电时配置 ADC 的步骤。

    1. 复位引脚上的复位序列
    2. 发送 SDATAC 命令
    3. 稍等
    4. 偏移校准命令
    5. 稍等
    6. 写入配置1 = 0x92
    7. 写入配置2 = 0xE2
    8. 写入配置3 = 0xC0
    9. 写入 CHnSET 1to8寄存器= 0x10
    10. 发送 RDATAC 命令
    11. START 引脚高电平。

    运行时间

    1. 等待 DRDY 中断
    2. 一旦一个中断发生、读取 SPI 上的27个字节
    3. 将字节转换为状态字和通道字
    4. 将原始字转换为电压
    5. 在 UART 上打印电压
    6. 继续步骤1

    您的帮助将非常有助于解决此问题。
    注意:已用16ksps、内部 Vref 2.4V、外部晶体振荡器2.048Mhz。

    再次感谢您。

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

    您好、Hardiddh、

    就我所能说的那样,没有任何内在的错误。

    请注意、如果您正在进行输入噪声和失调电压测试、而这正是您对输入施加0V 时所做的测试、我建议将 MUXn[2:0]更改为001b。 我不知道您是如何应用0V 的、但导线会增加阻抗、这可能会以您可能不期望的方式改变您的读数、并且可能与数据表规格不匹配。

    无论如何、由于看起来没有任何问题、我们有 4 个常规调试步骤:

    • 如上所述、更改多路复用器以在内部将输入短接在一起、然后查看是否出现相同的错误
      • 它将显示在外部强制不会导致问题
    • 获取逻辑分析仪并检查 SPI 线路是否显示 0x0FF345 、这意味着 MCU 正在正确识别传输
      • 我不确定您是否已经排除了 SPI 命令按预期工作、但如果您有的话。 那么 、这是一个不太可能的结果。 我们仍然需要捕获该数据点作为完整性检查
    • 强制在输入端施加已知电压、而不是0V。 查看代码是否跳转至您的0V 测试
      • 从 UV 到 mV 的电压变化非常显著、但并非不可能。 我会 使用示波器交叉参考、以确保您在输入端看到的内容与您从 ADC 看到的内容相匹配(例如、电压源的代码扩展或 RMS 噪声)  
    • 使用示波器测量0V 短路时的输入
      • 这 可能没有帮助、因为我们尝试在 UV 和 mV 之间进行区分  

    选择一个或两个、将数据发回、让我们看看您可以找到什么。

    最棒的

    Cole