[STM32L4] 想修改 HAL 的 SDMMC_DATATIMEOUT

[复制链接]
416|7
唐纳德d 发表于 2025-10-23 13:45 | 显示全部楼层 |阅读模式
sd, DM, MM, DA, ATIM, HA
我用STM32CubeIDE开发STM32L4A6ZGTx,板子上留了一个用户 SD 卡。如果在该卡初始化时出现问题,系统会陷入循环
SD_FindSCR() at stm32l4xx_hal_sd.c:3,970 0x8039632       
SD_WideBus_Enable() at stm32l4xx_hal_sd.c:3,822 0x803947a       
HAL_SD_ConfigWideBusOperation() at stm32l4xx_hal_sd.c:2,643 0x8038db0       
BSP_SD_Init() at sd_diskio.c:190 0x8025d18       
SD_initialize() at sd_diskio.c:225 0x8025da4       
具体是在这里:
while(!__HAL_SD_GET_FLAG(hsd, SDMMC_FLAG_RXOVERR | SDMMC_FLAG_DCRCFAIL | SDMMC_FLAG_DTIMEOUT | SDMMC_FLAG_DBCKEND))
  {
    if(__HAL_SD_GET_FLAG(hsd, SDMMC_FLAG_RXDAVL))
    {
      *(tempscr + index) = SDMMC_ReadFIFO(hsd->Instance);
      index++;
    }

    if((HAL_GetTick() - tickstart) >=  SDMMC_DATATIMEOUT)
    {
      return HAL_SD_ERROR_TIMEOUT;
    }
  }

能不能修改 stm32l4xx_ll_sdmmc.h 中的这个值?
#define SDMMC_DATATIMEOUT                  ((uint32_t)0xFFFFFFFFU)



classroom 发表于 2025-10-23 16:11 | 显示全部楼层
不建议直接修改 stm32l4xx_ll_sdmmc.h
cr315 发表于 2025-10-23 17:12 | 显示全部楼层
推荐修改超时时间,或修改HAL库的配置
duo点 发表于 2025-10-23 18:12 | 显示全部楼层
超时问题可能是硬件引起的
elephant00 发表于 2025-10-23 16:13 | 显示全部楼层
降低时钟频率看看
flycamelaaa 发表于 2025-10-23 19:14 | 显示全部楼层
用最新版本的STM32L4 HAL库
jcky001 发表于 2025-10-23 20:14 | 显示全部楼层
可能是SDMMC_DATATIMEOUT 默认值过大,导致硬件问题如信号质量差时程序卡死。
onlycook 发表于 2025-10-23 21:15 | 显示全部楼层
建议通过逻辑分析仪或示波器抓取SDMMC信号,分析时钟和数据线的波形是否正常。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

66

主题

66

帖子

0

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