<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 模擬技術 > 設計應用 > 嵌入式U盤讀寫器接口技術和系統(tǒng)設計

          嵌入式U盤讀寫器接口技術和系統(tǒng)設計

          ——
          作者:桂林電子科技大學 張峰峰 潘明 韋海旋 賈轉紅 時間:2007-01-26 來源:《單片機與嵌入式系統(tǒng)應用》 收藏

          引言

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

          1 硬件設計

          系統(tǒng)采用ti公司的msp430f149作為mcu,cypress公司的sl811hs作為usb設備控制器,充分發(fā)揮各自優(yōu)勢滿足低功耗要求。

          1.1 msp430

          ti公司的 msp430系列單片機是一種超低功耗的混合信號控制器,針對不同的應用而由各種不同的模塊組成,這些微控制器可用電池工作,且使用的時間很長,msp430單片機具有16位risc結構,cpu中的16個寄存器和常數(shù)發(fā)生器使其能達到最高的代碼效率,靈活的時鐘源可以使器件的功率消耗最低,數(shù)字控制的振蕩器(dco)可使器件從低功耗模式迅速喚醒,在短于6μs的時間內(nèi)激活到活躍的工作方式,非常的內(nèi)/外設和i/o端口資源,端口p1和p2支持中斷喚醒。

          1.2 sl811hs

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

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

          usb讀寫器結構框圖如圖1所示,主要由msp430f149和sl811hs構成,msp430支持串口輸入和14位的并口輸入,p2.7用作中斷喚醒位,p2.6用作標準位區(qū)分數(shù)據(jù)和命令,通過p4口向sl811發(fā)送控制信號,p6用作普通的雙向總線接口與sl811進行數(shù)據(jù)交換,p1.1支持中斷喚醒接收sl811的中斷請求。

          本文引用地址:http://www.ex-cimer.com/article/21547.htm

          2 軟件設計

          為了使上位pc機能夠直接讀取該讀寫器寫入u盤的數(shù)據(jù),數(shù)據(jù)存儲按照fat32文件管理方式存儲,其中涉及usb和ufi協(xié)議以及fat32文件存儲格式。

          2.1 usb協(xié)議

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

          控制數(shù)據(jù)用于在usb接入總線時對其進行配置,其他的驅動軟件可以根據(jù)具體的應用來選擇使用控制傳輸,這種數(shù)據(jù)傳輸不會丟失數(shù)據(jù)。

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

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

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

          2.2 bulk_only和ufi協(xié)議

          usb設備分為5大類,即顯示器、通信設備、音頻設備、人機輸入和海量存儲。通常所用的u盤、移動硬盤均屬于海量存儲類。海量存儲類的規(guī)范中包括4個獨立的子規(guī)范,即cbi傳輸、bulk-only傳輸、ata命令塊、ufi命令規(guī)范。前兩個協(xié)議定義了數(shù)據(jù)/命令/狀態(tài)在usb總線上的傳輸方法,bulk-only傳輸協(xié)議僅僅使用bulk端點傳送數(shù)據(jù)/命令/狀態(tài),cbi傳輸協(xié)議則使用control/bulk/interrupt三種類型的端點進行數(shù)據(jù)/命令/狀態(tài)的傳送。后兩個協(xié)議定義了存儲介質的操作命令,ata協(xié)議用于硬盤,ufi協(xié)議則針對usb移動存儲,u盤讀寫器的設計遵循bulk-only傳輸協(xié)議和ufi命令規(guī)范。ufi命令塊規(guī)范是針對usb移動存儲而制定的,它總共定義了19個12字節(jié)長度的操作命令。

          bulk-only事務以主機向設備發(fā)送cbw(command block warp)包,并以建立相應的數(shù)據(jù)傳輸開始的,設備接收到cbw包,檢查并解釋它,試圖滿足主機的要求,并通過csw(command state wrap)包向主機返回狀態(tài)信息。

          cbw是主機通過bulk-out端點向設備發(fā)送的命令塊包,在cbw中使用方向位和數(shù)據(jù)傳輸長度域指明期待的傳輸,cbw必須起始于包邊界,并且必須以31字節(jié)的短包傳輸結束,相繼的數(shù)據(jù)包和csw包必須開始于一個新的包邊界,所有的cbw包必須按低字節(jié)在前的次序傳輸。

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

          1)命令塊包標識。cbw包標記,表明這是一個cbw包,這個域的值為43425355h。

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

          3)數(shù)據(jù)傳輸長度。指明命令執(zhí)行期間在bulk端點上傳數(shù)據(jù)的字節(jié)長度,如果這個域的值是0,則在cbw和csw之間設備和主機不傳輸任何數(shù)據(jù),并且設備將忽略在命令塊標旗域中的方向位的值。

          4)命令塊標旗。方向位規(guī)定了bulk端點數(shù)據(jù)傳輸?shù)姆较?,其他位預留。

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

          6)cbwcb長度,定義了cbwcb的有效長度,合法值為1-16。

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

          csw向主機表明來自于cbw包的命令塊的執(zhí)行狀態(tài)。設備收到cbw包解析處理后將通過bulk-in端點發(fā)送一個csw包。

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


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

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

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

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

          ufi是針對usb移動存儲而制定的命令塊協(xié)議,它規(guī)定了主機和設備進行信息交換所使用的命令塊、數(shù)據(jù)和狀態(tài)信息,bulk-only傳輸協(xié)議定義了傳輸這些信息的方法,其中ufi命令塊是封裝在cbw包中的cbwcb,設備通過讀取cbwcb確定具體要執(zhí)行何種操作命令(如讀命令),如何完成這個命令(如從閃存的哪個地址讀,需要讀取的長度),設備將命令的執(zhí)行狀態(tài)封裝成csw返回給主機。

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

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

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

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

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

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

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

          2.3 fat32

          fat是microsoft較早推出的文件系統(tǒng),具有高度的兼容性,目前仍然廣泛應用于個人電腦尤其是移動存儲設備中,fat由引導扇區(qū)、fat1表、fat2表、目錄和文件區(qū)組成(其中fat2表是fat1表的備份)。磁盤的管理是以扇區(qū)為單位的,而移動存儲設備則是以塊為單位的,fat將塊映射成扇區(qū),原理相同,fat將磁盤空間以一定數(shù)目的扇區(qū)為單位進行劃分,這樣的單位成為"簇"。通常情況下,每扇區(qū)512字節(jié)的原則是不變的,簇的大小一般是2n(n為整數(shù))個扇區(qū)的大小。所以以簇為單位而不以扇區(qū)為單位進行磁盤的分配,是因為當區(qū)分容量較大時,采用512字節(jié)的扇區(qū)管理,會增加fat表的項數(shù)和大文件存取的消耗,使文件系統(tǒng)效率不高。

          引導扇區(qū)dbr(dos boot record)通常占用分區(qū)的第0扇區(qū),共512字節(jié),fat表緊隨其后。dbr的第一部分是一個x86跳轉指令、廠商標志和操作系統(tǒng)版本號,接下來的從偏移0x0b開始的是一段描述能夠使可執(zhí)行引導代碼找到相關參數(shù)的消息,通常稱之為bpb。最后是引導程序代碼以及扇區(qū)結束標志。bpb中記錄了扇區(qū)大小、簇的扇區(qū)數(shù)、保留扇區(qū)數(shù)、fat表大小和文件系統(tǒng)類型等重要參數(shù),用于文件的索引和定位計算。

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

          usb讀寫器軟件由主模塊、usb模塊、bulk模塊、fat模塊和中斷處理模塊組成。各模塊之間相互協(xié)調調用,共同完成對u盤文件的讀寫創(chuàng)建。

          usb模塊負責檢測usb設備的移入/移出,對插入的設備進行枚舉,分配設備地址端點號,配置設備接口端點描述符,建立bulk_only輸入/輸出通道,bulk模塊則在已建立的bulk_only輸入/輸出通道發(fā)送cbw數(shù)據(jù)包,并接收csw數(shù)據(jù)包,通過cbw中嵌入的cbwcb信息確定對u盤讀/寫操作的扇區(qū)位置和大小,fat模塊主要完成簇和扇區(qū)間的索引定位,即在u盤內(nèi)尋址,利用bpb中的參數(shù)計算給定扇區(qū)的所在簇以及進入休眠狀態(tài),等待外部中斷喚醒。

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


          3 應用測試結果

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

          結語

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



          關鍵詞:

          評論


          相關推薦

          技術專區(qū)

          關閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();