單片機(jī)實(shí)現(xiàn)對(duì)CF卡的讀寫(xiě)
摘要:CF卡是一種包含了控制和大容量Flash存儲(chǔ)器的標(biāo)準(zhǔn)器件,具有容量大、體積小、高性能、攜帶方便等優(yōu)點(diǎn),已廣泛應(yīng)用在數(shù)據(jù)采集系統(tǒng)和許多消息類(lèi)電子產(chǎn)品中。本文詳細(xì)介紹CF卡在單片機(jī)系統(tǒng)中的硬件接口電路,以及單片機(jī)對(duì)CF卡進(jìn)行標(biāo)準(zhǔn)文件讀寫(xiě)的實(shí)現(xiàn),且寫(xiě)入的文件能被Windows操作系統(tǒng)讀寫(xiě)。
引言
由于CF卡(Compact Flash Card)具有容量大、體積小、高性能、攜帶方便等優(yōu)點(diǎn),而且讀寫(xiě)速度快,可與多種電腦操作系統(tǒng)平臺(tái)兼容,因此在數(shù)據(jù)采集系統(tǒng)中的數(shù)據(jù)記錄或與PC機(jī)之間的數(shù)據(jù)轉(zhuǎn)存多采用CF卡。為了在PC機(jī)中能方便地進(jìn)行數(shù)據(jù)處理,在下位機(jī)端必須采用一種標(biāo)準(zhǔn)的格式組織數(shù)據(jù),即將數(shù)據(jù)按照Windows標(biāo)準(zhǔn)文件格式寫(xiě)入,在PC機(jī)端通過(guò)讀卡器將寫(xiě)入CF的內(nèi)容以標(biāo)準(zhǔn)文件形式讀出。Windows標(biāo)準(zhǔn)文件格式有FAT、FAT32和NTFS??紤]到廣泛使用的Windows 98系統(tǒng)的CF卡的容量等因素,通常采用FAT(File Allocation Table)文件系統(tǒng)。單片機(jī)系統(tǒng)對(duì)CF卡的讀寫(xiě),就是從底層對(duì)它進(jìn)行直接操作,包括尋址、創(chuàng)建文件和讀寫(xiě)等。
1 CF卡簡(jiǎn)介
CF卡內(nèi)集成了控制器、Flash Memory陣列和讀寫(xiě)緩沖區(qū),如圖1所示。內(nèi)置的智能控制器,使外圍電路設(shè)計(jì)大大簡(jiǎn)化,而且完全符合PC機(jī)內(nèi)存卡的國(guó)際聯(lián)合會(huì)PCMCIA(Personal Computer Memory Card International Association)和ATA(Advanced Technology Attachment)接口規(guī)范。實(shí)際上,控制器起到了一種協(xié)議轉(zhuǎn)換的作用,即將對(duì)Flash Memory的讀寫(xiě)轉(zhuǎn)化成了對(duì)控制器的訪問(wèn),這樣不同的CF卡都可以用單一的機(jī)構(gòu)來(lái)讀寫(xiě),而不用擔(dān)心兼容性問(wèn)題。CF卡的緩沖區(qū)結(jié)構(gòu),使得外部設(shè)備與CF卡通信的同時(shí),CF卡的片內(nèi)控制器可以對(duì)Flash進(jìn)行讀寫(xiě)。這種設(shè)計(jì)可以增加CF卡數(shù)據(jù)讀寫(xiě)的可靠性,同時(shí)提高數(shù)據(jù)傳輸速率。
CF卡支持多種接口訪問(wèn)模式,有符合PCMCIA規(guī)范的Memory Mapped模式、I/O Card模式和符合ATA規(guī)范的True IDE模式。上電時(shí),OE(9腳)為低電平,CF卡進(jìn)入True IDE模式,此時(shí)引腳OE也叫ATA SEL;上電時(shí),OE(9腳)為高電平,CF卡進(jìn)入PCMCIA模式,即Memory Mapped模式或I/O Card模式,此時(shí)可通過(guò)修改配置選項(xiàng)寄存器進(jìn)入相應(yīng)的模式。
配置選項(xiàng)寄存器格式如下:
SRESET | LevelREQ | conf5 | conf4 | conf3 | conf2 | conf1 | conf0 |
SRESET—軟復(fù)位信號(hào);
Level REQ—中斷模式選擇(電平或邊沿觸發(fā))。
例如,要加入Memory mapped模式,只需要在上電時(shí)保證OE為高電平,因?yàn)榕渲眠x項(xiàng)寄存器的conf5~conf0位的初始化值為“00000”;而要進(jìn)入I/O Card模式,除了上電時(shí)保證OE為高電平外,還要進(jìn)一步設(shè)置conf5~conf0,如表1所列。但是對(duì)于具體型號(hào)的CF卡而言,下面三種情況也是被CFA(CF card Association)所允許的:①上電時(shí)進(jìn)入True IDE模式,工作過(guò)程中,只要監(jiān)測(cè)到OE變?yōu)楦?,就退出True IDE模式;②允許卡在復(fù)位時(shí)重新配置;③上電時(shí)進(jìn)入PCMCIA模式,允許過(guò)程中,只要監(jiān)測(cè)到OE變?yōu)榈?,就進(jìn)入True IDE模式。
表1 模式選擇
conf5 | conf4 | conf3 | conf2 | conf1 | conf0 | 模 式 |
0 | 0 | 0 | 0 | 0 | 0 | Memory map |
0 | 0 | 0 | 0 | 0 | 1 | I/O Mapped,對(duì)應(yīng)16位系統(tǒng) |
0 | 0 | 0 | 0 | 1 | 0 | I/O,對(duì)應(yīng)1F0h-1F7h/3F6h-3F3h |
0 | 0 | 0 | 0 | 1 | 1 | I/O,對(duì)應(yīng)170h-177h/376h-377h |
2 CF卡與51單片機(jī)的接口
CF卡在PC Memory方式與51芯片的接口電路如圖2所示。由于采用CF卡上電后自動(dòng)進(jìn)入的Memory模式,而且不存在對(duì)特性寄存器的讀寫(xiě),故可將REG接高電平。片選信號(hào)CE1和CE2組合可選擇數(shù)據(jù)位寬度,如表2所列。圖2中CE2接VCC,選用的是8位(D7~D0)數(shù)據(jù)寬度。{{分頁(yè)}}
表2 數(shù)據(jù)寬度選擇
8位(D7~D0) | 8位(D15~D8) | 16位 | 高 阻 | |
CE1 | 0 | 1 | 0 | 1 |
CE2 | 1 | 0 | 0 | 1 |
為了實(shí)現(xiàn)即插即用的功能,CE卡上提供了兩個(gè)用來(lái)檢測(cè)卡是否存在的引腳(CD1、CD2),由卡內(nèi)部接地。當(dāng)主機(jī)檢測(cè)到與其相連的CD1和CD2兩個(gè)引腳同時(shí)為低電平時(shí),可判斷出卡與主機(jī)相連;否則,卡未與主機(jī)相連。
由于I/O口緊張,RDY/BSY引腳懸空不用,通過(guò)查詢狀態(tài)寄存器能判斷CF卡是否準(zhǔn)備就緒。在實(shí)際應(yīng)用中,由于一次至少要讀寫(xiě)一個(gè)扇區(qū)512字節(jié),所以要擴(kuò)充一塊RAM。我們選用的是62256,容量為32KB,這樣便可以支持大到2GB的CF卡(參見(jiàn)下文),增加了其擴(kuò)展性。
3 FAT文件系統(tǒng)
FAT文件系統(tǒng)是基于DOS的文件系統(tǒng)。常說(shuō)的FAT有12位的FAT12和16位的FAT16,另外就是32位的FAT32??紤]到CF卡的容量有限,宜選用FAT16。這里只對(duì)FAT文件系統(tǒng)作一簡(jiǎn)單介紹,更詳細(xì)的內(nèi)容請(qǐng)見(jiàn)參考文獻(xiàn)。
磁盤(pán)的尋址方式有兩種:物理尋址C/H/S(柱面/磁頭/扇區(qū))方式和邏輯塊LBA(Logical Block Addressing)尋址方式。二者之間的轉(zhuǎn)換關(guān)系為:
LBA地址=(柱面號(hào)
評(píng)論