[STM32F3] DMA循环传输偶尔卡死,怀疑是缓冲区边界没对齐

[复制链接]
77|11
周半梅 发表于 2025-11-3 07:15 | 显示全部楼层 |阅读模式
做SPI从机DMA接收时,用循环模式接收数据,但偶尔DMA就卡住不动。重启后又恢复。怀疑是缓冲区地址没对齐或者FIFO模式设置不当。查手册也没看到明确限制。
Clyde011 发表于 2025-11-3 07:21 | 显示全部楼层
可以先改成普通模式试一试,看是不是稳定。
公羊子丹 发表于 2025-11-3 07:21 | 显示全部楼层
可以先改成普通模式试一试,看是不是稳定。
 楼主| 周半梅 发表于 2025-11-3 07:22 | 显示全部楼层
我之前遇过一次,确实是内存地址没对齐的问题。
帛灿灿 发表于 2025-11-3 07:23 | 显示全部楼层
我印象中某些F3的DMA对半字传输挺挑的。
童雨竹 发表于 2025-11-3 07:24 | 显示全部楼层
你有没有开缓存?有时候cache也会影响DMA刷新。
万图 发表于 2025-11-3 07:25 | 显示全部楼层
我一般调试这种问题都在中断里打个标记看DMA状态寄存器。
Wordsworth 发表于 2025-11-3 07:26 | 显示全部楼层
试着在卡住的时候读DMA通道的TC和HT标志。
Bblythe 发表于 2025-11-3 07:27 | 显示全部楼层
我觉得可能是SPI空闲检测问题导致DMA停了。
Pulitzer 发表于 2025-11-3 07:29 | 显示全部楼层
循环模式配SPI从机挺微妙的,主机时钟要稳定。
Uriah 发表于 2025-11-3 07:30 | 显示全部楼层
也可能是FIFO阈值太小,DMA来不及搬数据。
 楼主| 周半梅 发表于 2025-11-3 07:31 | 显示全部楼层
可以试试加上 __attribute__((aligned(4))) 看看有没有改善。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

187

主题

6398

帖子

1

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