<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 模擬技術(shù) > 設計應用 > 關(guān)于嵌入式U盤(pán)讀寫(xiě)器接口技術(shù)和系統設計

關(guān)于嵌入式U盤(pán)讀寫(xiě)器接口技術(shù)和系統設計

——
作者:桂林電子科技大學(xué) 張峰峰 潘明 韋海旋 賈轉紅 時(shí)間:2007-01-08 來(lái)源:Etime 收藏
引言

隨著(zhù)USB技術(shù)和閃存技術(shù)的飛速發(fā)展,移動(dòng)存儲設備的速度和容量日新月異,但在工業(yè)控制的上位機和下位機之間,數據傳輸依然采用傳統的串并口技術(shù),特別對一些前端的便攜式采集系統,需要采集后臨時(shí)存儲,再拿回來(lái)傳給作為上位機的PC機進(jìn)行數據處理,給人們帶來(lái)很多不變,為此,本文提出了一種方法--利用的便捷特性開(kāi)發(fā)一種基于的USB,方便地將采集數據以文件方式寫(xiě)入,PC機不需要任何特殊驅動(dòng)便可以完成對數據的處理回放。利用本方法可以徹底解決下位機與PC機之間的數據傳輸難的問(wèn)題。

1 硬件設計

系統采用TI公司的MSP430F149作為MCU,Cypress公司的SL811HS作為USB設備控制器,充分發(fā)揮各自?xún)?yōu)勢滿(mǎn)足低功耗要求。

1.1 MSP430

TI公司的 MSP430系列單片機是一種超低功耗的混合信號控制器,針對不同的應用而由各種不同的

模塊組成,這些微控制器可用電池工作,且使用的時(shí)間很長(cháng),MSP430單片機具有16位RISC結構,CPU中的16個(gè)寄存器和常數發(fā)生器使其能達到最高的代碼效率,靈活的時(shí)鐘源可以使器件的功率消耗最低,數字控制的振蕩器(DCO)可使器件從低功耗模式迅速喚醒,在短于6μs的時(shí)間內激活到活躍的工作方式,非常的內/外設和I/O端口資源,端口P1和P2支持中斷喚醒。

1.2 SL811HS

Cypress公司的SL811HS是一款超低功耗的USB主/從設備控制器,主設備或從設備模式由軟件控制,USB主/從設備控制器支持全高速和低速數據傳輸,內部256字節的SRAM緩存,訪(fǎng)問(wèn)時(shí)地址自動(dòng)加1,可大大縮短讀寫(xiě)指令周期,具有標準的8位雙向微處理器總線(xiàn)接口,其中從設備模式下支持DMA。

1.3 硬件系統框圖

     

USB讀寫(xiě)器結構框圖

USB結構框圖如圖1所示,主要由MSP430F149和SL811HS構成,MSP430支持串口輸入和14位的并口輸入,P2.7用作中斷喚醒位,P2.6用作標準位區分數據和命令,通過(guò)P4口向SL811發(fā)送控制信號,P6用作普通的雙向總線(xiàn)接口與SL811進(jìn)行數據交換,P1.1支持中斷喚醒接收SL811的中斷請求。

2 軟件設計

為了使上位PC機能夠直接讀取該寫(xiě)入的數據,數據存儲按照FAT32文件管理方式存儲,其中涉及USB和UFI協(xié)議以及FAT32文件存儲格式。

2.1 USB協(xié)議

USB(通用串行總線(xiàn))用于將USB接口的外圍設備(device)連接到主機(host),實(shí)現二者之間數據傳輸的外部總線(xiàn)結構,是一種快速、靈活的總線(xiàn)接口,USB的傳輸類(lèi)型有控制(control)、批量(bulk)、中斷(interrupt)和同步(synchronous)傳輸4種,它最大的特點(diǎn)是易于使用,即插即用,主要是用在中速和低速的外設。

控制數據用于在USB接入總線(xiàn)時(shí)對其進(jìn)行配置,其他的驅動(dòng)軟件可以根據具體的應用來(lái)選擇使用控制傳輸,這種數據傳輸不會(huì )丟失數據。

典型的批量數據包括象使用打印機或掃描儀時(shí)所出現的大數據量的數據,這種批量數據是連續的,通過(guò)在硬件中實(shí)現差錯檢測功能,并且有選擇地進(jìn)行一定的應進(jìn)重試操作,可以在硬件層次上保證數據的可靠交換。

由設備自發(fā)產(chǎn)生的數據傳輸是中斷數據傳輸,這類(lèi)數據傳輸可以由USB設備在任意時(shí)刻發(fā)起,而且USB總線(xiàn)以不低于設備說(shuō)明的速率進(jìn)行傳輸。

同步數據在產(chǎn)生、傳送和處理過(guò)程中是連續的和實(shí)時(shí)的,在穩定的同步數據發(fā)送和接收速率中包含了相應的時(shí)鐘信息,為了保持定時(shí)關(guān)系,同步數據必須按照接收的速率進(jìn)行傳輸。

2.2 BULK_ONLY和UFI協(xié)議

USB設備分為5大類(lèi),即顯示器、通信設備、音頻設備、人機輸入和海量存儲。通常所用的U盤(pán)、移動(dòng)硬盤(pán)均屬于海量存儲類(lèi)。海量存儲類(lèi)的規范中包括4個(gè)獨立的子規范,即CBI傳輸、Bulk-Only傳輸、ATA命令塊、UFI命令規范。前兩個(gè)協(xié)議定義了數據/命令/狀態(tài)在USB總線(xiàn)上的傳輸方法,Bulk-Only傳輸協(xié)議僅僅使用Bulk端點(diǎn)傳送數據/命令/狀態(tài),CBI傳輸協(xié)議則使用Control/bulk/interrupt三種類(lèi)型的端點(diǎn)進(jìn)行數據/命令/狀態(tài)的傳送。后兩個(gè)協(xié)議定義了存儲介質(zhì)的操作命令,ATA協(xié)議用于硬盤(pán),UFI協(xié)議則針對USB移動(dòng)存儲,U盤(pán)讀寫(xiě)器的設計遵循Bulk-Only傳輸協(xié)議和UFI命令規范。UFI命令塊規范是針對USB移動(dòng)存儲而制定的,它總共定義了19個(gè)12字節長(cháng)度的操作命令。

Bulk-Only事務(wù)以主機向設備發(fā)送CBW(Command Block Warp)包,并以建立相應的數據傳輸開(kāi)始的,設備接收到CBW包,檢查并解釋它,試圖滿(mǎn)足主機的要求,并通過(guò)CSW(Command State Wrap)包向主機返回狀態(tài)信息。

CBW是主機通過(guò)Bulk-Out端點(diǎn)向設備發(fā)送的命令塊包,在CBW中使用方向位和數據傳輸長(cháng)度域指明期待的傳輸,CBW必須起始于包邊界,并且必須以31字節的短包傳輸

結束,相繼的數據包和CSW包必須開(kāi)始于一個(gè)新的包邊界,所有的CBW包必須按低字節在前的次序傳輸。

CBW包結構如圖2所示,各域含義如下:

    

CBW包結構

1)命令塊包標識。CBW包標記,表明這是一個(gè)CBW包,這個(gè)域的值為43425355H。

2)命令塊標記。當設備返回相應的CSW包時(shí),必須使命令狀態(tài)標記域的值與此值相同。

3)數據傳輸長(cháng)度。指明命令執行期間在Bulk端點(diǎn)上傳數據的字節長(cháng)度,如果這個(gè)域的值是0,則在CBW和CSW之間設備和主機不傳輸任何數據,并且設備將忽略在命令塊標旗域中的方向位的值。

4)命令塊標旗。方向位規定了Bulk端點(diǎn)數據傳輸的方向,其他位預留。

5)邏輯單元號。指定命令塊被發(fā)送到的邏輯單元號,如果設備不支持多個(gè)邏輯單元號,則主機將這個(gè)域設置為0。

6)CBWCB長(cháng)度,定義了CBWCB的有效長(cháng)度,合法值為1-16。

7)CBWCB。由設備執行的命令,由設備解釋。

CSW向主機表明來(lái)自于CBW包的命令塊的執行狀態(tài)。設備收到CBW包解析處理后將通過(guò)Bulk-In端點(diǎn)發(fā)送一個(gè)CSW包。

CSW開(kāi)始于包邊界,并以13字節的短包結束,結構如圖3所示,各域含義如下: 

    

命令狀態(tài)包結構

1)命令狀態(tài)包標識。CSW包的標記,表明這是一個(gè)CSW包,這個(gè)域的值為53425355H。

2)命令狀態(tài)標記。次域的值域CBW包的命令塊標記相同。

3)數據殘余。實(shí)際數據傳輸量與CBW包中規定的數據傳輸長(cháng)度的差值。

4)命令執行狀態(tài),表明命令成功或失敗信息,如果命令執行成功,則設備將設置此域的值為0,非0值;則表明失敗或錯誤。

UFI是針對USB移動(dòng)存儲而制定的命令塊協(xié)議,它規定了主機和設備進(jìn)行信息交換所使用的命令塊、數據和狀態(tài)信息,Bulk-Only傳輸協(xié)議定義了傳輸這些信息的方法,其中UFI命令塊是封裝在CBW包中的CBWCB,設備通過(guò)讀取CBWCB確定具體要執行何種操作命令(如讀命令),如何完成這個(gè)命令(如從閃存的哪個(gè)地址讀,需要讀取的長(cháng)度),設備將命令的執行狀態(tài)封裝成CSW返回給主機。

UFI用于大多數命令的12字節命令塊的描述,結構如圖4所示,其中各參數意義如下:

1)操作命令代碼。指明所需要執行的操作命令;

2)邏輯單元號。指明命令將發(fā)送到哪個(gè)邏輯單元,如果設備只有一個(gè)邏輯單元,則此域的值為0。

3)邏輯塊地址。命令操作的起始地址。

4)傳輸長(cháng)度,指明請求傳輸的數據量,通常以"扇區"作單位,但是有幾個(gè)命令是以"字節"作單位的,對于這些命令,傳輸長(cháng)度域可以以不同的名字標識,若此域的值為0,則表面沒(méi)有數據需要傳輸。

5)參數列表長(cháng)度,用于指定發(fā)送到設備的字節數,這個(gè)域典型的應用于發(fā)送到設備的參數命令塊(如模式參數、診斷參數等),若此域的值為0,則表面沒(méi)有數據需要傳輸。

6)分配長(cháng)度,指明主機已經(jīng)分配的用于返回數據的最大字節長(cháng)度,若此值為0,則表明沒(méi)有數據需要傳輸。

UFI結構

2.3 FAT32

FAT是Microsoft較早推出的文件系統,具有高度的兼容性,目前仍然廣泛應用于個(gè)人電腦尤其是移動(dòng)存儲設備中,FAT由引導扇區、FAT1表、FAT2表、目錄和文件區組成(其中FAT2表是FAT1表的備份)。磁盤(pán)的管理是以扇區為單位的,而移動(dòng)存儲設備則是以塊為單位的,FAT將塊映射成扇區,原理相同,FAT將磁盤(pán)空間以一定數目的扇區為單位進(jìn)行劃分,這樣的單位成為"簇"。通常情況下,每扇區512字節的原則是不變的,簇的大小一般是2n(n為整數)個(gè)扇區的大小。所以以簇為單位而不以扇區為單位進(jìn)行磁盤(pán)的分配

,是因為當區分容量較大時(shí),采用512字節的扇區管理,會(huì )增加FAT表的項數和大文件存取的消耗,使文件系統效率不高。

引導扇區DBR(DOS Boot Record)通常占用分區的第0扇區,共512字節,FAT表緊隨其后。DBR的第一部分是一個(gè)x86跳轉指令、廠(chǎng)商標志和操作系統版本號,接下來(lái)的從偏移0x0B開(kāi)始的是一段描述能夠使可執行引導代碼找到相關(guān)參數的消息,通常稱(chēng)之為BPB。最后是引導程序代碼以及扇區結束標志。BPB中記錄了扇區大小、簇的扇區數、保留扇區數、FAT表大小和文件系統類(lèi)型等重要參數,用于文件的索引和定位計算。

2.4 軟件系統模塊

USB讀寫(xiě)器軟件由主模塊、USB模塊、BULK模塊、FAT模塊和中斷處理模塊組成。各模塊之間相互協(xié)調調用,共同完成對U盤(pán)文件的讀寫(xiě)創(chuàng )建。

USB模塊負責檢測USB設備的移入/移出,對插入的設備進(jìn)行枚舉,分配設備地址端點(diǎn)號,配置設備接口端點(diǎn)描述符,建立BULK_ONLY輸入/輸出通道,BULK模塊則在已建立的BULK_ONLY輸入/輸出通道發(fā)送CBW數據包,并接收CSW數據包,通過(guò)CBW中嵌入的CBWCB信息確定對U盤(pán)讀/寫(xiě)操作的扇區位置和大小,FAT模塊主要完成簇和扇區間的索引定位,即在U盤(pán)內尋址,利用BPB中的參數計算給定扇區的所在簇以及進(jìn)入休眠狀態(tài),等待外部中斷喚醒。

中斷處理模塊是在中斷喚醒后根據中斷類(lèi)型進(jìn)入不同功能子模塊的,也是整個(gè)軟件系統的核心部分。中斷模塊接收到串口或并口數據后,根據內部命令字要求進(jìn)行解析,命令字要求如圖5所示,串口或并口數據接收流程如圖6所示。 

    

命令和數據結構

     

數據接收流程

3 應用測試結果

在人造金剛石壓力機壓力錘頭裂紋檢測中,采用聲發(fā)射技術(shù)進(jìn)行實(shí)時(shí)監控,一旦出現異常立即停機報警,為了對出現異常時(shí)的數據進(jìn)一步分析,需要將現場(chǎng)數據帶回研究室。利用基于的U盤(pán)讀寫(xiě)器可以免去現場(chǎng)布線(xiàn)的麻煩,還可以省去PC機端驅動(dòng)軟件的開(kāi)發(fā),直接將現場(chǎng)數據寫(xiě)入U盤(pán),方便地利用PC機中安裝的MATLAB進(jìn)行數據的詳細分析處理。

結語(yǔ)

基于U盤(pán)讀寫(xiě)器的設計實(shí)現可以方便地將下位機數據存儲到普通U盤(pán),徹底解決了工業(yè)控制中上下位機之間數據傳輸難的問(wèn)題,也為以后其他領(lǐng)域的應用創(chuàng )造了前提條件,如長(cháng)途客車(chē)中的黑匣子、家庭老人健康監測,隨著(zhù)USB技術(shù)和閃存技術(shù)的進(jìn)一步發(fā)展,該設備應用領(lǐng)域將會(huì )逐步擴展,市場(chǎng)前景良好。

linux操作系統文章專(zhuān)題:linux操作系統詳解(linux不再難懂)


評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>