你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM32U5 SDMMC为什么BusWide只能设置为1B,设置为4B的时候没办法读写

[复制链接]
罗德林 提问时间:2023-12-17 19:11 / 未解决

STM32U5 SDMMC为什么BusWide只能设置为1B,设置为4B的时候没办法读写。硬件连接是没问题的, 4跟数据线都连接上了, 连接顺序也肯定没错, 上拉电阻也是有的。

SDMMC初始化代码:

  hsd1.Instance = SDMMC1;
  hsd1.Init.ClockEdge = SDMMC_CLOCK_EDGE_RISING;
  hsd1.Init.ClockPowerSave = SDMMC_CLOCK_POWER_SAVE_DISABLE;
  hsd1.Init.BusWide = SDMMC_BUS_WIDE_4B; // 只有设置为SDMMC_BUS_WIDE_1B的时候才能够正常读写
  hsd1.Init.HardwareFlowControl = SDMMC_HARDWARE_FLOW_CONTROL_DISABLE;
  hsd1.Init.ClockDiv = 4;
  if (HAL_SD_Init(&hsd1) != HAL_OK)
  {
    Error_Handler();
  }

初始化之后可以HAL_SD_GetCardInfo, 但HAL_SD_WriteBlocksHAL_SD_ReadBlocks 就会失败, 具体代码如下:

  HAL_StatusTypeDef rtn;
  rtn = HAL_SD_GetCardInfo(&hsd1,&info);  // 返回为HAL_OK
  HAL_Delay(1000);
  rtn = HAL_SD_WriteBlocks(&hsd1,tx_buf,0,1,1000);  // 返回错误
  HAL_Delay(1000);
  rtn = HAL_SD_ReadBlocks(&hsd1,rx_buf,0,1,1000);   // 返回错误

如果在初始化完SDMMC之后, 再调用一次 HAL_SD_InitCard 之后, HAL_SD_ReadBlocksHAL_SD_WriteBlocks就能成功, 代码如下:

  HAL_StatusTypeDef rtn;
  rtn = HAL_SD_GetCardInfo(&hsd1,&info);  // 返回为HAL_OK

  HAL_SD_InitCard(&hsd1);  // 重新初始化SD卡

  HAL_Delay(1000);
  rtn = HAL_SD_WriteBlocks(&hsd1,tx_buf,0,1,1000);  // 返回为HAL_OK
  HAL_Delay(1000);
  rtn = HAL_SD_ReadBlocks(&hsd1,rx_buf,0,1,1000);   // 返回为HAL_OK

因为调用HAL_SD_InitCard之后, 其中就把BusWide设置为了1B, 其中部分代码为:

HAL_StatusTypeDef HAL_SD_InitCard(SD_HandleTypeDef *hsd)
{
  ...
  /* Default SDMMC peripheral configuration for SD card initialization */
  Init.ClockEdge           = SDMMC_CLOCK_EDGE_RISING;
  Init.ClockPowerSave      = SDMMC_CLOCK_POWER_SAVE_DISABLE;
  Init.BusWide             = SDMMC_BUS_WIDE_1B;
  Init.HardwareFlowControl = SDMMC_HARDWARE_FLOW_CONTROL_DISABLE;
  ...
}

为什么设置4B之后, 读写就会失败呢?

收藏 评论1 发布时间:2023-12-17 19:11

举报

1个回答
butterflyspring 回答时间:2023-12-18 11:22:49
楼主可以参考官方的例程来做。

软件可以在库里找 C:\Users\liusteve\STM32Cube\Repository\STM32Cube_FW_U5_V1.3.0\Projects\STM32U5x9J-DK\Examples\BSP\

硬件可以参考官方的原理图

Stm32u5A9 emmc schematic.PNG
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版