前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >STM32如何使用UHS-I的SD卡

STM32如何使用UHS-I的SD卡

作者头像
用户9736681
发布2022-05-11 08:21:27
1.6K0
发布2022-05-11 08:21:27
举报
文章被收录于专栏:嵌入式随笔

UHS-I的SD卡速度比一般的CLASS10和CLASS8的SD卡速度要快很多。在stm32h7的系列里开始支持UHS-1的SD卡,具体的做法在官方的demo中有示范。电路连接如下:

由于MCU的UHS-I这端的接口与SD的卡的有所区别,所以需要一个转换电路,例子用的是IP4856CX25/C。

UHS-I 模式(SDR12、SDR25、SDR50、SDR104 和 DDR50)需要 1.8V 信号支持。上电 后,卡将以 3.3V 模式启动。CMD11 将调用电压切换序列以切换到 1.8V 模式。当电压序列 成功完成时,卡将以默认 SDR12 进入 UHS-I 模式,卡输入和输出时序将发生变化。

上图中的SD_LDO_SEL(B2)可以控制VLDO(B4)的输出电压。

要执行信号电压切换序列,需按以下步骤进行操作:

1.在启动电压切换过程之前,应将 SDMMC_CK 频率设置在 100 kHz - 400 kHz 范围内

2. 主机通过在发送 CMD11 之前将 VSWITCHEN 位置 1 来启动电压切换过程。

3. 卡返回 R1 响应。

4. 在 R1 响应之后的下一个时钟,卡将 CMD 和 SDMMC_D[3:0] 驱动为低电平。

5. 收到 R1 响应后,主机可以使用 BUSYD0 寄存器位监视 SDMMC_D0 线。SDMMC_D0 线在响应后的两个 SDMMC_CK 时钟周期后进行采样。固件可以读取 CKSTOP 标志后 的 BUSYD0 寄存器位。

6. 检测到 SDMMC_CK 为低电平后,卡会开始将信号电压切换到 1.8V。

7. 主机 SDMMC 硬件将在至少 5 ms 后重新启动 SDMMC_CK。

8. 在检测到 SDMMC_CK 切换后的 1 ms 内,卡会将 CMD 和 DAT[3:0] 驱动为高电平并至 少持续 1 个 SDMMC_CK 周期,然后停止驱动 CMD 和 DAT[3:0]。

9. 在 SDMMC_CK 重启后的 1 ms 后,主机 SDMMC 硬件会将 SDMMC_D0 采样到 BUSYD0 中并生成 VSWEND 标志。

10. 出现 VSWEND 标志时,主机将使用 BUSYD0 寄存器位检查 SDMMC_D0 线,以确认 电压切换序列是否完成。

这些在HAL库里有实现,关键是要加入这个函数

代码语言:javascript
复制
static void SD_DriveTransceiver_1_8V_Callback(FlagStatus status)
{
#if (USE_BSP_IO_CLASS > 0U)
  if(status == SET)
  {
    BSP_IO_WritePin(0, SD_LDO_SEL_PIN, IO_PIN_SET);
  }
  else
  {
    BSP_IO_WritePin(0, SD_LDO_SEL_PIN, IO_PIN_RESET);
  }
#endif
}

这个就是根据上述流程切换1.8V的使能函数,这个SD_LDO_SEL_PIN这个IO引脚需要根据个人不同的电路图进行修改。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-03-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 嵌入式随笔 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
命令行工具
腾讯云命令行工具 TCCLI 是管理腾讯云资源的统一工具。使用腾讯云命令行工具,您可以快速调用腾讯云 API 来管理您的腾讯云资源。此外,您还可以基于腾讯云的命令行工具来做自动化和脚本处理,以更多样的方式进行组合和重用。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档