<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > STM32下SD卡驅動(dòng)詳解

STM32下SD卡驅動(dòng)詳解

作者: 時(shí)間:2016-11-11 來(lái)源:網(wǎng)絡(luò ) 收藏
自己在這幾個(gè)月中為了畢業(yè)設計放下了對S3C2440的學(xué)習,從而著(zhù)手在STM32上的模塊開(kāi)發(fā)。我用STM32做的是一個(gè)有界面的MP3所以不得不用到SD卡,(當然nandflash也可以不過(guò)pcb難畫(huà)不說(shuō),最主要容易壞掉)。SD卡方便快捷。

說(shuō)道SD卡就會(huì )想到他的具體驅動(dòng),網(wǎng)上也有很多例子,但是都沒(méi)這么詳細說(shuō)一個(gè)過(guò)程對于新手很難吃懂,當然這篇對于做過(guò)的同學(xué)來(lái)說(shuō)沒(méi)有什么作用,現在來(lái)具體分析一下吧。

本文引用地址:http://dyxdggzs.com/article/201611/316586.htm

我們所說(shuō)的SD卡只是閃存的一種其全稱(chēng)是Secure Digital,意為“安全數碼”,是由日本兩大電器集團松下電器和東芝聯(lián)手SanDisk共同推出的,于1999年8月首次發(fā)布。常見(jiàn)的閃存有:SD卡、CF卡、XD卡、MMC卡、SM卡、Mini SD卡、T-Flash卡。而SD卡又分類(lèi)為:

SD、MiniSD、MicroSD、SDHC、MiniSD、MicroSD、SDXC、smart SD、SDI/O。它們在外形、速度、容量和命令都有區別。說(shuō)道這就得說(shuō)說(shuō)最近的反日了,其實(shí)我們真沒(méi)必要給國家添麻煩了,我們身邊很多東西都是別人的,只是都不知道。所以壯大自己的知識為國家多做點(diǎn)事才是真正的愛(ài)國。

SD卡支持兩種總線(xiàn)方式:SD方式與SPI方式。其中SD方式采用6線(xiàn)制,使用CLK、CMD、DAT0~DAT3進(jìn)行數據通信。而SPI方式采用4線(xiàn)制,使用CS、CLK、DataIn、DataOut進(jìn)行數據通信。SD方式時(shí)的數據傳輸速度與SPI方式要快,采用單片機對SD卡進(jìn)行讀寫(xiě)時(shí)一般都采用SPI模式。采用不同的初始化方式可以使SD卡工作于SD方式或SPI方式。

這就說(shuō)明SD卡里面是有一個(gè)控制器的,有相應寄存器,我們用SD卡其實(shí)是對相應的寄存器的設置,設置好后就可以用命令來(lái)對它進(jìn)行操作了,(所以說(shuō)SD卡用起來(lái)簡(jiǎn)單,因為很多事SD卡廠(chǎng)商已經(jīng)做了)。

一,SPI方式驅動(dòng)SD卡的方法

SD卡的SPI通信接口使其可以通過(guò)SPI通道進(jìn)行數據讀寫(xiě)。從應用的角度來(lái)看,采用SPI接口的好處在于,很多單片機內部自帶SPI控制器,不光給開(kāi)發(fā)上帶來(lái)方便,同時(shí)也見(jiàn)降低了開(kāi)發(fā)成本。然而,它也有不好的地方,失去了SD卡的快速的性能優(yōu)勢。(SPI模式下用USB下載測試只有100K~300K的速度,而用SD模式就可以高達3M~10M),這就是SPI嚴重的缺點(diǎn),但是對于我們學(xué)生用SPI是最簡(jiǎn)單,SD模式有很復雜的模式轉換,轉來(lái)轉去的有一定的難度,不過(guò)也可以做SD模式,很多控制器都有SDIO了。

二,SD卡的命令

SD卡最重要的就是初始化,初始化重要的是命令的使用。SD卡初始化成功后幾乎都能用了,所以我們要重點(diǎn)看一下初始化,不同的卡又不同的初始化過(guò)程(初始化時(shí)要注意SPI的速度不要高于400K)

SD卡的典型初始化過(guò)程如下:

1、初始化與SD卡連接的硬件條件(MCU的 SPI配置,IO口配置);

2、上電延時(shí)(>74 個(gè) CLK)(必須的);

3、復位卡(CMD0);

4、激活卡,內部初始化并獲取卡類(lèi)型(CMD1(用于 MMC卡)、CMD55、CMD41)(不同的地方就在這里)

5.、查詢(xún) OCR,獲取供電狀況(CMD58)(就是電壓,一般不判斷不然很多卡不能用);

6、是否使用CRC(CMD59)(CRC校驗);

7、設置讀寫(xiě)塊數據長(cháng)度(CMD16);

8、讀取 CSD,獲取存儲卡的其他信息(CMD9);

9、發(fā)送 8CLK 后,禁止片選;

下面用圖表示一下:(網(wǎng)上都有)

SD卡的每一個(gè)BLOCK的大小就是在這決定的一般為512.

可以看出操作SD卡都是命令,只要把這些命令作用搞清楚就可以自己驅動(dòng)SD卡了,我把命令都貼出來(lái):

SPI方式下的要SD模式下的話(huà)STM官方有很詳細的庫文件;

Class0 :(卡的識別、初始化等基本命令集)

CMD0:復位SD 卡.

CMD1:讀OCR寄存器.

CMD9:讀CSD寄存器.

CMD10:讀CID寄存器.

CMD12:停止讀多塊時(shí)的數據傳輸

CMD13:讀 Card_Status 寄存器

Class2 (讀卡命令集):

CMD16:設置塊的長(cháng)度

CMD17:讀單塊.

CMD18:讀多塊,直至主機發(fā)送CMD12為止 .

Class4(寫(xiě)卡命令集) :

CMD24:寫(xiě)單塊.

CMD25:寫(xiě)多塊.

CMD27:寫(xiě)CSD寄存器 .

Class5 (擦除卡命令集):

CMD32:設置擦除塊的起始地址.

CMD33:設置擦除塊的終止地址.

CMD38: 擦除所選擇的塊.

Class6(寫(xiě)保護命令集):

CMD28:設置寫(xiě)保護塊的地址.

CMD29:擦除寫(xiě)保護塊的地址.

CMD30: Ask the card for the status of the write protection bits

class7:卡的鎖定,解鎖功能命令集

class8:申請特定命令集。

class10 -11 :保留

其中 class1, class3,class9:SPI模式不支持

命令知道了我們來(lái)看一下命令的格式:

SD卡的指令由6字節(Byte)組成,如下:

Byte1:0 1 x x x x x x(命令號,由指令標志定義,如CMD39為100111即16進(jìn)制0x27,那么完整的CMD39第一字節為01100111,即0x27+0x40)
Byte2-5:Command Arguments,命令參數,有些命令沒(méi)有參數
Byte6:前7位為CRC(Cyclic Redundacy Check,循環(huán)冗余校驗)校驗位,最后一位為停止位1

byte1 byte2-5 byte6

01命令號參數 CRC校驗+1

參數是命令需要的沒(méi)有參數的用0,比如CMD16在這寫(xiě)的就是512。



關(guān)鍵詞: STM32SD卡驅

評論


技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>