<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>
關(guān) 閉

新聞中心

EEPW首頁(yè) > 工控自動(dòng)化 > 設計應用 > 用MC68HC05JB4開(kāi)發(fā)USB外設

用MC68HC05JB4開(kāi)發(fā)USB外設

作者: 時(shí)間:2009-03-11 來(lái)源:網(wǎng)絡(luò ) 收藏

當今的計算機外部設備,都在追求高速度和高通用性。為了滿(mǎn)足用戶(hù)的需求,以Intel為首的七家公司于1994年推出了(Universal Serial Bus,通用串行總線(xiàn))總線(xiàn)協(xié)議,專(zhuān)用于低、中速的計算機外設。目前,端口已成為微機主板的標準端口;而在不久的將來(lái),所有的微機外設,包括鍵盤(pán)、鼠標、顯示器、打印機、數字相機、掃描儀和游戲柄等等,都將通過(guò)與主機相連。
  作為一個(gè)硬件廠(chǎng)商或是開(kāi)發(fā)者,最關(guān)心的便是如何去開(kāi)發(fā)USB外設。MOTOROLA公司從1996年開(kāi)始,陸續推出了一系列支持USB總線(xiàn)協(xié)議的單片機,如最早的用于顯示器的HC05BD9A,用于鼠標的HC05JB2,以及用于集線(xiàn)器(HUB)的141555等等。這些芯片共同的特點(diǎn)是都內含一個(gè)USB模塊,通過(guò)這個(gè)模塊,用戶(hù)可以很方便地實(shí)現USB總線(xiàn)上的數據通訊。HC05最初是用于開(kāi)發(fā)USB游戲桿的,后來(lái)也常被用于其他一些USB外設的開(kāi)發(fā),比如USB手寫(xiě)板等等。它除了含有USB接口以外,還有6路8位A/D變換輸入端,4路鍵盤(pán)中斷掃描用輸入端,并可最多同時(shí)開(kāi)啟19個(gè)I/O端口。
  我們設計的USB漢字手寫(xiě)板,采用國內漢王公司的傳感器獲得筆畫(huà)信息,傳給68HC05,經(jīng)過(guò)整理后通過(guò)USB總線(xiàn)發(fā)送到PC,再由我們編寫(xiě)的驅動(dòng)程序接收,最終轉給漢王的文字識別軟件識別。
1 USB總線(xiàn)系統硬件連接
  USB通過(guò)一個(gè)四線(xiàn)電纜來(lái)傳輸信號與電源,如圖1所示。

本文引用地址:http://dyxdggzs.com/article/202709.htm

其中D+和D-是一對差模的信號線(xiàn),而VBus和GND則提供了+5V的電源,它可以給一些設備(包括Hub)供電。USB提供了兩種數據傳輸率:一種是12Mb的高速(full speed)模式,另一種是1.5Mb的低速模式,這兩種模式可以同時(shí)存在于一個(gè)USB系統中(注:在新發(fā)布的2.0協(xié)議版本中,高速模式被定義為120~240M)。USB信號線(xiàn)在高速模式下必須使用帶有屏蔽的雙絞線(xiàn),而且最長(cháng)不能超過(guò)5m;而在低速模式時(shí)可以使用非屏蔽電纜,甚至是非雙絞線(xiàn),但最長(cháng)不能超過(guò)3m。為了與電纜阻抗匹配,在電纜的每一端都使用了非平衡終端匹配電阻。該電阻也保證了能夠檢測外設與端口的連接或分離,并且可以區分高速與低速設備。
  68HC05只支持低速USB外設。它提供了兩個(gè)端口分別與電纜的D+、D-相連;同時(shí)提供了一個(gè)3.3V的參考電壓與D-相連。典型連接如圖2。圖中電阻電容的參數是我們在USB手寫(xiě)板中采用的數值,其中1.5kΩ的電阻要求較高,阻值范圍必須是1.5kΩ±5%。由于電纜長(cháng)度有限,類(lèi)似電纜負載之類(lèi)的工作就不再需要開(kāi)發(fā)者去考慮了。

2 USB總線(xiàn)系統軟件設計
  USB設備的軟件功能主要有兩點(diǎn):一是監視設備的狀態(tài),自動(dòng)產(chǎn)生狀態(tài)信息和用戶(hù)命令信息;一是完成主機與設備之間的USB總線(xiàn)通訊,自動(dòng)處理主機的控制和查詢(xún)命令。
  前一功能與設備的具體工作方式有關(guān),與一般非USB設備的實(shí)現方法大體一致。唯一的區別是開(kāi)發(fā)者需要預先定義設備所屬的類(lèi)別和使用的協(xié)議。原因是,USB協(xié)議將設備分為不同的類(lèi)型,每個(gè)設備類(lèi)型都定義了類(lèi)似功能設備的共同行為和協(xié)議。例如HID(Human Interface Device)人機接口設備主要指用于人控制計算機系統操作的器件,而電源設備(Power Device)則被定位為HID的子系統之一。對設備進(jìn)行分類(lèi)是為了消除不同硬件廠(chǎng)商之間的差異,以便于主機(PC)對設備進(jìn)行方便、統一的管理。相同類(lèi)型的設備都由一組標準定義的功能模塊組成。這樣主機與USB設備之間的通信就可以通過(guò)一些標準格式的數據包來(lái)完成。USB開(kāi)發(fā)者論壇發(fā)布了一系列USB設備的類(lèi)型定義,并配以相應的使用說(shuō)明。如果開(kāi)發(fā)者需要了解HID及其子類(lèi)設備,可以查閱參考文獻[2][3]。
  開(kāi)發(fā)者還應考慮的是主機的工作平臺,比如Windows 98/NT、Unix等等,原因是不同的系統對不同的設備的支持程度不同。例如在Windows 98下,系統除了提供通用的USB設備的底層驅動(dòng)以外,還單獨提供了少數HID設備(如鼠標)的完整驅動(dòng),也就是說(shuō),開(kāi)發(fā)者如果想實(shí)現一個(gè)USB鼠標,是不需要在Windows 98下開(kāi)發(fā)自己的驅動(dòng)程序的,而如果想實(shí)現一個(gè)USB手寫(xiě)板,就必須在通用的底層驅動(dòng)基礎上開(kāi)發(fā)自己的設備驅動(dòng)程序。所以設備類(lèi)型的定義也直接影響開(kāi)發(fā)的難度和時(shí)間。
  后一個(gè)功能的實(shí)現較為困難。USB總線(xiàn)上傳遞的信息有兩種:一是由數據線(xiàn)的差分信號傳遞的三種包(令牌包、數據包和應答包);一是經(jīng)過(guò)定義的特殊的數據線(xiàn)信號,如復位信號、喚醒信號和包結束(EOP)信號等。對于低速設備,USB還定義了兩種總線(xiàn)操作方式:控制傳輸(用于主機設置設備和獲取狀態(tài))和中斷傳輸(用于工作信息的傳輸)。
  68HC05JB4中的USB模塊提供了3個(gè)端點(diǎn),其中端點(diǎn)0通過(guò)控制傳輸與主機通訊,而端點(diǎn)1和端點(diǎn)2則使用中斷傳輸。用戶(hù)可以近似地把端點(diǎn)0看作是設備的控制和狀態(tài)寄存器,而端點(diǎn)1和端點(diǎn)2則是設備的兩個(gè)數據緩沖區。對應于3個(gè)端點(diǎn),68HC05JB4提供了3個(gè)控制寄存器,2個(gè)中斷寄存器(端點(diǎn)1和端點(diǎn)2共用1個(gè)),同時(shí)為端點(diǎn)0提供了8個(gè)數據發(fā)送/接收寄存器,為端點(diǎn)1和端點(diǎn)2提供了8個(gè)共用的數據發(fā)送寄存器。其他在USB模塊中提供的寄存器還包括一個(gè)地址寄存器和一個(gè)狀態(tài)寄存器。
  軟件開(kāi)發(fā)的主要工作是編寫(xiě)USB的中斷服務(wù)例程,其功能是處理USB發(fā)送/接收的不同的通訊信息(如令牌、數據或應答等),再從端點(diǎn)0獲得主機的控制信息,或是向端點(diǎn)0發(fā)送設備的狀態(tài)信息,以及向端點(diǎn)1或端點(diǎn)2發(fā)送完整的數據報告等。根據設備類(lèi)型的不同,主機發(fā)送的控制信息的種類(lèi)和數量都會(huì )不同。例如,USB手寫(xiě)板屬于HID設備,在響應主機命令的時(shí)候,除了需要處理普通的USB命令(如Set Address、Set/Get/Clear Feature和Get Status等等)以外,還需要處理HID設備特定的一些命令,如Set/Get Report、Set/Get Idle和Set/Get Protocol等等。關(guān)于USB模塊的各個(gè)寄存器的使用方法,MOTOROLA也提供了一些范例,開(kāi)發(fā)者可以參照學(xué)習。
  開(kāi)發(fā)者還應注意的是設備的掛起(休眠)和喚醒功能。USB協(xié)議規定,當總線(xiàn)處于空閑狀態(tài)超過(guò)3ms時(shí),設備必須進(jìn)入掛起狀態(tài),而掛起的設備從總線(xiàn)上吸收的電流必須小于500μA。68HC05JB4的掛起可以通過(guò)設置USB端點(diǎn)0的中斷寄存器中的掛起標志位來(lái)實(shí)現。
  但設備的掛起對設備的工作往往有不利的影響。協(xié)議規定的500μA包括了主機端的電纜終端匹配電阻的電流(通常為220μA),所以對于使用總線(xiàn)電源的設備而言,進(jìn)入掛起狀態(tài)通常便意味著(zhù)總電流消耗不能超過(guò)280mA,這實(shí)際上是要求68HC05JB4進(jìn)入STOP模式。開(kāi)發(fā)者如果需要設備不進(jìn)入掛起狀態(tài),通常有兩種方法。一種是通過(guò)主機周期性地向設備發(fā)送包結束(EOP)信號,間隔時(shí)間小于3ms,這樣設備將永遠處于正常狀態(tài);另一種方法是在設備掛起時(shí)喚醒它,既可以由主機發(fā)送喚醒或復位信號,也可以由設備自行遠程喚醒,具體的實(shí)現方法是由設備向主機發(fā)出遠程喚醒信號,在主機認可后設備即結束掛起狀態(tài)。開(kāi)發(fā)者可以在68HC05JB4的外中斷端口上連接RC電路,在設備進(jìn)入掛起狀態(tài)時(shí)利用電路的充放電時(shí)間產(chǎn)生滯后的外中斷信號,再在中斷發(fā)生時(shí)向主機發(fā)送遠程喚醒信號,就可以自動(dòng)恢復到正常的狀態(tài)。
  圖3是根據我們編寫(xiě)的USB手寫(xiě)板的程序精簡(jiǎn)出來(lái)的一個(gè)典型的程序流圖,開(kāi)發(fā)者可以參考編寫(xiě)不同設備的代碼。正如上文所述,最關(guān)鍵、也是最困難的,還是中斷處理程序的編寫(xiě),開(kāi)發(fā)者需要格外重視。

3 USB設備的測試
  在設備的軟件調試過(guò)程中,開(kāi)發(fā)者往往需要觀(guān)察設備發(fā)往主機的數據,包括設備的狀態(tài)和設置信息,以及正常工作時(shí)發(fā)送的數據包等等。如果開(kāi)發(fā)者需要捕捉USB總線(xiàn)上的信息,必須使用價(jià)格昂貴的專(zhuān)用設備。而如果開(kāi)發(fā)者使用68HC05JB4,就不用再擔心總線(xiàn)信號是否正常,只需在主機端觀(guān)察主機接收的數據即可。USB開(kāi)發(fā)者組織在他們的互聯(lián)網(wǎng)站點(diǎn)[1]上提供了一個(gè)在主機端測試HID設備的軟件包――USB Compliance Test Suite,通過(guò)運行其中的程序,開(kāi)發(fā)者可以很方便地向設備發(fā)送各種USB和HID的協(xié)議命令,并接收設備的數據,從而對設備的工作狀態(tài)作出判斷。
  開(kāi)發(fā)者同樣可以編寫(xiě)自己的主機端驅動(dòng)程序,對USB設備進(jìn)行調試和檢驗。有關(guān)主機端驅動(dòng)程序的編寫(xiě)方法,請參閱近期相關(guān)文章“WINDOWS 98 下USB設備驅動(dòng)程序的開(kāi)發(fā)”。
  總之,USB總線(xiàn)及設備是計算機技術(shù)高速發(fā)展的必然產(chǎn)物,是微機外設的發(fā)展趨勢。國外市場(chǎng)上的USB產(chǎn)品已經(jīng)很多了,但大都局限在少數幾類(lèi)設備上。國內在1999年初才陸續出現了USB攝像頭等少數幾樣產(chǎn)品,且都是從臺灣引進(jìn)的。相對于其他計算機設備而言,國外產(chǎn)品在USB設備方面的市場(chǎng)競爭優(yōu)勢并不明顯,USB設備應該是國內硬件產(chǎn)品發(fā)展的重要方向之一。



關(guān)鍵詞: JB4 USB MC 68

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>