SDIO相關學習

2021-06-09 13:50:23 字數 3382 閱讀 4763

這段時間在研究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 命令訊號線,主機發出的命令以及從機對命令...