日产精品视频无码免费_亚洲蜜臀AV日韩熟妇在线_国产亚洲精品女人久久久久久 _妞中文字幕在线视频导航

電子開發(fā)網(wǎng)

電子開發(fā)網(wǎng)電子設(shè)計 | 電子開發(fā)網(wǎng)Rss 2.0 會員中心 會員注冊
搜索: 您現(xiàn)在的位置: 電子開發(fā)網(wǎng) >> 電子開發(fā) >> 單片機(jī) >> 正文

單片機(jī)實(shí)現(xiàn)對CF卡的讀寫

作者:佚名    文章來源:本站原創(chuàng)    點(diǎn)擊數(shù):    更新時間:2011-5-14

簡述:CF卡是一種包含了控制和大容量Flash存儲器的標(biāo)準(zhǔn)器件,具有容量大、體積小、高性能、攜帶方便等優(yōu)點(diǎn),已廣泛應(yīng)用在數(shù)據(jù)采集系統(tǒng)和許多消息類電子產(chǎn)品中。本文詳細(xì)介紹CF卡在單片機(jī)系統(tǒng)中的硬件接口電路,以及單片機(jī)對CF卡進(jìn)行標(biāo)準(zhǔn)文件讀寫的實(shí)現(xiàn),且寫入的文件能被Windo

引言

         由于CF卡(Compact Flash Card)具有容量大、體積小、高性能、攜帶方便等優(yōu)點(diǎn),而且讀寫速度快,可與多種電腦操作系統(tǒng)平臺兼容,因此在數(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)文件格式寫入,在PC機(jī)端通過讀卡器將寫入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)對CF卡的讀寫,就是從底層對它進(jìn)行直接操作,包括尋址、創(chuàng)建文件和讀寫等。

1 CF卡簡介

        CF卡內(nèi)集成了控制器、Flash Memory陣列和讀寫緩沖區(qū),如圖1所示。內(nèi)置的智能控制器,使外圍電路設(shè)計大大簡化,而且完全符合PC機(jī)內(nèi)存卡的國際聯(lián)合會PCMCIA (Personal Computer Memory Card International Association)和ATA(Advanced Technology Attachment)接口規(guī)范。實(shí)際上,控制器起到了一種協(xié)議轉(zhuǎn)換的作用,即將對Flash Memory的讀寫轉(zhuǎn)化成了對控制器的訪問,這樣不同的CF卡都可以用單一的機(jī)構(gòu)來讀寫,而不用擔(dān)心兼容性問題。CF卡的緩沖區(qū)結(jié)構(gòu),使得外部設(shè)備與CF 卡通信的同時,CF卡的片內(nèi)控制器可以對Flash進(jìn)行讀寫。這種設(shè)計可以增加CF卡數(shù)據(jù)讀寫的可靠性,同時提高數(shù)據(jù)傳輸速率。

CF卡結(jié)構(gòu)圖

        CF卡支持多種接口訪問模式,有符合PCMCIA規(guī)范的 Memory Mapped模式、I/O Card模式和符合ATA規(guī)范的True IDE模式。上電時,OE(9腳)為低電平,CF卡進(jìn)入True IDE模式,此時引腳OE也叫ATA SEL;上電時,OE(9腳)為高電平,CF卡進(jìn)入PCMCIA模式,即Memory Mapped模式或I/O Card模式,此時可通過修改配置選項(xiàng)寄存器進(jìn)入相應(yīng)的模式。

配置選項(xiàng)寄存器格式如下:

SRESET

LevelREQ

conf5

conf4

conf3

conf2

conf1

conf0

SRESET—軟復(fù)位信號;

Level REQ—中斷模式選擇(電平或邊沿觸發(fā))。

例如,要加入Memory mapped模式,只需要在上電時保證OE為高電平,因?yàn)榕渲眠x項(xiàng)寄存器的conf5~conf0位的初始化值為“00000”;而要進(jìn)入I/O Card模式,除了上電時保證OE為高電平外,還要進(jìn)一步設(shè)置conf5~conf0,如表1所列。但是對于具體型號的CF卡而言,下面三種情況也是被 CFA(CF card Association)所允許的:
①上電時進(jìn)入True IDE模式,工作過程中,只要監(jiān)測到OE變?yōu)楦撸屯顺鯰rue IDE模式;
②允許卡在復(fù)位時重新配置;
③上電時進(jìn)入PCMCIA模式,允許過程中,只要監(jiān)測到OE變?yōu)榈停瓦M(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,對應(yīng)16位系統(tǒng)
0 0 0 0 1 0 I/O,對應(yīng)1F0h-1F7h/3F6h-3F3h
0 0 0 0 1 1 I/O,對應(yīng)170h-177h/376h-377h


2、 CF卡與51單片機(jī)的接口

       CF卡在PC Memory方式與51芯片的接口電路如圖2所示。由于采用CF卡上電后自動進(jìn)入的Memory模式,而且不存在對特性寄存器的讀寫,故可將REG接高電平。片選信號CE1和CE2組合可選擇數(shù)據(jù)位寬度,如表2所列。圖2中CE2接VCC,選用的是8位(D7~D0)數(shù)據(jù)寬度。
CF卡與51單片機(jī)的接口

表2 數(shù)據(jù)寬度選擇

  8位(D7~D0) 8位(D15~D8) 16位 高  阻 
CE1 0 1 0 1
CE2 1 0 0 1


       為了實(shí)現(xiàn)即插即用的功能,CE卡上提供了兩個用來檢測卡是否存在的引腳(CD1、CD2),由卡內(nèi)部接地。當(dāng)主機(jī)檢測到與其相連的CD1和CD2兩個引腳同時為低電平時,可判斷出卡與主機(jī)相連;否則,卡未與主機(jī)相連。

      由于I/O口緊張,RDY/BSY引腳懸空不用,通過查詢狀態(tài)寄存器能判斷CF卡是否準(zhǔn)備就緒。在實(shí)際應(yīng)用中,由于一次至少要讀寫一個扇區(qū)512字節(jié),所以要擴(kuò)充一塊RAM。我們選用的是62256,容量為 32KB,這樣便可以支持大到2GB 的CF卡(參見下文),增加了其擴(kuò)展性。

3、 FAT文件系統(tǒng)

       FAT文件系統(tǒng)是基于DOS的文件系統(tǒng)。常說的FAT有12位的FAT12和16位的FAT16,另外就是32位的FAT32。考慮到CF卡的容量有限,宜選用FAT16。這里只對FAT文件系統(tǒng)作一簡單介紹,更詳細(xì)的內(nèi)容請見參考文獻(xiàn)。

      磁盤的尋址方式有兩種:物理尋址C/H/S(柱面/磁頭/扇區(qū))方式和邏輯塊LBA(Logical Block Addressing)尋址方式。二者之間的轉(zhuǎn)換關(guān)系為:

LBA地址=(柱面號×磁頭數(shù)+磁頭號)×扇區(qū)數(shù)+扇區(qū)數(shù)-1

采用LBA尋址方式,沒有磁頭和磁道的轉(zhuǎn)換操作,在訪問連續(xù)的扇區(qū)時,操作速度比物理尋址方式要快,而且也簡化了對磁盤的訪問。

硬盤的結(jié)構(gòu)布局分為MBR(主引導(dǎo)扇區(qū))和最多4個邏輯分區(qū)(含DOS分區(qū)或非DOS分區(qū)),而在DOS邏輯分區(qū)中的磁盤組織如下:

引導(dǎo)扇區(qū) FAT1 FAT2 根目標(biāo)區(qū) 數(shù)據(jù)區(qū)


        引導(dǎo)扇區(qū)DBR(DOS Boot Record):位于LBA 0扇區(qū),包含跳轉(zhuǎn)指令、廠商標(biāo)識和DOS版本號、BPB(BIOS Parameter Block,BIOS參數(shù)塊)、DOS引導(dǎo)程序、結(jié)束標(biāo)志字AA55。其中BPB包含每扇區(qū)字節(jié)數(shù)、每簇扇區(qū)數(shù)、每個FAT扇區(qū)數(shù)、扇區(qū)總線、根目錄項(xiàng)數(shù)等等參數(shù)。

      FAT是給每個文件分配磁盤物理空間的表格。FAT16簇數(shù)的上限是2 16,即65536個,每簇扇區(qū)數(shù)的上限是64個,因此其分區(qū)空間的上限為2G。FAT1位于邏輯1扇區(qū)。FAT簇映射中,0000表示空簇, FFF0~FFF6備用,F(xiàn)FF8~FFFF表示簇鏈結(jié)束,F(xiàn)FF7表示壞簇,其余值表示其后續(xù)簇的簇號。圖3所示的文件起始簇號為2,結(jié)束簇號為4,共占用2、3、4三個簇。
FAT表

     簇是存儲文件的最小單位,可以包含多個扇區(qū)。當(dāng)文件本身或文件的最后一簇哪怕只有1個字節(jié),也要占去1簇。這樣,當(dāng)這種文件很多時,空間的浪費(fèi)是很可觀的。

     文件目錄表FDT(File Directory Table)是操作系統(tǒng)尋找文件的入口,其內(nèi)容是每一個文件的目錄。FDT中的每一個目錄項(xiàng)由32個字節(jié)組成。前8個字節(jié)是文件名,不足時用空格填滿。緊跟著的3個字節(jié)是文件擴(kuò)展名,接下來是10個字節(jié)的系統(tǒng)保留字。然后是文件產(chǎn)生的時刻和日期占8個字節(jié),再后的2個字節(jié)是文件首簇號,最后4個字節(jié)是文件大小。FDT的起始扇區(qū)可由FAT的大小計算出,而FAT的大小可在DBR中讀出。

4 軟件實(shí)現(xiàn)

      按照FAT16方式存儲文件,是一個通用的解決方案。因?yàn)檫@樣可以得到現(xiàn)有的DOS和 Windows系統(tǒng)的支持,但是代價是浪費(fèi)一部分空間,也就是說存儲效率下降了。為了改善這一情況,采用了改進(jìn)的存儲方法。就是先創(chuàng)建一個空文件,并根據(jù)需要為其分配一個大的存儲空間,寫入動作只是從尾部追加數(shù)據(jù)。這樣就避免了很多小文件的產(chǎn)生,既可以充分利用存儲空間,又可以使地址連續(xù)。

      CF卡的讀寫是通過卡內(nèi)的緩沖區(qū)進(jìn)行的,不支持直接讀寫存儲區(qū)域。緩沖區(qū)為一個FIFO結(jié)構(gòu),讀寫順序進(jìn)行,不支持隨機(jī)存取,系統(tǒng)只能一次性地按順序讀完或?qū)懲晁幸粋或多個扇區(qū)。

     設(shè)計時使用LBA方式訪問CF卡比較方便,讀寫時只需要先在相應(yīng)的寄存器寫入LBA地址即可。要設(shè)定LBA方式,需訪問驅(qū)動器/磁頭寄存器。內(nèi)存模式下部分寄存器譯碼如表3所列。

表3 內(nèi)存模式下部分寄存器譯碼

REG A10 A9~A4 A3~A0 offset OE=0 WE=0
1 0 X 0000 0 偶字節(jié)讀 側(cè)字節(jié)寫
1 0 X 0001 1 錯誤寄存器 特性寄存器
1 0 X 0010 2 扇區(qū)數(shù) 扇區(qū)數(shù)
1 0 X 0011 3 扇區(qū)號(LBA7~0) 扇區(qū)號(LBA7~0)
1 0 X 0100 4 低柱面號(LBA15~8) 低柱面號(LBA15~8)
1 0 X 0101 5 高柱面號(LBA23~16 高柱面號(LBA23~16)
1 0 X 0110 6 驅(qū)動器/磁頭(LBA27~24) 驅(qū)動器/磁頭(LBA27~24)
1 0 X 0111 7 狀態(tài)寄存器 命令寄存器

驅(qū)動器/磁頭寄存器結(jié)構(gòu)如下:

1 LBA 1 DRV HS3 HS2 HS1 HS0

LBA—1為LBA方式,0為C/H/S(柱面/磁頭/扇區(qū))方式;DRV—選擇驅(qū)動器0或驅(qū)動器1;HS3~HS0—LBA27~24,或?yàn)镃/H/S方式的磁頭號。

       文件創(chuàng)建過程也就是針對FAT和FDT的讀寫過程。首先在 FDT中申請表項(xiàng),創(chuàng)建文件名稱、屬性、起始簇號、文件大小等,然后修改FAT,分配數(shù)據(jù)空間,備份FAT。文件存儲就是要先從FDT和FAT中獲得文件的起始簇號和簇號鏈,即LBA 地址。然后,將此地址送給寄存器3、4、5、6(表3中的offset3、4、5、6),向扇區(qū)數(shù)寄存器填寫讀寫數(shù)據(jù)所占的扇區(qū)個數(shù),再向CF卡的命令寄存器寫入操作的命令字,寫操作30H,讀操作20H。當(dāng)寫入命令或?qū)懭霐?shù)據(jù)后要查詢狀態(tài)寄存器的狀態(tài),以判定CF卡是否準(zhǔn)備就緒或?qū)懭氤晒Α顟B(tài)寄存器結(jié)構(gòu)如下:

BUSY RDY DWF DSC DRQ CORR 0 ERR


各位的值為1時含義如下:

BUSY—CF卡記,此時不能接受其它命令;

RDY—卡可以接受命令;

DWF—寫錯誤;

DSC—卡準(zhǔn)備就緒;

DRQ—CF卡請求數(shù)據(jù)傳送;

CORR—數(shù)據(jù)錯誤但被修正,不會終止多扇區(qū)讀操作;

ERR—在上一命令以某種錯誤結(jié)束,可以在錯誤寄存器中查看錯誤類型。

下面以向CF卡寫一個扇區(qū)數(shù)據(jù)為例,給出圖4所示流程和C程序代碼。
寫扇區(qū)流程

bit flag_1,flag_2;

void cfwr()

{

unsigned char status;

cfwr_comm(0xe0,0x00,0x00,0x6c);

//寫參數(shù)命令,指向邏輯6c扇區(qū)

do{status=PBYTE[0x07]; //讀狀態(tài)寄存器

if((status & 0x01)==0x01)

flag_1=1; //若ERR=1,置出錯標(biāo)志,做相應(yīng)處理

while(status!=0x58);

cfwr_dat(); //寫入數(shù)據(jù)

do{status=PBYTE[0x07]; //讀狀態(tài)寄存器

if((status & 0x20)==0x20)

flag_2=1; //若DWF=1時,置出錯標(biāo)志,做相應(yīng)處理

while(status!=0x50);

}

void cfwr_comm(unsigned char lba27,lba23,la15,lba7) //寫參數(shù)命令函數(shù)

{PBYTE[0x02] 扇區(qū)數(shù)為1

PBYTE[0x03]=lba7;

PBYTE[0x04]=la15;

PBYTE[0x05]=lba23;

PBYTE[0x06]=lba27; //設(shè)定LBA方式

PBYTE[0x07]=0x30; //送寫入命令30H

}

void cfwr_dat() //寫數(shù)據(jù)函數(shù)

{unsigned int i,temp;

unsigned char xdata dat[512]; //dat[]存放一個扇區(qū)的數(shù)據(jù)

for (i=0;i<512;i++) //連續(xù)寫512字節(jié)

{P1=P1 & 0xf8; //選中外部RAM

temp=dat[i];

P1++; //根據(jù)實(shí)際電路選擇中CF卡

PBYTE[0x00]=temp;}

}

5 結(jié)論

筆者在濕度檢測儀中,根據(jù)本文所介紹的方法,用CF卡向計算機(jī)轉(zhuǎn)存數(shù)據(jù),可以非常方便地對數(shù)據(jù)進(jìn)行維護(hù)。

Tags:單片機(jī),CF卡的讀寫  
責(zé)任編輯:admin
請文明參與討論,禁止漫罵攻擊,不要惡意評論、違禁詞語。 昵稱:
1分 2分 3分 4分 5分

還可以輸入 200 個字
[ 查看全部 ] 網(wǎng)友評論
關(guān)于我們 - 聯(lián)系我們 - 廣告服務(wù) - 友情鏈接 - 網(wǎng)站地圖 - 版權(quán)聲明 - 在線幫助 - 文章列表
返回頂部
刷新頁面
下到頁底
晶體管查詢
亚洲精品影院| 成人a大片在线观看| 久久精品店| 日日夜夜婷婷| 九九久久国产精品| 久久精品店| 99色播| 青青久久国产成人免费网站| 精品国产三级a| 欧美爱爱网| 欧美激情一区二区三区在线播放 | 成人高清视频在线观看| 免费国产在线视频| 九九精品影院| 99色视频| 国产一区二区精品久久| 欧美激情一区二区三区视频 | 一级毛片视频免费| 国产精品自拍一区| 日本在线不卡视频| 免费国产在线观看| 国产伦久视频免费观看 视频| 国产亚洲免费观看| 日本特黄一级| 999精品在线| 91麻豆精品国产高清在线| 国产精品1024永久免费视频| 美女被草网站| 99久久精品国产高清一区二区| 午夜精品国产自在现线拍| 日本免费乱理伦片在线观看2018| 国产一区二区精品久久91| 国产91精品一区二区| 精品国产一级毛片| 国产成人精品综合在线| 精品视频一区二区三区免费| 天天色成人网| 国产视频一区在线| 日本特黄特色aaa大片免费| 国产韩国精品一区二区三区| 色综合久久天天综合观看| 国产国语对白一级毛片| 韩国毛片基地| 毛片高清| 日本特黄特色aaa大片免费| 国产一区二区精品久久| 色综合久久天天综合观看| 日日爽天天| 国产网站在线| 亚洲精品中文一区不卡| 日韩在线观看视频免费| 青青久热| 国产不卡在线观看视频| 欧美夜夜骑 青草视频在线观看完整版 久久精品99无色码中文字幕 欧美日韩一区二区在线观看视频 欧美中文字幕在线视频 www.99精品 香蕉视频久久 | 欧美一级视频高清片| 四虎影视久久久免费| 国产视频一区在线| 亚洲爆爽| 韩国三级视频网站| 久久精品道一区二区三区| 欧美一级视| 久久99这里只有精品国产| 天天色成人网| 午夜在线亚洲男人午在线| 九九久久国产精品| 日本免费看视频| 国产视频一区在线| 亚洲 男人 天堂| 欧美激情一区二区三区中文字幕| 精品视频在线观看一区二区| 国产一区免费在线观看| 日本免费区| 欧美另类videosbestsex视频| 欧美激情一区二区三区在线| 九九精品影院| 国产一区二区精品尤物| 91麻豆精品国产高清在线| 精品视频一区二区三区| 国产一区精品| 美女免费毛片| 国产一区精品| 黄色免费三级| 日日日夜夜操| 国产激情一区二区三区| 日韩欧美一及在线播放| 欧美激情一区二区三区在线播放| 一级女性全黄久久生活片| 国产视频一区二区在线观看| 韩国毛片免费大片| 国产精品自拍亚洲| 精品在线免费播放| 日韩在线观看视频网站| 日韩在线观看免费| 免费毛片播放| 成人影院一区二区三区| 国产不卡在线观看视频| 欧美激情一区二区三区视频| 久久99中文字幕久久| 国产成人啪精品| 好男人天堂网 久久精品国产这里是免费 国产精品成人一区二区 男人天堂网2021 男人的天堂在线观看 丁香六月综合激情 | 亚洲精品永久一区| 尤物视频网站在线| 成人影视在线观看| 午夜欧美成人久久久久久| 一级毛片视频免费| 国产一区二区精品| 国产a视频精品免费观看| 97视频免费在线观看| 国产网站在线| 日韩中文字幕一区| 国产不卡高清在线观看视频 | 99久久精品国产国产毛片| 日日夜夜婷婷| 国产伦精品一区二区三区无广告| 免费国产在线视频| 青草国产在线观看| 美国一区二区三区| 久久国产精品自线拍免费| 国产伦久视频免费观看视频| 精品久久久久久免费影院| 亚洲精品影院| 国产成人精品综合| 国产成人啪精品视频免费软件| 久久精品道一区二区三区| 精品久久久久久中文字幕2017| 人人干人人插| 久久精品人人做人人爽97| 久久久久久久网| 免费一级片在线| 免费一级片在线观看| 尤物视频网站在线观看| 午夜在线亚洲| 久久精品成人一区二区三区| 九九免费精品视频| 久久99中文字幕| 成人av在线播放| 黄视频网站在线观看| 韩国毛片| 欧美激情一区二区三区中文字幕| 国产成人女人在线视频观看| 精品视频在线看 | 成人免费一级纶理片| 精品视频在线看 | 日韩免费在线视频| 色综合久久天天综合| 午夜激情视频在线播放| 国产亚洲精品成人a在线| 美女免费精品视频在线观看| 日本伦理片网站| 一级女性全黄久久生活片| 亚洲天堂免费| 国产91精品露脸国语对白| 91麻豆精品国产自产在线| 国产一区二区精品久久| 91麻豆高清国产在线播放| 91麻豆精品国产自产在线| 麻豆污视频| 日本免费看视频| 精品在线观看国产| 成人免费观看视频| 日韩av成人| 黄色短视频网站| 欧美大片一区| 欧美一级视| 欧美α片无限看在线观看免费| 日日爽天天| 日本伦理黄色大片在线观看网站| 精品久久久久久中文| 国产不卡在线观看| 免费毛片基地| 日本久久久久久久 97久久精品一区二区三区 狠狠色噜噜狠狠狠狠97 日日干综合 五月天婷婷在线观看高清 九色福利视频 | 国产极品白嫩美女在线观看看| 久久99中文字幕久久| 欧美大片aaaa一级毛片| 精品国产亚一区二区三区| 黄视频网站在线免费观看| a级精品九九九大片免费看| 一级毛片视频播放| 午夜激情视频在线观看| 欧美爱爱网| 黄色免费三级| 国产91精品系列在线观看| 一级女人毛片人一女人| 欧美激情一区二区三区在线播放 | 国产一区二区精品| 国产欧美精品| 麻豆污视频| 久久99中文字幕久久| 精品国产香蕉在线播出| 香蕉视频久久| 日本在线www| 九九精品久久| 国产一级生活片| 成人在免费观看视频国产| 国产成人精品影视| 欧美夜夜骑 青草视频在线观看完整版 久久精品99无色码中文字幕 欧美日韩一区二区在线观看视频 欧美中文字幕在线视频 www.99精品 香蕉视频久久 | 黄色福利片| 精品在线观看国产| 免费国产在线视频| 亚洲女人国产香蕉久久精品|