版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
精品文檔-下載后可編輯單片機(jī)與MMC卡的接口-基礎(chǔ)電子多媒體卡MMC(MultiMediaCard)是由美國SanDisk公司和德國Simens公司于1997年共同開發(fā)推出的一種多功能存儲(chǔ)卡。內(nèi)置控制電路,可以使用在手機(jī)、數(shù)碼相機(jī)、MP3、PDA等多種數(shù)字設(shè)備上,可反復(fù)記錄30萬次。現(xiàn)在市場(chǎng)上的主流容量有128MB~2GB。文中首先介紹單片機(jī)對(duì)SPI協(xié)議下的MMC卡的底層讀寫操作,然后分析MMC卡文件系統(tǒng)的結(jié)構(gòu),詳細(xì)說明MMC卡文件的創(chuàng)建、讀寫、刪除等操作。該方法可應(yīng)用到與Windows有交互的嵌入式系統(tǒng)中,便于文件的統(tǒng)一管理。
1單片機(jī)與MMC卡的接口
1.1單片機(jī)與MMC卡的接口電路接口電路采用的是Philips公司的增強(qiáng)型LPC93x系列單片機(jī)。它除了比普通的8051有更快的指令執(zhí)行周期外,還提供多種在片的硬件接口功能,如UART、SPI、I2C等,因此用LPC93x的SPI接口實(shí)現(xiàn)單片機(jī)與MMC卡的互連。MMC卡有7個(gè)引腳,支持兩種串行數(shù)據(jù)傳輸協(xié)議,即MMC(MultimediaCard)模式和SPI(SerialPeripheralInterface)模式。在SPI模式中,通過4條信號(hào)線完成數(shù)據(jù)的傳輸。這4條信號(hào)線分別是時(shí)鐘SPICLK、數(shù)據(jù)輸入MISO、數(shù)據(jù)輸出MOSI和片選SS#。1.2MMC卡底層讀寫原理MMC卡讀寫操作都是基于命令的,通過向MMC卡發(fā)送樞直的命令并讀取樞直的響應(yīng)來實(shí)現(xiàn)對(duì)MMC卡的控制。在對(duì)MMC卡讀寫之前,首先要進(jìn)行初始化操作。這是確保MMC卡能在SPI模式下進(jìn)行正常數(shù)據(jù)讀寫的前提。需要注意的是,在發(fā)送使MMC卡空閑命令CMD0之前至少等待74個(gè)時(shí)鐘,確保MMC卡進(jìn)入SPI模式。初始化完成之后,如果使用默認(rèn)的塊讀寫長度(512字節(jié)),就可進(jìn)行MMC卡的讀寫。當(dāng)然,也可用CMD16來設(shè)置。MMC卡的塊讀取長度,可以是1~512字節(jié)之間的任意值。但是對(duì)MMC的寫過程則要求塊長度必須為512字節(jié)。無論是MMC卡的讀還是寫,都要求在讀寫命令發(fā)送后有數(shù)據(jù)起始令牌FEH,數(shù)據(jù)傳輸結(jié)束之后有2個(gè)字節(jié)的循環(huán)冗余編碼CRC(CyclicRedundancyCodes)。
2MMC卡文件系統(tǒng)的結(jié)構(gòu)分析要使寫入MMC卡的數(shù)據(jù)在Windows下訪問,需要在MMC卡上創(chuàng)建Windows支持的FATl6文件系統(tǒng)。MMC卡上的FATl6文件系統(tǒng)的結(jié)構(gòu)包含分區(qū)引導(dǎo)記錄、文件分配表、文件目錄表以及數(shù)據(jù)區(qū)4個(gè)部分。分區(qū)引導(dǎo)記錄通常包含4塊內(nèi)容;①BIOS參數(shù)記錄塊BPB(BIPSParameterBlock);②磁盤標(biāo)志記錄表;③分區(qū)引導(dǎo)記錄代碼區(qū);④結(jié)束標(biāo)志55AA。BPB表從扇區(qū)字節(jié)位移0bH開始,共占25字節(jié)。表1是從MMC卡的首扇區(qū)中讀出的BPB表的內(nèi)容。
在分區(qū)引導(dǎo)記錄之后是FAT(FileAllocationTable,文件分配表)區(qū)。FATl6的文件系統(tǒng)中有兩份完全相同的文件分配表FAT1和FAT2,每份FAT表占用空間的大小可從BPB表中查得。文件在磁盤上以簇為單位存儲(chǔ),但是同一個(gè)文件的數(shù)據(jù)并不一定完整地存放在磁盤的一個(gè)連續(xù)的區(qū)域內(nèi),往往會(huì)分成若干簇,F(xiàn)AT表就是記錄文件存儲(chǔ)中簇與簇之問連接信息的,這就是文件的鏈?zhǔn)酱鎯?chǔ)。FATl6以2個(gè)字節(jié)(即16位)表示1個(gè)簇,起始2個(gè)字為F8FFH、FFFFH,后面的FFFFH表示終止,0000H表示未使用。緊接在FAT表之后的是文件目錄表FDT,固定占32個(gè)扇區(qū),每個(gè)扇區(qū)可以容納16個(gè)登記項(xiàng),每個(gè)登記項(xiàng)的長度是32字節(jié)。文件目錄表之后就是數(shù)據(jù)區(qū)DATA,用來存放文件數(shù)據(jù),占用大部分的磁盤空間。
3MMC卡文件系統(tǒng)的實(shí)現(xiàn)單片機(jī)對(duì)MMC底層的讀寫,按照FAT16的格式對(duì)MMC卡上數(shù)據(jù)進(jìn)行操作,就可在MMC卡上創(chuàng)建文件、讀寫文件和刪除文件等,從而實(shí)現(xiàn)文件的管理。3.1文件(或目錄)的創(chuàng)建在MMC卡上創(chuàng)建文件(或目錄)的過程就是在文件目錄表FDT中申請(qǐng)登記項(xiàng)的過程。登記項(xiàng)中包括文件名、文件長度和起始簇號(hào)等內(nèi)容。為此定義了如下結(jié)構(gòu):
代碼typedefstruct{u8FileName[8];//文件名,不足8字節(jié)用空格補(bǔ)充u8ExtName[3];//擴(kuò)展名u8attribute;//屬性,典型值:存檔(0x20)、卷標(biāo)(0x08)u8reserved[10];//保留u16time;//time=Hr*2048+Min*32+Sec+2u16date;//date=(Yr-1980)*512+Mon*32+Dayu16StartCluster;//起始簇號(hào)u32FileLength;//文件長度}DIR_tag;
文件名一般占用8字節(jié),長的文件名需要用resetx,ed[]數(shù)組。文件名的首字節(jié)又表明該文件的狀態(tài),00H表示該目錄項(xiàng)未使用,E5H表示該文件(或目錄)已被刪除。創(chuàng)建目錄時(shí),屬性值設(shè)置為10H(表示子目錄),文件長度為0。
3.2文件的讀寫MMC卡上文件都是以簇為單位存取的。當(dāng)讀取MMC卡上的文件時(shí),首先要根據(jù)文件名查找到該文件的目錄登記項(xiàng)。根據(jù)目錄登記項(xiàng)中的起始簇號(hào)既可找到文件在數(shù)據(jù)區(qū)DATA中第1簇的內(nèi)容,又可在FAT表中找到第2個(gè)簇號(hào)。根據(jù)第2個(gè)簇號(hào)又能找到第2簇的內(nèi)容和FAT表中的第3個(gè)簇號(hào)。這樣,就可以根據(jù)FAT表中的簇號(hào)讀取到全部文件數(shù)據(jù)。寫文件時(shí)要保證FAT1和FAT2中內(nèi)容的一致性,即對(duì)兩塊都要進(jìn)行同樣的寫操作。對(duì)于FATl6,可以由下面的公式計(jì)算出數(shù)據(jù)起始邏輯扇區(qū)號(hào):起始邏輯扇區(qū)=隱藏扇區(qū)數(shù)+1+2*每FAT扇區(qū)數(shù)+FDT扇區(qū)數(shù)+(起始簇號(hào)-2)*每簇扇區(qū)數(shù)MMC卡上隱藏的扇區(qū)數(shù)為0,每個(gè)FAT占用243個(gè)扇區(qū),F(xiàn)DT固定占用32個(gè)扇區(qū)。寫文件的相關(guān)代碼如下(設(shè)文件長度小于512字節(jié)):
代碼voidfile_write(DIR_tag*file_tag,char*data){//data為指向數(shù)據(jù)的指針u16j,offset=file_tag.StartCluster*2;//FAT16用16位表示1個(gè)簇mmc_readblock(sdc,fat1_addr+offset/512,mmc_buffer);//讀取起始簇號(hào)所在的塊mmc_buffer[offset%512]=0xff;//文件結(jié)束標(biāo)志ffffmme_buffer[offset%512+1]=0xff;mmc_write_block(sdc,fat1_addr+offset/512,mmc_buffer);//寫FAT1mmc_write_block(sdc,fat2_addr+offset/512,mmc_buffer);//寫FAT2,與FAT1同for(j=0,jfile_tag.FileLength;j++)mmc_buffer[i]=data[j];mmc_write_block(sdc,519+(file_tag.StartCluster-2),mmc_buffer);//寫入數(shù)據(jù)}3.3文件的刪除文件的刪除也是對(duì)MMC卡上文件管理的一個(gè)重要方面。刪除文件時(shí),并不涉及數(shù)據(jù)區(qū)的操作,只須在文件的目錄登記項(xiàng)上作一個(gè)刪除標(biāo)記,并把文件在FAT表中所占用的簇標(biāo)記為“空簇”。刪除文件的代碼如下:
代碼intfile_delete(DIR_tag*file_tag){u16k,clust_buf,offset1,offset=file_tag.StartCluster*2;//FAT16用16位表示1個(gè)簇file_tag.FileName[7]=0xe5;//FDT中文件被刪除標(biāo)志write_fdt(file_tag);//寫修改過的目錄登記項(xiàng)寫回MMC卡k=file_tag.FileLength/512+1;//總循環(huán)次數(shù)mmc_read_block(sde,fat1_addr+offset/512,mmc_buffer);//讀取起始簇號(hào)所在的塊do{clust_buf=mmc_buffer[offset%512]0x00ff(mmc_buffer[offset%512+1]0x00ff)8;if(clust_buf!=0xffff){//不是文件終止mmc_buffer[offset%512]=0;//空簇標(biāo)志0000mmc_buffer[offset%512+1]=0;offset1=clust_buf*2;//偏移地址}else{//文件終止,完成返回1mmc_buffer[offset%512]=0;mmc_buffer[offset%512+1]=0;mmc_write_block(sde,fat1_addr+offset/512,mmc_buffer);//寫FAT1mmc_write_block(sdc,fat2_addr+offset/512,mmc_buffer);//寫FAT2,內(nèi)容與FAT1同return1;}if(offset1/512!=offset/512){mmc_write_block(sdc,fat1_addr+offset/512,mmc_buffer);//寫FAT1mmc_write_block(sdc,fat2_addr+offset/512,mmc_buffer);//寫FAT2,內(nèi)容與FAT1同mmc_read_block(sdc,fat1_addr+offset1/512,mmc_buffer);//讀取下一簇號(hào)所在的塊}offset=offset1;k--;}while(k=0);return0;//未找到文件結(jié)束標(biāo)志,返回0
4小結(jié)通過對(duì)SPI模式下MMC卡讀寫和文件系統(tǒng)的研究,實(shí)現(xiàn)了單片機(jī)對(duì)MMC卡FAT16文件的管理,包括文件的創(chuàng)建、讀寫、刪除等操作。該方法為數(shù)據(jù)采集系統(tǒng)提供了
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025版城市綜合體安保服務(wù)合同書范本3篇
- 2025版新能源車輛定期維護(hù)合同3篇
- 2025版無利息教育培訓(xùn)機(jī)構(gòu)設(shè)備購置貸款合同示范文本3篇
- 2025年度個(gè)人裝修工程售后服務(wù)合同
- 二零二五年度車棚租賃與智能交通系統(tǒng)融合合同4篇
- 二零二五年度林業(yè)資產(chǎn)評(píng)估與交易合同3篇
- 2025版文山凍干三七種植基地農(nóng)業(yè)生態(tài)循環(huán)經(jīng)濟(jì)合作合同3篇
- 2024門窗安裝工程節(jié)能環(huán)保驗(yàn)收合同3篇
- 二零二五年度汽車玻璃更換與售后服務(wù)協(xié)議范本3篇
- 2025版無房產(chǎn)證房屋買賣合同標(biāo)準(zhǔn)范本精裝3篇
- 退休人員出國探親申請(qǐng)書
- 傷殘撫恤管理辦法實(shí)施細(xì)則
- 高中物理競(jìng)賽真題分類匯編 4 光學(xué) (學(xué)生版+解析版50題)
- 西方經(jīng)濟(jì)學(xué)-高鴻業(yè)-筆記
- 幼兒園美術(shù)教育研究策略國內(nèi)外
- 高中英語選擇性必修一單詞表
- 物業(yè)公司介紹
- 2024屆河南省五市高三第一次聯(lián)考英語試題及答案
- 【永輝超市公司員工招聘問題及優(yōu)化(12000字論文)】
- 孕婦學(xué)校品管圈課件
- 《愿望的實(shí)現(xiàn)》交流ppt課件2
評(píng)論
0/150
提交評(píng)論