《電子技術(shù)應用》
您所在的位置:首頁 > 嵌入式技術(shù) > 業(yè)界動態(tài) > 基于LM3S316的微控制器仿真USB設(shè)備

基于LM3S316的微控制器仿真USB設(shè)備

2009-07-15
作者:胡曉宏

??? 摘 要:提出了基于LM3S316實現(xiàn)與PC機通訊的方法。給出了硬件實現(xiàn)及軟件設(shè)計思想。該方法使用微控制器仿真USB設(shè)備,降低了功耗、成本。
??? 關(guān)鍵詞:LM3S316;USB;PC機

?

??? USB(Universal Serial Bus)即通用串行總線,為計算機和外設(shè)間的數(shù)據(jù)通信提供了一個很好的解決方案, 具有傳輸速度快、連接靈活、使用方便等特點。作為一種高速的新型總線接口,USB支持即插即用設(shè)備,并能為外設(shè)提供電源且易于擴展。因此,可廣泛應用于打印機、掃描儀、大容量外部數(shù)據(jù)存儲器、數(shù)碼相機和高速數(shù)據(jù)采集等多種設(shè)備中?,F(xiàn)在市場上USB設(shè)備多是由專門的USB控制芯片來實現(xiàn)其應用控制,芯片內(nèi)集成了USB協(xié)議,成本較高。本文提出用LM3S316微處器來實現(xiàn)其與PC機通訊的方法,以實現(xiàn)仿真USB,從而降低成本。
1 通用串行總線USB的底層結(jié)構(gòu)
1.1 USB設(shè)備

??? USB設(shè)備可以接在PC上任意的USB接口,其物理接口的結(jié)構(gòu)如圖1(a)所示。使用HUB還可以實現(xiàn)USB的擴展,使更多的USB設(shè)備連接到系統(tǒng)中。USB的HUB上有一個上行的端口(連到Host),有多個下行端口用來連接到其他設(shè)備。Host和USB設(shè)備之間的關(guān)系如圖1(b)所示。

?


1.2 USB的物理信號
??? USB的電纜共有4根線,兩邊突出的為+5 V的電源線,另外2根是數(shù)據(jù)線。如圖2所示,VBUS是設(shè)備供電接線,電壓+5 V,最大供電電流500 mA,向設(shè)備提供電源。具有過流保護、供電控制等功能。

?


??? 當USB設(shè)備插入接口時電源線先接通然后再接通數(shù)據(jù)線,拔出時先斷開數(shù)據(jù)線再斷開電源線,這正是USB設(shè)備可熱拔插的原因之一。USB總線可以在不使用時掛起,節(jié)約能源。
1.3 USB版本
??? 常規(guī)USB通訊協(xié)議有USB1.1、USB2.0。USB1.1版本的USB設(shè)備,支持全速12 Mb/s低速通訊(1.5 Mb/s);USB2.0版本的USB設(shè)備,支持高速通訊(480 Mb/s)。由于USB2.0的通訊速率太高,必須由單獨芯片控制,所以芯片仿真無法實現(xiàn)。
1.4 通訊建立?
??? 串口通訊另一個標準RS232的通訊發(fā)起方可以從兩端發(fā)起,而USB通訊發(fā)起方總是在主機端(HOST),設(shè)備端總是響應主機端的通訊請求。主機端如果是PC機,每隔1ms發(fā)起一次對一個設(shè)備的通訊建立請求,設(shè)備接收到訪問己方請求后,立即與主機建議起通訊連接。
1.5 電氣特性
??? “D-是低速信號總線,D+是高速信號總線”的說法是不準確的,因為USB信號總線是平衡差分式的,這點類似于485總線。所謂“D-是低速信號總線”是指對于低速設(shè)備(如鼠標、鍵盤) 時,D-這條線在USB設(shè)備端加1.5 kΩ上拉電阻。反之對于全速設(shè)備(如U盤、打印機、掃描儀),D+信號線加1.5 kΩ上拉電阻。
1.6 NRZI編碼及位填充
??? 由于USB總線沒有同步時鐘信號線,想要主機與設(shè)備建立良好通訊同步效果,只有從數(shù)據(jù)序列中提取同步時鐘。類似RS232串口通訊,USB通訊的建立也有起始信息,RS232是一個起始位,而USB起始位有8位,稱之為同步域(或段)格式為01010100。由于RS232的通訊速率較低,所以兩端同步時鐘不大于5%即可實現(xiàn)良好通訊。然而USB通訊最低速率也大于1 Mb/s,對于時鐘的同步要求嚴格得多,況且USB的數(shù)據(jù)包中的每個字節(jié)不象RS232每個字節(jié)都有起始位(僅在包頭有同步域)。鑒此,USB通訊時必須在數(shù)據(jù)包的位序列中提取同步信息。想象一下,如果數(shù)據(jù)包序列中數(shù)據(jù)位全是邏輯“1”或者全是邏輯“0”,芯片是無法提取同步信息的,為此需要一個高效的編碼方案,于是就有了NRZI和位填充概念。何謂NRZI,如圖3所示,NRZI是非“1”跳變。

?

?

??? 對于NRZI編碼方式會遇到一個嚴重的問題,即若一長串連續(xù)的“1”將會導致無電平跳變,逐漸地累積,以致引起機收起,最終丟失同步信號,使得讀取的時序發(fā)生嚴重的錯誤。因此,在NRZI編碼之間,還需執(zhí)行所謂的位填充(bit-stuffing)工作。連續(xù)地傳輸6個“1”位,強制在NRZI編碼的數(shù)據(jù)流中加入跳變。這就確保接收器至少可以在每7 bit的時間間隔內(nèi)檢測到一次跳變,使接收器和傳送的數(shù)據(jù)保持同步。圖4說明了位填充的工作方式。

?

?

1.7 USB通訊模式
??? 4種傳輸方式:控制(control)、同步(isochronous)、中斷(interrupt)、大量(bulk)。
??? 其中中斷方式傳輸主要用于定時查詢設(shè)備是否有中斷數(shù)據(jù)要傳送。設(shè)備的端點模式器的結(jié)構(gòu)決定了它的查詢頻率,這種傳輸方式的典型應用在少量的、分散的、不可預測數(shù)據(jù)的傳輸。鍵盤、操縱桿和鼠標就屬于這一類型。中斷方式傳送是單向的,并且對于host來說只有輸入的方式。
1.8 包的概念
??? 一個最小的USB數(shù)據(jù)塊叫做包(packet),它包括同步信號、包標識(packet ID)、CRC和傳送的數(shù)據(jù)。
1.9 端點
??? 端點也可稱為設(shè)備終端,每個USB設(shè)備(USB芯片)內(nèi)可以有1~16個端點。相對USB芯片而言,各端點在通訊中功能傳輸?shù)臄?shù)據(jù)包的大小和傳輸模式有所不同,在芯片內(nèi)數(shù)據(jù)緩沖區(qū)的地址也有所變化。
2? LM3S316控制器
??? Luminary Micro StellarisTM系列的微控制器是首款基于ARM CortexTM-M3的控制器,它將高性能的32位計算引入到對價格敏感的嵌入式微控制器應用中。這些堪稱先鋒的器件擁有與8位和16位器件相同的價格,卻能為用戶提供32位器件的性能,而且所有器件都以小型封裝形式提供。
??? Stellaris系列的LM3S316微控制器擁有ARM微控制器所具有的眾多優(yōu)點,如擁有廣泛使用的開發(fā)工具、片上系統(tǒng)(SoC)的底層結(jié)構(gòu)IP的應用,以及眾多的用戶群體。此外,控制器還采用了ARM可兼容Thumb的Thumb-2指令集來降低內(nèi)存需求量,進而降低成本。 與早期的ARM7相比較,功耗更低、中斷延時更小、代碼執(zhí)行速度更快、價格更低。
??? LM3S316微控制器具有如下特性:
??? (1) 32位RISC性能;
??? (2) 內(nèi)部16 KB單周期Flash存儲器,4 KB單周期SRAM;
??? (3) 3個通用定時器;
??? (4) 同步串行接口(SCI);
??? (5) 串行UART接口;
??? (6) 3個獨立的模擬比較器;
??? (7) PWM;
??? (8) 3~36個可配置的GPIO,每個GPIO都可配置邊沿或電平觸發(fā)中斷;
??? (9) 48腳LQFP封裝。
3 實現(xiàn)原理
??? 由于LM3S316控制器每個GPIO都可配置為中斷引腳,所以在這個應用中只需要用2個同Port的相鄰引腳仿真USB的D+和D-,如圖5所示。


4 軟件設(shè)計
??? USB總線屬一種輪訊方式的總線,主機控制端口初始化所有的數(shù)據(jù)傳輸。
??? 每一總線執(zhí)行動作最多傳送3個數(shù)據(jù)包。按照傳輸前制定好的原則,在每次傳送開始時,主機控制器發(fā)送一個描述傳輸運作的種類、方向、USB設(shè)備地址和終端號的USB數(shù)據(jù)包,這個數(shù)據(jù)包通常稱為標志包(token packet)。USB設(shè)備從解碼后的數(shù)據(jù)包的適當位置取出屬于自己的數(shù)據(jù)。數(shù)據(jù)傳輸方向不是從主機到設(shè)備就是從設(shè)備到主機。在傳輸開始時,由標志包來標志數(shù)據(jù)的傳輸方向,然后發(fā)送端開始發(fā)送包含信息的數(shù)據(jù)包或表明沒有數(shù)據(jù)傳送。接收端也要相應發(fā)送一個握手的數(shù)據(jù)包表明是否傳送成功。發(fā)送端和接收端之間的USB數(shù)據(jù)傳輸,在主機和設(shè)備的端口之間,可視為一個通道。 事務預處理允許對一些數(shù)據(jù)流的通道進行控制,從而在硬件級上防止了對緩沖區(qū)的高估或低估,通過發(fā)送不確認握手信號從而阻塞了數(shù)據(jù)的傳輸速度。當不確認信號發(fā)過后,若總線有空閑,數(shù)據(jù)傳輸將再做一次。這種流控制機制允許靈活的任務安排,可使不同性質(zhì)的流通道同時正常工作,這樣多種流通??稍诓煌g隔進行工作,傳送不同大小的數(shù)據(jù)包。
??? LM3S316芯片利用2個GPIO的中斷監(jiān)控USB總線,當USB總線從空閑狀態(tài)變?yōu)閭鬏敔顟B(tài),也就是總線由主機發(fā)起與同步域(SYN),LM3S316進入USB接收程序。略過同步階段,收到的第一個字節(jié)是PID字段(包標識類型)。這字段的低4位描述此包類型方向(IN或OUT),接下來7位表示設(shè)備的地址,然后是4位端點號索引。LM3S316根據(jù)設(shè)備地址判定主機向本設(shè)備發(fā)起的請求,如果是則根據(jù)包的類型決定繼續(xù)接收數(shù)據(jù)或向主機發(fā)送數(shù)據(jù)。對OUT類型數(shù)據(jù)的后5~16位是CRC校驗(根據(jù)配置決定CRC的位數(shù))。對IN類型,LM3S316將準備好數(shù)據(jù)連同CRC校驗數(shù)據(jù)一同發(fā)往主機。數(shù)據(jù)傳輸階段完成后,主機或設(shè)備要發(fā)回ACK響應,確認傳輸成功。
??? 使用LM3S316控制器仿真USB設(shè)備的方法,極大地方便了用戶的開發(fā),同時降低了功耗、成本。本方法在USB讀卡器、USB編程器、USB接口轉(zhuǎn)RS232等方面具有良好的應用前景。
參考文獻
[1]?Micro 2005.LM3S316數(shù)據(jù)手冊.http://www.zlgmcu.com/luminary/stellaris/lm3S316_ds_cn.pdf.2008.
[2]?USB技術(shù)大全(電子教程).http://d.download.csdm.net/down/374639/deepbluesean.2007.
[3]?郭佑民,王杰,孫啟國. 基于嵌入式微處理器S3C44B0X的USB通信[J].微計算機信息,2008(1-2):21-23.
[4]?肖踞雄.USB系統(tǒng)結(jié)構(gòu)與應用設(shè)計[OL].論文天下論文網(wǎng),http://www.lunwentianxia.am/product.free.6096001.2007.11.

本站內(nèi)容除特別聲明的原創(chuàng)文章之外,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點。轉(zhuǎn)載的所有的文章、圖片、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無法一一聯(lián)系確認版權(quán)者。如涉及作品內(nèi)容、版權(quán)和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當措施,避免給雙方造成不必要的經(jīng)濟損失。聯(lián)系電話:010-82306118;郵箱:aet@chinaaet.com。