STM32
直播中

李明

8年用户 1361经验值
私信 关注
[问答]

STM32F103RCT6 SDIO读取TF卡,4bit模式无法读取是为什么?

STM32Cube_FW_F1_V1.8.5
STM32CubeIDE:1.13.2
MCU:STM32F103RCT6
问题描述::::::::SDIO读取TF卡,1bit模式正常,4bit模式无法读取,断点找到的错误如下:::SDMMC_ERROR_REQUEST_NOT_APPLICABLE
f_mkfs((TCHAR const*)SDPath, 0, 0)
或是 f_open( SDFile, "STM32.TXT", FA_CREATE_ALWAYS | FA_WRITE|FA_READ)
[ff.c 4170]                 ---->stat = disk_initialize(pdrv);
[diskio.c 99]              ---->stat = disk.drv[pdrv]->disk_initialize(disk.lun[pdrv]);
[sd_diskio.c 94]        ---->if (BSP_SD_Init()==MSD_OK)
[bsp_driver_sd.c 62] ----> HAL_SD_ConfigWideBusOperation ( hsd,SDIO_BUS_WIDE_4B)
[stm32faXX_hal_sd.c 2204]---->errorstate = SD_WideBus_Enable(hsd);
[stm32faXX_hal_sd.c 2979]---->return HAL_SD_ERROR_REQUEST_NOT_APPLICABLE;
errorstate = HAL_SD_ERROR_REQUEST_NOT_APPLICABLE
断点信息因为scr[1U]=0x00;
所以[stm32faXX_hal_sd.c 2959]----> if((scr[1U]   SDMMC_WIDE_BUS_SUPPORT) != SDMMC_ALLZERO)这句判断过不去。



回帖(1)

王玲

2024-5-24 16:51:57
根据您提供的信息,您在使用STM32F103RCT6和STM32Cube_FW_F1_V1.8.5时,SDIO读取TF卡在4bit模式下无法正常工作。问题可能出现在以下几个方面:

1. 硬件连接问题:请检查您的硬件连接是否正确,确保SDIO接口与TF卡之间的连接没有问题。同时,确保您的TF卡是支持4bit模式的。

2. 时钟配置问题:在4bit模式下,SDIO的时钟配置可能与1bit模式有所不同。请检查您的时钟配置是否正确,特别是SDIO时钟和SDIO时钟分频器。

3. SDIO初始化问题:请检查您的SDIO初始化代码是否正确。在4bit模式下,可能需要对初始化过程进行一些调整。例如,设置SDIO的响应长度为4位。

4. 文件系统驱动问题:您提到的问题中,错误发生在尝试格式化或打开文件时。这可能是由于文件系统驱动在4bit模式下无法正常工作。请检查您的文件系统驱动代码,确保它支持4bit模式。

5. 中断和DMA配置问题:在4bit模式下,可能需要对中断和DMA进行不同的配置。请检查您的中断和DMA配置是否正确。

为了解决这个问题,您可以尝试以下步骤:

1. 检查硬件连接,确保SDIO接口与TF卡之间的连接没有问题。

2. 检查时钟配置,确保SDIO时钟和SDIO时钟分频器设置正确。

3. 检查SDIO初始化代码,确保在4bit模式下进行了正确的设置。

4. 检查文件系统驱动代码,确保它支持4bit模式。

5. 检查中断和DMA配置,确保它们在4bit模式下正确配置。

通过以上步骤,您应该能够找到问题所在并解决它。如果问题仍然存在,请尝试在STM32社区或相关论坛寻求帮助,那里可能有人遇到过类似的问题并提供了解决方案。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分