這段時間在研究sdio介面,所以要求對mmc、sd、sdio都要有所了解,網上找過這些概念,不過總是流傳的是jollen 筆記裡面的乙份,許多地方未能清楚交待,所以我在其基礎上加上一些自己的了解來加深對sdio的學習。並一併學習下sdio匯流排。
一、首先從sd和mmc說起
mmc(********** card)與 sd(secure digital memory card)
mmc:********** card的縮寫,即多**卡。24mm*32mm*1.mm。以前的mmc規範的資料傳輸寬度只有1位,最新的1.0版mmc中拓寬了4位和8位頻寬,時鐘頻率也達到了52mhz,從而理所當然的支援50mhz的傳輸速率。值得一提的是,對於sd時代提倡的「資料安全」特性,mmc協會也終於接納了具有競爭性的安全卡協議——secure mmc1.1規範。
sd(secure digital memory card),即安全數碼儲存卡,我建議的讀法是sd儲存卡。它在mmmc的基礎上發展而來,並且增加了相對於mmc的兩個新特色:傳輸速率比2.11版本的mmc快了將近4倍,另外sd儲存卡強調資料的安全,可以設定資料的使用許可權,防止他人複製。
所以可以這樣講sd 是一種 flash memory card 的標準,也就是一般常見的 sd 記憶卡,而 mmc 則是較早的一種記憶卡標準,目前已經被 sd 標準所取代。在資料和物理規範上,sd儲存卡向前相容mmc卡,在外觀上,sd儲存卡只是在厚度上比mmc卡厚了0.7mm。
二、sdio(secure digital i/o)概述
sdio 是目前我們比較關心的技術,sdio 故名思義,
就是 sd 的 i/o 介面(inte***ce)的意思,不過這樣解釋可能還有點抽像。更具體的說明,
sd 本來是記憶卡的標準,但是現在也可以把 sd 拿來插上一些外圍介面使用,這樣的技術便是 sdio。
所以 sdio 本身是一種相當單純的技術,透過 sd 的 i/o 接腳來連線外部外圍,並且透過 sd 上的 i/o 資料接位與這些外圍傳輸資料,而且 sd 協會會員也推出很完整的 sdio stack 驅動程式,使得 sdio 外圍(我們稱為 sdio 卡)的開發與應用變得相當熱門。
現在已經有非常多的手機或是手持裝置都支援 sdio 的功能(sd 標準原本就是針對 mobile device 而制定),而且許多 sdio 外圍也都被開發出來,讓手機外接外圍更加容易,並且開發上更有彈性(不需要內建外圍)。
目前常見的 sdio 外圍(sdio 卡)有:wi-fi card(無線網路卡)、cmos sensor card(照相模組)、gps card、gsm/gprs modem card、bluetooth card、radio/tv card sdio 的應用將是未來嵌入式系統最重要的接**術之一,並且也會取代目前 gpio 式的 spi 介面。
三、sdio匯流排協議
sdio協議是由sd卡的協議演化公升級而來的,很多地方保留了sd卡的讀寫協議,同時sdio協議又在sd卡協議之上新增了cmd52和cmd53命令。 由於這個,sdio和sd卡規範間的
乙個重要區別是增加了低速標準,低速卡的目標應用是以最小的硬體開始來支援低速i/o能力。低速卡支援類似調製解調 器,條形碼掃瞄器和gps接收器等應用。高速卡支援網絡卡,電視卡還有「組合」(combo)卡等,組合卡指的是儲存器+sdio。
sdio和sd卡的spec間的又乙個重要區別是增加了低速標準。sdio卡只需要spi和1位sd傳輸模式。低速卡的目標應用是以最小的硬體開支來支援低速i/o能力,低速卡支援如modem,條形掃瞄器和gps接收器等應用。對組合卡來說,全速和4bit操作對卡記憶體儲器和sdio部分都是強制要求 的。
在非組合卡的sdio裝置裡,其最高速度要只有達到25m,而組合卡的最高速度同sd卡的最高速度一樣,要高於25m。
sdio匯流排和usb匯流排類似,sdio匯流排也有兩端,其中一端是主機(host)端,另一端是裝置端(device),採用host-device這樣的設計是為了簡化device的設計,所有的通訊都是由host端發出命令開始的。在device端只要能解溪host的命令,就可以同 host進行通訊了。
sdio的host可以連線多個device,這個是同sd的匯流排一樣的,其中有如下的幾種訊號:
1.clk訊號:host給device的時鐘訊號.
2.cmd訊號:雙向的訊號,用於傳送命令和反應。
3.dat0-dat3 訊號:四條用於傳送的資料線。
4.vdd訊號:電源訊號。
5.vss1,vss2:電源地訊號。
在sdio匯流排定義中,dat1訊號線復用為中斷線。在sdio的1bit模式下dat0用來傳輸資料,dat1用作中斷線。在sdio的4bit模式下dat0-dat3用來傳輸資料,其中dat1復用作中斷線。
四、sdio命令
sdio匯流排上都是host端發起請求,然後device端回應請求。其中請求和回應中會資料資訊。
1.command:用於開始傳輸的命令,是由host端發往device端的。其中命令是通過cmd訊號線傳送的。
2.response:回應是device返回的host的命令,作為command的回應。也是通過cmd線傳送的。
3.data:資料是雙向的傳送的。可以設定為1線模式,也可以設定為4線模式。資料是通過dat0-dat3訊號線傳輸的。
sdio的每次操作都是由host在cmd線上發起乙個cmd,對於有的cmd,device需要返回response,有的則不需要。
對於讀命令,首先host會向device傳送命令,緊接著device會返回乙個握手訊號,此時,當host收到回應的握手訊號後,會將資料放在4位的 資料線上,在傳送資料的同時會跟隨著crc校驗碼。當整個讀傳送完畢後,host會再次傳送乙個命令,通知device操作完畢,device同時會返回 乙個響應。
對於寫命令,首先host會向device傳送命令,緊接著device會返回乙個握手訊號,此時,當host收到回應的握手訊號後,會將資料放在4位的 資料線上,在傳送資料的同時會跟隨著crc校驗碼。當整個寫傳送完畢後,host會再次傳送乙個命令,通知device操作完畢,device同時會返回 乙個響應。
五、sdio的暫存器
sdio卡的裝置驅動80%的任務就是操作sdio卡上的有關暫存器。sdio卡最多允許有7個功能(function),這個同其功能號是對應的(0~7),每個功能都對應乙個128k位元組大小的暫存器。功能號之所以取值範圍是1~7,而沒有包含0,是因為功能0並不代表真正的功能,而代表cia暫存器,即common i/o area,這個紀錄著sdio卡的一些基本資訊和特性,並且可以改寫這些暫存器。其中位址0x1000~0x17fff是sdio卡的cis區域,就是基本資訊區域,common information structure。初始化的時候讀取並配對sdio裝置。
這些暫存器的詳細分割槽已經其對應的功能,在開發過程中都是需要仔細研讀的,這些都在協議的spec中都有詳細說明,這裡就不在囉嗦了。
SDIO匯流排協議
sdio採用host device模式,所有通訊都由host端發命令,device裝置只要解析host命令就可與host進行通訊。sdio匯流排的幾根線 1.clk訊號 host給device的時鐘訊號.2.cmd訊號 雙向的訊號,用於傳送命令和反應。3.dat0 dat3 訊號 四條用於傳送的資料...
SDIO匯流排協議
sdio採用host device模式,所有通訊都由host端發命令,device裝置只要解析host命令就可與host進行通訊。sdio匯流排的幾根線 1.clk訊號 host給device的時鐘訊號.2.cmd訊號 雙向的訊號,用於傳送命令和反應。3.dat0 dat3 訊號 四條用於傳送的資料...
SD卡學習(SDIO和SPI模式)
sd卡的操作模式 sd卡模式 sdio spi模式 預設為sd模式 其中sd卡模式的訊號線有 clk cmd dat0 dat3,6根線。spi模式的訊號線有 cs clk miso dataout mosi datain 4根線。clk 時鐘同步線 cmd 命令訊號線,主機發出的命令以及從機對命令...