摘 要:本文討論了在單片機下進行cf卡接口設計的方法,根據(jù)pcmcia制定的ata標準開發(fā)了直接讀寫cf卡的驅動程序,并介紹了cf卡驅動程序的編程技巧。 引言 ?。悖妗】ǎǎ悖铮恚穑幔悖簟。妫欤幔螅琛。悖幔颍洌┦菍iT為海量存儲而設計的專用設備,其標準由國際cfa (compact?。妫欤幔螅琛。幔螅螅铮悖椋幔簦椋铮睿┞?lián)合會維護和管理。cf卡中不僅有海量存儲專用的flash芯片,還包括一個片上智能控制器,這樣就為計算機宿主機提供了一個高級的應用接口來方便地對其進行讀寫控制與操作。這個接口讓宿主計算機能夠像讀取硬盤那樣,用硬盤操作專用命令對cf進行控制。cf卡每一個字段(512字節(jié))都有一個強勁的糾錯碼。cf卡具有體積小、存儲量大、安全可靠、價格低廉、讀寫速度快的優(yōu)點,越來越被消費者所認可,眾多的娛樂電子設備生產廠商都支持cf卡接口。目前許多消費類嵌入式系統(tǒng)產品,如數(shù)碼攝像機、數(shù)碼照相機、掌上電腦、pda、手機、mp3播放器上面都加入了對cf卡的支持。所以,在設計嵌入式系統(tǒng)的時候,加入對cf卡的支持是非常有意義的。cf卡的接口技術分為memory模式、i/o模式和ide模式。本文討論了在單片機下進行cf卡接口設計的方法,并利用標準cf卡ata標準開發(fā)了直接讀寫cf卡的驅動程序,實現(xiàn)了在單片機下對cf卡的直接讀寫,為海量存儲設備應用于普通的嵌入式系統(tǒng)提供了條件?! 。悖婵▍f(xié)議簡介 ?。悖妫峤M織目前推出的cf卡協(xié)議能夠實現(xiàn)66mb/s的存取速率。該協(xié)議詳細規(guī)定了cf卡的三種讀寫模式,還規(guī)定了cf卡的幾何尺寸和各種電器參數(shù),從而實現(xiàn)了對cf卡的標準化?! ∠到y(tǒng)設計 本文中選用的是sandisk公司生產的cf卡,其內部的結構框圖如圖1所示。cf卡與單片機的接口設計必須在基于特定功能的前提下進行,主要考慮以下幾個方面的內容:cf卡與宿主機之間的電氣兼容性,cf卡傳輸模式的選擇,以及cf卡數(shù)據(jù)位的選擇?! D1 ?。悖婵▋炔康慕Y構框圖 硬件設計 硬件設計主要應考慮cf卡的數(shù)據(jù)傳輸、地址選擇,及其讀寫控制信號。在本系統(tǒng)中,宿主機使用了常見的at89s52。cf卡與單片機之間有著非常標準的接口,4根地址線,8根數(shù)據(jù)線,1根讀信號線和1根寫信號線,總共只需占用單片機的14根i/o口線。硬件cf卡相關的功能框圖如圖2所示?! D2 單片機實現(xiàn)cf卡讀寫的硬件結構框圖 這套系統(tǒng)除了包括單片機和cf卡這兩個必不可少的元件以外,另外還包括一個lcd液晶顯示屏,其功能主要是用于顯示程序執(zhí)行中各種參數(shù)的狀態(tài)(如串口是否能正常工作)。液晶顯示屏是一個很好的硬件調試監(jiān)視器,尤其是在沒有仿真器的條件下,它可以方便地設立程序斷點,監(jiān)視程序的執(zhí)行,實時顯示各個狀態(tài)參數(shù)?! 榱烁行У販y試cf卡的海量存儲功能,系統(tǒng)中還設置了一個rs-232接口,以便與pc機之間進行通信。另外,考慮到在線調試cf卡驅動程序的時候需要多次燒寫單片機的程序存儲器,特別又設置了一個isp下載線接口。這樣一來,不用仿真器和燒寫器而僅使用isp并口下載線就可以對整個系統(tǒng)進行在線調試,大大方便了驅動程序的開發(fā)與調試?! ≤浖O計 嚴格遵循ata標準的cf卡設備對軟件的編制有非常標準化的方法,而且基于cfa的協(xié)議,cf卡硬件上的向下兼容性也保證了軟件設計上的兼容性。cf卡工作在內存映射下的讀寫程序邏輯框圖如圖3所示。值得指出的是,不同于一般的flash存儲器,cf卡采用ide標準的讀寫方式,它的尋址方式、讀寫方式,甚至命令都與普通的ata硬盤相符合。也就是說,cf是在模擬硬盤的讀寫,按照扇區(qū)、磁道、柱面來尋址。同硬盤一樣,cf卡不能夠對位操作,它的一次性吞吐量為一個扇區(qū),也就是512個字節(jié)。cf卡在設計之初,之所以要采取類似硬盤的讀寫方式,是因為這種方法的存儲速度快、可靠,并能節(jié)省資源。本設計并不需要在cf上面建立文件系統(tǒng),這樣可以充分利用cf卡存儲量大、速度快的特點,同時也可使軟件的編制更為簡化?! D3 讀寫cf卡程序的邏輯框圖 實驗步驟與結果 測試讀寫cf卡是否成功的方法是:先用串口調試助手把pc機上的一個ascii文件通過串口發(fā)送到cf卡的特定扇區(qū),然后將剛剛寫入的數(shù)據(jù)讀出,并通過串口發(fā)送到pc機的串口調試助手的終端上。如果發(fā)送與接收到的文件數(shù)