xiaofei558008 发表于 2025-5-21 18:16

SPI + DMA 传输,提前触发DMA 完成中断如何解决



STM32H7:
SPI4 传输 + DMA
开启完成中断;
实际波形如上:
就是SPI 10个字节还没有发完,就触发了DMA Rx传输完成中断;
不知道有没有大神遇到过,是因为 SPI FIFO 导致?我开的是 SPI 接收通道的 DMA 完成中断呀;



香水城 发表于 2025-5-22 11:01

你能描述多点吗? 你的文件只是个IOC配置,用到SPI1 SPI4都做MASTER.

会不会是你数据处理或GPIO翻转方面的原因?

xiaofei558008 发表于 2025-5-22 13:37

git@gitee.com:xiaofei558008/tst.git
https://gitee.com/xiaofei558008/tst.git
https://gitee.com/xiaofei558008/tst
代码推送到 gitee 上了;main.c 的default task里 tam8140 发送10个字节,等待 dma spi 接收中断,使能事件;
default task 获取事件后继续执行,处理数据;

wangshujun 发表于 2025-5-23 09:06

dma传输后如果马上控制转换的话,应该是先dma完成中断,在这个中断里面启用对应外设的完成中断,在传输完成中断里面切换状态
适用于spi的cs控制,485的de控制等

dffzh 发表于 2025-5-23 09:09

官网没有demo程序吗?

xiaofei558008 发表于 2025-5-23 10:56

改成 g431的板子,分分钟解决问题,一切正常了

dffzh 发表于 2025-5-23 11:25

xiaofei558008 发表于 2025-5-23 10:56
改成 g431的板子,分分钟解决问题,一切正常了
怎么一下子就能从STM32H7系列切换到STM32G431系列?硬件备选方案打PCB板这么快的吗?{:victory:}

4y1b3 发表于 2025-5-31 23:49

DMA 中断提前来没关系,只要你在 DMA 回调中 加一段检查 SPI 的状态

codingtuzi 发表于 2025-6-4 22:30

如果开了FIFO,需要检查FIFO为空才可以判定是完成吧

xiaofei558008 发表于 2025-6-5 13:16

codingtuzi 发表于 2025-6-4 22:30
如果开了FIFO,需要检查FIFO为空才可以判定是完成吧

DMA 传输,没法判断吧?全自动了

香水城 发表于 2025-6-19 11:27

会不会是发生了传输半完成中断呢?
页: [1]
查看完整版本: SPI + DMA 传输,提前触发DMA 完成中断如何解决