SDIO

SDIO

SDIO (Input/Output)是一種IO接口規範。目前,其最主要用途是爲帶有SD卡槽的設備進行外設功能擴展。SDIO卡是一種IO外設,而不是MemorySDIO卡外形與SD卡一致,可直接插入SD卡槽中。

目前市場上有多種SDIO接口的外設,比如SDIO藍牙,SDIO GPSSDIO無線網卡,SDIO移動電視卡等。這些卡底部帶有和SD卡外形一致的插頭,可直接插入SDIO卡槽(即爲SD卡槽)的智能手機、PDA中,即可爲這些手機、PDA帶來豐富的擴展功能。用戶可根據實際需要,靈活選擇外設擴展的種類、品牌和性能等級。SDIO已爲成爲數碼產品外設功能擴展的標準接口。

SDIO卡插入帶有標準SD卡槽的設備後,如果該設備不支持SDIOSDIO卡不會對SD卡的命令作出響應,處於非激活狀態,不影響設備的正常工作;如果該設備支持SDIO卡,則按照規範的要求激活SDIO卡。

SDIO卡允許設備按IO的方式直接對寄存器進行訪問,無須執行FAT文件結構或數據sector等複雜操作。此外,SDIO卡還能向設備發出中斷,這是與SD memory卡的本質區別。

            

 SDIO協議是由SD卡的協議演化升級而來的,很多地方保留了SD卡的讀寫協議,同時SDIO協議又在SD卡協議之上添加了CMD52和CMD53命令。由於這個,SDIO和SD卡規範間的一個重要區別是增加了低速標準,低速卡的目標應用是以最小的硬件開始來支持低速I/O能力。低速卡支持類似調制解調器,條形碼掃描儀和GPS接收器等應用。高速卡支持網卡,電視卡還有“組合”卡等,組合卡指的是存儲器+SDIO。
       SDIO和SD卡的SPEC間的又一個重要區別是增加了低速標準。SDIO卡只需要SPI和1位SD傳輸模式。低速卡的目標應用是以最小的硬件開支來支持低速I/O能力,低速卡支持類似MODEM,條形掃描儀和GPS接收器等應用。對組合卡來說,全速和4BIT操作對卡內存儲器和SDIO部分都是強制要求的。
       在非組合卡的SDIO設備裏,其最高速度要只有達到25M,而組合卡的最高速度同SD卡的最高速度一樣,要高於25M。
SDIO總線
       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中都有詳細說明,這裏就不在羅索了。
基於ARM含SD控制器的SD卡的SDIO模式驅動解析
SD卡由日本松下、東芝及美國SanDisk公司於1999年8月共同開發研製。
SD卡的結構能保證數字文件傳送的安全性,也很容易重新格式化,因此越來越多的被應用的嵌入式系統中。SD卡的使用非常方便,常見的有兩種工作模式:SPI和SDIO。SPI是串行的工作模式,速度相對較低,但是使用方便,只要MCU含有SPI接口均可使用。SDIO模式,可以最多4線傳輸,因此速度比較快,由於SD卡的普及,越來越多的MCU內部集成了SDIO控制器,簡化了我們的工作。本文以三星s3c2410爲例介紹。
2.    SD卡的協議
SD卡的控制指令非常強大,支持SPI,SDIO模式,兼容MMC等。而且不同的指令有不同的響應(3種),這在我們使用指令是要注意的。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章