【SDIO】SD卡的模式切换

        在上一章中,我们对SD卡做了介绍,了解了SDIO的通信协议,接下来我们将要介绍SD卡从上电到可正常读写期间,具体是怎么通信的。

1、SD卡操作模式

        STM32控制器对SD卡进行数据读写之前需要识别卡的种类:V1.0标准卡、V2.0标准卡、V2.0高容量卡或者不被识别卡

        SD卡系统(包括主机和SD卡)定义了两种操作模式:卡识别模式和数据传输模式。在系统复位后,主机处于卡识别模式,寻找总线上可用的SDIO设备;同时,SD卡也处于卡识别模式,直到被主机识别到,即当SD卡接收到SEND_RCA(CMD3)命令后,SD卡就会进入数据传输模式,而主机在总线上所有卡被识别后也进入数据传输模式。在每个操作模式下,SD卡都有几种状态,通过命令控制实现卡状态的切换,如下表所示:

操作模式 SD卡状态
无效模式(Inactive) 无效状态(Inactive State)
卡识别模式(Card identification mode) 空闲状态(Idle State)
准备状态(Ready State)
识别状态(Identification State)
数据传输模式(Data transfer mode) 待机状态(Stand-by State)
传输状态(Transfer State)
发送数据状态(Sending-data State)
接收数据状态(Receive-data State)
编程状态(Programming State)
断开连接状态(Disconnect State)

 2、卡识别模式

        在卡识别模式下,主机会复位所有处于“卡识别模式”的SD卡,确认其工作电压范围,识别SD卡类型,并且获取SD卡的相对地址(卡相对地址较短,便于寻址)。

         在卡识别过程中,SD卡工作在识别时钟频率FOD(最大400KHz),且1线传输方式的状态下。

        卡识别模式状态切换图如下所示:

        根据识别转换图,我们对转换流程进行讲解。

2.1、SD卡Reset

        主机上电后,所有卡处于空闲状态,包括当前处于无效状态的卡。主机也可以发送GO_IDLE_STATE(CMD0)让所有卡软复位从而进入空闲状态,但当前处于无效状态的卡并不会复位。

        上电或CMD0后,所有卡的CMD数据线都处于输入模式,等待接收下一条命令。这些卡被初始化为一个默认的SD卡相对地址(RCA=0x0000),并设置SD卡驱动级寄存器(DSR)默认为最低的速度和最高的驱动能力。

2.2、SD卡操作条件的确认

        在主机和SD卡开始通信时,主机可能不知道SD卡支持的电压,SD卡也可能不知道它是否支持当前提供的电压。主机发出一个复位命令(CMD0),同时假定它电压可能被SD卡支持。为了验证电压,在Physical Layer Specification Version 2.00》文档中定义了以下新命令(CMD8)。

注意:CMD8是SD卡标准V2.0版本才有的新命令,所以如果主机有接收到响应,可以判断卡为V2.0或更高版本SD卡。

        SEND_IF_COND (CMD8)用于验证SD卡接口操作条件。SD卡通过分析CMD8的参数来检测操作条件的有效性,主机通过分析CMD8响应来检测操作条件的有效性。提供的电压通过命令CMD8的参数VHS域来指定。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值