根据本
论坛其他地方的讨论,我构建了一个简单的
STM32CubeIDE 项目,其中仅映射了 SDMMC1 外设、用于 SD 检测引脚的 GPIO 引脚和启用了 DMA 的 FatFs 中间件。我有一个 Waveshare microSD 卡跳线到我很确定是 Nucleo 板上的正确引脚。该程序一直到 f_mkfs 调用,最终调用 HAL_SD_WriteBlocks_DMA,如果我理解正确,如果正确完成写入,它应该最终触发 BSP_SD_WriteCpltCallback。不幸的是,永远不会调用 WriteCpltCallback 并且调用子例程最终会超时,我不确定应该触发 WriteCpltCallback 的事件或 IRQ
我将 Waveshare microSD 卡与 6" 跳线连接到 Nucleo 板,这可能会出现信号完整性问题,从而阻止 WriteBlocks_DMA 调用正确完成。但是,我已经让 Waveshare 板在具有相同跳线方案的 Nucelo413ZH 上工作。
我愿意接受任何建议。一个可以在这个 Nucleo 板上运行的 FatFs 示例程序也将不胜感激。如果它没有所有 STM322 HAL 开销,那就更好了。