[STM32H7] STM32H7 HAL 库 SPI DMA 无法接收数据

[复制链接]
422|71
earlmax 发表于 2026-4-11 15:16 | 显示全部楼层
环形缓冲区实现              
alvpeg 发表于 2026-4-11 16:03 | 显示全部楼层
单次传输用DMA_NORMAL              
qiufengsd 发表于 2026-4-12 22:49 | 显示全部楼层
建议使用逻辑分析仪捕获SPI信号
线稿xg 发表于 2026-4-13 16:49 | 显示全部楼层
在cubemx中重新生成DMA配置代码,主要是确认配置参数是否正确,如通道、优先级、数据宽度等是否与预期一致。对比差异点,注意是否有遗漏或错误的设置。
benjaminka 发表于 2026-4-15 16:24 | 显示全部楼层
为什么全是 0x00 而不是随机数?
geraldbetty 发表于 2026-4-15 17:33 | 显示全部楼层
DMA和SPI的时序如何配合?              
primojones 发表于 2026-4-15 18:13 | 显示全部楼层
DMA方向配置错误              
未来AI 发表于 2026-4-16 18:36 | 显示全部楼层
修改DMA优先级时,确保先设置正确的配置参数,然后再调用初始化函数,这样DMA才能以高优先级运行。
belindagraham 发表于 2026-4-17 13:39 | 显示全部楼层
如果在传输期间,MISO 线上一直是一条直线,说明从机没发数据,或者你的采样相位错了。
yorkbarney 发表于 2026-4-18 10:52 | 显示全部楼层
检查 DMA 的方向与地址              
鹿鼎计 发表于 2026-4-20 12:51 | 显示全部楼层
FIFO(先进先出队列)用于提高数据处理效率,即便关闭也能正常进行数据收发。
LLGTR 发表于 2026-4-22 09:27 | 显示全部楼层
检查DMA通道配置,确保匹配所需接收流的通道编号。
AutoMotor 发表于 2026-4-24 23:13 | 显示全部楼层
在DMA中断里,先接收数据,然后执行基本处理,确保数据传输无误。
星闪动力 发表于 2026-4-28 12:37 | 显示全部楼层
SPI是串行通信协议,需要时钟信号来同步数据传输。发送数据时产生时钟,接收数据时也需时钟信号。
yiyigirl2014 发表于 2026-4-28 15:34 | 显示全部楼层
用逻辑分析仪看 SCK/MOSI/MISO:
SCK 有没有脉冲?→ 主机没发时钟
MISO 有没有数据?→ 从机没发或硬件连接错


检查 Cache 配置:缓冲区放非缓存区或加 Invalidate
核对 DMA 方向、数据流、通道、关联
确认 SPI 模式(CPOL/CPHA)、数据位宽
主机必须 发 dummy 数据才能收
天灵灵地灵灵 发表于 2026-5-1 15:59 | 显示全部楼层
90% 是内存地址用了 DTCM(DMA 访问不了)、SPI/DMA 配置不匹配、Cache 没处理、中断没开或没清 Busy 状态。下面按 “先查硬件→再查配置→最后查代码 / 内存 / Cache” 一步步排查。
Moon月 发表于 2026-5-3 22:44 | 显示全部楼层
检查SPI引脚配置,确保时钟极性(CPOL)和相位(CPHA)与器件手册一致。使用示波器或逻辑分析仪观察时序,确保数据稳定传输。
zephyr9 发表于 2026-5-6 11:43 | 显示全部楼层
在DMA初始化时,尝试将优先级设置为DMA_PRIORITY_HIGH,确保数据传输优先级高。
哪吒哪吒 发表于 2026-5-9 07:42 | 显示全部楼层
缩小传输数据量,测试系统基本功能是否正常运作。
tototm 发表于 2026-5-9 11:45 | 显示全部楼层
DMA1_Stream0好像不行,SPI4的RX好像要用DMA2_Stream3
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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