S5PV210 iNAND/SD卡
阿新 • • 發佈:2018-11-08
在上一篇部落格中,我寫了NANDFLASH的相關操作,書接上文。由於不同廠家生產的NANDFLASH在介面時序、內部組織架構等方面的不同,導致其在移植時比較麻煩。
與之相比,MMC卡/SD卡有統一的介面,統一的協議,並且將NANDFLASH卡片化。而eMMC(embedded MMC)是將MMC卡做成嵌入式晶片的形式,滿足了現代嵌入式對晶片體積的要求,而且eMMC與SD卡的各種操作基本一致。
iNAND則是eMMC的代表之一。
1. iNAND與SD卡介面
有以下幾點需要注意:
- SD卡與iNAND都由數根資料線,一根命令線,一根時鐘線組成。
- iNand的IO線有8根,支援1、4、8線並行傳輸模式;SD卡IO線有4根,支援1、4線並行傳輸模式。
- SD/iNAND的控制是有時鐘線的,Soc會給SD/iNAND一個時鐘訊號,跟NANDFLASH使用各種使能線來控制的方式不同。
2. SD/iNAND的控制——命令+響應
2.1 命令
對於SD卡/iNAND的控制都是依賴於傳送命令與接收響應的。下圖是從SanDisk的資料“SD卡的官方資料”中截出來的部分指令。
注意,除了CMD命令之外,還有ACMD指令,ACMD指令是由兩個CMD指令組合而成,可以認為ACMDx = CMDy+CMDz(y一般是55)。
2.2 響應
有的指令需要響應,有的指令不需要響應。
同樣從上面的文件中摘取一種響應,如下。
響應型別R3長度為48位,是ACMD41指令的回覆,其主要內容是將SD卡的OCR暫存器的內容傳送到Soc,資料格式如圖所示。
2.3 卡狀態
SD/iNAND有不同的狀態,如空閒狀態、資料傳送狀態、斷開連線狀態等,**在不同的狀態下能處理的命令是有差別的。**SD卡本身的控制器相當於一個狀態機,從下圖可以看出。
對圖中內容稍作解釋:SD卡在初始化之後將進入”Stand-by State”狀態,接收到CMD7後,將進入”Transfer State”,做好了資料傳輸的準備,這時如果接收到的是”CMD 6,17,18,30,56/ACMD 13,22,51”中的一個將進入”Sending data State”開始傳送資料,傳送完成或是接收到CMD12命令將會回到”Transfer State”狀態。
3. SD/iNAND的初始化操作
初始化過程包括:配置響應的IO口,設定Soc控制器和SD的操作時鐘,確定接在Soc上的卡種類(SD V1/SD V2/SD HC/MMC)。其中,確定卡種類的流程圖如下所示。
包括讀寫SD卡以及上述初始化過程,根據現成的程式查詢資料手冊慢慢看就好了。