芯片的SD/MMC控制器以及SD卡介绍
1、MMC、SD卡、eMMC介紹
1.1、三者關(guān)聯(lián)
(1)最早出現(xiàn)的是MMC卡,卡片式結(jié)構(gòu),按照MMC協(xié)議設(shè)計(jì)。(相較于NandFlash芯片來(lái)說(shuō),MMC卡有2個(gè)優(yōu)勢(shì):第一是卡片化,便于拆裝;第二是統(tǒng)一了協(xié)議接口,兼容性好。)
(2)后來(lái)出現(xiàn)SD卡,兼容MMC協(xié)議。SD卡較MMC有一些改進(jìn),譬如寫保護(hù)、速率、容量等。
(3)SD卡遵守SD協(xié)議,有多個(gè)版本。多個(gè)版本之間向前兼容,SD卡除了支持SD協(xié)議還支持SPI協(xié)議。
(4)iNand/eMMC在SD卡的基礎(chǔ)上發(fā)展起來(lái),較SD卡的區(qū)別就是將SD卡芯片化了(解決卡的接觸不良問(wèn)題,便于設(shè)備迷你化)。
(5)iNand和eMMC的關(guān)聯(lián):eMMC是協(xié)議,iNand是Sandisk公司符合eMMC協(xié)議的一種芯片系列名稱。
總結(jié):MMC卡、SD卡、eMMC卡是一脈相承的,并且都是向前兼容,所以在Soc中都是用SD/MMC控制器去操作。SD/MMC控制器在初始化時(shí)會(huì)通過(guò)發(fā)命令去判斷當(dāng)前接的是哪種卡、哪個(gè)版本的協(xié)議,然后再進(jìn)行相應(yīng)的操作。SD卡和eMMC卡在時(shí)序操作上幾乎一樣,在物理接線上有些差別,后面就以SD卡來(lái)進(jìn)行講解。
1.2、三者相同點(diǎn)
(1)組織框架:都是存儲(chǔ)介質(zhì)+控制電路,向外提供統(tǒng)一的接口;
(2)存儲(chǔ)介質(zhì)都是NandFlash;
1.3、三者區(qū)別
(1)接口協(xié)議不同:MMC卡是MMC協(xié)議,SD卡支持SD協(xié)議和SPI協(xié)議,eMMC卡/iNand支持eMMC協(xié)議,接口協(xié)議不同導(dǎo)致物理接線也不一樣;
(2)控制電路的功能不同,接口協(xié)議不同所以控制電路也不一樣;
1.4、和NandFlash的區(qū)別
(1)iNand和SD卡在儲(chǔ)存介質(zhì)上都是使用的MLC的NandFlash,價(jià)格便宜;
(2)iNand和SD卡是在NandFlash的基礎(chǔ)上,完善了控制電路,控制電路可以進(jìn)行ECC校驗(yàn)、壞塊管理、提供統(tǒng)一的接口。NandFlash芯片在通信協(xié)議上不同一,導(dǎo)致兼容性很差;
(3)iNand接口電路還提供了cache機(jī)制,所以inand的操作速度更快。
1.5、SD卡和iNand芯片的引腳差異
從上面的電路原理圖可以看出,SD卡和iNand的引腳幾乎一樣,差別就是iNand芯片的數(shù)據(jù)線是8根,而SD卡的數(shù)據(jù)線是4根,所以iNand支持8bit并行傳輸,SD卡最多支持4bit并行傳輸。
2、SD卡的結(jié)構(gòu)框圖
(1)最上面是SD卡的引腳,可以看到有4根data線,1根cmd線,1根CLK線,其余是電源線和接地線;
(2)中間部分是控制電路,相當(dāng)于一個(gè)狀態(tài)機(jī),負(fù)責(zé)與主機(jī)通信和管理內(nèi)部的存儲(chǔ)顆粒,主要包含接口控制器和寄存器;
(3)最下面的存儲(chǔ)器內(nèi)核就是NandFlash存儲(chǔ)顆粒,負(fù)責(zé)存儲(chǔ)數(shù)據(jù)。使用的NandFlash存儲(chǔ)顆粒是MLC的。
3、SD卡的引腳
(1)SD卡有4根數(shù)據(jù)線,支持1bit和4bit模式,是并行接口;
(2)主機(jī)的SD/MMC控制器是通過(guò)CMD線給SD卡發(fā)命令;
(3)主機(jī)和SD卡是同步通信,主機(jī)通過(guò)CLK線把時(shí)鐘信號(hào)傳給SD卡;
(4)還有兩根接地線和一根電源線;
4、SD/MMC控制器
學(xué)習(xí)SD/MMC控制器主要就是熟悉相關(guān)寄存器的操作,并且SD/MMC控制器的寄存器很多,功能也很復(fù)雜,沒(méi)有對(duì)SD卡、eMMC卡了解很深入很多寄存器的說(shuō)明是看不明白的。推薦的學(xué)習(xí)方法:根據(jù)操作SD卡的代碼,再結(jié)合SD卡數(shù)據(jù)手冊(cè)、SD/MMC控制器的寄存器說(shuō)明去學(xué)習(xí)。
5、SD卡的操作模式
5.1、命令碼CMD和ACMD
(1)在SD卡協(xié)議中,命令碼是已經(jīng)定義好的,在代碼里用宏定義去表示;
(2)命令碼分為CMDn(n代表1、2、3······)和AMDn(n代表1、2、3······)。CMDn是單命令命令,就是單獨(dú)發(fā)一個(gè)CMDn即可表示一個(gè)意思。ACMDn是一種擴(kuò)展,就是發(fā)2個(gè)CMDn加起來(lái)表示一個(gè)意思。可以認(rèn)為ACMDx = CMDy+CMDz,其中y一般是55;
5.2、命令響應(yīng)模式
(1)SD協(xié)議里已經(jīng)定義好了命令碼,主機(jī)去操作SD卡就是給SD卡發(fā)送相應(yīng)的命令碼;
(2)主機(jī)和SD卡通信是一個(gè)周期一個(gè)周期進(jìn)行的,每個(gè)周期都是主機(jī)給SD卡發(fā)命令,SD卡解析并執(zhí)行命令,有的命令需要響應(yīng)和數(shù)據(jù),有的不需要;
(3)命令都是主機(jī)給SD卡發(fā)送的,在通過(guò)CMD線發(fā)送命令時(shí)需要先判斷CMD線是否忙,要等上一條命令執(zhí)行完畢再發(fā)送新的命令;
5.3、SD卡的寄存器
SD卡的不同寄存器位數(shù)是不一樣的,具體含義要查看數(shù)據(jù)手冊(cè),這里不做詳細(xì)的說(shuō)明。
6、SD卡的初始化流程圖
(1)上電后SD/MMC控制器先發(fā)送CMD0和CMD8命令,然后根據(jù)SD卡返回的數(shù)據(jù)最終判斷當(dāng)前連接的SD卡是采用的哪個(gè)版本的SD協(xié)議。
7、SD卡的狀態(tài)轉(zhuǎn)換
(1)這副圖是承接上面的初始化流程圖,SD/MMC控制器在得知SD卡的協(xié)議版本后會(huì)再發(fā)送CMD2和CMD3命令;
(2)這里描述的狀態(tài)轉(zhuǎn)換實(shí)際就是SD卡控制器的工作邏輯,SD卡控制器就相當(dāng)于一個(gè)狀態(tài)機(jī),根據(jù)主機(jī)發(fā)送的命令切換到不同的狀態(tài)執(zhí)行不同的任務(wù)。
(3)剛開(kāi)始SD卡是待命狀態(tài)(Stand by State),然后就根據(jù)主機(jī)發(fā)送的命令在不同的狀態(tài)之間切換。
8、SD卡的SD模式和SPI模式
(1)SD卡支持SD卡協(xié)議和SPI協(xié)議,單片機(jī)操作SD卡通常用SPI協(xié)議,復(fù)雜Soc(帶SD/MMC控制器)一般用SD卡協(xié)議去操作SD卡;
(2)SD卡協(xié)議是6線制(4根數(shù)據(jù)線+CMD線+CLK線),SPI協(xié)議采用4線制(2根數(shù)據(jù)線+CMD線+CLK線);
(3)SD卡的SD模式比SPI模式傳輸速率更快;
總結(jié)
以上是生活随笔為你收集整理的芯片的SD/MMC控制器以及SD卡介绍的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 超级LINUX VOD系统介绍
- 下一篇: 基于行为树的高级游戏AI教程