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.

[参考译文] MSP430FR5964:处理 SPI RX 和 TX 的中断

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/986829/msp430fr5964-handling-interrupts-for-spi-rx-and-tx

器件型号:MSP430FR5964

您好!  

我在 SPI 通信方面遇到了一些问题、我正在尝试弄清楚最佳做法是什么。 我尝试使用 ISR 处理 TX 和 RX、但是 eUSCI 只有一个中断向量是传输和接收共享的。 我已经尝试编写一个 ISR 来处理两个中断、但有时似乎错过了、我想知道这是不是一种糟糕的做法、还是我应该能够使它正常工作。 如果我只能将一个 ISR 用于 SPI、那么在该器件上实现 SPI 的适当方法是什么? 我还尝试使用 while (!(UCA0IFG&UCTXIFG) 和 while (!(UCA0IFG&UCRXIFG)进行轮询、但在数据包大小大于2时无法使其正常工作。 此外、作为一个附带问题、 我写入 UCA0TXBUF 时、UCTXIFG 标志似乎不会被清零、这不是应该的?  

如果有要求、我可以发布代码、但我确实在寻找一种针对我拥有的硬件的通用最佳实践。  

谢谢你  


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

    如果没有更具体的细节、就很难提出建议、但总的来说:

    1) 1)对于具有快速(SPI)时钟的主器件、根本不使用中断;它们会使您减慢速度并使事情复杂化。

    2) 2)对于从器件、您可能无法选择不使用中断。 如果你无法跟上速度、你只需减慢主器件的速度。 TX 和 RX 中断(大部分)同时发生。

    3) 3)如果可以、使用 DMA (主器件或从器件)。

    在您的侧边问题中:TXBUF 写入后、TXIFG 会变为低电平、但可能不够长、无法看到。