摘 要: CF卡和單片機接口的各種模式,比較了各種模式的利弊。給出了2種常用模式下的完整電路原理圖,簡要說明了IDE模式下存取工作的原理,闡述了映射存儲模式下CF卡的存取原理。
關(guān)鍵詞: CF卡 單片機 接口模式 讀寫扇區(qū) 大容量數(shù)據(jù)采集
在單片機工業(yè)應(yīng)用的許多場合需要存儲器來存儲大量的數(shù)據(jù)(如數(shù)據(jù)采集),而且要求斷電時能夠保存數(shù)據(jù)。但一些單片機的Flash Memory芯片容量有限,在大數(shù)據(jù)量的場合使用難以滿足要求。而擴展傳統(tǒng)的存儲器RAM在斷電時又不能保存數(shù)據(jù),雖然EPROM等存儲器斷電時可保存數(shù)據(jù),往往因為存儲空間小、尋址能力不足、價格過高等諸多問題而受到使用限制。相比較而言,CF(CompactFlash)卡存儲容量大(容量可以達到512MB)、攜帶方便、讀寫速度快、可與多種電腦操作系統(tǒng)平臺兼容且可多次讀寫。此外,CF卡能與單片機接口,靈活性強,故是一種理想的存儲器。
1 CF卡簡介
CF卡廣泛應(yīng)用在數(shù)碼相機、掌上電腦、MP3等設(shè)備中,采用間距50mil 的50針腳雙列封裝,其電氣特性符合ATA規(guī)范。通過專用的讀卡器,可以將CF卡的50針腳轉(zhuǎn)化為USB接口而能夠被PC機讀出。CF卡和單片機接口能夠用來存儲大容量的數(shù)據(jù),筆者即用CF卡來存儲攝像頭采集來的水表圖像信息。
CF卡的結(jié)構(gòu)是在一個紙板火柴盒大小的卡空間上包含了一個單片控制器和閃存模塊,集成了控制裝置、Flash Memory陣列和讀寫緩沖區(qū),可以提供相當(dāng)可觀的存儲容量和標準的電氣接口協(xié)議,控制器和主機接口允許閃存模塊的數(shù)據(jù)被讀寫。
2 CF卡的硬件接口模式
由于CF卡有一個內(nèi)置的控制器,因此對CF卡內(nèi)部數(shù)據(jù)的存取和對ATA硬盤的存取很相似,而與大多數(shù)通過線性地址來存取數(shù)據(jù)的RAM、ROM和其他閃存卻不一樣。CF卡和主機的接口靈活,且有多種接口模式。每一種硬件接口模式都有自己的執(zhí)行設(shè)置,引腳的定義也略有差異。CF卡和主機接口一般有以下幾種模式。
2.1 真正的IDE模式(True IDE Mode)
將CF卡連接器的-OE引腳接地,即可實現(xiàn)IDE模式。在IDE模式下,單片機對CF卡的存取如同單片機操作等容量的硬盤一樣。這種模式常用于不要求CF卡的可移動性或者是一旦主機系統(tǒng)上電,CF卡被專有使用的情況。CF卡轉(zhuǎn)化成IDE模式的典型電路如圖1所示。
通過圖1所示的電路可以將CF卡的50個引腳轉(zhuǎn)化成44個引腳的IDE接口,1~40個引腳即可組成標準的IDE接口。轉(zhuǎn)化后的IDE接口和單片機相連使操作CF卡就像操作硬盤一樣,引腳CE1、CE2用作片選信號,引腳HD0~HD7用作數(shù)據(jù)線,IORD、IOWR和單片機讀寫引腳相連,通過主機發(fā)出讀寫信號來讀寫CF卡,IORDY作為輸入/輸出準備好信號,IOCS16用來決定是16位數(shù)據(jù)存取還是8位數(shù)據(jù)存取。如果此IDE接口和PC機的IDE接口相連,則能在Windows操作系統(tǒng)中顯示一個盤符。如果寫入的格式是標準文件格式FAT32,則寫入到CF卡的文件能在Windows操作系統(tǒng)中讀出來。
2.2 映射存儲模式
在映射存儲模式(Memory Mapped Mode)下,CF卡被配置為主存儲空間的一個地址范圍,CF卡為缺省工作模式。該模式能夠通過配置選項寄存器(偏移地址為$200)來設(shè)置。
2.3 映射I/O模式
通過配置選項寄存器(偏移地址為$200)來設(shè)置CF卡到映射I/O模式(I/O Mapped Mode)。該模式能和PC-AT(ISA)信號兼容,并通過引腳-SPKR、-IORD、-IOWR、-IREQ、-IOCS16、-INPACK和-STSCHNG來達到這一目的。映射I/O模式允許設(shè)計者將閃存地址空間合并到Intel處理器的存儲空間,使得CF卡似乎有明確的輸入/輸出地址線。
2.4 由PCMCIA控制裝置控制的PCMCIA卡模式
這種模式完全獨立于主機設(shè)計,CF卡能夠通過一個PC卡接口芯片控制器(如PD6710 PC,Intel 365卡主機適配器)被主機系統(tǒng)存取。PCMCIA是一種很好的工業(yè)標準,能夠支持除ATA閃存卡以外的其他存儲卡。此外,考慮到該模式下主機上電工作時CF卡的可移動性是很重要時,這種模式的優(yōu)勢更明顯。
3 典型接口電路及工作原理
對于與單片機接口而言,IDE模式和映射存儲模式是2種應(yīng)用最多的模式,而映射I/O模式和PCMCIA卡模式主要用于和PC機接口,不是本文所討論的范圍,故在此不詳述。下面以映射存儲模式下的典型接口電路為例來說明單片機存取CF卡的工作原理。CF卡的典型電路如圖2所示。
CF卡的主要功能引腳有:數(shù)據(jù)線D0~D15(用于數(shù)據(jù)的讀寫),地址線A0~A9,片選及數(shù)據(jù)選擇CS1、CS0,讀寫控制端ATA SEL、WE,寄存器選擇REG,卡讀寫忙判斷INTRQ、RESET等。CF可以工作于16位數(shù)據(jù)總線方式也可以工作于8位總線方式。在讀寫速度的要求不是很嚴格的情況下,為了便于和8位MCU接口,一般選擇8位數(shù)據(jù)總線工作方式。若選擇8位工作方式,CS1應(yīng)接固定高電平,而CS0低電平有效。CF卡在Memory工作方式下,僅地址線A0~A3起作用,用于選擇讀寫端口,其余地址線可以接固定電平。REG用于選擇是對CF卡發(fā)送命令、狀態(tài)讀寫還是讀寫CF卡的屬性寄存器。REG=1時為讀寫命令。在Memory方式下,對CF的控制和數(shù)據(jù)讀寫均是通過對這幾個端口的讀寫來實現(xiàn)的。INTRQ用于判斷CF卡是否處于讀寫忙狀態(tài),可以在對CF卡進行讀寫之前利用此引腳來判斷CF卡是否空閑。在數(shù)據(jù)讀寫量較小的情況下,使用一定的延時即可。
圖2中:CF卡工作于Memory方式,8位數(shù)據(jù)總線,單片機按標準的P2、P0口復(fù)用方式與CF卡接口。CS0~CS1、REG分別接單片機的P2.6、P2.5、P2.7,端口選擇A3~A0接收經(jīng)373鎖存的低4位地址,CF卡的讀寫引腳分別與單片機的讀寫信號相接。若把閑置地址引腳接固定電平,則系統(tǒng)分配給CF卡的端口地址為[B000]~[B007]。INTRQ(即BSY/RDY)腳接到單片機的P1.7。
CF卡讀寫以扇區(qū)為單位,每扇區(qū)為512字節(jié),每次可讀寫1個或多個連續(xù)的扇區(qū)。設(shè)計時使用邏輯塊尋址方式(Logical Block Addressing,LBA)訪問CF卡數(shù)據(jù)。讀寫操作時首先指定讀寫的扇區(qū)數(shù)和LBA地址,然后往命令寄存器發(fā)出讀命令(20H)或?qū)懨?30H),等待CF卡就緒后即可通過數(shù)據(jù)寄存器連續(xù)讀寫數(shù)據(jù)。使用LBA模式來存取CF卡的子程序如下:
本文給出了CF卡和單片機接口的方法,通過這些方法能夠?qū)崿F(xiàn)大容量的數(shù)據(jù)采集和存儲,存儲到CF卡中的數(shù)據(jù)能長期保存,攜帶方便。實踐證明,CF卡是一種理想的大容量數(shù)據(jù)存儲卡,具有廣泛的應(yīng)用前景。
參考文獻
1 CompactFlash Association.CF+ and CompactFlash Specification Revision 2.0.1998~2003
2 蘇廣川,沈瑛.高級微型計算機系統(tǒng)及接口技術(shù).北京:北京理工大學(xué)出版社,2001
3 程擁強,郭鳳龍,朱勁.單片機對CF存儲卡文件讀寫的實現(xiàn).計算機應(yīng)用,2003;(9)
4 吳產(chǎn)樂.微機系統(tǒng)與接口技術(shù).武漢:華中科技大學(xué)出版社,2002