fix[STM32][SPI]: Fix DMA receive handling and timeout calculation#11258
fix[STM32][SPI]: Fix DMA receive handling and timeout calculation#11258wdfk-prog wants to merge 2 commits intoRT-Thread:masterfrom
Conversation
|
👋 感谢您对 RT-Thread 的贡献!Thank you for your contribution to RT-Thread! 为确保代码符合 RT-Thread 的编码规范,请在你的仓库中执行以下步骤运行代码格式化工作流(如果格式化CI运行失败)。 🛠 操作步骤 | Steps
完成后,提交将自动更新至 如有问题欢迎联系我们,再次感谢您的贡献!💐 |
📌 Code Review Assignment🏷️ Tag: bsp_stm32Reviewers: @Liang1795 @hamburger-os @wdfk-prog Changed Files (Click to expand)
📊 Current Review Status (Last Updated: 2026-03-17 10:16 CST)
📝 Review Instructions
|
拉取/合并请求描述:(PR description)
为什么提交这份PR (why to submit this PR)
修复 STM32 SPI 驱动在 DMA 传输场景下的接收处理问题,并同步修正传输超时计算逻辑。
当前
spixfer()中 DMA buffer 的准备与收发流程存在一些问题:因此提交本 PR 对
drv_spi.c中的spixfer()流程进行重构,提升 DMA 收发可靠性与异常处理完整性。你的解决方案是什么 (what is your solution)
本 PR 主要做了以下修改:
重构 DMA buffer 选择逻辑
dma_send_buf和dma_recv_buf;aligned_send_buf和aligned_recv_buf;修复 DMA 接收数据处理
recv_buf;修正 DMA 模式选择逻辑
dma_eligible、use_tx_dma、use_rx_dma明确判断;HAL_SPI_TransmitReceive_DMA();完善异常处理和资源释放
transfer_cleanup清理路径;HAL_SPI_DMAStop();其他清理与细节优化
rt_kprintf("@spi_configure\n");请提供验证的bsp和config (provide the config and bsp)
BSP:
.config:
如有其他相关配置,请按实际测试补充。
action:
当前拉取/合并请求的状态 Intent for your PR
必须选择一项 Choose one (Mandatory):
代码质量 Code Quality:
我在这个拉取/合并请求中已经考虑了 As part of this pull request, I've considered the following:
#if 0代码,不包含已经被注释了的代码 All redundant code is removed and cleaned up