发新帖我要提问
12
返回列表
打印
[其他ST产品]

求助:STM32 SPI做从机时SPI_SR TXE如何清空

[复制链接]
楼主: 麻花油条
手机看帖
扫描二维码
随时随地手机跟帖
21
Uriah| | 2025-4-8 08:02 | 只看该作者 回帖奖励 |倒序浏览
我直接在HAL_SPI_Transmit_DMA之前加了一个检查,如果SPI状态异常就通过手动清除TXE位来处理,效果还不错。

使用特权

评论回复
22
Clyde011| | 2025-4-8 08:03 | 只看该作者
我试过复位SPI模块,但其实SPI状态标志的清除可以通过SPI_ClearFlag()来实现,这样会更简洁些。

使用特权

评论回复
23
公羊子丹| | 2025-4-8 08:04 | 只看该作者
我遇到过类似的情况,TXE不清空的确会导致后续传输卡死,通常我会在HAL_SPI_Abort之后手动清空TXE。

使用特权

评论回复
24
周半梅| | 2025-4-8 08:05 | 只看该作者
你可以试试在HAL_SPI_Abort后通过直接写0到SPI_SR的TXE位来清除,这样就不需要复位整个SPI了。

使用特权

评论回复
25
帛灿灿| | 2025-4-8 08:06 | 只看该作者
也可以尝试在HAL_SPI_Abort后加入一个空的HAL_SPI_Transmit,把TXE清空掉,我这么做过能避免异常。

使用特权

评论回复
26
童雨竹| | 2025-4-8 08:07 | 只看该作者
我这边是通过清除TXE之后强行写入一个空数据,来避免状态异常,效果不错。

使用特权

评论回复
27
万图| | 2025-4-8 08:08 | 只看该作者
如果是在DMA模式下,你可以检查DMA状态,确保传输确实完成再执行HAL_SPI_Abort。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则