新聞中心

EEPW首頁(yè) > 模擬技術(shù) > 設(shè)計(jì)應(yīng)用 > 基于USB-Host的大容量數(shù)據(jù)采集系統(tǒng)的設(shè)計(jì)

基于USB-Host的大容量數(shù)據(jù)采集系統(tǒng)的設(shè)計(jì)

——
作者:長(zhǎng)江大學(xué) 萬(wàn)天軍 徐愛(ài)鈞 李家緒 時(shí)間:2007-01-26 來(lái)源:《單片機(jī)與嵌入式系統(tǒng)應(yīng)用》 收藏

引言

隨著移動(dòng)數(shù)據(jù)存儲(chǔ)領(lǐng)域的日益擴(kuò)大,在嵌入式系統(tǒng)中實(shí)現(xiàn)usb主機(jī)功能,以實(shí)現(xiàn)利用usb存儲(chǔ)設(shè)備進(jìn)行數(shù)據(jù)存儲(chǔ)的需求變得日益迫切。u盤作為新型移動(dòng)存儲(chǔ)設(shè)備,以體積小、速度高、抗震動(dòng)、通用性強(qiáng)的特點(diǎn)倍受青睞,因此,在數(shù)據(jù)采集系統(tǒng)中開發(fā)出嵌入式usb主機(jī)控制u盤作為數(shù)據(jù)存儲(chǔ)器,將具有良好的實(shí)用價(jià)值和應(yīng)用前景。

本文引用地址:http://m.butianyuan.cn/article/21597.htm

1 usb大容量存儲(chǔ)設(shè)備協(xié)議分析

基于usb的大容量數(shù)據(jù)采集系統(tǒng)的設(shè)計(jì),主要是要實(shí)現(xiàn)嵌入式usb-host。要想設(shè)計(jì)出能直接讀寫u盤的嵌入式usb-host,就必須理解usb大容量存儲(chǔ)設(shè)備協(xié)議。目前usb大容量存儲(chǔ)設(shè)備軟件結(jié)構(gòu)如圖1所示。


圖1 usb大容量存儲(chǔ)設(shè)備軟件結(jié)構(gòu)示意圖 圖1中,虛線左邊部分是主機(jī)的驅(qū)動(dòng)程序結(jié)構(gòu),也是嵌入式usb-host所要實(shí)現(xiàn)的。左邊最頂層是fat文件系統(tǒng)層api,用于提供給用戶訪問(wèn)存儲(chǔ)設(shè)備的方法。

u盤中的數(shù)據(jù)都是以文件格式存儲(chǔ)的,fat16因具有高度兼容性而被廣泛應(yīng)用于移動(dòng)存儲(chǔ)設(shè)備中。這里簡(jiǎn)要分析一下fat16文件系統(tǒng)結(jié)構(gòu)和存儲(chǔ)空間的組織原則。

(1)fat16文件系統(tǒng)結(jié)構(gòu)

fat格式的磁盤大致可以分5個(gè)部分:mbr區(qū)、dbr區(qū)、fat區(qū)、fdt區(qū)和data區(qū)。

mbr區(qū):又稱主引導(dǎo)記錄,其后為64字節(jié)的dpt(disk partition table,磁盤分區(qū)表)。由于不需要從u盤啟動(dòng),且u盤就一個(gè)分區(qū),所以u(píng)盤上沒(méi)有這個(gè)數(shù)據(jù)區(qū)。

dbr區(qū):即操作系統(tǒng)引導(dǎo)記錄區(qū),通常占用分區(qū)的第o扇區(qū),共512字節(jié),由跳轉(zhuǎn)指令、bpb、結(jié)束標(biāo)志幾部分組成。

fat區(qū):存放文件分配表。文件分配表是一一對(duì)應(yīng)于數(shù)據(jù)區(qū)簇號(hào)的列表,反映了所有簇的使用情況。每個(gè)表項(xiàng)單元的大小決定了fat的類型,比如fat16的表項(xiàng)單元為16位。fat表一般都有一個(gè)備份。

fdt區(qū):存放著文件目錄表,位于備份fat表之后。fdt由32位的目錄項(xiàng)線性構(gòu)成,記錄著根目錄下每個(gè)文件(子目錄)的起始單元、屬性等。fdt大小為32個(gè)扇區(qū),最多可以保存512個(gè)目錄項(xiàng)。

data區(qū):是真正意義上的數(shù)據(jù)存儲(chǔ)的地方,位于fdt之后,占據(jù)硬盤上的大部分?jǐn)?shù)據(jù)空間。

(2)fat16的存儲(chǔ)空間組織原則

當(dāng)磁盤空間格式化為fat分區(qū)時(shí),fat文件系統(tǒng)就將這個(gè)分區(qū)當(dāng)成整塊可分配的區(qū)域進(jìn)行規(guī)劃,以便數(shù)據(jù)的存儲(chǔ)。fat將磁盤空間以一定數(shù)目的扇區(qū)為單位進(jìn)行劃分,這樣的單位稱為簇。通常情況下,每扇區(qū)512字節(jié)的原則是不變的。簇的大小一般是2n(n為整數(shù))個(gè)扇區(qū)的大小(每個(gè)簇的最大存儲(chǔ)空間為32 kb)。一般采用邏輯塊lba(logical block addressing)尋址方式。

圖1虛線左邊中間的ufi/ata驅(qū)動(dòng)層將應(yīng)用程序的訪問(wèn)轉(zhuǎn)換成ufi或ata命令/數(shù)據(jù)格式,與外部存儲(chǔ)設(shè)備之間按照子規(guī)范ufi或ata的定義進(jìn)行命令/狀態(tài)/數(shù)據(jù)的交換;最底層則是usb傳輸驅(qū)動(dòng),負(fù)責(zé)將上層的ufi/ata數(shù)據(jù)發(fā)送到usb總線上以及接收從存儲(chǔ)設(shè)備返回的狀態(tài)/數(shù)據(jù)。cbi/bulk-only/ata/ufi是usb mass storage類規(guī)范中4個(gè)獨(dú)立的子類規(guī)范的簡(jiǎn)稱。前兩個(gè)子規(guī)范定義了數(shù)據(jù)/命令/狀態(tài)在usb上的傳輸方法。bulk-only傳輸規(guī)范僅使用bulk端點(diǎn)傳送數(shù)據(jù)/命令/狀態(tài),cbi傳輸規(guī)范則使用control/bulk/interrupt三種類型的端點(diǎn)進(jìn)行數(shù)據(jù)/命令/狀態(tài)傳送。后兩個(gè)子規(guī)范則定義了存儲(chǔ)介質(zhì)的操作命令。ata命令規(guī)范用于硬盤,ufi命令規(guī)范是針對(duì)usb移動(dòng)存儲(chǔ)而制定的。

2 嵌入式usb-host設(shè)計(jì)

2.1 硬件設(shè)計(jì)

系統(tǒng)采用增強(qiáng)型8051內(nèi)核的單片機(jī)stc89c516rd+作為中央處理芯片,選用南京沁恒電子公司的ch375s作為usb主機(jī)控制芯片。

stc89c516rd+具有64 kb的flash程序存儲(chǔ)器,1280字節(jié)的ram(256字節(jié)的內(nèi)部ram和1kb的外部ram),支持在系統(tǒng)/在應(yīng)用可編程(isp,iap);ch375s是一款符合usb1.1協(xié)議規(guī)范的usb總線的通用接口芯片,支持usb-host主機(jī)方式和usb-device/slave設(shè)備方式。ch375s具有8位數(shù)據(jù)總線和讀、寫、片選控制線以及中斷輸出,因此ch375s作全速usb-host主機(jī)接口時(shí),外圍元器件只需要晶振和電容,就可以方便地掛接到單片機(jī)/dsp/mcu/mpu等控制器的系統(tǒng)總線上??紤]到讀/寫u盤或移動(dòng)硬盤時(shí)一般都是以扇區(qū)模式進(jìn)行的,所以要加磁盤數(shù)據(jù)緩沖區(qū)和文件數(shù)據(jù)緩沖區(qū)(都是512字節(jié)的整數(shù)倍),并且緩沖區(qū)越大,執(zhí)行的效率越高,所以外擴(kuò)了32 kb的ram。

usb-host電路如圖2所示。

根據(jù)以上分析,即可設(shè)計(jì)如下文件操作:

①創(chuàng)建文件。在fdt中申請(qǐng)新目錄項(xiàng)。

②寫文件。當(dāng)寫一新文件時(shí),需在fat表中查找未使用的簇,并將該簇號(hào)寫入文件對(duì)應(yīng)目錄數(shù)據(jù)結(jié)構(gòu)中的起始簇號(hào)位置。當(dāng)此文件長(zhǎng)度大于一簇時(shí),還需在fat表中對(duì)應(yīng)的起始簇號(hào)位置填入下一可用簇的簇號(hào),直到文件的最后一簇(fat表中的相應(yīng)位置填ffff)。若磁盤有備份fat,則須在備份fat表的相應(yīng)位置填入正確的內(nèi)容。

③刪除文件。除了將fdt中對(duì)應(yīng)的目錄項(xiàng)置相應(yīng)標(biāo)志外,還要修改fat表及備份fat表。將此文件使用的簇號(hào)位置清0,表示此簇當(dāng)前未被使用。

由于在fat16中子目錄被視為特殊的文件,對(duì)其操作類似于文件操作,所以不再贅述。

構(gòu)建的fat16文件系統(tǒng)對(duì)用戶提供文件級(jí)api函數(shù),如ch375_creat_file()、ch375_write_file()、ch375_delete_file()等,當(dāng)執(zhí)行文件級(jí)api函數(shù)時(shí),將調(diào)用seck_empty_cluster()尋找一個(gè)空簇、link_cluster_list()建立簇鏈、seck_sector()定位文件指針等中間函數(shù)。這些中間函數(shù)在調(diào)用ch375s專用于海量存儲(chǔ)設(shè)備類對(duì)應(yīng)的命令,如set_usb_mode、disk_read、disk_write等。下面以創(chuàng)建adc.txt,并向其中寫入a/d采樣數(shù)據(jù)為例,其工作流程如圖3所示。

用fat16文件系統(tǒng)存儲(chǔ)文件時(shí)最小單元為簇。即使一個(gè)很小的文件也會(huì)占用一簇,所以,為了節(jié)約存儲(chǔ)空間,在圖3中將創(chuàng)建同名文件并向其中寫入數(shù)據(jù)轉(zhuǎn)換為向原文件追加數(shù)據(jù)。

3 大容量數(shù)據(jù)采集系統(tǒng)設(shè)計(jì)


利用已設(shè)計(jì)好的嵌入式usb-host搭建起大容量數(shù)據(jù)采集系統(tǒng),系統(tǒng)的框圖如圖4所示。

溫度傳感器采用ds18b20。它是單總線數(shù)字溫度傳感器,測(cè)量范圍為-55~+125℃,可編程9~12位a/d轉(zhuǎn)換精度,測(cè)溫分辨率可達(dá)o.0625℃。液晶采用tm320240eccw,它是320×240點(diǎn)陣液晶,顯示控制芯片是sed1335,既可以以文本模式顯示所測(cè)溫度數(shù)據(jù),也可以自建平面坐標(biāo)以曲線模式顯示溫度數(shù)據(jù)。外擴(kuò)了4×5鍵盤,用于設(shè)定采集的時(shí)間間隔、時(shí)間長(zhǎng)度;系統(tǒng)所允許的高、低溫容限;設(shè)定采集時(shí)的時(shí)間以及輸入自己想查看數(shù)據(jù)的存儲(chǔ)區(qū)域。鍵盤用8279管理,目的是減輕單片機(jī)的負(fù)擔(dān)。因?yàn)閱纹瑱C(jī)處理溫度采集及溫度數(shù)據(jù)在液晶上顯示時(shí)已經(jīng)耗去一些時(shí)間,再加上定時(shí)和不定時(shí)的讀/寫u盤,負(fù)荷已經(jīng)很重了,所以鍵盤掃描與處理交給8279來(lái)做。單片機(jī)采用查詢方式查詢8279的中斷。

驅(qū)動(dòng)程序包括液晶驅(qū)動(dòng)、ds18820驅(qū)動(dòng)和8279驅(qū)動(dòng)。其中主要的工作是液晶驅(qū)動(dòng)程序的編寫。液晶驅(qū)動(dòng)包括初始化液晶、讀寫參數(shù)子程序、寫命令子程序、建坐標(biāo)子程序、繪點(diǎn)子程序、漢字寫入子程序等。液晶在系統(tǒng)初始化和對(duì)u盤初始化與枚舉時(shí)顯示提示信息,在采集過(guò)程中,以曲線模式顯示溫度數(shù)據(jù)。

結(jié)語(yǔ)

基于ch375s實(shí)現(xiàn)的usb-host接口,其硬件結(jié)構(gòu)便于在其他開發(fā)平臺(tái)上擴(kuò)充,其核心的文件層協(xié)議棧采用標(biāo)準(zhǔn)的c語(yǔ)言編寫,具有良好的移植性。類似的基于usb的大容量數(shù)據(jù)采集方案已用于輕軌鐵路、無(wú)紙記錄儀的數(shù)據(jù)存儲(chǔ)系統(tǒng)中。隨著usb otg時(shí)代的到來(lái),基于usb的大容量數(shù)據(jù)采集將會(huì)有非常廣闊的應(yīng)用前景。




關(guān)鍵詞:

評(píng)論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉