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.

[参考译文] RTOS/MSP432P401R:HWI 上下文中有关 SPI_TRANSF()的阐述。

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/611917/rtos-msp432p401r-clarification-about-spi_transfer-from-a-hwi-context

器件型号:MSP432P401R
主题中讨论的其他器件: ADS1298

工具/软件:TI-RTOS

您好!

我一直在使用 TI MSP432P401R、TI ADS1298模数转换器和带有 TI 驱动程序(本例中为 SPI)的 TI-RTOS 开发产品。 我使用的是 SimpleLink MSP432 SDK 最后一个版本中的 SPI 驱动程序和 TI-RTOS。  换句话说、我的应用配置 ADS1298并进入连续转换模式。 ADS1298有一个在转换完成时产生中断的引脚。 我已在阻塞模式下打开 SPI 驱动器。 在我的第一个应用程序中,中断引脚回调发布信标并解除阻止从 ADS 读取数据的任务,调用 SPI_trasfer ()函数,但中断频率(与 ASD1298的采样率相关)快于系统时钟周期(1ms), 任务将始终运行、不允许其他人运行。 因此、我更改了程序、在回调模式下打开 SPI 驱动程序。 然后、中断引脚 回调 在 Hwi 上下文中调用 SPI_TRANSFER ()、而 SPI 回调将数据存储在缓冲区中。 当缓冲区完全填满时、SPI 回调会发布信标、并且任务未被阻止并处理数据块。

我已经阅读了 TI-RTOS 2.20用户指南、如果 SPI_transfer 可以从回调上下文(Hwi)中调用、我不清楚。 我在 e2e 论坛中寻求了澄清、但 e2e 线程未回答我的问题。 我在 一些 e2e 帖子中阅读过 e2e.ti.com/.../513722的最近的 e2e 线程,人们 说可以从回调调用 SPI_transfer()。 另一个说法是不可能的。 我真的很困惑。

有一种更好的方法来完成我 一直在尝试的任务?

有人可以帮帮我吗?

提前感谢!

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

    也许您可以在此处帮助澄清一些应用场景、您是缺少 ADS1298的 SPI 数据、还是在开始读取 ADS1298时正在占用其他线程?

    在我结束时、您可以根据首先从 HWI 上下文中生成的 ADC1298中断使用信标发布。 由于您是 SPI 上的主器件,因此您可以使用线程调用带有回调函数版本的 SPI_TRANSFERT(),这样您就不会阻塞其他线程。 关键是、您不希望只轮询其他线程即可接收 SPI 数据。

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

    您是否仍然需要一些帮助? 请告诉我们。

    谢谢、

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

    你(们)好、David

    感谢您的关注! 多给我几天时间、确保 这个问题得到解决。

    Otavio Gomes