写在前面:
HAL_SD_ReadBlocks的第三个参数(起始地址)代表的是块位置。
一、环境:
STM32F103ZET6, 2G内存卡,HAL库,SDIO,移植FatFs
SDIO初始化配置(本问题与此配置无关):
hsd.Instance = SDIO;
hsd.Init.ClockEdge = SDIO_CLOCK_EDGE_RISING;
hsd.Init.ClockBypass = SDIO_CLOCK_BYPASS_DISABLE;
hsd.Init.ClockPowerSave = SDIO_CLOCK_POWER_SAVE_DISABLE;
hsd.Init.BusWide = SDIO_BUS_WIDE_1B;
hsd.Init.HardwareFlowControl = SDIO_HARDWARE_FLOW_CONTROL_DISABLE;
hsd.Init.ClockDiv = 0;

二、问题:
用函数HAL_SD_ReadBlocks(),
if(HAL_OK == HAL_SD_ReadBlocks(&hsd, Buffer_Block_Rx, 0, 3, 1000)){...}从头开始读,可以正确读到SD卡中的前三个块信息。
然后用

本文探讨了在STM32F103平台使用HAL库进行SDIO操作时,如何正确解读HAL_SD_ReadBlocks函数的起始地址参数,并揭示了为何从第二块开始读取时接收到全0的问题,以及解决方法和内部工作机制。
4409

被折叠的 条评论
为什么被折叠?



