0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

基于LM310嵌入式控制器實現(xiàn)USB設(shè)備功能的設(shè)計

牽手一起夢 ? 來源:單片機與嵌入式系統(tǒng)應(yīng)用 ? 作者:胡曉宏;解成俊 ? 2021-06-14 11:38 ? 次閱讀

目前嵌入式系統(tǒng)在數(shù)字化電子產(chǎn)品領(lǐng)域應(yīng)用越來越廣泛。隨著其成本的降低,大有取代單片機的趨勢。USB 設(shè)備以其小巧、便攜、即插即用、成本低廉等優(yōu)勢在當前的桌面應(yīng)用中有相當?shù)谋戎?,尤其是HID(人機接口)設(shè)備,其免驅(qū)的特點(不用安裝驅(qū)動程序)更是給用戶帶來極大方便。現(xiàn)在市場上USB 設(shè)備多是由專門的USB 控制芯片來實現(xiàn)其應(yīng)用控制,芯片內(nèi)集成了USB 協(xié)議,成本較高。PCB 板的面積較大。本文提出了僅用一片MCU(微處器-單片機)或嵌入式系統(tǒng)芯片來實現(xiàn)其與PC 機的通訊的方法。就單片機而言,多數(shù)單片機速度較慢,對事件的響應(yīng)能力較弱,對全速USB 應(yīng)用不是很好的選擇。而嵌入式系統(tǒng),由于其速度較之單片機快很多,內(nèi)部RAM 容量較大,用其來仿真USB 設(shè)備是個理想的策略。

本文將以LM310 嵌入式芯片仿真USB(HID)鍵盤為例,研究其仿真USB 的方法。

1 USB 協(xié)議規(guī)范

1.1 總線定義:

USB 又稱通用串地總線,共有四條線,如圖1 所示,VBUS 是設(shè)備供電接線,電壓+5V,最大供電電流500mA,向設(shè)備提供電源。具有過流保護、供電控制等功能。D-低速信號線;D+全速信號線;GND 電源地。

1.2 USB 版本

常規(guī)USB 通訊協(xié)議有USB1.1、USB2.0。USB1.1 版本的USB 設(shè)備,支持全速12Mb/S 低速通訊(1.5Mb/S);USB2.0 版本的USB 設(shè)備,支持高速通訊(480Mb/S)。由于USB2.0 的通訊速率太高,所以用芯片仿真無法實現(xiàn)(必須由單獨芯片控制)。

1.3 總線長度

USB1.1 版本的設(shè)備總線長度不大于5 米,通過集線器或中繼器,可達到30 米95 個中斷器或集線器)。U2.0 設(shè)備總線長度不大于3 米。

1.4 通訊建立

串口通訊另一個標準RS232 的通訊發(fā)起方可以從兩端發(fā)起,而USB 通訊發(fā)起方總是在主機端(HOST),設(shè)備端總是響應(yīng)主機端的通訊請求。主機端如果是PC 機,每隔1ms 發(fā)起一次對一個設(shè)備的通訊建立請求,設(shè)備接收到訪問己方請求后,立即與主機建議起通訊連接。

1.5 電氣特性

對于“D-是低帶信號總線,D+是高速信號總線是高速總線”的說法是不準確的,因為USB 信號總線是平衡差分式的,這點類似于485 總線。所謂“在-是低速信號總線”是指當US 陽低速設(shè)備(如鼠標、鍵盤) 時,D-這條線在USB 設(shè)備端加1.5K 上拉電阻。反之對于全速設(shè)備(如U 盤、打印機、掃描儀),D+信號線加1.5K 上拉電阻。

關(guān)于D+、D-信號線上的電壓淺談一下,類似于485 總線,當485 總線的A 相電壓大,B相電壓200mV 時,差分放大器輸出邏輯“1”,反之“0”,USB 總線在低速設(shè)備端D-電壓如大于2.0V,D+電壓小于0.8V 為邏輯“1”反之為“0”,在主機端,一根為大于2.8V,另一根小于0.3 發(fā),在此主機端不做深入探究。

1.6 NRZI 編碼及位填充

由于USB 總線沒有同步時鐘信號線,想要主機與設(shè)備建立良好通訊同步效果,只有從數(shù)據(jù)序列中提取同步時鐘。類似RS232 串口通訊,USB 通訊的建立也有起始信息,RS232 是一個起始位,而USB 起始位也有8 位,稱之為同步域(或段)格式為01010100。由于RS232 的通訊速率較低,所以兩端同步時鐘不大于5%即可實現(xiàn)良好通訊。然而USB 通訊最低速率也大于1Mb/S,對于時鐘的同步要求嚴格的多,況且USB 的數(shù)據(jù)包中的每個字節(jié)不象RS232 每個字節(jié)都有起始位(僅在包頭有同步域)。鑒此,USB 通訊時必須在數(shù)據(jù)包的位序列中提取同步信息。想象一下,如果數(shù)據(jù)包序列中數(shù)據(jù)位全是邏輯“1”或者全是邏輯“0”,芯片是無法提取同步信息的,為此需要一個高效的編碼方案,于是就有了NRZI 和位填充概念。何謂NRZI,看圖2 所示,NRZI 是非“1”跳變。由圖可知問題只解決一半,USB 規(guī)范約定當序列1 1中連續(xù)出現(xiàn)6 個邏輯“1”時加進一位“0”,如此問題全部解決,只不過是需要在接收后除去加進的一個位“0”,加進一位“0”的過程就是位填充。

1.7 USB 通訊模式

共四種模式:控制傳輸、等時傳輸、中斷傳輸、批量傳輸。

1.8 端點

端點也可稱為設(shè)備終端,每個USB 設(shè)備(USB 芯片)內(nèi)可以有1—16 個端點,相對USB 芯片而言,各端點在通訊*能傳輸?shù)臄?shù)據(jù)包的大小和傳輸模式有所不同。在芯片內(nèi)數(shù)據(jù)緩沖區(qū)的地址也有所變化。

2 嵌入式芯片(LM3S310)

Stellaris 系列微控制器(包括L3 同S310)是以ARM CortexTM-M3 為內(nèi)核設(shè)計的。與早期的ARM7 相比較有功耗更低、中斷延時更小、代碼執(zhí)行速度更快、價格更低等優(yōu)勢。

3 實現(xiàn)原理

由于LM3S310 控制器每個GPIO 都可配置為中斷引腳,所以在這個應(yīng)用中只需要用兩個同Port 的兩個相鄰引腳仿真USB 的D+和D-,圖3 所示。

4 軟件設(shè)計

圖4 是一個簡化程序流程圖,實際編程中還有很多細節(jié),在此不再羅列。下面以中斷傳輸為例,將一個事務(wù)不同階段思想重點研討。

LM3S310 芯片利用兩個GPIO(USB)的中斷監(jiān)控USB 總線,當USB 總線從空閑狀態(tài)變?yōu)閭鬏敔顟B(tài),也就是總線由主機發(fā)起與同步域(SYN),LM3S310 進入USB 接收程序。略過同步階段,收到的第一個字節(jié)是PID 字段(包標識類型)。這字段的低四位描述此包類型方向(IN 或OUT),接下來7 位表示設(shè)備的地址,然后是四位端點號索引。LM3S310 根據(jù)設(shè)備地址判定主機向本設(shè)備發(fā)起的請求,如果是則根據(jù)包的類型決定繼續(xù)接收數(shù)據(jù)或向主機發(fā)送數(shù)據(jù)。對OUT 類型數(shù)據(jù)的后5—16 位是CRC 校驗(根據(jù)配置決定CRC 的位數(shù))。對IN 類型,LM3S310將準備好數(shù)據(jù)連同RC 校驗數(shù)據(jù)一同發(fā)往主機。數(shù)據(jù)傳輸階段完成后,主機或設(shè)備要確認傳輸成功。

對于低速設(shè)備的仿真,LM3S310 芯片的速度足以滿足要求(包括一些速度較快單片機,如:PIC、EMP、MSP),然而對全速設(shè)備的仿真,須要選擇速度更快嵌入式芯片,軟件實現(xiàn)的原理方法基本相同。

5 結(jié)論

使用微控制器仿真USB 設(shè)備的方法,極大地方便了用戶的開發(fā),同時降低了功耗、成本。本文作者創(chuàng)新點在于利用MCU或嵌入式控制器實現(xiàn)USB設(shè)備功能。本方法在USB 讀卡器、USB 編程器、USB 接口轉(zhuǎn)RS232 及RS485 接口等方面有良好的應(yīng)用前景。

責任編輯:gt

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 控制器
    +關(guān)注

    關(guān)注

    112

    文章

    16103

    瀏覽量

    177074
  • 嵌入式
    +關(guān)注

    關(guān)注

    5059

    文章

    18973

    瀏覽量

    302033
  • usb
    usb
    +關(guān)注

    關(guān)注

    60

    文章

    7876

    瀏覽量

    263699
收藏 人收藏

    評論

    相關(guān)推薦

    高整合USB控制器簡化嵌入式系統(tǒng)連結(jié)設(shè)計

    高度整合的USB控制器解決方案,不僅能以最簡易的方式為嵌入式系統(tǒng)建立USB連結(jié),還能提供高效能的CPU功能;
    發(fā)表于 12-03 10:23 ?884次閱讀

    高整合USB控制器怎么完成嵌入式連結(jié)功能?

    USB連結(jié)是許多嵌入式應(yīng)用的重要規(guī)格;高度整合的USB控制器解決方案,不僅能以最簡易的方式為嵌入式系統(tǒng)建立
    發(fā)表于 03-20 07:57

    請問在嵌入式應(yīng)用中怎樣去實現(xiàn)USB

    嵌入式應(yīng)用中USBOTG控制器功能特性是什么?在嵌入式應(yīng)用中怎樣去實現(xiàn)USB
    發(fā)表于 04-27 06:25

    如何去實現(xiàn)一種嵌入式USB主機控制器接口?

    一種基于OHCI的嵌入式USB主機控制器接口實現(xiàn)
    發(fā)表于 06-02 06:50

    嵌入式液壓控制器實現(xiàn)

    嵌入式液壓控制器是在國內(nèi)某大型鋼鐵公司的技術(shù)改造中開發(fā)的。控制器硬件上采用研華工控機和I/O 板,軟件上使用了VxWorks 嵌入式實時操作系統(tǒng)。本文給出了液壓
    發(fā)表于 05-26 13:34 ?26次下載

    嵌入式USB設(shè)備驅(qū)動程序設(shè)計

    本文通過基于S3C2410 的嵌入式USB設(shè)備驅(qū)動程序的實現(xiàn),介紹嵌入式Linux 系統(tǒng)中的USB
    發(fā)表于 08-14 14:07 ?15次下載

    基于LPC2290嵌入式系統(tǒng)USB接口的設(shè)計

    基于LPC2290嵌入式系統(tǒng)USB接口的設(shè)計:為嵌入式系統(tǒng)設(shè)計并實現(xiàn)USB主機接口。硬件設(shè)計采用LPC2290為主控平臺, ISP1160
    發(fā)表于 12-31 17:07 ?30次下載

    USB嵌入式主機控制器設(shè)計

    USB嵌入式主機控制器設(shè)計 過去USB僅應(yīng)用于個人計算機其在嵌入式系統(tǒng)領(lǐng)域的巨大潛力尚未開發(fā)USB
    發(fā)表于 03-18 10:40 ?55次下載

    嵌入式系統(tǒng)中的USB控制器與框架結(jié)構(gòu)

    嵌入式系統(tǒng)中的USB控制器與框架結(jié)構(gòu) 過去USB僅應(yīng)用于個人計算機,而在嵌入式系統(tǒng)領(lǐng)域的巨大潛力還沒有開發(fā)出來,
    發(fā)表于 05-06 17:16 ?1548次閱讀
    <b class='flag-5'>嵌入式</b>系統(tǒng)中的<b class='flag-5'>USB</b><b class='flag-5'>控制器</b>與框架結(jié)構(gòu)

    USB嵌入式主機控制器設(shè)計

    USB嵌入式主機控制器設(shè)計 過去USB僅應(yīng)用于個人計算機其在嵌入式系統(tǒng)領(lǐng)域的巨大潛力尚未開發(fā)USB
    發(fā)表于 05-06 17:22 ?621次閱讀
    <b class='flag-5'>USB</b><b class='flag-5'>嵌入式</b>主機<b class='flag-5'>控制器</b>設(shè)計

    嵌入式應(yīng)用中的USB設(shè)備功能

    嵌入式應(yīng)用中的USB設(shè)備功能 USB已經(jīng)成為設(shè)備和PC之間通信的標準方式,從通用
    發(fā)表于 06-02 07:49 ?637次閱讀

    嵌入式主機上的USB海量存儲設(shè)備

    嵌入式主機上的USB海量存儲設(shè)備類重點論述基于USB的海量存儲(USB Mass Storage)設(shè)備
    發(fā)表于 03-06 16:33 ?43次下載
    <b class='flag-5'>嵌入式</b>主機上的<b class='flag-5'>USB</b>海量存儲<b class='flag-5'>設(shè)備</b>類

    嵌入式USB MiniHost系統(tǒng)設(shè)計與實現(xiàn)

    設(shè)計并實現(xiàn)了一個嵌入式USB主機系統(tǒng)的硬件和軟件,用于解決USB設(shè)備不能脫離PC主機的問題。并在設(shè)計的硬件和軟件基礎(chǔ)上利用
    發(fā)表于 04-12 15:04 ?47次下載
    <b class='flag-5'>嵌入式</b><b class='flag-5'>USB</b> MiniHost系統(tǒng)設(shè)計與<b class='flag-5'>實現(xiàn)</b>

    基于CORBA技術(shù)的嵌入式控制器設(shè)計

    本文以制造業(yè)嵌入式控制器為背景,在所選擇的嵌入式硬件和實時操作系統(tǒng)的基礎(chǔ)上,開發(fā)基于CORBA技術(shù)的面向重礦行業(yè)的嵌入式控制器。
    發(fā)表于 09-06 17:30 ?1695次閱讀
    基于CORBA技術(shù)的<b class='flag-5'>嵌入式</b><b class='flag-5'>控制器</b>設(shè)計

    基于μC/OS-Ⅱ的嵌入式洗碗機控制器的設(shè)計與實現(xiàn)

    關(guān)于嵌入式的 基于μC/OS-Ⅱ的嵌入式洗碗機控制器的設(shè)計與實現(xiàn) 的學術(shù)論文
    發(fā)表于 04-20 09:58 ?12次下載