[STM32L0] SPI DMA模式下偶发卡死,像是中断不返回

[复制链接]
132|10
童雨竹 发表于 2025-10-8 07:19 | 显示全部楼层 |阅读模式
SPI主机+DMA发送数据时,有时候整个传输不结束,DMA中断没进。调试看DMA状态正常但SPI SR寄存器TXE一直为0。关掉DMA用轮询又没问题。怀疑是DMA同步信号卡死。
Clyde011 发表于 2025-10-8 07:25 | 显示全部楼层
我最后是加了超时检测再强制复位SPI模块解决的。
公羊子丹 发表于 2025-10-8 07:26 | 显示全部楼层
这种情况我印象中可能是SPI没释放BSY信号。
周半梅 发表于 2025-10-8 07:27 | 显示全部楼层
你是不是用了NSS硬件管理?我改成软件拉脚就好了。
帛灿灿 发表于 2025-10-8 07:29 | 显示全部楼层
DMA中断优先级有设置吗?有时候被别的中断卡了。
 楼主| 童雨竹 发表于 2025-10-8 07:30 | 显示全部楼层
试试加上HAL_SPI_Abort_IT,看能不能清回来。
万图 发表于 2025-10-8 07:31 | 显示全部楼层
我有一次是因为缓存数据区没对齐,DMA直接卡死。
Wordsworth 发表于 2025-10-8 07:32 | 显示全部楼层
这个问题Cube老版本里挺常见的。
Bblythe 发表于 2025-10-8 07:33 | 显示全部楼层
我建议你开一下TX DMA请求标志看看是否真的发出。
Pulitzer 发表于 2025-10-8 07:34 | 显示全部楼层
可能是SPI TXFIFO里残留一字节导致TXE卡着。
Uriah 发表于 2025-10-8 07:35 | 显示全部楼层
轮询能跑说明硬件通路OK,肯定是同步问题。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

176

主题

6272

帖子

2

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