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.

[参考译文] ADS1256:ADS1256的 SPI 中断处理

Guru**** 2538930 points
Other Parts Discussed in Thread: ADS1256

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

https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/760380/ads1256-spi-interrupt-handling-for-ads1256

器件型号:ADS1256

尊敬的 TI:

我在 SPI 连接上使用 ESP32作为主器件、使用 ADS1256作为从器件。 ESP32支持 FreeRTOS。

我知道 ADS1256有一个 DRDY 引脚、我们可以将其连接到 ESP32上的硬件中断引脚以进行数据传输。 但是、ADS1256还提供其自己的 SPI 中断

"ESP32 SPI 生成两种类型的中断。 一个是 SPI 中断、另一个是 SPI DMA 中断。
ESP32 SPI 将发送和/或接收操作的完成视为从完成一个操作
并生成一个中断。 当 ESP32 SPI 配置为从模式时、从器件将生成
根据不同的操作、读取/写入状态寄存器和读取/写入缓冲器数据中断。"

根据用户手册中的上述引述、我认为 ESP32上的 SPI 中断功能仅在数据传输(发送/接收)完成后触发。 我想、当我们希望在接收字节后处理数据时、这会很有用。

使用两个中断是否合乎逻辑、一个是 DRDY 变为低电平、另一个是 SPI 中断功能? 这是否是另一个中断(数据传输就绪)内的中断(数据传输完成)?

到目前为止、为 DRDY 引脚变为低电平设置硬件中断对我而言最有意义、但我实际上没有发现任何 SPI 中断功能的用途。

谢谢、

Khoi Ly

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

    很遗憾、我不太熟悉 ESP32、因此如果您对该器件有任何特定问题、可能需要联系制造该器件的公司以获取帮助。

    但是、由于它与 ADS1256相关、/DRDY 信号通常用于启动数据读取操作。 /DRDY 的下降沿向 MCU 指示它有可从 ADS1256读取的数据(在读取数据后、MCU 可能会生成额外的 SPI 中断、以指示 SPI 外设不再忙或触发 DMA 传输、 但这些是您可以决定使用或忽略的内部函数(如果不需要)。

    在软件中处理 GPIO 中断的方式也由您决定...您可以直接在 GPIO 中断例程中读取数据、 或者、您只需设置一个标志并退出中断(允许代码的其他部分决定下一个最高优先级任务要运行的任务)。 第一种方法的优点是可以立即处理中断;但是、如果您的 MCU 还有其他高优先级任务需要完成、那么您可能需要使用第二种方法来尽可能减少每个中断中花费的时间。