《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 設計應用 > 基于單片機的CF卡文件存儲
基于單片機的CF卡文件存儲
摘要: 隨著計算機應用技術的飛速發展,移動存儲設備得到了廣泛的應用。其中CF(Compact Flash)卡誕生于1994年,是最早推出的閃存卡,在眾多產品中其普及率也最高。由于CF卡具有價格低廉、體積小、存儲容量大、高速等特點,因此被廣泛地應用于數碼相機、PDA和筆記本電腦等當前十分熱門的消費類電子產品中。CF卡在其他領域中也得到了廣泛的應用。如本文所述內容就是將CF卡應用于動態腦電圖系統中存儲腦電信號。
Abstract:
Key words :

       隨著計算機應用技術的飛速發展,移動存儲設備得到了廣泛的應用。其中CF(Compact Flash)卡誕生于1994年,是最早推出的閃存卡,在眾多產品中其普及率也最高。由于CF卡具有價格低廉、體積小、存儲容量大、高速等特點,因此被廣泛地應用于數碼相機、PDA和筆記本電腦等當前十分熱門的消費類電子產品中。CF卡在其他領域中也得到了廣泛的應用。如本文所述內容就是將CF卡應用于動態腦電圖系統中存儲腦電信號。

       由于CF卡中存儲的腦電圖信號要能夠從PC機上讀取出來,所以必須把腦電圖信號以相應的文件格式存儲。下面將介紹采用C8051F020微控制器控制CF卡的文件存儲,并詳細地介紹其軟、硬件的設計。

       1 C8051F020與CF卡的接口電路

       C8051F020是完全集成的混合信號系統級MCU芯片,使用了Cy

 

gnal專利的高速、流水線結構以及與MCS-51指令集完全兼容的CIP-51微處理器內核,具有64條數字I/O引腳,片內有64KB可在系統編程的Flash存儲器,有4 352B的片內RAM,片內有看門狗定時器、VDD監視器和溫度傳感器等;片內的JTAG調試電路允許使用安裝在最終應用系統上的產品MCU進行非侵入式、全速、在系統調試;其MCU都可在工業溫度范圍(-45℃-+85℃)內用2.7~3.6V的電壓工作;端口I/O、RST和JTAG引腳都兼容5V的輸入信號電壓。C8051F020其他功能可參考文獻。

       CF卡有3種工作模式可供選擇:I/O模式、存儲器模式和IDE模式。CF卡的默認模式是存儲器模式,使用也最為普遍。如果使用存儲器模式則不需要配置任何寄存器。每一種模式的電路連接各不相同。在I/O模式和存儲器模式下,可以采用8位的訪問方式,也可以采用16位的訪問方式。本文所采用的是8位的存儲器模式,其接口電路如圖1所示。
 

 

8位的存儲器模式其接口電路


       C8051F020的外部數據存儲器接口(EMIF)可用于訪問片外存儲器和存儲器映射的I/O器件。若設置EMIF的配置寄存器EMIOCF的PRTSEL位為'1',可使EMIF位于端口7、6、5、4;設置EMD2位為'1',可使EMIF工作于非復用方式;設置EMDl~0為'01',可使EMIF工作于不帶塊選擇的分片方式。這樣P7口就為數據線D0~D7,P6口為A0~A7,P5口為A8~A15,P4.6、P4.7分別為讀(RD)、寫(WE)線。

       由于C8051F020是8位的單片機,所以對CF卡的訪問采用8位的方式較為方便。通過把-CE2設為'1'即可通過訪問CF卡的D0~D7來存取數據。而-CEl可以作為CF卡的片選信號,通過設-CEl為'0'來選通CF卡,即-CEl接C8051F020的高位地址P5.7來線選CF卡。當CF卡插入其插座時,CDl和CD2都連接到地(CND);C8051F020的P1.1、P1.2分別連到CDl和CD2,并可以通過檢測P1.1和P1.2來判斷CF卡是否插入CF卡插座。CF卡工作于存儲器模式下,-OE和-WE分別接C8051F020的讀(P1.6)、寫(P1.7)線。當REG為'0'時,訪問CF卡的屬性寄存器;REG為'1'時,CF卡在存儲器模式下對數據進行讀寫操作。

       2 C8051F020對CF卡的數據讀寫

       圖1所示電路的CF卡在存儲器模式下有關數據讀寫的一些寄存器地址如表1所示。
 

電路的CF卡在存儲器模式下有關數據讀寫的一些寄存器地址


       CF卡1個扇區為512B,這些數據都是從表1中的第0個寄存器中讀出,而且每次讀寫數據最小為1個扇區,但也可以設置從第2個寄存器中讀出,1次讀寫幾個扇區。

       C8051F020對CF卡讀扇區數據的過程是:首先讀取第7個寄存器的狀態字,如果為50H表示沒有錯誤,并且CF卡已經準備好;然后再分別向第2、3、4、5、6個寄存器寫入相應的數據指定需要讀寫的扇區;最后向第7個寄存器寫20H或21H,讀取狀態字為58H后讀取數據,其流程如圖2所示。
 

 

流程


       C8051F020對CF卡向指定扇區寫數據的命令是30H或31H,其操作亦與讀數據相似,只不過在寫入數據后要等到CF卡中數據穩定并進入空閑狀態才能結束這一過程。

       在CF卡讀寫時,分別向第2、3、4、5、6個寄存器寫入CF卡需要訪問的扇區位置,其寫入模式有2種:即CHS(Cylinder/Head/Sector)模式和LBA(Logical Block Address)模式。通過設置第6個寄存器的第6位LBA確定其模式:即如果LBA=0,則為CHS模式;如果LBA=I,則為LBA模式。

       由CHS模式到LBA模式的轉換如下:

由CHS模式到LBA模式的轉換

       其中LBA是邏輯塊地址,Cn是柱面號,HpC是每個柱面的磁頭數,Hn是磁頭數,Sn是扇區號,SpH是每個磁頭(簇)的扇區數。
    3 CF卡的文件存儲

       FAT(File Allocation Table)文件系統產生于20世紀70年代末到80年代初,是微軟的MS-DOS操作系統所支持的文件系統。目前FAT文件系統有3種類型:FATl2、FATl6和FAT32。它們的不同是在磁盤上實際的FAT結構中每個記錄(Entry)所占的位數不同。FATl2占12位(1.5字節),FATl6占16位(2字節),FAT32占32位(4字節)。每一個記錄中的數據都按照低字節在前、高字節在后排列。

       在CF卡格式化時,首先要了解CF卡的容量等一系列信息。通過對CF卡寫入命令ECH就可以讀出1個扇區,其中包含了該CF卡的一些參數的信息,如容量、默認的柱面數、默認的磁頭數、每個扇區的字節數、每個磁道的扇區數和CF卡上總的扇區數等。這為格式化CF卡提供了重要的數據。

       在格式化后的CF卡中,FAT文件系統由如下4部分組成:

       0區:保留區(引導區)。
       1區:FAT區。
       2區:根目錄區(FAT32中存在的是浮動的FDT表)。
       3區:文件、目錄與數據區(下面簡稱數據區)。

       引導區中包含了整個FAT文件系統的重要信息,即BPB(BIOS Parameter Block)。下面為BPB的幾個重要數據結構:

BPB的幾個重要數據結構


       在FAT32格式下,BPB﹒RootEntCnt為'0',因此RootDirSec總是為'0'。

       如果BPB.FATSzl6不為'0',就可以根據下面公式計算數據區的第一個扇區地址。

       FirstDataSec="BPB".ResvdSecCnt+(BPB.NumFATs*BPB.FATSzl6)+RootDirSec (4)

       因此數據區所占用的扇區數:

       DataSec="BPB".TotSecl6-FirstDataSec (5)

       根目錄的第一個扇區地址(在FATl2、FATl6下):

       FirstRootDirSec="BPB".ResvdSecCnt+(BPB.NumFATs*BPB.FATSzl6)
       如果BPB.FATSzl6為'0',則BPB.FATSz32一定不為'0',則有:

       FirstDataSec="BPB".ResvdSecCnt+fBPB.NumFATs*BPB.FATSz32)+RootDirSec (6)

       DataSec="BPB".TotSec32-FirstDataSec (7)

       FirstRootDirSec="BPB".ResvdSecCnt+(BPB.NumFATs*BPB.FATSz32) (8)

       如果CF卡有多個分區,則(3)~(8)式計算出的參數只是相對當前分區而言的,且數據區所占用的簇數為:

       CntofClus="DataSec"/BPB.SecPerClus (9)

       在格式化CF卡時,根據CF卡容量的大小決定FAT數據結構中的一些參數,再由式(9)算出數據區總的簇數,并根據總簇數的大小確定FAT形式。一般來說,如果CntofClus<4 084簇,則可以格式化成FATl2的形式;如果≥4 084簇而<65 524簇,則可以格式化成FATl6的形式;如果≥65 524簇,則格式化成FAT32的形式。

       若給定一個簇的序號N(N≥2),則在數據區對應該簇的第一個扇區序號為:

       FirstSecofClus=((N-2)*BPB.SecPerClus)+FirstDataSec (10)

       式(10)表示了FAT與數據區的對應關系,如圖3所示。在FAT區每一個記錄的位置與數據區中的一簇數據相對應,同時,這個記錄又存儲著下一簇序號,從而一個件在FAT區形成一個鏈表。至于每一簇的序號在FAT中的存儲位置,可以根據格式化的形式(FATl2、FAT16、FAT32)確定。設每一記錄占i個字節,則第N個記錄在N×i的位置上。
 

FAT與數據區的對應關系


       文件的結束符在FATl2下為0xFFF,在FATl6下為0xFFFF,在FAT32下為0x0FFFFFFF。如果在寫入時遇到損壞的簇,則在對應位置寫損壞的標志(FATl2下為0xFF5FATl6下為0xFFF7,FAT32下為0x0FFFFFF7),并且在{表中跳過這一損壞的簇。在刪除一個文件時,要把該文{在FAT區的鏈表全部寫'0',釋放空間。這樣,該鏈表中所對應的數據區又可以被新的文件分配。 一個FAT的目錄項或文件項通常占用32字節,并存儲該目錄或文件的相關信息。其數據結構如下:

數據結構


       這個數據結構中12字節的名字是目錄名還是文件名,由成員Attr決定。如果是目錄Attr可設為10H;如果j文件,Attr可設為20H,也可以是幾個屬性的組合;如果為長文件名,Attr可設為OFH。有關詳細的長文件名可參見文獻。

       成員FstClusHI和FstClusL0記錄了文件第一簇數據對應FAT中的記錄序號,即圖3中第一簇的序號,從而可以根據鏈表查找下一簇數據。在FATl2和FATl6下,成員FstClusHI總為'0'。

       4 討論

      
本文只介紹了動態腦電圖系統的有關文件存儲的部分,C8051F020的功能并沒有得到充分利用。實際上C8051F020還要完成系統的其他很多功能。用戶可以根據自己系統的實際需要選擇合適的單片機。本系統在設計時著重考慮系統的功耗、體積、速度等方面的因素,所以C8051F020采用非復用的方式,以求節省1片鎖存器對低位地址的鎖存。
       CF卡在寫入文件時,由于要記錄24小時的腦電圖信號。為了防止異常發生使文件寫入失敗,可以定時地更新FAT區該文件的記錄鏈表和所存放文件數據結構的根目錄區或數據區中該文件的大小。只有保存了這些信息,所寫入的數據才能正常地讀取。 此外,在寫入文件時,如果遇到一個扇區寫入失敗,則整個簇都不能用。為此:(1)必須查找下一個未占用的簇,再把這一簇中已經正確寫入的扇區中的數據復制到下一簇中。這樣緩沖區中只要保存一個扇區的腦電信號就可以。(2)先對這一簇進行檢測,確定沒有錯誤后再向該簇寫人數據。這種方法雖然比較簡單,但占用系統的時間比較多,且在檢測到沒有錯誤后也不能完全保證下一次寫入時不發生錯誤。所以第一種方法的可靠性要高。

       實驗證明,SanDisk和EagleTec等公司的不同容量的CF卡用于本系統中都能夠正確地對采集到的腦電圖信號進行存取。

 

 
此內容為AET網站原創,未經授權禁止轉載。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
一级日韩一区在线观看| 亚洲国产一成人久久精品| 黄色成人片子| 国产模特精品视频久久久久| 欧美日韩一区二区在线观看视频| 欧美成人免费小视频| 理论片一区二区在线| 久久精品视频在线看| 欧美一区国产在线| 欧美在线一级视频| 欧美在线视频一区二区| 亚洲欧美精品一区| 亚洲欧美怡红院| 新67194成人永久网站| 亚洲欧美国产视频| 亚洲欧美另类久久久精品2019| 亚洲视频免费在线| 亚洲综合激情| 欧美中文日韩| 久久久精品日韩欧美| 久久久久9999亚洲精品| 久久一区二区三区超碰国产精品| 久久一综合视频| 欧美va天堂在线| 欧美激情片在线观看| 欧美久久久久中文字幕| 欧美日韩一级大片网址| 国产精品乱码一区二区三区 | 久久久久久久999| 久久久人人人| 欧美ab在线视频| 欧美三级韩国三级日本三斤| 国产精品成人av性教育| 国产精品亚洲欧美| 国产一本一道久久香蕉| 伊人成人在线| 亚洲乱码国产乱码精品精天堂| 日韩亚洲欧美综合| 亚洲欧美国产一区二区三区| 欧美亚洲综合在线| 亚洲欧洲日产国产网站| 亚洲午夜未删减在线观看| 欧美一区久久| 美女脱光内衣内裤视频久久影院| 欧美精品午夜| 国产精品视频一区二区高潮| 国模精品一区二区三区| 亚洲日本欧美日韩高观看| 一区二区电影免费观看| 欧美一级久久| 亚洲免费观看| 欧美专区日韩专区| 欧美国产先锋| 国产精品制服诱惑| 亚洲第一毛片| 亚洲午夜精品网| 亚洲国产成人精品视频| 亚洲一二三区在线| 久久琪琪电影院| 欧美午夜精彩| 在线播放国产一区中文字幕剧情欧美| 99精品国产在热久久| 欧美一区二区精品在线| 日韩亚洲欧美成人| 欧美有码视频| 欧美日韩国产精品自在自线| 国产免费一区二区三区香蕉精| 亚洲国产裸拍裸体视频在线观看乱了中文 | 午夜精品久久久久久| 六月天综合网| 国产精品国产三级国产专播品爱网 | 亚洲视频1区| 久久蜜桃资源一区二区老牛 | 在线一区二区日韩| 亚洲片在线观看| 欧美一级淫片aaaaaaa视频| 欧美aaa级| 国产午夜精品久久久久久免费视| 亚洲日本无吗高清不卡| 欧美在线高清视频| 亚洲欧美日韩专区| 欧美人在线观看| 伊人激情综合| 先锋亚洲精品| 亚洲欧美久久久| 欧美精品尤物在线| 黄色一区二区在线| 亚洲免费在线视频一区 二区| 一本综合精品| 欧美二区乱c少妇| 国产一区激情| 香蕉成人啪国产精品视频综合网| 在线视频中文亚洲| 欧美激情视频网站| 伊人久久亚洲热| 欧美专区在线观看| 新狼窝色av性久久久久久| 欧美日韩在线高清| 亚洲精品久久视频| 亚洲电影在线免费观看| 久久精品国产第一区二区三区最新章节| 欧美三级午夜理伦三级中文幕| 在线观看欧美日本| 亚洲第一中文字幕| 久久精品国产2020观看福利| 国产精品欧美日韩一区| 99这里只有久久精品视频| 亚洲美女黄网| 欧美激情国产日韩| 亚洲高清自拍| 亚洲人久久久| 欧美大片在线影院| 亚洲国产精品一区| 亚洲美女精品成人在线视频| 女人色偷偷aa久久天堂| 亚洲第一页在线| 亚洲国内在线| 农村妇女精品| 亚洲韩国精品一区| 亚洲狼人精品一区二区三区| 欧美成人高清| 亚洲高清资源| 99视频一区二区| 欧美日韩dvd在线观看| 亚洲精品一区在线观看香蕉| av成人免费| 国产精品ⅴa在线观看h| 亚洲午夜久久久久久久久电影院| 亚洲自拍都市欧美小说| 国产精品日本一区二区 | 亚洲人成网站777色婷婷| 欧美成人午夜视频| 亚洲黄色毛片| 亚洲无玛一区| 国产精品久久久久影院色老大 | 欧美亚洲综合久久| 久久久久久久成人| 怡红院精品视频| 亚洲精品社区| 欧美三级视频在线| 亚洲欧美日韩在线播放| 久久久久天天天天| 在线观看欧美日韩| 夜夜嗨av色综合久久久综合网| 欧美日韩成人在线观看| 在线视频欧美精品| 欧美一区二区啪啪| 加勒比av一区二区| 日韩一级在线观看| 国产精品蜜臀在线观看| 欧美制服丝袜| 欧美极品在线播放| 亚洲一区二区三区四区五区黄| 欧美综合国产| 在线不卡中文字幕播放| 宅男噜噜噜66一区二区 | 99精品国产在热久久| 香蕉久久一区二区不卡无毒影院 | 久久久久久9| 亚洲国产精品成人综合| 亚洲一区免费| 狠狠爱www人成狠狠爱综合网| 亚洲精品一二三| 国产精品一区二区三区四区| 久久精品国产2020观看福利| 欧美精品www| 亚洲欧美偷拍卡通变态| 欧美成人免费在线| 亚洲免费视频观看| 欧美国产日韩a欧美在线观看| 亚洲视频欧美在线| 蜜臀av性久久久久蜜臀aⅴ四虎| 日韩视频在线播放| 久久精品欧美日韩精品| 亚洲乱码久久| 看欧美日韩国产| 一区二区三区四区在线| 欧美 日韩 国产在线| 亚洲一区二区三区激情| 欧美aⅴ99久久黑人专区| 亚洲视频一二区| 欧美不卡三区| 亚洲欧美日韩成人| 欧美理论电影在线播放| 欧美在线www| 国产精品福利在线观看网址| 亚洲国产成人高清精品| 国产精品欧美久久久久无广告| 亚洲精品美女在线观看| 国产日韩精品综合网站| 一本久道久久久| 精品成人久久| 欧美一区二区三区在线播放| 日韩一本二本av| 蜜臀av国产精品久久久久| 午夜激情久久久| 欧美私人网站| 日韩午夜中文字幕| 禁久久精品乱码| 欧美在线观看视频一区二区三区|