[其他ST产品] 求助:STM32 SPI做从机时SPI_SR TXE如何清空

[复制链接]
1904|26
Uriah 发表于 2025-4-8 08:02 | 显示全部楼层
我直接在HAL_SPI_Transmit_DMA之前加了一个检查,如果SPI状态异常就通过手动清除TXE位来处理,效果还不错。
Clyde011 发表于 2025-4-8 08:03 | 显示全部楼层
我试过复位SPI模块,但其实SPI状态标志的清除可以通过SPI_ClearFlag()来实现,这样会更简洁些。
公羊子丹 发表于 2025-4-8 08:04 | 显示全部楼层
我遇到过类似的情况,TXE不清空的确会导致后续传输卡死,通常我会在HAL_SPI_Abort之后手动清空TXE。
周半梅 发表于 2025-4-8 08:05 | 显示全部楼层
你可以试试在HAL_SPI_Abort后通过直接写0到SPI_SR的TXE位来清除,这样就不需要复位整个SPI了。
帛灿灿 发表于 2025-4-8 08:06 | 显示全部楼层
也可以尝试在HAL_SPI_Abort后加入一个空的HAL_SPI_Transmit,把TXE清空掉,我这么做过能避免异常。
童雨竹 发表于 2025-4-8 08:07 | 显示全部楼层
我这边是通过清除TXE之后强行写入一个空数据,来避免状态异常,效果不错。
万图 发表于 2025-4-8 08:08 | 显示全部楼层
如果是在DMA模式下,你可以检查DMA状态,确保传输确实完成再执行HAL_SPI_Abort。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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