<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單片機的MiCrOSD卡讀寫(xiě)

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

作者: 時(shí)間:2009-06-30 來(lái)源:網(wǎng)絡(luò ) 收藏

剛上電時(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所示。

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

2.2 Micro SD卡單塊數據
從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校驗,單塊數據流程如圖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文件系統。
文件分配表系統的分區應該有以下幾部分:
①保留區,FAT32稱(chēng)這個(gè)區域為引導扇區(bootsec-tOr)。它是操作系統可以直接訪(fǎng)問(wèn)的第一個(gè)扇區,主要包括與引導操作系統有關(guān)的引導參數和引導程序,還有就是與FAT文件系統有關(guān)的BPB參數(Bios ParameterBlock)。
②文件分配表,記錄磁盤(pán)上簇的分配情況,在條件允許的情況下,通常都會(huì )把文件分配表全部讀到內存中去。
③根目錄區,記錄根目錄的信息。文件和目錄數據區,是各種文件數據的實(shí)際存放區域。
一個(gè)文件管理系統的工作過(guò)程主要有三步:第一步是讀取MBR區,主要是讀DPT表,了解存儲設備分區情況。第二步,讀取BPB信息,確定FAT文件系統的各種基本參數。第三步,顯示當前目錄位置。文件系統的實(shí)現,就是把對應的文件目錄操作拆成相應的扇區命令就可以了。因此,應該在FAT初始化的時(shí)候將讀寫(xiě)扇區函數指針指向Micro SD卡的讀寫(xiě)函數:

2.4 FAT32文件系統應用接口函數的實(shí)現
FAT32文件系統向應用層提供的接口有:FAT_FindFreeCluster(),查找空簇;FAT_ModifyFAT(),修改FAT項;FAT_OpenDir(),打開(kāi)目錄;FAT_MkDir(),建目錄;FAT_RmI)ir(),刪除目錄;FAT_Rename(),重命名;FAT_Create(),創(chuàng )建文件;FAT_Open(),打開(kāi)文件;FAT_write(),寫(xiě)文件;FAT_Read(),讀文件;FAT_Close(),關(guān)閉打開(kāi)文件;FAT_Delete(),刪除文件。下面對文件的打開(kāi)、讀/寫(xiě)和刪除函數接口作詳細介紹。



評論


相關(guān)推薦

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