列表 上一篇 下一篇

SDIO:sd卡上电过程

首先说明一下,SD卡的上电过程的理解主要参考的是SD Specifications Part 1 Physical Layer Simplified Specification Version 4 .1 0 ,而这个官方文档提供了:Power Up Sequence for SD Bus Interface、Power Up Time of Host、Power Up Sequence of UHS- II Card、Power Up Sequence of UHS- II Host几个方面,而这里主要理解一下Power Up Sequence for SD Bus Interface。适当的翻译文档部分内容。

The power scheme of the SD Memory Card bus is handled locally in each SD Memory Card and in the host .
(上电过程是在sd host、sd卡内部独立处理的),之前一直以为上电是一瞬间的事情,而且没有考虑sd host、sd卡上电过程是独立的过程。

The host may reset the cards by switching the power supply off and on again. Each card shall have its own power -on detection circuitry that puts the card into a defined state after the power-on. No explicit reset signal is necessary. The cards can also be reset by sending the GO_IDLE (CMD 0 ) command.
SD卡控制器可以通过断电再上电来复位SD卡,在总线上的每个卡都有上电检测电路那样卡内部的状态机就会进入一个定义的状态(idle state),并不需要明确的复位信号,另外通过给卡发送CMD0使卡进入idle state。具体的上电过程:

这里就不再翻译了,翻译的感觉实在是太不爽了,只说一下需要注意的几点:

  1. 图中可以看出来,再发送CMD0之前的这个Initialization delay :The maximum of 1 msec, 74 clock cycles and supply ramp up time。其中supply ramp up time图中表示的也很明白。
  2. 在SDC接口时,CMD0并不是必须的,而在使用SPI模式时是要用到CMD0的。这里并不说怎么进入SPI模式
  3. 另外对于编程还需要的几点建议:时钟速率、管脚配置 host的时钟速率建议400KHz。另外先把管脚配置为PP(push-pull)模式并输出高电平,然后再初始化为SDIO模式。

编程方面的初始化工作从管脚配置、上电时间、时钟频率、延时时钟几个方面来满足上面的初始化流程。

  1. 配置管脚PP(push-pull)模式并输出高电平,再初始化为SDIO(包括时钟频率设置为400KHz)
  2. 延时一段时间,文档上的1ms
  3. 延时74个时钟
  4. 发送CMD0,虽然这个并不是必须的
  5. 进入卡识别阶段
  6. 建议卡识别之后设置一下数据宽度为4位,貌似刚才的初始化默认是1位,另外可以改变时钟频率为全速25MHz


关于host提供的电压与SD卡的电压不匹配问题:摘自STM32参考手册