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.
您好!
我的应用正在使用 DMA 通过 SPI 发送和接收可变长度的数据。
为此、我按如下方式配置 SPI 和 DMA:
DMA)
DMA 通道1 (高优先级):SPI Tx、突发大小=1、传输大小=数据长度
DMA 通道2:SPI Rx、突发大小= 1、传输大小=数据长度
SPI
TXFFIL = 1、 RXFFIL = 1
我注意到 在 DMA SPI Tx 完成 ISR 中 Tx FIFO 状态=16。 当 FIFO 级别和突发大小为1时、为什么 Tx FIFO 被填满?
我问的原因是、我当时正在考虑将 FIFO 电平和突发大小更改为大于1的值、并在 DMA SPI Tx 完整 ISR 中发送最后一段数据、但是、如果 Tx FIFO 已满、则无法发送。 我曾尝试通过在 DMA SPI Tx 完成 ISR 中启用 SPI Tx FIFO 中断来解决 Tx FIFO 填满问题、但从未调用 SPI Tx FIFO 中断。 我认为在将 DMA 与 SPI 搭配使用时无法使用 Tx FIFO 中断。 是这样吗?
更新 :我刚刚注意到,我已经改变了突发大小=8,因此,在 DMA SPI Tx 完成 ISR 中 Tx FIFO 状态=16并不是那么奇怪。 我将尝试查看 FIFO 级别= 4和突发尺寸= 4是否效果更好。
我将 FIFO 电平和突发电平更改为5、无需使用 SPI FIFO 中断、运行正常。