摘要:本文介紹了CF卡和單片機接口的各種模式,比較了各種模式的利弊。給出了2種常用模式下的電路原理圖,簡要說明了IDE模式下存取工作的原理,闡述了映射存儲模式下CF卡的存取原理。
關鍵詞:CF卡;單片機;接口模式;讀寫扇區
1 前言
??? 隨著計算機應用技術的飛速發展,移動存儲設備得到了廣泛的應用。其中CF(Compact Flash)卡以其價格低廉、體積小、存儲容量大、高速等優點在眾多移動存儲設備中被廣泛地應用于數碼相機、PDA和筆記本電腦等當前十分熱門的消費類電子產品中。并且CF卡在其他領域中也得到了廣泛的應用。本文所述內容就是通過8051單片機對CF卡進行讀寫。
??? 2.CF卡的操作方式
??? CF卡的操作方式與計算機的硬盤操作方式類似,其扇區的尋址也有兩種方式:物理尋址(CHS)和邏輯尋址(LBA),物理尋址使用柱面、磁頭和扇區號表示一個特定的扇區,起始扇區是0道、0頭、1區,接下來是2區等等,邏輯尋址將整個CF卡統一尋址。邏輯塊尋址和物理尋址的關系為:
LBA地址=(柱面號×磁頭數+磁頭號)×扇區數+扇區數一1
??? 在實際使用過程中,用LBA地址進行尋址,可以大大簡化編程的工作量,避免柱面、磁頭和扇區之間的換算和切換,并且可以突破CHS對大容量的無法尋址的限制。
3.CF卡的文件管理
??? CF卡的文件管理系統和硬盤的文件管理是一樣的,他將CF卡的存儲空間分為五個部分:主引導記錄扇區(MBR)、DOS引導區(DBR)、文件分配表(FAT)、文件目錄表(FDT)和數據。
???? 主引導記錄扇區(MBR)
??? 主引導記錄扇區(MBR)在0柱面、0磁頭、1扇區。主引導記錄記錄磁盤最重要的結構信息。主引導記錄是硬磁盤作分區時建立的(Fdisk)。主引導記錄包括一小段執行代碼(主引導代碼)、磁盤特征和硬盤分區表。主引導記錄結束的兩個字節必須是引導自舉標記0x55AA。磁盤特征位于0x01B8, 指定磁盤操作系統。
DOS引導區(DBR)
??? DOS引導區(DBR)的起始扇區在0柱面、1磁頭、1扇區,磁盤的邏輯0扇區都稱為DOS引導扇區,又稱為BOOT區。它由以下5個部分組成:
??? 跳轉指令,占用3個字節的跳轉指令將跳至引導代碼,其內容隨DOS版本變化。
??? 廠商標識和DOS版本號。該部分總共占用8個字節,其內容隨DOS版本而不同。
??? BPB(BIOS Paramenter Block, BIOS參數塊)。BPB從第12字節起占用19個字節。
??? DOS引導程序。DOS引導程序既是占用480字節的BOOT代碼,負責完成DOS的3個系統文
件的裝入工作。這部分內容隨DOS版本不同而變化。
??? 結束標志字,結束標志占用2個字節,其值為AA55。
??? BPB表中所記錄的有關參數,能幫助編程者確定磁盤的容量大小、文件分配表FAT的位置和大小、文件目錄表FDT的位置和大小。因此以FAT32分區格式為例討論BPB表的結構。
??? 偏移量為0BH、0CH記錄每個扇區的字節數,0DH記錄每簇扇區數。0EH、OFH記錄保留扇區數,10H記錄FAT表的數目,15H磁盤介質描述符,18H每個磁道的扇區數,24H每個FAT表的扇區數,2CH~2FH根目錄起始號。
??? 文件分配表(FATl)
??? 文件分配表FAT(File Allocation Tabel)是文件管理系統用來給每個文件分配磁盤物理空間的表格,它告訴操作系統,文件存放在磁盤什么地方。文件分配表(FAT)有表標識和簇映射(舊稱表目)的集合組成。一個完全相同的鏡像副本連續存儲在主 FAT 表后。表標識符包括磁盤介質描述符( 1 字節)和填充字節, 總計占兩個簇的簇映射區域(這大概也就是 FAT 文件系統簇號由2開始的原因), 填充字節一般為 FF,FAT32 的填充字節中還包含"臟位", 即系統啟動時執行磁盤檢查(FAT-ChkDsk/NTFS-AutoChk)。FAT 簇映射中, 0000 表示空簇, FFFF 表示簇鏈結束, FFF7 表示壞簇, 其余值表示其后續簇的簇號。FAT12 和 FAT32 的存儲策略同 FAT16 類似, 例如 FAT12的結束簇為 FFF, FAT32 的壞簇為 0FFFFFF7 等(注意 FAT32 的高 4 位保留)。文件分配表(FAT2)是FAT1的完全備份。
??? 文件目錄表(FDT) 在文件目錄表中,每個文件占32個字節(用PC-TOOLS或DEBUB讀出時占兩行),各個字節的含義是這樣的:0-7 字節:文件名;8-10 字節:擴展名;11 字節,表示文件屬性;12-21 共10個字節為保留字段,沒有使用;22-23 為建立文件的時間;24-25 為建立文件的日期;26-27 為文件占用的第一個簇號,即起始簇;28-31 共4個字節為此文件的長度。
3.AT89S52與CF卡的接口設計
??? CF卡有3種工作模式可供選擇:I/0模式、存儲器模式和IDE模式。CF卡的默認模式是存儲器模式,使用也最為普遍。如果使用存儲器模式則不需要配置任何寄存器。每一種模式的電路連接各不相同。在I/0模式和存儲器模式下,可以采用8位的訪問方式,也可以采用16位的訪問方式。本文所采用的是8位的存儲器模式,其接口電路原理圖如圖1所示。
??? AT89S52的P0口就為數據線連接CF的DO—D7,CF卡的A0-A10為地址線,P3.6、P3.7分別為讀(RD)、寫(WE)線。由于 AT89S52是8位的單片機,所以對CF卡的訪問采用8位的方式較為方便。通過把-CE2設為‘1’即可通過訪問CF卡的D0--D7來存取數據。而- CEl可以作為CF卡的片選信號,通過設-CEl為‘0’來選通CF卡,即-CEl接AT89S52的P2.6來線選CF卡。當REG為‘0’時,訪問 CF卡的屬性寄存器;REG為‘1’時,CF卡在存儲器模式下對數據進行讀寫操作。RDY/BSY為CF卡狀態引腳,當為“0”時,CF卡忙,為“1”時可以對CF卡操作。原理圖如圖所示:
???? 限于篇幅只將寫一個扇區代碼編寫(讀扇區代碼基本與此相同)如下:
;寫一個扇區
WRITE:?? MOV DPTR, #SECTR_CNT
????????? MOV A, #1
????????? MOVX @DPTR, A
????????? MOV DPTR, #SECTR_NO
????????? MOV A, SECTRNO
????????? MOVX @DPTR, A
????????? MOV DPTR, #CYLINDER_LOW
????????? MOV A, CYLINDERL
????????? MOVX @DPTR, A????
MOV DPTR, #CYLINDER_HI
????????? MOV A, CYLINDERH
????????? MOVX @DPTR, A
????????? MOV DPTR, #DRV_HEAD
????????? MOV A, DRVHEAD
????????? ANL A, #0FH
????????? ORL A, #0E0H
????????? MOVX @DPTR, A
????????? MOV DPTR, #COMMAND
????????? MOV A, 30H????
????????? MOVX @DPTR, A
WRITE512:MOV R6,#0??
????????? MOV R7,#2
WRITE:?? MOV DPTR,#DATA_REG
??????? MOV A,#31H
????????? MOVX @DPTR,A
????? DJNZ R6,WRITE
????? DJNZ R7,WRITE
????? RET
?4.結束語
??? 本設計的接口電路,闡述了CF卡的讀寫方法,并采用了通用的MCS-51系列單片機為系統控制器,可移植性好。根據此電路可應用于其他單片機對CF卡進行讀寫,采用CF卡作為存儲介質,容量大,體積小,價格低廉,可應用于MP3播放器,數碼相機,移動存儲等各個領域,本試驗在線路板上調試通過,并配合計算機串口對CF卡進行讀寫操作,并可對CF卡進行數據恢復。
評論
查看更多