<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è) > 嵌入式系統 > 設計應用 > ATmega128L單片機的Micro SD卡讀寫(xiě)

ATmega128L單片機的Micro SD卡讀寫(xiě)

作者: 時(shí)間:2016-12-02 來(lái)源:網(wǎng)絡(luò ) 收藏
引言

隨著(zhù)工業(yè)控制系統功能的增強,系統對于存儲介質(zhì)的安全、容量、性能的要求越來(lái)越高。Micro SD卡是在SD卡和Mini SD卡基礎上發(fā)展起來(lái)的一種多功能存儲卡,具備串行和隨機存取能力,可以通過(guò)專(zhuān)用優(yōu)化速度的串行接口訪(fǎng)問(wèn),數據傳輸可靠,安全性好,傳輸速度快,存儲容量大,體積小,被列為目前全球最小的迷你存儲卡。Micro SD卡支持SD模式和SPI模式。隨著(zhù)高性能單片機的性能不斷提高,利用高性能、低功耗的AVR8位ATmegal28L單片機的串行外設接口SPI與Micro SD卡之間進(jìn)行高速同步數據傳輸,設計開(kāi)發(fā)了一種嵌入式文件系統。

1 硬件電路設計

MicrO SD卡的接口可以支持兩種操作模式:SD模式和SPI模式。主機系統可以選擇其中任一模式。SD卡模式允許4線(xiàn)的高速數據傳輸,傳輸速率高,但是大部分單片機無(wú)此接口,使用軟件模擬協(xié)議復雜。SPI模式使用簡(jiǎn)單通用的SPI通道接口就可實(shí)現數據傳輸,目前大多數單片機提供SPI接口。SPI模式的優(yōu)勢在于可以使用標準主機,從而把外設減少到最低。SPI模式相對于SD模式的缺點(diǎn)是損失了傳輸速度;但是目前的微處理器的處理速度越來(lái)越高,利用SPI模式大都能滿(mǎn)足工程需要。

Micro SD卡要求用全雙工、8位的SPI操作。

ATmegal28L單片機和Micro SD卡之間只需要4根信號線(xiàn)就可以完成數據的讀寫(xiě),當CS信號線(xiàn)為低電平時(shí),主機開(kāi)始所有的總線(xiàn)傳輸。數據從單片機的MOSI引腳同步輸入Micro SD卡的DI引腳,并由Micro SD卡的DO線(xiàn)同步輸入單片機的MISO引腳,數據在CLK信號的上升沿同步輸入和輸出。在每個(gè)數據傳輸的結尾還必須提供8個(gè)額外的時(shí)鐘,以允許 Micro SD卡完成任何未完結的操作。由于Micro SD卡的電壓為3.3 V,所以選擇需要支持3.3 V的I/O端口輸出的ATmegal28L單片機。另外,使用SPI模式時(shí),為了防止在無(wú)卡接人或卡驅動(dòng)器呈高阻態(tài)時(shí)總線(xiàn)懸空,根據SD卡規范,這些信號需要在主機端用10 kQ~100 kΩ的上拉電阻,其硬件連接電路如圖1所示。



2 軟件設計

2.1 Micro SD卡初始化為SPI總線(xiàn)模式

ATmegal28L單片機包含一個(gè)串行外設接口SPI,可以方便地對Micro SD卡接口進(jìn)行配置。為了配置時(shí)鐘和數據長(cháng)度,需要對SPI控制寄存器SPCR和SPI狀態(tài)寄存器SPSR進(jìn)行設置:使能SPI,選擇單片機為主機模式,時(shí)鐘上升沿鎖存數據,并且對SPI時(shí)鐘進(jìn)行設置。Micro SD卡的SPI模式通信由主機控制。每一個(gè)指令或數據塊由8位的字節和CS標志構成,SPI通信由指令、響應和數據組成。主機先將Micro SD卡的片選CS置低,激活MicroSD卡進(jìn)人工作狀態(tài)。

剛上電時(shí),Micro SD卡缺省使用專(zhuān)有的SD總線(xiàn)協(xié)議。將Micro SD卡切換到SPI模式,主機需要發(fā)出命令(2MD0(GO_IDLE_STATE)。Micro SD卡會(huì )檢測到SPI模式選擇信息,因為卡選擇(CS)引腳在該命令和其他所有SPI命令傳送過(guò)程中都保持為低電平。Micro SD卡以R1作為響應??臻e狀態(tài)位被置為高電平,此時(shí)Micro SD卡進(jìn)入空閑狀態(tài),此階段的SPI時(shí)鐘頻率不能超過(guò)400kHz(將SPCR寄存器設置為0x53)。Micro SD卡進(jìn)入SPI模式后,主機應該先發(fā)一條初始化指令CMD1。此時(shí)可將SPI頻率設置為高速模式(將SPCR寄存器設置為0x50)。然后發(fā)送命令 CM1359決定是否開(kāi)啟CRC校驗,設置讀、寫(xiě)塊數據長(cháng)度,最后延遲8個(gè)時(shí)鐘后返回。MicroSD初始化流程如圖2所示。



2.2 Micro SD卡讀寫(xiě)單塊數據

從Micro SD卡中讀取一個(gè)數據塊只需要主機發(fā)送CMDl7(READl_SINGLE_BLOCK)命令,并將起始地址作為參數(此地址必須和介質(zhì)上一個(gè)塊的起始位置對齊),然后.Micro SD卡會(huì )驗證這個(gè)字節地址,并以一個(gè)R1命令作為響應。完成了Micro SD卡讀取操作后,先發(fā)送一個(gè)起始數據命令,接著(zhù)發(fā)送固定數量的數據,最后是兩個(gè)字節CRC校驗。

從Mimro SD卡中寫(xiě)入一個(gè)數據塊和讀取數據塊相似,需要主機發(fā)送CMI)24(wRITE_BLOCK)命令啟動(dòng)寫(xiě)操作過(guò)程,Micro SD卡將以R1命令響應格式進(jìn)行應答。如果命令響應,則進(jìn)行寫(xiě)操作,主機發(fā)送起始令牌,然后發(fā)送固定數量的數據字節(512字節),返回一個(gè)數據響應令牌指示需要寫(xiě)入的數據是否完成,最后是兩個(gè)字節的CRC校驗,讀寫(xiě)單塊數據流程如圖3所示。



2.3 Micro SD卡的文件存儲

為了方便ATmegal28L單片機對Micro SD卡中文件進(jìn)行操作,以及要使Micro sD卡的數據能在PC機上得到正確的訪(fǎng)問(wèn),需要在Micro SD卡上創(chuàng )建它們支持的文件系統,這就需要設計自己的文件管理系統FAT。FAT文件系統有FATl2、FATl6、FAT32,它們的主要不同是在磁盤(pán)分配表結構中每個(gè)記錄所占的位數不同。FAT32文件分配表每一表項為32位。本文選擇建立FAT32文件系統。

上一頁(yè) 1 2 下一頁(yè)

評論


技術(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>