SDIO接口_gmac接口是什么意思
Jetbrains全系列IDE穩定放心使用
SDIO,全稱:Secure Digital Input and Output ,即安全數字輸入輸出接口。 SDIO卡是在SD內存卡接口的基礎上發展起來的接口,SDIO接口兼容以前的SD內存卡,并且可以連接SDIO接口的設備,目前根據SDIO協議的SPEC,SDIO接口支持的設備總類有藍牙,網卡,電視卡等。支持三種不同的數據總線模式:1位(默認)、4位和8位。
SDIO協議是由SD卡的協議演化升級而來的,很多地方保留了SD卡的讀寫協議,同時SDIO協議又在SD卡協議之上添加了CMD52和CMD53命令。由于這個,SDIO和SD卡規范間的一個重要區別是增加了低速標準,低速卡的目標應用是以最小的硬件開始來支持低速I/O能力。低速卡支持類似調制解調器,條形碼掃描儀和GPS接收器等應用。高速卡支持網卡,電視卡還有“組合”卡等,組合卡指的是存儲器+SDIO。
SDIO總線和USB總線類似,SDIO總線也有兩端,其中一端是主機(HOST)端,另一端是設備端(DEVICE),采用HOST- DEVICE這樣的設計是為了簡化DEVICE的設計,所有的通信都是由HOST端發出命令開始的。在DEVICE端只要能解溪HOST的命令,就可以同HOST進行通信了。SDIO的HOST可以連接多個DEVICE。
SDIO信號和接口
復位后SDIO_D0用于數據傳輸。初始化后主機可以改變數據總線的寬度(通過ACMD6命令設置)。 如果一個多媒體卡接到了總線上,則SDIO_D0、SDIO_D[3:0]或SDIO_D[7:0]可以用于數據傳輸。
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端回應請求。其中請求和回應中會數據信息。
-
Command:用于開始傳輸的命令,是由HOST端發往DEVICE端的。其中命令是通過CMD信號線傳送的。
-
Response:回應是DEVICE返回的HOST的命令,作為Command的回應。也是通過CMD線傳送的。
-
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命令寄存器 SDIO_CMD
SDIO電源控制寄存器 SDIO_POWER
該寄存器只有最低2位(PWRCTRL[1:0])有效,其他都是保留位,STM32復位以后,PWRCTRL=00,處于掉電狀態。所以,我們首先要給SDIO上電,設置這兩個位為:11。
SDIO時鐘控制寄存器 SDIO_CLKCR
注意:當SDIO_CK頻率過快時,可能導致SD卡通信失敗,此時,建議降低SDIO_CK試試。
一般位10設置為0 禁止旁路
????????
SDIO參數寄存器 SDIO_ARG
該寄存器用于存儲命令參數。注意:參數必須先于命令寫入????
SDIO命令寄存器 SDIO_CMD
低6位為命令索引,即要發送的命令索引號(如發送CMD1,其值為1,索引就設置為1)。位[7:6],用于設置等待響應位,用于指示CPSM是否需要等待,以及等待類型等。CPSM:即命令通道狀態機,請參考《STM32中文參考手冊》相關章節。命令通道狀態機我們一般都是開啟的,所以位10要設置為1。
SDIO命令響應寄存器 SDIO_RESPCMD
該寄存器只有低6位有效,比較簡單,用于存儲最后收到的命令響應中的命令索引。如果傳輸的命令響應不包含命令索引,則該寄存器的內容不可預知。
SDIO命令響應1~4寄存器 SDIO_RESPx,x=1~4
命令響應寄存器組,總共包含4個32位寄存器組成,用于存放接收到的卡響應部分的信息。如果收到短響應,則數據存放在SDIO_RESP1寄存器里面,其他三個寄存器沒有用到。而如果收到長響應,則依次存放在SDIO_RESP1~SDIO_RESP4里面
SDIO數據定時器寄存器 SDIO_DTIMER
寄存器用于存儲以卡總線時鐘(SDIO_CK)為周期的數據超時時間,一個計數器將從SDIO_DTIMER寄存器加載數值,并在數據通道狀態機(DPSM)進入Wait_R或繁忙狀態時進行遞減計數,當DPSM處在這些狀態時,如果計數器減為0,則設置超時標志。DPSM:即數據通道狀態機,類似CPSM,詳見《STM32中文參考手冊》相關章節。
注意:在寫入數據控制寄存器(SDIO_DCTRL),進行數據傳輸之前,須先寫入該寄存器(SDIO_DTIMER)和數據長度寄存器(SDIO_DLEN)!?
SDIO數據長度寄存器 SDIO_DLEN
該寄存器低25位有效,用于設置需要傳輸的數據字節長度。對于塊數據傳輸,該寄存器的數值,必須是數據塊長度(通過SDIO_DCTRL設置)的倍數。
即:假定數據塊大小為512字節,那么SDIO_DLEN的設置,必須是512的整數倍,最大可以設置讀取65535個數據塊。
SDIO數據控制寄存器 SDIO_DCTRL
該寄存器,用于控制數據通道狀態機(DPSM),包括數據傳輸使能、傳輸方向、傳輸模式、DMA使能、數據塊長度等信息的設置。
我們需要根據自己的實際情況,來配置該寄存器,才可正常實現數據收發。
SDIO狀態寄存器 SDIO_STA
另外,SDIO的清除中斷寄存器(SDIO_ICR)和中斷屏蔽寄存器(SDIO_MASK),這兩個寄存器和狀態寄存器(SDIO_STA)每個位的定義都相同,只是功能各有不同。請參考著學習。
狀態寄存器可以用來查詢SDIO控制器的當前狀態,以便處理各種事務。比如SDIO_STA的位2表示命令響應超時,說明SDIO的命令響應出了問題。我們通過設置SDIO_ICR的位2則可以清除這個超時標志。
卡檢測
檢測卡的插入,當卡插入時,某管腳電平變化,讀取卡控制器卡檢測寄存器判斷卡是否插入。
卡識別
識別卡類型;即 SD, MMC 或 SDIO。
a) 首先發送 CMD5。如果收到一個響應,那么該卡是 SDIO。
b) 否則發送 ACMD41;如果收到一個響應,那么該卡是 SD。
c) 否則,該卡是 MMC。
卡常用命令
對不同的卡類型發送不同的卡信息交互序列:
a) SD 卡 – 發送 CMD0, ACMD41, CMD2, CMD3。
b) SDIO – 發送 CMD5;如果 function 個數合法,再發送 CMD3。對于 SDIO 存
儲部分,遵循和 SD 卡相同的命令。
c) MMC – 發送 CMD0, CMD1, CMD2, CMD3。
不同的SDd卡,主控根據其功能,支持不同的命令集 如下:
Class0 :(卡的識別、初始化等基本命令集)
CMD0:復位SD 卡.
CMD1:讀OCR寄存器.
CMD9:讀CSD寄存器.
CMD10:讀CID寄存器.
CMD12:停止讀多塊時的數據傳輸
CMD13:讀 Card_Status 寄存器
Class2 (讀卡命令集):
CMD16:設置塊的長度
CMD17:讀單塊.
CMD18:讀多塊,直至主機發送CMD12為止 .
Class4(寫卡命令集) :
CMD24:寫單塊.
CMD25:寫多塊.
CMD27:寫CSD寄存器 .
Class5 (擦除卡命令集):
CMD32:設置擦除塊的起始地址.
CMD33:設置擦除塊的終止地址.
CMD38: 擦除所選擇的塊.
Class6(寫保護命令集):
CMD28:設置寫保護塊的地址.
CMD29:擦除寫保護塊的地址.
CMD30: Ask the card for the status of the write protection bits
class7:卡的鎖定,解鎖功能命令集
class8:申請特定命令集 。
class10 -11 :保留
參考:https://blog.csdn.net/qq_25538145/article/details/77252933
https://blog.csdn.net/g_salamander/article/details/14167055?depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-2&utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-2
https://blog.csdn.net/FA99999/article/details/61196435?depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-3&utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-3
https://www.cnblogs.com/aaronLinux/p/7298327.html
總結
以上是生活随笔為你收集整理的SDIO接口_gmac接口是什么意思的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux虚拟地址被大量占用,《Linu
- 下一篇: 马斯克认为ChatGPT的一些回应是“令