- 16
- 5月
CMD6是SD卡用来扩展功能的一条重要命令。在SD协议1.00和2.00的版本是,该命令主要用于切换卡进入高速模式。而在3.00的协议中,该命令被赋予了更多的功能。
首先来说说功能模块的基本结构吧。SD卡协议中定义了6组功能,每组功能相当于是一组单框,我们可以根据自己不同的需要,来对每一组功能进行不同的选择。
这里以SD协议2.00版本为例,共定义了两种功能:Group1该组功能的名称叫AccessMode,主要就是用于速度上的选择了。默认选项为0x0,即25MHz的总线速度。我们可以将其选为0x1 High-Speed,即可进入到50MHz的总线速度模式了。Group2功能的名称叫Commandsystem,看样子是做一些命令上的扩展。怀疑可能会与加密卡有关,这里没有进行进一步的研究。
因此,简单的说,CMD6我们主要就是用于SD卡高速模式的切换了。下面说说该命令切换高速模式的用法。
CMD6命令共有查询模式和设置模式两种。查询模式主要用于查询是否支持该功能,而设置模式主要用于对该功能的设置。我们采取的流程是先查询,后设置。根据SPEC,因此,我们第一次发送的命令参数应该为:0x00, 0xff, 0xff, 0xf1。该命令的作用是查询AccessMode是否支持High-Speed。命令发送完毕,这里需要注意的是,CMD6并不是用命令总线,而是用数据总线来进行应答。在命令发送完毕时,我们会从数据总线上接收到64Byte的数据。根据SPEC,我们判断第17Byte的低4Bit(data_buf[16]&0x0f)是否等于1。是则继续,否则表示不支持高速模式。
确认SD卡支持高速模式后,我们第二次发送CMD6的参数为:0x80, 0xff, 0xff, 0xf1。该命令的作用是设置AccessMode为High-Speed。命令发送完毕,我们再一次查询接快收数据第17Byte的低4Bit (data_buf[16]&0x0f)是否等于1。如果是,则表明切换成功,接下来就可以调整SD主机模块的时钟和边沿控制了。
最近很少玩摄影了,SD卡闲置中
Hi,Hanny.想请教你一些问题,请问采用SD卡高速模式,其硬件电路是否跟普通模式下一样的?需要作相应的修改不?谢谢
@Allen.He
一样的。但是对布线上会有更高的要求。而且需要主控支持。
那也就是说,从原理图上看,是一样的连接,只是硬件布线时注意时钟线、数据线的布线(高速layout)吧? 对了,Hanny,SD3.00中 添加了Ultra High Speed I,不知道你有没有进行过相关的研究呢?
Hi, 我在用这个命令的时候总是遇到错误3(SD_CMD_RSP_TIMEOUT )。 而模式0和1的应答数据都是对的,你有什么好建议?
@Jeff张
RSP1中并没有你所说的SD_CMD_RSP_TIMEOUT,这个错误应该是等待应答超时了。
先确定一下是不是只有这张SD卡才会出现这个问题吧。有可能是这张SD卡不支持部份命令(可以通过读CSD来获取卡支持的命令序列)。
应该是应答超时,说明改成高速后,SD卡受到的命令错误。
用的卡是V2.0的,应该支持高速模式。从SD卡的信息中也判断是V2.0。你说的CSD命令序列是那几个字段?另外你能否给出具体的命令流程?比如CMD6之前之后和中间还有没有需要其他命令?谢谢!
@Jeff张
如果只是50MHz下等待应答超时,可能要注意一下时序了。SD在高速模式下要变换上升下降沿的。
您好,我想请问一下如果host连续发送两个cmd6的查询模式可以吗?
博主,您好,我最近在研究高速SD卡,现在遇到一些问题,速度提不上来,想向您请教下,我的邮箱391508791@qq.com,您能把您的联系方式发到我的邮箱吗?