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.

[参考译文] MSP430FR5989:SPI 从器件和 DMA

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/726921/msp430fr5989-spi-slave-and-dma

器件型号:MSP430FR5989

我正在构建一个应用、其中未知字节数将通过 SPI 从接口传输到 MSP430。 SPI 时钟为 MCLK 速率的1/2、因此我需要使用 DMA 来保持数据速率。 我已经将 DMA 大小寄存器设置为可以传输的最大字节。 当 SPI_CS 置为无效时、我需要获取传输的数据并对其进行处理。 但是、我无法知道传输的字节数。 DMA 引擎寄存器中没有一个会计算传输的字节数、只是总大小、SCI 也不会计算字节。 有什么方法可以做到这一点吗?

谢谢、
Andy

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我认为我以前没有尝试过这种方法、但是:阅读 FR59用户指南(SLAU367o)第11.2.2.1节、您应该能够:

    1) 1)将 DMA 计数设置为(max+1)而不是(max)
    2) 2) CS 置为无效时、读取 DMANSZ 并将其从(max+1)中减去。
    3) 3)清除 DMAEN。

    "+1"是为了防止 DMA 在您要求它完成之前完成。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    谢谢、这很成功! 我之前曾尝试过、但 DMA 正在完成、因此 DMANSZ 寄存器被设置回传输大小。