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.

[参考译文] MSP430F5172:I2C RX 中断在 DMA 在同一 RX 中断上被启用的同时被启用

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/985338/msp430f5172-i2c-rx-interrupt-enabled-at-the-same-time-as-the-dma-is-enabled-on-the-same-rx-interrupt

器件型号:MSP430F5172

要查找说明,请确保此功能在我的设计中起作用....  如果 I2C 是从设备、并且我启用 RX 中断、 同时、我启用了 RX DMA、这是我的理解、即 RX 中断将会发生、但 DMA 传输将不会发生、直到 RX 中断位被禁用且中断标志位被置位。  是这样吗?

我希望我可以做的是、在从主处理器接收到第一个字节后设置 DMA 存储器位置(向中断传递将清除中断标志位)。  在解码第一个字节后、我可以设置 DMA 传输的存储器位置、然后清除中断标志、使 DMA 能够接收主 CPU 送入的剩余字节。   这是正确的理解吗?  我想在 DMA 内存分配完成后中断位将被禁用。

谢谢!!   

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

    我不确定用户指南(SLAU208Q)表11-2中是否有这样的说明。 虽然一个位不精确、但如果 RXIE 被置位、似乎建议 DMA 请求被忽略(或者 USCI 永远不发送它)、当 RXIE 被清零时、不一定会发送 DMA 请求。

    更重要的是、您提出的策略似乎对您没有太大帮助。 当 DMAEN 置位时、DA/SA/SZ 寄存器在内部复制、因此在启用 DMA 时实际上无法更改它们[参考图11-3]。  为什么不在处理完第一个字节后再设置 DMAEN=1呢? 那么您不关心表11-2的含义。 (您可以使用 DMALEVEL=1来避免在两种情况下都存在的竞态。)