嵌入式系统作业12(SD卡读取)
掌握 SD 卡協(xié)議原理,用 STM32F103 完成對(duì) SD 卡的數(shù)據(jù)讀取(FAT文件模式)。
目錄
- 一、SD 卡協(xié)議
- 1. SD 卡
- 概述
- 2. SD 卡總線
- 協(xié)議
- 命令
- 響應(yīng)
- 3.STM32 的 SDIO 功能
- 二 、SD 卡的數(shù)據(jù)讀取(工程、代碼)
- 1. 創(chuàng)建項(xiàng)目
- 2.代碼文件
- 三、SD卡數(shù)據(jù)讀取(電路,實(shí)現(xiàn))
- 1.電路連接
- 2. 注意事項(xiàng)
- 3.結(jié)果展示
- 四、總結(jié)
一、SD 卡協(xié)議
1. SD 卡
SD存儲(chǔ)卡是一種基于半導(dǎo)體快閃記憶器的新一代記憶設(shè)備,由于它體積小、數(shù)據(jù)傳輸速度快、可熱插拔等優(yōu)良的特性,被廣泛地于便攜式裝置上使用,例如數(shù)碼相機(jī)、平板電腦和多媒體播放器等。
概述
SD存儲(chǔ)卡(Secure Digital Memory Card)是一種基于半導(dǎo)體快閃存儲(chǔ)器的新一代高速存儲(chǔ)設(shè)備。SD存儲(chǔ)卡的技術(shù)是從MMC卡(MultiMedia Card格式上發(fā)展而來(lái),在兼容SD存儲(chǔ)卡基礎(chǔ)上發(fā)展了SDIO(SD Input/ Output)卡,此兼容性包括機(jī)械,電子,電力,信號(hào)和軟件,通常將SD、SDIO卡俗稱SD存儲(chǔ)卡。
SD卡具有高記憶容量、快速數(shù)據(jù)傳輸率、極大的移動(dòng)靈活性以及很好的安全性,它被廣泛地應(yīng)用于便攜式裝置上,例如數(shù)碼相機(jī)、平板電腦和多媒體播放器等。
SD卡的結(jié)構(gòu)能保證數(shù)字文件傳送的安全性,也很容易重新格式化,所以有著廣泛的應(yīng)用領(lǐng)域。音樂(lè)、電影等多媒體文件都可以方便地保存到SD卡中。目前市場(chǎng)上SD卡的品牌很多諸如:SANDISK、Kingmax、Panasonic和Kingston。
SD卡作為一種新型的存儲(chǔ)設(shè)備,具有以下特點(diǎn):
**●高存儲(chǔ)容量:**最常用的容量:8GB、16GB、32GB、128GB、256GB等。
**●內(nèi)置加密技術(shù):**適應(yīng)基于SDMI協(xié)議的著作版權(quán)保護(hù)功能。
**●高速數(shù)據(jù)傳送:**最大讀寫速率為100MB/s。
**●體積輕小:**便于攜帶,具有很強(qiáng)的抗沖擊能力。
- SDIO 全稱是安全數(shù)字輸入/輸出接口,多媒體卡(MMC)、SD 卡、SD I/O 卡都有 SDIO 接口。
- STM32F10x 系列控制器有一個(gè) SDIO 主機(jī)接口,它可以與 MMC 卡、SD 卡、SD I/O 卡以及CE-ATA 設(shè)備進(jìn)行數(shù)據(jù)傳輸。MMC 卡可以說(shuō)是 SD 卡的前身,現(xiàn)階段已經(jīng)用得很少。
- SD I/O 卡本身不是用于存儲(chǔ)的卡,它是指利用 SDIO 傳輸協(xié)議的一種外設(shè)。比如 Wi-Fi Card,它主要是提供 Wi-Fi 功能,有些 Wi-Fi 模塊是使用串口或者 SPI 接口進(jìn)行通信的,但 Wi-Fi SDIO Card 是使用 SDIO 接口進(jìn)行通信的。并且一般設(shè)計(jì) SD I/O 卡是可以插入到 SD 的插槽。
- CE-ATA 是專為輕薄筆記本硬盤設(shè)計(jì)的硬盤高速通訊接口。
2. SD 卡總線
SD 卡一般都支持 SDIO 和 SPI 這兩種接口。
STM32F42x 系列控制器的 SDIO 是不支持 SPI 通信模式的,如果需要用到 SPI 通信只能使用 SPI 外設(shè)。
具體的 SPI 通信方式可以參看我之前的博客:基于 SPI 協(xié)議用 0.96 寸 OLED 顯示漢字及溫濕度數(shù)據(jù)
SD 卡使用 9-pin 接口通信,其中 3 根電源線、1 根時(shí)鐘線、1 根命令線和 4 根數(shù)據(jù)線。
SDIO 的通信時(shí)序要簡(jiǎn)單許多,SDIO 不管是從主機(jī)控制器向 SD 卡傳輸,還是 SD 卡向主機(jī)控制器傳輸都只以 CLK 時(shí)鐘線的上升沿為有效。
協(xié)議
通訊由一個(gè)起始位(“0”),由一個(gè)停止位(“1”)終止。SD 通信一般是主機(jī)發(fā)送一個(gè)命令(Command),從設(shè)備在接收到命令后作出響應(yīng)(Response),如有需要會(huì)有數(shù)據(jù)(Data)傳輸參與。
SD 總線的基本交互是命令與響應(yīng)交互。
SD 數(shù)據(jù)是以塊(Black)形式傳輸?shù)?#xff0c;SDHC 卡數(shù)據(jù)塊長(zhǎng)度一般為 512 字節(jié),數(shù)據(jù)可以從主機(jī)到卡,也可以是從卡到主機(jī)。數(shù)據(jù)塊需要 CRC 位來(lái)保證數(shù)據(jù)傳輸成功。CRC 位由 SD 卡系統(tǒng)硬件生成。STM32 控制器可以控制使用單線或 4 線傳輸。
主機(jī)向 SD 卡寫入數(shù)據(jù)塊操作示意如下:
命令
SD 命令由***主機(jī)***發(fā)出,以廣播命令和尋址命令為例,廣播命令是針對(duì)與 SD 主機(jī)總線連接的所有從設(shè)備發(fā)送的,尋址命令是指定某個(gè)地址設(shè)備進(jìn)行命令傳輸。
SD 命令格式固定為 48bit,都是通過(guò) CMD 線連續(xù)傳輸?shù)?#xff08;數(shù)據(jù)線不參與)
響應(yīng)
響應(yīng)由*** SD 卡向主機(jī)***發(fā)出,部分命令要求 SD 卡作出響應(yīng),這些響應(yīng)多用于反饋 SD 卡的狀態(tài)。
SDIO 總共有 7 個(gè)響應(yīng)類型(代號(hào):R1~R7),其中 SD 卡沒(méi)有 R4、R5 類型響應(yīng)。特定的命令對(duì)應(yīng)有特定的響應(yīng)類型,比如當(dāng)主機(jī)發(fā)送 CMD3 命令時(shí),可以得到響應(yīng) R6。與命令一樣,SD 卡的響應(yīng)也是通過(guò) CMD 線連續(xù)傳輸?shù)摹8鶕?jù)響應(yīng)內(nèi)容大小可以分為短響應(yīng)和長(zhǎng)響應(yīng)。短響應(yīng)是 48bit 長(zhǎng)度,只有 R2 類型是長(zhǎng)響應(yīng),其長(zhǎng)度為 136bit。
3.STM32 的 SDIO 功能
STM32 控制器有一個(gè) SDIO,由兩部分組成:SDIO 適配器和 AHB 接口。
- SDIO 適配器提供 SDIO 主機(jī)功能,可以提供 SD 時(shí)鐘、發(fā)送命令和進(jìn)行數(shù)據(jù)傳輸。
- AHB 接口用于控制器訪問(wèn) SDIO 適配器寄存器并且可以產(chǎn)生中斷和 DMA 請(qǐng)求信號(hào)
二 、SD 卡的數(shù)據(jù)讀取(工程、代碼)
1. 創(chuàng)建項(xiàng)目
其實(shí)直接打開(kāi)壓縮文件的工程,然后生成代碼就行了
(下面還是加了幾張工程截圖)
配置 PA4 引腳為 GPIO_Output,并命名為 SD_CS
2.代碼文件
代碼網(wǎng)盤鏈接
**提取碼:e63q **
修改main.c 中 while循環(huán)
三、SD卡數(shù)據(jù)讀取(電路,實(shí)現(xiàn))
1.電路連接
| PA4 | CS |
| PA5 | SCK |
| PA6 | MISO |
| PA7 | MOSI |
按如圖所示找到對(duì)應(yīng)引腳進(jìn)行連接
2. 注意事項(xiàng)
在讀卡前先格式化一下選擇FAT模式
不要在運(yùn)行過(guò)程中拔卡
否者會(huì)失敗
- 注意:
SD 卡操作需要時(shí)間,得等一會(huì),如果串口一直沒(méi)有回應(yīng),可以試試以下操作:
可以將SD卡換成內(nèi)存小點(diǎn)的 4G/8G
將最小核心板連接 5V,為其供給高電壓
盡量減少連線,或者使用短線連接
3.結(jié)果展示
編譯燒錄后,打開(kāi)串口調(diào)試助手,可以看到:
然后會(huì)顯示while
此時(shí)將SD卡從芯片中拔出,插入U(xiǎn)盤,在電腦中可以看見(jiàn)有一個(gè)txt文件,打開(kāi)可以看見(jiàn)。
四、總結(jié)
這次實(shí)驗(yàn)不是很好做,雖然能夠成功燒錄,但是實(shí)驗(yàn)效果不容易出來(lái),串口調(diào)試助手一直沒(méi)顯示,多嘗試一下,看看有沒(méi)有線沒(méi)有連穩(wěn),或者芯片接觸 不良。有時(shí)候是串口反應(yīng)較慢,耐心等待一會(huì)或許會(huì)有結(jié)果讀出。
總結(jié)
以上是生活随笔為你收集整理的嵌入式系统作业12(SD卡读取)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: c2c运营流程图_电商运营流程图模板分享
- 下一篇: 最简单的WIN7内核PE系统的U盘安装方