0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

采用C8051F020微控制器控制CF卡存儲(chǔ)及設(shè)計(jì)研究

電子設(shè)計(jì) ? 來(lái)源:郭婷 ? 作者:電子設(shè)計(jì) ? 2019-07-01 08:08 ? 次閱讀

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

由于CF卡中存儲(chǔ)的腦電圖信號(hào)要能夠從PC機(jī)上讀取出來(lái),所以必須把腦電圖信號(hào)以相應(yīng)的文件格式存儲(chǔ)。下面將介紹采用C8051F020微控制器控制CF卡的文件存儲(chǔ),并詳細(xì)地介紹其軟、硬件的設(shè)計(jì)。

1 C8051F020與CF卡的接口電路

C8051F020是完全集成的混合信號(hào)系統(tǒng)級(jí)MCU芯片,使用了Cygnal專利的高速、流水線結(jié)構(gòu)以及與MCS-51指令集完全兼容的CIP-51微處理器內(nèi)核,具有64條數(shù)字I/O引腳,片內(nèi)有64KB可在系統(tǒng)編程的Flash存儲(chǔ)器,有4 352B的片內(nèi)RAM,片內(nèi)有看門(mén)狗定時(shí)器、VDD監(jiān)視器和溫度傳感器等;片內(nèi)的JTAG調(diào)試電路允許使用安裝在最終應(yīng)用系統(tǒng)上的產(chǎn)品MCU進(jìn)行非侵入式、全速、在系統(tǒng)調(diào)試;其MCU都可在工業(yè)溫度范圍(-45℃-+85℃)內(nèi)用2.7“3.6V的電壓工作;端口I/O、RST和JTAG引腳都兼容5V的輸入信號(hào)電壓。

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

采用C8051F020微控制器控制CF卡存儲(chǔ)及設(shè)計(jì)研究

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

由于C8051F020是8位的單片機(jī),所以對(duì)CF卡的訪問(wèn)采用8位的方式較為方便。通過(guò)把-CE2設(shè)為‘1’即可通過(guò)訪問(wèn)CF卡的D0“D7來(lái)存取數(shù)據(jù)。而-CEl可以作為CF卡的片選信號(hào),通過(guò)設(shè)-CEl為‘0’來(lái)選通CF卡,即-CEl接C8051F020的高位地址P5.7來(lái)線選CF卡。當(dāng)CF卡插入其插座時(shí),CDl和CD2都連接到地(CND);C8051F020的P1.1、P1.2分別連到CDl和CD2,并可以通過(guò)檢測(cè)P1.1和P1.2來(lái)判斷CF卡是否插入CF卡插座。CF卡工作于存儲(chǔ)器模式下,-OE和-WE分別接C8051F020的讀(P1.6)、寫(xiě)(P1.7)線。當(dāng)REG為‘0’時(shí),訪問(wèn)CF卡的屬性寄存器;REG為‘1’時(shí),CF卡在存儲(chǔ)器模式下對(duì)數(shù)據(jù)進(jìn)行讀寫(xiě)操作。

2 C8051F020對(duì)CF卡的數(shù)據(jù)讀寫(xiě)

圖1所示電路的CF卡在存儲(chǔ)器模式下有關(guān)數(shù)據(jù)讀寫(xiě)的一些寄存器地址如表1所示。

采用C8051F020微控制器控制CF卡存儲(chǔ)及設(shè)計(jì)研究

CF卡1個(gè)扇區(qū)為512B,這些數(shù)據(jù)都是從表1中的第0個(gè)寄存器中讀出,而且每次讀寫(xiě)數(shù)據(jù)最小為1個(gè)扇區(qū),但也可以設(shè)置從第2個(gè)寄存器中讀出,1次讀寫(xiě)幾個(gè)扇區(qū)。

C8051F020對(duì)CF卡讀扇區(qū)數(shù)據(jù)的過(guò)程是:首先讀取第7個(gè)寄存器的狀態(tài)字,如果為50H表示沒(méi)有錯(cuò)誤,并且CF卡已經(jīng)準(zhǔn)備好;然后再分別向第2、3、4、5、6個(gè)寄存器寫(xiě)入相應(yīng)的數(shù)據(jù)指定需要讀寫(xiě)的扇區(qū);最后向第7個(gè)寄存器寫(xiě)20H或21H,讀取狀態(tài)字為58H后讀取數(shù)據(jù),其流程如圖2所示。

采用C8051F020微控制器控制CF卡存儲(chǔ)及設(shè)計(jì)研究

C8051F020對(duì)CF卡向指定扇區(qū)寫(xiě)數(shù)據(jù)的命令是30H或31H,其操作亦與讀數(shù)據(jù)相似,只不過(guò)在寫(xiě)入數(shù)據(jù)后要等到CF卡中數(shù)據(jù)穩(wěn)定并進(jìn)入空閑狀態(tài)才能結(jié)束這一過(guò)程。

在CF卡讀寫(xiě)時(shí),分別向第2、3、4、5、6個(gè)寄存器寫(xiě)入CF卡需要訪問(wèn)的扇區(qū)位置,其寫(xiě)入模式有2種:即CHS(Cylinder/Head/Sector)模式和LBA(Logical Block Address)模式。通過(guò)設(shè)置第6個(gè)寄存器的第6位LBA確定其模式:即如果LBA=0,則為CHS模式;如果LBA=I,則為L(zhǎng)BA模式。

由CHS模式到LBA模式的轉(zhuǎn)換如下:

采用C8051F020微控制器控制CF卡存儲(chǔ)及設(shè)計(jì)研究

其中LBA是邏輯塊地址,Cn是柱面號(hào),HpC是每個(gè)柱面的磁頭數(shù),Hn是磁頭數(shù),Sn是扇區(qū)號(hào),SpH是每個(gè)磁頭(簇)的扇區(qū)數(shù)。

3 CF卡的文件存儲(chǔ)

FAT(File Allocation Table)文件系統(tǒng)產(chǎn)生于20世紀(jì)70年代末到80年代初,是微軟的MS-DOS操作系統(tǒng)所支持的文件系統(tǒng)。目前FAT文件系統(tǒng)有3種類(lèi)型:FATl2、FATl6和FAT32。它們的不同是在磁盤(pán)上實(shí)際的FAT結(jié)構(gòu)中每個(gè)記錄(Entry)所占的位數(shù)不同。FATl2占12位(1.5字節(jié)),F(xiàn)ATl6占16位(2字節(jié)),F(xiàn)AT32占32位(4字節(jié))。每一個(gè)記錄中的數(shù)據(jù)都按照低字節(jié)在前、高字節(jié)在后排列。

在CF卡格式化時(shí),首先要了解CF卡的容量等一系列信息。通過(guò)對(duì)CF卡寫(xiě)入命令ECH就可以讀出1個(gè)扇區(qū),其中包含了該CF卡的一些參數(shù)的信息,如容量、默認(rèn)的柱面數(shù)、默認(rèn)的磁頭數(shù)、每個(gè)扇區(qū)的字節(jié)數(shù)、每個(gè)磁道的扇區(qū)數(shù)和CF卡上總的扇區(qū)數(shù)等。這為格式化CF卡提供了重要的數(shù)據(jù)。

在格式化后的CF卡中,F(xiàn)AT文件系統(tǒng)由如下4部分組成:

0區(qū):保留區(qū)(引導(dǎo)區(qū))。

1區(qū):FAT區(qū)。

2區(qū):根目錄區(qū)(FAT32中存在的是浮動(dòng)的FDT表)。

3區(qū):文件、目錄與數(shù)據(jù)區(qū)(下面簡(jiǎn)稱數(shù)據(jù)區(qū))。

引導(dǎo)區(qū)中包含了整個(gè)FAT文件系統(tǒng)的重要信息,即BPB(BIOS Parameter Block)。下面為BPB的幾個(gè)重要數(shù)據(jù)結(jié)構(gòu):

采用C8051F020微控制器控制CF卡存儲(chǔ)及設(shè)計(jì)研究

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

如果BPB.FATSzl6不為‘0’,就可以根據(jù)下面公式計(jì)算數(shù)據(jù)區(qū)的第一個(gè)扇區(qū)地址。

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

因此數(shù)據(jù)區(qū)所占用的扇區(qū)數(shù):

DataSec=”BPB“.TotSecl6-FirstDataSec (5)

根目錄的第一個(gè)扇區(qū)地址(在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卡有多個(gè)分區(qū),則(3)~(8)式計(jì)算出的參數(shù)只是相對(duì)當(dāng)前分區(qū)而言的,且數(shù)據(jù)區(qū)所占用的簇?cái)?shù)為:

CntofClus=”DataSec“/BPB.SecPerClus (9)

在格式化CF卡時(shí),根據(jù)CF卡容量的大小決定FAT數(shù)據(jù)結(jié)構(gòu)中的一些參數(shù),再由式(9)算出數(shù)據(jù)區(qū)總的簇?cái)?shù),并根據(jù)總簇?cái)?shù)的大小確定FAT形式。一般來(lái)說(shuō),如果CntofClus<4 084簇,則可以格式化成FATl2的形式;如果≥4 084簇而<65 524簇,則可以格式化成FATl6的形式;如果≥65 524簇,則格式化成FAT32的形式。

若給定一個(gè)簇的序號(hào)N(N≥2),則在數(shù)據(jù)區(qū)對(duì)應(yīng)該簇的第一個(gè)扇區(qū)序號(hào)為:

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

式(10)表示了FAT與數(shù)據(jù)區(qū)的對(duì)應(yīng)關(guān)系,如圖3所示。在FAT區(qū)每一個(gè)記錄的位置與數(shù)據(jù)區(qū)中的一簇?cái)?shù)據(jù)相對(duì)應(yīng),同時(shí),這個(gè)記錄又存儲(chǔ)著下一簇序號(hào),從而一個(gè)件在FAT區(qū)形成一個(gè)鏈表。至于每一簇的序號(hào)在FAT中的存儲(chǔ)位置,可以根據(jù)格式化的形式(FATl2、FAT16、FAT32)確定。設(shè)每一記錄占i個(gè)字節(jié),則第N個(gè)記錄在N×i的位置上。

采用C8051F020微控制器控制CF卡存儲(chǔ)及設(shè)計(jì)研究

文件的結(jié)束符在FATl2下為0xFFF,在FATl6下為0xFFFF,在FAT32下為0x0FFFFFFF。如果在寫(xiě)入時(shí)遇到損壞的簇,則在對(duì)應(yīng)位置寫(xiě)損壞的標(biāo)志(FATl2下為0xFF5FATl6下為0xFFF7,F(xiàn)AT32下為0x0FFFFFF7),并且在{表中跳過(guò)這一損壞的簇。在刪除一個(gè)文件時(shí),要把該文{在FAT區(qū)的鏈表全部寫(xiě)‘0’,釋放空間。這樣,該鏈表中所對(duì)應(yīng)的數(shù)據(jù)區(qū)又可以被新的文件分配。 一個(gè)FAT的目錄項(xiàng)或文件項(xiàng)通常占用32字節(jié),并存儲(chǔ)該目錄或文件的相關(guān)信息。其數(shù)據(jù)結(jié)構(gòu)如下:

采用C8051F020微控制器控制CF卡存儲(chǔ)及設(shè)計(jì)研究

這個(gè)數(shù)據(jù)結(jié)構(gòu)中12字節(jié)的名字是目錄名還是文件名,由成員Attr決定。如果是目錄Attr可設(shè)為10H;如果j文件,Attr可設(shè)為20H,也可以是幾個(gè)屬性的組合;如果為長(zhǎng)文件名,Attr可設(shè)為OFH。有關(guān)詳細(xì)的長(zhǎng)文件名可參見(jiàn)文獻(xiàn)。

成員FstClusHI和FstClusL0記錄了文件第一簇?cái)?shù)據(jù)對(duì)應(yīng)FAT中的記錄序號(hào),即圖3中第一簇的序號(hào),從而可以根據(jù)鏈表查找下一簇?cái)?shù)據(jù)。在FATl2和FATl6下,成員FstClusHI總為‘0’。

4 討論

本文只介紹了動(dòng)態(tài)腦電圖系統(tǒng)的有關(guān)文件存儲(chǔ)的部分,C8051F020的功能并沒(méi)有得到充分利用。實(shí)際上C8051F020還要完成系統(tǒng)的其他很多功能。用戶可以根據(jù)自己系統(tǒng)的實(shí)際需要選擇合適的單片機(jī)。本系統(tǒng)在設(shè)計(jì)時(shí)著重考慮系統(tǒng)的功耗、體積、速度等方面的因素,所以C8051F020采用非復(fù)用的方式,以求節(jié)省1片鎖存器對(duì)低位地址的鎖存。

CF卡在寫(xiě)入文件時(shí),由于要記錄24小時(shí)的腦電圖信號(hào)。為了防止異常發(fā)生使文件寫(xiě)入失敗,可以定時(shí)地更新FAT區(qū)該文件的記錄鏈表和所存放文件數(shù)據(jù)結(jié)構(gòu)的根目錄區(qū)或數(shù)據(jù)區(qū)中該文件的大小。只有保存了這些信息,所寫(xiě)入的數(shù)據(jù)才能正常地讀取。 此外,在寫(xiě)入文件時(shí),如果遇到一個(gè)扇區(qū)寫(xiě)入失敗,則整個(gè)簇都不能用。為此:(1)必須查找下一個(gè)未占用的簇,再把這一簇中已經(jīng)正確寫(xiě)入的扇區(qū)中的數(shù)據(jù)復(fù)制到下一簇中。這樣緩沖區(qū)中只要保存一個(gè)扇區(qū)的腦電信號(hào)就可以。(2)先對(duì)這一簇進(jìn)行檢測(cè),確定沒(méi)有錯(cuò)誤后再向該簇寫(xiě)人數(shù)據(jù)。這種方法雖然比較簡(jiǎn)單,但占用系統(tǒng)的時(shí)間比較多,且在檢測(cè)到?jīng)]有錯(cuò)誤后也不能完全保證下一次寫(xiě)入時(shí)不發(fā)生錯(cuò)誤。所以第一種方法的可靠性要高。

實(shí)驗(yàn)證明,SanDisk和EagleTec等公司的不同容量的CF卡用于本系統(tǒng)中都能夠正確地對(duì)采集到的腦電圖信號(hào)進(jìn)行存取。


聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 微控制器
    +關(guān)注

    關(guān)注

    48

    文章

    7336

    瀏覽量

    150105
  • 計(jì)算機(jī)
    +關(guān)注

    關(guān)注

    19

    文章

    7174

    瀏覽量

    87156
  • 定時(shí)器
    +關(guān)注

    關(guān)注

    23

    文章

    3218

    瀏覽量

    113679
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    基于C8051F020單片機(jī)與RTL8019AS的音頻峰值采集終端設(shè)計(jì)

    C8051F020是美國(guó)Silicon Laboratories公司生產(chǎn)的8051系列完全集成的混合信號(hào)ISP Flash微控制器
    的頭像 發(fā)表于 12-21 08:35 ?4523次閱讀
    基于<b class='flag-5'>C8051F020</b>單片機(jī)與RTL8019AS的音頻峰值采集終端設(shè)計(jì)

    C8051F020型單片機(jī)與SJA1000型控制器接口電路

    圖為C8051F020型單片機(jī)與SJA1000型控制器的硬件連接電路原理。SJA1000占用了0x8000-0x80FF的外部RAM空間。當(dāng)單片機(jī)訪問(wèn)以上空間時(shí)片選信號(hào)會(huì)選中SJA1000
    發(fā)表于 06-14 05:00

    基于C8051F020和USB的OLED控制系統(tǒng)設(shè)計(jì)

    介紹基于C8051F020 型單片機(jī)與CH375 型接口電路的OLED 控制系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)方法,詳細(xì)描述了CH375 型USB 總線通用接口電路的特點(diǎn)及工作原理,給出C8051F020 型單片機(jī)通過(guò)CH375
    發(fā)表于 08-28 14:23 ?40次下載

    基于C8051F020的SD控制器設(shè)計(jì)

    給出一種應(yīng)用于飛機(jī)飛行數(shù)據(jù)采集儀的SD 設(shè)計(jì)方案,該方案選用與8051 完全兼容的高性能單片機(jī)C8051F020 作為主控制器,采用SPI
    發(fā)表于 09-21 10:57 ?85次下載

    基于C8051F020的觸摸屏驅(qū)動(dòng)控制

    C8051F020單片機(jī)通過(guò)SPI接口驅(qū)動(dòng)四線電阻式觸摸屏控制器TSC2046,利用中斷方式驅(qū)動(dòng)TSC2046設(shè)計(jì)軟件。介紹了觸摸屏的工作原理、TSC2046工作方式以及典型應(yīng)用電路。
    發(fā)表于 12-14 17:09 ?103次下載
    基于<b class='flag-5'>C8051F020</b>的觸摸屏驅(qū)動(dòng)<b class='flag-5'>控制</b>

    C8051F020數(shù)據(jù)手冊(cè)

    The C8051F020/1/2/3 devices are fully integrated mixed-signal System-on-a-Chip MCUs with 64 digital
    發(fā)表于 01-09 15:24 ?173次下載
    <b class='flag-5'>C8051F020</b>數(shù)據(jù)手冊(cè)

    C8051F020原理圖

    C8051F020原理圖的,需要的朋友可以看看哈。
    發(fā)表于 11-20 15:49 ?104次下載

    C8051F020混合信號(hào) ISP FLASH 微控制器

    新華龍C8051F020中文資料
    發(fā)表于 01-08 16:28 ?14次下載

    C8051F020單片機(jī)例程

    c8051f020 例程
    發(fā)表于 03-16 08:00 ?40次下載

    基于C8051F020控制器的SD卡通訊研究

    給出一種應(yīng)用于飛機(jī)飛行數(shù)據(jù)采集儀的SD設(shè)計(jì)方案,該方案選用與8051完全兼容的高性能單片機(jī)C8051F020作為主控制器采用SPI總線與
    發(fā)表于 09-08 14:29 ?9次下載
    基于<b class='flag-5'>C8051F020</b>主<b class='flag-5'>控制器</b>的SD卡通訊<b class='flag-5'>研究</b>

    基于C8051F020的驅(qū)動(dòng)程序設(shè)計(jì)

    簡(jiǎn)單介紹了MCGS組態(tài)軟件和C8051F020單片機(jī)的特點(diǎn)。并以基于C8051F020單片機(jī)設(shè)計(jì)的廠房燈光控制器被背景,詳細(xì)闡述了開(kāi)發(fā)基于MCGS的C8051F020單片機(jī)驅(qū)動(dòng)程序的方
    發(fā)表于 09-25 17:20 ?22次下載
    基于<b class='flag-5'>C8051F020</b>的驅(qū)動(dòng)程序設(shè)計(jì)

    C8051F020單片機(jī)對(duì)觸摸屏的驅(qū)動(dòng)控制

    在用C8051F020實(shí)現(xiàn)對(duì)TFT6448BS-5.7的控制過(guò)程中,采用總線方式進(jìn)行控制。因?yàn)門(mén)FT6448BS-5.7液晶控制器自帶有鎖存
    發(fā)表于 04-16 16:39 ?1384次閱讀
    <b class='flag-5'>C8051F020</b>單片機(jī)對(duì)觸摸屏的驅(qū)動(dòng)<b class='flag-5'>控制</b>

    使用C8051F020實(shí)現(xiàn)SD控制器的設(shè)計(jì)資料說(shuō)明

    給出一種應(yīng)用于飛機(jī)飛行數(shù)據(jù)采集儀的SD設(shè)計(jì)方案, 該方案選用與8051完全兼容的高性能單片機(jī)C8051F020作為主控制器采用SPI總線
    發(fā)表于 10-22 17:33 ?3次下載
    使用<b class='flag-5'>C8051F020</b>實(shí)現(xiàn)SD<b class='flag-5'>卡</b>主<b class='flag-5'>控制器</b>的設(shè)計(jì)資料說(shuō)明

    采用C8051F020 DAC產(chǎn)生任意波形設(shè)計(jì)

    采用C8051F020 DAC產(chǎn)生任意波形設(shè)計(jì)(電源技術(shù))-采用C8051F020 DAC產(chǎn)生任意波形
    發(fā)表于 09-17 14:58 ?27次下載
    <b class='flag-5'>采用</b><b class='flag-5'>C8051F020</b> DAC產(chǎn)生任意波形設(shè)計(jì)

    采用C8051F020 DAC產(chǎn)生任意波形

    采用C8051F020 DAC產(chǎn)生任意波形(實(shí)用電源技術(shù))-采用C8051F020DAC產(chǎn)生任意波形? ? ? ? ? ? ? ? ? ?
    發(fā)表于 09-18 13:22 ?32次下載
    <b class='flag-5'>采用</b><b class='flag-5'>C8051F020</b> DAC產(chǎn)生任意波形