[STM32G0] SPI DMA传输长度不对,最后一字节像被截断

[复制链接]
91|17
童雨竹 发表于 2025-10-20 07:46 | 显示全部楼层 |阅读模式
SPI+DMA收发固定帧数据,理论上16字节一包,但总是最后一字节缺失。逻辑分析仪上CS信号提前拉高。感觉DMA没跑完就触发了结束回调,但我找不到原因。
Clyde011 发表于 2025-10-20 07:51 | 显示全部楼层
感觉就是时序卡得太紧了,多看看datasheet的最后几页。
公羊子丹 发表于 2025-10-20 07:52 | 显示全部楼层
我也遇过,DMA TC标志太早置位的问题。
周半梅 发表于 2025-10-20 07:53 | 显示全部楼层
是不是HAL库版本问题?有些版本的回调处理顺序不对。
帛灿灿 发表于 2025-10-20 07:54 | 显示全部楼层
你看看是不是用了半字节传输模式?对齐问题挺常见。
 楼主| 童雨竹 发表于 2025-10-20 07:55 | 显示全部楼层
可能是外设FIFO没空,CS就被软件关了。
万图 发表于 2025-10-20 07:55 | 显示全部楼层
可以延后CS拉高的逻辑,确认传输彻底完成。
Wordsworth 发表于 2025-10-20 07:57 | 显示全部楼层
SPI的NSS管理如果是软件控制,稍有时序就出问题。
Bblythe 发表于 2025-10-20 07:57 | 显示全部楼层
我以前直接在回调里加个小延时,土办法但有效。
Pulitzer 发表于 2025-10-20 07:58 | 显示全部楼层
也有可能是SPI的最后一笔数据没真正移出移位寄存器。
Uriah 发表于 2025-10-20 07:59 | 显示全部楼层
试着读一下SR寄存器的BSY标志确认是否空闲。
没有太阳的晴天 发表于 2025-10-20 10:51 | 显示全部楼层
可能是DMA传输未完成但SPI已关闭
海滨消消 发表于 2025-10-20 11:51 | 显示全部楼层
DMA缓冲区长度配置可能有误
进入猫次元 发表于 2025-10-20 15:52 | 显示全部楼层
可能是SPI与DMA中断优先级冲突
茉璃夏 发表于 2025-10-20 19:53 | 显示全部楼层
STM32G0的SPI可能启用FIFO,但DMA传输长度未对齐到FIFO阈值。
甜心puppy 发表于 2025-10-20 19:53 | 显示全部楼层
禁用硬件NSS控制,改用软件管理CS
您需要登录后才可以回帖 登录 | 注册

本版积分规则

187

主题

6393

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部