STM32_SDIO

目錄

1:SDIO簡介

2:SDIO接口特點 

3:SDIO框圖 

4:SDIO命令與響應

5:SDIO塊數據傳輸


1:SDIO簡介

Secure Digital Input and Output:安全數字輸入輸出接口。SDIO提供APB2外設總線與多媒體卡(MMC)、SD卡,SD/IO卡以及CE_ATA設備之間的接口

2:SDIO接口特點 

  • 與多媒體卡系統規格書版本4.2全兼容。支持三種不同的數據總線模式:1位(默認)、4位和8位。
  • 與較早的多媒體卡系統規格版本全兼容(向前兼容)。
  • 與SD存儲卡規格版本2.0全兼容。 
  • 與SD I/O卡規格版本2.0全兼容:支持兩種不同的數據總線模式:1位(默認)和4位。
  • 完全支持CE-ATA功能(與CE-ATA數字協議版本1.1全兼容)。  8位總線模式下數據傳輸速率可達48MHz。
  • 數據和命令輸出使能信號,用於控制外部雙向驅動器。

3:SDIO框圖 

eg:STM32F4

SDIO由兩部分組成

  • SDIO 適配器塊提供特定於 MMC/SD/SD I/O 卡的所有功能,如時鐘生成單元、命令和數 據傳輸。
  • APB2 接口訪問 SDIO 適配器寄存器,並且生成中斷和 DMA 請求信號。

復位後SDIO_D0用於數據傳輸。初始化後主機可以改變數據總線的寬度(通過ACMD6命令設置)

如果多媒體卡連接到總線,則 SDIO_D0SDIO_D[3:0] SDIO_D[7:0] 可以用於數據傳輸(也就是前面所說支持三種不同的總線模式)。 MMC V3.31 或更低版本僅支持 1 位數據,因此只能使用 SDIO_D0
 

SDIO適配器時鐘(SDIOCLK):該時鐘用於驅動SDIO適配器,可用於產生SDIO_CLK時鐘,對F4來說,SDIOCLK來PLLCK(48M

SDIO_CK計算公式:SDIO_CK=SDIOCLK/(2+CLKDIV)

注:在SD卡初始化時,SDIO_CK不可以超過400Khz,初始化完成後,可以設置爲最大頻率(但不可以超過SD卡最大操作頻率)。

4:SDIO命令與響應

SDIO的命令分爲:應用相關命令(ACMD)和通用命令(CMD)兩部分。發送ACMD時,需先發送CMD55。
SDIO所有的命令和響應都是在SDIO_CMD引腳上面傳輸的,命令長度固定爲48位,SDIO命令格式如下表所示:

 其中:除了命令索引和參數需要我們設置,其他都是由SDIO硬件自動控制。命令索引(如CMD0,CMD1之類)由SDIO_CMD寄存器設置,命令參數則由SDIO_ARG寄存器設置。

一般SD卡在接收到命令行,都會有一個應答(CMD0例外),這個應答我們也稱之爲響應。STM32的SDIO接口,支持2種響應類型:短響應(48位)和長響應(136位)。

 不論是短響應還是長響應,硬件都會自動濾除了起始位、傳輸位、CRC7以及結束位等信息,對於短響應,命令索引存放在SDIO_RESPCMD寄存器,參數則存放在SDIO_RESP1寄存器裏面。對於長響應,則僅留CID/CSD位域,存放在SDIO_RESP1~SDIO_RESP4等4個寄存器。

SD卡總共有6類響應(R1、R1b、R2、R3、R6、R7),不多做贅述

5:SDIO塊數據傳輸

SDIO與SD卡通信一般以數據塊的形式進行傳輸,SDIO(多)數據塊讀操作
  從機在收到主機相關命令後,開始發送數據塊給主機,所有數據塊都帶CRC校驗(由硬件自動處理),單個數據塊讀的時候,在收到1個數據塊以後即可以停止了,不需要發送停止命令(CMD12)。但是多塊數據讀的時候,SD卡將一直髮送數據給主機,直到接到主機發送的STOP命令(CMD12)。
 
SDIO(多)數據塊寫操作:

  數據塊寫操作同數據塊讀操作基本類似,只是數據塊寫的時候,多了一個繁忙判斷,新的數據塊必須在SD卡非繁忙的時候發送。這裏的繁忙信號由SD卡拉低SDIO_D0,以表示繁忙,SDIO硬件自動控制,不需要我們軟件處理。 

先寫到這裏,等到什麼時候可以實戰做一些東西的時候,再回來繼續

 

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