【STM32】使用SDIO進行SD卡讀寫,包含文件管理FatFs(一)-初步認識SD卡

因爲一張SD卡要能讀寫,涉及到的技術有些多,我打算分如下幾篇博客html

【STM32】使用SDIO進行SD卡讀寫,包含文件管理FatFs(一)-初步認識SD卡git

【STM32】使用SDIO進行SD卡讀寫,包含文件管理FatFs(二)-瞭解SD總線,命令的相關介紹函數

【STM32】使用SDIO進行SD卡讀寫,包含文件管理FatFs(三)-SD卡的操做流程網站

【STM32】使用SDIO進行SD卡讀寫,包含文件管理FatFs(四)-介紹庫函數,獲取一些SD卡的信息spa

【STM32】使用SDIO進行SD卡讀寫,包含文件管理FatFs(五)-FatFs的介紹(暫定,待研究FatFs後,寫博客)htm

【STM32】使用SDIO進行SD卡讀寫,包含文件管理FatFs(六)-實現SD卡的讀取(暫定,完成第五篇博客後,填寫第六篇)blog

 

先介紹幾個協會的網站,裏面有相關的文件接口

多媒體卡協會網站:www.mmca.org(STM32F4的SDIO支持的一種通信,但不是本文的重點)圖片

SD卡協會網站:www.sdcard.orgget

CE-ATA:www.ce-ata.org(STM32F4的SDIO支持的一種通信,但不是本文的重點)

我會着重在SD卡和SDIO協議的部分,如下圖片截至SD卡協會網站

本來SD協議是用在存儲上的(圖片藍底處),後來擴展了一個叫SDIO的協議(全名:Secure Digital Input and Output)(圖片紫底紅框處)

這個協議屬於外設接口,使得它能鏈接一些外設,例如:GPS 相機 Wi-Fi 調頻廣播 以太網 條形碼讀卡器 藍牙,今後跳出存儲這個侷限

 

下面是幾種卡的類型(容量),配合上面圖片寫的圖標

另外,我沒能找到SDUC的SD卡

STM32F4裏,只支持SD 2.0協議,SD和SDHC屬於這個範疇,SDXC是4.0協議,因此不支持

另外SDHC卡,有些數據塊大小是512,有的是1024,STM32F4只支持讀取512大小的,意思是說,SDHC卡的一部分也不支持的

其餘相關的技術,能夠去SD卡協會網站查看

 

下面來講明一下SD卡的引腳

SD卡的讀取方式有兩種:SDIO、SPI

【SDIO模式】

CLK:時鐘,通訊過程須要的東西,沒這個東西,數據會不穩定

CMD:命令,可下達命令,例如讀取SD卡的信息,或是寫入數據等等

DAT0、一、二、3:數據線

VCC、VSS:電源和地

【SPI模式】

CLK:時鐘,理由同SDIO裏面的CLK

MOSI:命令或數據輸出到SD卡

MISO:SD卡傳輸數據到主機

CS:片選,選擇是否要操做當前的SD卡

 

SDIO的存儲速度會高於SPI,假設都是SD卡傳輸數據到主機

SPI只有MISO這1條數據線,而SDIO有4條數據線(固然,SDIO也能夠只使用1條數據線來傳輸)

另外,SDIO至關於總線,它能夠掛載不少SD卡,可是STM32F4只支持一張SD卡

在與SD卡操做的過程當中,會有兩種不一樣的操做頻率

第一種:識別SD卡階段的時鐘頻率FOD,最高爲400KHz

第二種:後續數據傳輸的時鐘頻率FPP,默認最高爲25MHz,還能夠透過寄存器修改,修改後最高爲50MHz

 

下面介紹SD卡的8個寄存器

CID:卡識別寄存器,一些製造商ID、版本、日期等相關訊息

RCA:相對卡地址寄存器,初始化時,動態由主機肯定,後續掛載在SDIO總線上時,透過RCA找到對應的SD卡來進行操做

DSR:驅動級寄存器,配置卡的輸出驅動

CSD:卡的特殊數據寄存器,SD卡的操做信息

SCR:SD配置寄存器,SD卡的特殊信息

OCR:操做條件寄存器,例如SD卡的電壓信息

SSR:SD狀態寄存器,SD卡專有的特徵信息

CSR:SD卡狀態寄存器,SD卡的狀態信息

 

這一章節先結束,下一章來講明命令(CMD)的部分

相關文章
相關標籤/搜索