你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

SPI+DMA一直发会进入HAL_BUSY无法跳出

[复制链接]
Rosireity 提问时间:2025-6-25 16:45 / 未解决

image.png

在while中一直使用HAL_SPI_TransmitReceive_DMA发送接收数据,循环几次后就会一直为HAL_BUSY状态,查看SPI状态结构体可看到State始终为HAL_SPI_STATE_BUSY_TX_RX状态。

image.png

通过查看HAL库,可以找到State在HAL_SPI_IRQHandler中可被设置为READY状态。但实际使用时,会有中断函数不触发的情况出现,因此State始终为HAL_SPI_STATE_BUSY_TX_RX状态,导致HAL_SPI_TransmitReceive_DMA无法正常运行,我不知道是不是哪里设置不对还是其他问题导致的。

这是STM32Cube的中断设置

image.png

收藏 评论3 发布时间:2025-6-25 16:45

举报

3个回答
butterflyspring 回答时间:前天 16:06
你的SPI 的时钟频率是多少?

我这边测试,当时钟频率高的时候,如果IO 速度设置过低会导致 SPI的完成中断没触发。
且波形已经变形了,应该超出了范围。

可以试着检查一下IO 速度或降低一下时钟频率试试。
Rosireity 回答时间:昨天 10:46

butterflyspring 发表于 2025-6-26 16:06
你的SPI 的时钟频率是多少?</p>
<p>我这边测试,当时钟频率高的时候,如果IO 速度设置过低会导致 SPI的完成中断 ...

时钟频率我已经拉到3.9MBits左右了 在主频250Mhz下做了64分频 依然会出现

butterflyspring 回答时间:昨天 15:30

Rosireity 发表于 2025-6-27 10:46
时钟频率我已经拉到3.9MBits左右了 在主频250Mhz下做了64分频 依然会出现
...

看一下时钟波形是否正常。

我这边验证时,发现输出波形不正常,就无法触发完成中断。

可以将clock继续降低到几百k,验证一下。

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版