tags:
篇首语:本文由小常识网(cha138.com)小编为你们整理,主要介绍了芯片的SD/MMC控制器以及SD卡介绍相关的知识,希望对你有一定的参考价值。
1、MMC、SD卡、eMMC介绍 1.1、三者关联
(1)最早出现的是MMC卡,卡片式结构,按照MMC合同设计。(相较于NandFlash芯片来说,MMC卡有2个优势:第一是卡片化,便于拆装;第二是统一了合同插口,兼容性好。)
(2)后来出现SD卡,兼容MMC合同。SD卡较MMC有一些改进,譬如写保护、速率、容量等。
(3)SD卡遵循SD合同,有多个版本。多个版本之间往前兼容,SD卡不仅支持SD合同还支持SPI合同。
(4)iNand/eMMC在SD卡的基础上发展上去,较SD卡的区别就是将SD卡芯片化了(解决卡的接触不良问题,便于设备迷你化)。
(5)iNand和eMMC的关联:eMMC是合同,iNand是Sandisk公司符合eMMC合同的一种芯片系列名称。
总结:MMC卡、SD卡、eMMC卡是一脉相承的,并且都是往前兼容,所以在Soc中都是用SD/MMC控制器去操作。SD/MMC控制器在初始化时会通过发命令去判定当前接的是哪种卡、哪个版本的合同,然后再进行相应的操作。SD卡和eMMC卡在时序操作上几乎一样,在化学接线上有些差异,后面就以SD卡来进行讲解。
1.2、三者相同点
(1)组织框架:都是存储介质+控制电路,向外提供统一的插口;
(2)存储介质都是NandFlash;
1.3、三者区别
(1)接口合同不同:MMC卡是MMC合同,SD卡支持SD合同和SPI合同,eMMC卡/iNand支持eMMC合同,接口合同不同引起化学接线也不一样;
(2)控制电路的功能不同,接口合同不同所以控制电路也不一样;
1.4、和NandFlash的区别
(1)iNand和SD卡在存储介质上都是使用的MLC的NandFlash,价格实惠;
(2)iNand和SD卡是在NandFlash的基础上,完善了控制电路,控制电路可以进行ECC校验、坏块管理、提供统一的插口。NandFlash芯片在通讯合同上不同一,导致兼容性很差;
(3)iNand插口电路还提供了cache机制,所以inand的操作速率更快。
1.5、SD卡和iNand芯片的引脚差别
#f:7:d:a:e:f:1:e:7:0:3:8:9:3:c:4:d:4:3:9:c:3:4:9:9:6:4:7:9:d:6:7#
#4:c:2:5:7:e:5:a:2:e:5:3:e:6:b:5:5:4:8:e:d:8:e:4:6:d:a:e:8:6:9:e#
从前面的电路原理图可以看出,SD卡和iNand的引脚几乎一样,差别就是iNand芯片的数据线是8根,而SD卡的数据线是4根,所以iNand支持8bit并行传输,SD卡最多支持4bit并行传输。
2、SD卡的结构框图
#c:a:a:2:3:9:8:6:d:a:6:3:9:0:8:1:9:1:1:a:d:b:a:4:9:6:a:6:2:9:9:6#
(1)最前面是SD卡的引脚,可以看见有4根data线,1根cmd线,1根CLK线,其余是电源线和接地线;
(2)中间部份是控制电路,相当于一个状态机,负责与主机通讯和管理内部的储存颗粒,主要包含接口控制器和寄存器;
(3)最下边的存储器内核就是NandFlash储存颗粒,负责储存数据。使用的NandFlash储存颗粒是MLC的。
3、SD卡的引脚
#6:4:a:a:a:2:1:3:2:4:a:7:b:b:1:6:9:6:3:a:b:1:4:6:8:7:3:f:0:f:e:9#
(1)SD卡有4根数据线,支持1bit和4bit模式,是并行接口;
(2)主机的SD/MMC控制器是通过CMD线给SD卡发命令;
(3)主机和SD卡是同步通信,主机通过CLK线把时钟讯号传给SD卡;
(4)还有两根接地线和一根电源线;
4、SD/MMC控制器
#e:3:9:6:9:1:6:5:6:d:f:0:1:1:e:2:a:3:7:0:8:4:1:3:8:0:1:8:8:9:3:1#
学习SD/MMC控制器主要就是熟悉相关寄存器的操作,并且SD/MMC控制器的寄存器好多,功能也很复杂,没有对SD卡、eMMC卡了解很深入好多寄存器的说明是看不明白的。推荐的学习方法:根据操作SD卡的代码,再结合SD卡数据指南、SD/MMC控制器的寄存器说明去学习。
5、SD卡的操作模式 5.1、命令码CMD和ACMD
(1)在SD卡合同中,命令码是早已定义好的,在代码里用宏定义去表示;
(2)命令码分为CMDn(n代表1、2、3······)和AMDn(n代表1、2、3······)。CMDn是单命令命令,就是单独发一个CMDn即可表示一个意思。ACMDn是一种扩充,就是发2个CMDn加上去表示一个意思。可以觉得ACMDx = CMDy+CMDz,其中y通常是55;
5.2、命令响应模式
#0:8:8:b:5:9:0:7:9:1:c:0:2:e:6:0:8:5:5:7:4:d:8:9:4:6:9:e:6:c:c:a#
(1)SD合同里早已定义好了命令码,主机去操作SD卡就是给SD卡发送相应的命令码;
(2)主机和SD卡通讯是一个周期一个周期进行的,每个周期都是主机给SD卡发命令,SD卡解析并执行命令,有的命令须要响应和数据,有的不需要;
(3)命令都是主机给SD卡发送的,在通过CMD线发送命令时须要先判定CMD线是否忙,要等上一条命令执行完毕再发送新的命令;
5.3、SD卡的寄存器
#7:3:f:7:e:0:3:0:6:1:1:c:5:4:0:8:0:7:0:f:e:f:c:7:c:d:3:a:0:e:0:c#
SD卡的不同寄存器位数是不一样的,具体含意要查看数据指南,这里不做详尽的说明。
6、SD卡的初始化流程图
#b:8:d:c:3:e:e:1:a:5:f:0:b:0:b:8:b:4:d:b:7:d:d:d:5:4:a:1:8:8:5:0#
(1)上电后SD/MMC控制器先发送CMD0和CMD8命令,然后按照SD卡返回的数据最终判定当前联接的SD卡是采用的那个版本的SD合同。
7、SD卡的状态转换
#0:a:c:3:e:5:4:1:4:f:7:1:1:0:8:a:1:3:b:4:5:d:6:4:9:e:4:f:9:b:2:5#
(1)这副图是承接里面的初始化流程图,SD/MMC控制器在得悉SD卡的合同版本后会再发送CMD2和CMD3命令;
(2)这里描述的状态转换实际就是SD卡控制器的工作逻辑,SD卡控制器就相当于一个状态机,根据主机发送的命令切换到不同的状态执行不同的任务。
(3)刚开始SD卡是待命状态(Stand by State),然后就按照主机发送的命令在不同的状态之间切换。
8、SD卡的SD模式和SPI模式
#a:c:c:a:d:f:e:2:b:1:4:1:3:2:1:8:9:7:3:e:9:6:6:e:1:6:1:f:9:b:e:0#
(1)SD卡支持SD卡合同和SPI合同,单片机操作SDq版常用SPI合同,复杂Soc(带SD/MMC控制器)一般用SD卡合同去操作SD卡;
(2)SD卡合同是6线制(4根数据线+CMD线+CLK线),SPI合同采用4线制(2根数据线+CMD线+CLK线);
(3)SD卡的SD模式比SPI模式传输速度更快;
以上是关于芯片的SD/MMC控制器以及SD卡介绍的主要内容,如果无法解决你的问题,请参考以下文章
SD/MMC子系统之一——插卡检查
SD/MMC的Commands和Responses的总结
eMMC SD/eMMC寄存器介绍
linux下用demsg命令怎么查看sd卡驱动
存储卡和SD卡的区别
Linux SD/MMC/SDIO驱动剖析