SDIO DRIVER

SDIO  spa

       SDIO 卡是在 SD 內存卡接口的基礎上發展起來的接口, SDIO 接口兼容之前的 SD 內存卡,而且能夠鏈接 SDIO 接口的設備,目前根據 SDIO 協議的 SPEC  SDIO 接口支持的設備總類有藍牙,網卡,電視卡等。 設計

       SDIO 協議是由 SD 卡的協議演化升級而來的,不少地方保留了 SD 卡的讀寫協議,同時 SDIO 協議又在 SD 卡協議之上添加了 CMD52  CMD53 命令。因爲這個, SDIO  SD 卡規範間的一個重要區別是增長了低速標準,低速卡的目標應用是以最小的硬件開始來支持低速 I/O 能力。低速卡支持相似調制解調器 , 條形碼掃描儀和 GPS 接收器等應用。高速卡支持網卡,電視卡還有「組合」卡等,組合卡指的是存儲器 +SDIO  orm

       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 進行通訊了。 it

       SDIO  HOST 能夠鏈接多個 DEVICE ,以下圖所示 : io

 

 

       這個是同 SD 的總線同樣的 , 其中有以下的幾種信號 function

1.        CLK 信號 :HOST  DEVICE 的時鐘信號 . form

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 中都有詳細說明,這裏就不在羅索了。  

 

CMD52 命令:

SDIO 設備爲了和 SD 內存卡兼容, SD 卡全部 Command  Response 徹底兼容,同時加入了一些新的 Command Response 。例如,初始化 SD 內存卡使用 ACMD41 ,而 SDIO 卡設備則用 CMD5 通知 DEVICE 進行初始化。

但兩者最重要的區別是, SDIO 卡比 SD 內存卡多了 CMD52  CMD53 命令,這兩個命令能夠方便的訪問某個功能的某個地址寄存器。

CMD52 命令是 IO_RW_DIRECT 命令的簡稱,其命令格式以下

首先第一位爲 0, 代表是起始位,第二位爲傳輸方向,這裏爲 1 ,表明方向爲 HOST  DEVICE 設備傳送,其後 6 位爲命令號,這裏是 110100b ,用十進制表示爲 52  CMD52 的名字也由此而來。緊接着是讀寫標誌位。

      而後是操做的功能號。也就是 function   number 。若是爲 0 則指示爲 CCCR 寄存器組。

       緊接着是寄存器地址,用 17 指示,因爲功能寄存器有 128K 地址, 17 位正好能尋址。

       再下來 8  Write data or Staff Bits 的意思是說,若是當前爲寫操做,則爲數據,不然 8 位爲填充位。無心義。

       最後 7 位爲 CRC 校驗碼。最後一位爲結束位 0 

       對於 CMD52  Response  48 位,命令格式以下:

 

       總結下, CMD52 是由 HOST 發往 DEVICE 的,它必須有 DEVICE 返回來的 Response  CMD52 不須要佔用DAT 線,讀寫的數據是經過 CMD52 或者 Response 來傳送。每次 CMD52 只能讀或者寫一個 byte 

 

CMD53 命令:

CMD52 每次只能讀寫一個字節,由於有了 CMD53 對讀寫進行了擴展, CMD53 容許每次讀寫多個字節或者多個塊(BLOCK)  CMD53 的命令格式以下:

       第一位是 1, 爲開始位,而後是一位方向位,老是 1 ,表明方向爲 HOST  DEVICE 設備傳送,其後 6 位爲命令號,這裏是 110101b ,用十進制表示爲 53  CMD53 的名字也由此而來。

       而後是 1 位的讀寫標誌。接着是 3 位功能號,這個同 CMD52 都是相同的。 Block   Mode 若是 1 表明是塊傳輸模式,不然爲字節傳輸模式。

       OP Code 爲操做位,若是是 0 ,表明數據往固定的位置讀寫,若是 1 表明是地質增量讀寫。例如,對地址 0 固定讀寫16 個字節,至關於 16 次讀寫的地址 0 ,而對地址 0 增量讀寫 16 個字節,至關於讀寫 0~15 地址的數據。

       而後是 17 位的地址寄存器,能夠尋址到 128K 字節的地址,而後是 9 位的讀寫的計數,對於字節讀取,讀寫大小就是這個計數,而對於塊讀寫,讀寫的大小是計數乘以塊的大小。

       隨後的 7 位爲 CRC 校驗碼。最後一位爲 1 

       當讀寫操做是塊操做的時候,塊的大小是能夠經過設置 FBR 中的相關寄存器來設置。

        CMD52 命令不一樣的是, CMD53 沒有返回的命令的,這裏判斷是否 DEVICE 設備讀寫完畢是須要驅動裏面本身判斷的,通常有 2 個方法, 1. 設置相應的讀寫完畢中斷。若是 DEVICE 設備讀寫完畢,則對 HOST 設備發送中斷。 2.HOST 設備主動查詢 DEVICE 設備是否讀寫完畢,能夠經過 CMD 命令是否有返回來判斷是否 DEVICE 是否讀寫完畢。

相關文章
相關標籤/搜索