當(dāng)前位置:首頁(yè) > 嵌入式 > 嵌入式教程
[導(dǎo)讀]關(guān)于嵌入式U盤(pán)讀寫(xiě)器接口技術(shù)和系統(tǒng)設(shè)計(jì)

引言

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

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

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

1.1MSP430

TI公司的MSP430系列單片機(jī)是一種超低功耗的混合信號(hào)控制器,針對(duì)不同的應(yīng)用而由各種不同的

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

1.2SL811HS

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

1.3硬件系統(tǒng)框圖

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

2軟件設(shè)計(jì)

為了使上位PC機(jī)能夠直接讀取該讀寫(xiě)器寫(xiě)入U(xiǎn)盤(pán)的數(shù)據(jù),數(shù)據(jù)存儲(chǔ)按照FAT32文件管理方式存儲(chǔ),其中涉及USB和UFI協(xié)議以及FAT32文件存儲(chǔ)格式。

2.1USB協(xié)議

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

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

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

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

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

2.2BULK_ONLY和UFI協(xié)議

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

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

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

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

CBW包結(jié)構(gòu)如圖2所示,各域含義如下:

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

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

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

4)命令塊標(biāo)旗。方向位規(guī)定了Bulk端點(diǎn)數(shù)據(jù)傳輸?shù)姆较?,其他位預(yù)留。

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

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

7)CBWCB。由設(shè)備執(zhí)行的命令,由設(shè)備解釋。

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

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

[!--empirenews.page--]

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

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

3)數(shù)據(jù)殘余。實(shí)際數(shù)據(jù)傳輸量與CBW包中規(guī)定的數(shù)據(jù)傳輸長(zhǎng)度的差值。

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

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

UFI用于大多數(shù)命令的12字節(jié)命令塊的描述,結(jié)構(gòu)如圖4所示,其中各參數(shù)意義如下:

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

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

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

4)傳輸長(zhǎng)度,指明請(qǐng)求傳輸?shù)臄?shù)據(jù)量,通常以"扇區(qū)"作單位,但是有幾個(gè)命令是以"字節(jié)"作單位的,對(duì)于這些命令,傳輸長(zhǎng)度域可以以不同的名字標(biāo)識(shí),若此域的值為0,則表面沒(méi)有數(shù)據(jù)需要傳輸。

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

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

2.3FAT32

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

,是因?yàn)楫?dāng)區(qū)分容量較大時(shí),采用512字節(jié)的扇區(qū)管理,會(huì)增加FAT表的項(xiàng)數(shù)和大文件存取的消耗,使文件系統(tǒng)效率不高。

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

2.4軟件系統(tǒng)模塊

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

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

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

3應(yīng)用測(cè)試結(jié)果

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

結(jié)語(yǔ)

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

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專(zhuān)欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車(chē)的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

倫敦2024年8月29日 /美通社/ -- 英國(guó)汽車(chē)技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車(chē)工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車(chē)。 SODA V工具的開(kāi)發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車(chē) 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來(lái)越多用戶(hù)希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來(lái)越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對(duì)日本游戲市場(chǎng)的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開(kāi)幕式在貴陽(yáng)舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱(chēng),數(shù)字世界的話(huà)語(yǔ)權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對(duì)環(huán)境變化,經(jīng)營(yíng)業(yè)績(jī)穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤(rùn)率延續(xù)升勢(shì) 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長(zhǎng) 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競(jìng)爭(zhēng)力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競(jìng)爭(zhēng)優(yōu)勢(shì)...

關(guān)鍵字: 通信 BSP 電信運(yùn)營(yíng)商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺(tái)與中國(guó)電影電視技術(shù)學(xué)會(huì)聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會(huì)上宣布正式成立。 活動(dòng)現(xiàn)場(chǎng) NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長(zhǎng)三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡(jiǎn)稱(chēng)"軟通動(dòng)力")與長(zhǎng)三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉