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

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

2009-07-15
作者:胡曉宏

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

?

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

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

?


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

?


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

?

?

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

?

?

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


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

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