SDIO笔记
SDIO,全稱: Secure Digital Input and Output ,即安全數字輸入輸出接口。它是在SD卡接口的基礎上發展而來,它可以兼容之前的SD卡,并可以連接SDIO接口設備,比如:藍牙、WIFI、照相機等。
(1) 復位后SDIO_D0用于數據傳輸。初始化后主機可以改變數據總線的寬度(通過ACMD6命令設置)。如果一個多媒體卡接到了總線上,則SDIO_D0、SDIO_D[3:0]或SDIO_D[7:0]可以用于數據傳輸。
(2)卡時鐘(SDIO_CK):每個時鐘周期在命令和數據線上傳輸1位命令或數據。對于SD或SD I/O卡,時鐘頻率可以在0MHz至25MHz間變化。
(3)SDIO適配器時鐘(SDIOCLK):該時鐘用于驅動SDIO適配器,可用于產生SDIO_CK時鐘。對F1來說,SDIOCLK來自HCLK(72Mhz);對F4來說,SDIOCLK來自PLL48CK(48Mhz)。
(4)F1:AHB總線接口時鐘(HCLK/2):該時鐘用于驅動SDIO的AHB總線接口,其頻率為HCLK/2=36Mhz。
(5)SDIO_CK計算公式:SDIO_CK=SDIOCLK/(2+CLKDIV)
注意:在SD卡初始化時,SDIO_CK不可以超過400Khz,初始化完成后,可以設置為最大頻率(但不可以超過SD卡最大操作頻率)。
注意:當SDIO_CK頻率過快時,可能導致SD卡通信失敗,此時,建議降低SDIO_CK試試。
(6)SDIO的命令分為:應用相關命令(ACMD)和通用命令(CMD)兩部分。發送ACMD時,需先發送CMD55。
SDIO所有的命令和響應都是在SDIO_CMD引腳上面傳輸的,命令長度固定為48位,SDIO命令格式如下表所示:
其中:除了命令索引和參數需要我們設置,其他都是由SDIO硬件自動控制。命令索引(如CMD0,CMD1之類)由SDIO_CMD寄存器設置,命令參數則由SDIO_ARG寄存器設置。
(7)SDIO參數寄存器(SDIO_ARG)
該寄存器用于存儲命令參數。注意:參數必須先于命令寫入。
總結
- 上一篇: 内存管理代码分析 stm32
- 下一篇: 函数指针——typedef函数指针