當(dāng)前位置:首頁 > 嵌入式 > 嵌入式硬件
[導(dǎo)讀]USB技術(shù)在現(xiàn)代電子系統(tǒng)中應(yīng)用得越來越廣泛。很多計算機上甚至去掉了傳統(tǒng)的串口,全部改用USB口的鼠標(biāo)、鍵盤,甚至風(fēng)扇。傳統(tǒng)的USB控制器在使用時,需要大量的與主控機相連的

USB技術(shù)在現(xiàn)代電子系統(tǒng)中應(yīng)用得越來越廣泛。很多計算機上甚至去掉了傳統(tǒng)的串口,全部改用USB口的鼠標(biāo)、鍵盤,甚至風(fēng)扇。傳統(tǒng)的USB控制器在使用時,需要大量的與主控機相連的接口連線,占用了大量的CPU I/O口資源。隨著電子技術(shù)的高速發(fā)展,USB控制器向小體積、低功耗的方向發(fā)展。本文介紹如何使用MAX3420進(jìn)行Windows系統(tǒng)HID設(shè)計的過程。

本設(shè)計的首要目的就是,尋找一種快捷的方法來調(diào)整音量或者暫停播放,而不需要移動鼠標(biāo)來尋找Windows Media Player窗口。該系統(tǒng)插在USB端口上,只有一個旋鈕起主要作用。旋轉(zhuǎn)這個按鈕可以調(diào)節(jié)音量。按一次旋鈕暫停播放,再按一次開始播放。由于該旋鈕掌控主要的Windows音量控制,因此,它可以調(diào)節(jié)任何當(dāng)前播放聲音的音量,例如,電子郵件提示音或者是游戲聲音。該音量控制器即使在Windows播放器不是當(dāng)前操作窗口的情況下也仍然對其有效。為了省去設(shè)計底層驅(qū)動程序的工作,把該器件設(shè)計成USB人機接口設(shè)備(HID)。把HID接入Windows系統(tǒng),它就可以工作了。

1 低成本的USB系統(tǒng)

系統(tǒng)設(shè)計中最重要的一點是,選擇一種低成本的微控制器和 USB解決方案。ATtiny13型微控制器本身并不含有USB控制器,所以使用Maxim公司的 MAX3420E型USB控制器,而且僅需要一些用于普通的串行外圍接口設(shè)備(SPI)的指令就可以與任何微處理器聯(lián)合使用。與MAX3420E對話,會占用ATtiny13中5個I/O引腳中的4個。

這里簡單介紹一下MAX3420。它是Maxim公司推出的一種全速USB(12 Mbps)外設(shè)控制器,支持USB2.0協(xié)議。MAX3420內(nèi)建全速收發(fā)器,支持±15 kV的ESD保護(hù),可以編程控制USB總線的連接和斷開;內(nèi)含的串行接口引擎可以控制底層的USB協(xié)議細(xì)節(jié),如錯誤校驗和總線重連接。MAX3420通過SPI接口操作其內(nèi)部寄存器,工作頻率為26 MHz,任何支持SPI主模式的CPU只使用3~4根線便可增加USB功能。

圖1是本系統(tǒng)的電路原理。 U1是USB控制器MAX3420E。U2是MAX6349TL,它可提供3.3 V、150 mA的輸出,具有上電復(fù)位(POR)電路,可直接與MAX3420E的RES引腳連接。在USB外設(shè)這樣的熱插拔設(shè)計中,良好的外部POR電路非常重要。與USB連接頭上的 VBUS5 V信號相連接,并且將其調(diào)整至MAX3420E和ATtiny13所需的3.3 V。旋轉(zhuǎn)編碼器和發(fā)光二極管與MAX3420E的通用I/O引腳相連接。連接器J2用于ATtiny的調(diào)試和編碼輸入。電阻R1將編程/輸入復(fù)位同系統(tǒng)復(fù)位隔開。上拉電阻R2確保當(dāng)編程器或ICE使用調(diào)試連接器J2時,MAX3420E的SPI端口不被選中。

ATtiny13在管理MAX3420E的SPI端口時采用半雙工模式,只使用一個雙向數(shù)據(jù)引腳。電阻R3可避免在使用這種方式讀取MAX3420E 寄存器數(shù)據(jù)時的爭用問題。在第8個SCLK信號上升沿到來時,MAX3420E的SPI開始對命令字節(jié)的第8位進(jìn)行采樣,并在第1個數(shù)據(jù)位到來后立即驅(qū)動數(shù)據(jù)引腳。

2 對話式SPI[1]

ATtiny13并不包含有SPI硬件單元。MAX3420E的SPI比較簡單,且可以任意速率運行,可以對ATtiny13的I/O引腳進(jìn)行位響應(yīng)。

MAX3420E在三線、四線或五線SPI情況下都可以工作。另外還有幾個不可省去的信號:串行時鐘信號(SCLK)、從器件選擇(SS)以及雙向數(shù)據(jù)引腳的主控制器輸出從機輸入/主控制器輸入從機輸出 (MOSI/MISO)信號。本設(shè)計中用一條4位的引線把ATtiny13的一個輸入引腳同MAX3420E的INT引腳連接起來,以便節(jié)約碼字空間并使得SPI總線通信量最小。

 

圖1 音量控制器的電路原理圖

3 HID基礎(chǔ)

USB HID規(guī)范的主要思想是要定義一個可以和應(yīng)用程序聯(lián)合應(yīng)用的傳感器、按鈕和LED的廣泛的類型范圍。“USB器件使用者論壇”的“通用串行總線HID用法表”中詳述了數(shù)百種用法。HID協(xié)議是雙方面的協(xié)議,HID器件和Windows應(yīng)用都必須同意使用HID規(guī)范中的特定碼符。HID文件是概念性的但卻有相當(dāng)復(fù)雜的說明。

HID外部設(shè)備通過發(fā)送報告與Windows進(jìn)行通信。HID設(shè)計的主要任務(wù)是要創(chuàng)造出一種可以傳達(dá)對操作系統(tǒng)控制意圖的報告格式。對于此項設(shè)計,需要對以下幾項進(jìn)行控制:音量加、音量減、暫停、播放、下一曲目和上一曲目。這幾項中的每一項在HID用法表中都有一個描述項。

下面的程序是HID報告描述符。它是用從網(wǎng)站www.usb.org.上得到的HID工具程序構(gòu)建的。

.DB 0x05,0x0C

;使用頁面(用戶).DB 0x09,0x01

;遠(yuǎn)程控制.DB 0xA1,0x01.DB 0x15,0x00

;Logical Minimum = 0.DB 0x25,0x01

;Logical Maximum = 1.DB 0x09,0xE9

;VOL+.DB 0x09,0xEA

;VOL-.DB 0x09,0xB1

;Pause.DB 0x09,0xB0

;Play.DB 0x09,0xB5;檢測下一次

.DB 0x09,0xB6;檢測前一次

.DB 0x75,0x01;描述符報告大小

.DB 0x95,0x06;描述符報告數(shù)量

.DB 0x81,0x02;輸入描述符報告

.DB 0x75,0x01;描述符報告大小

.DB 0x95,0x02;描述符報告數(shù)量

.DB 0x81,0x01.DB 0xC0

當(dāng)主機發(fā)出“獲取描述符報告”要求時,ATtiny13將該表返回給主機。報告描述符的格式是單字節(jié)報告,以使用(VOL+)行開頭的描述符將二進(jìn)制數(shù)據(jù)集合到一個以LSB開頭的字節(jié)內(nèi)??刂祈椫恍枰?位,所以該字節(jié)內(nèi)的最后兩位被賦予0值。描述符報告格式如下:

 

當(dāng)Windows識別并進(jìn)行USB枚舉后,為了得到上述格式的單字節(jié)響應(yīng),操作系統(tǒng)開始向終端3IN發(fā)送周期性IN請求。該部件監(jiān)控旋轉(zhuǎn)控制的變化情況,并且當(dāng)有動作(如音量增加)請求時發(fā)送通信數(shù)據(jù);沒有動作請求時,該固件返回0值。

MAX3420E簡化了USB修改過程,SPI主控器(即ATtiny13)將報告數(shù)據(jù)字節(jié)寫入EP3INFIFO(endpoint 3 IN FIFO)的寄存器。然后SPI主控器將數(shù)值1寫入EP3INBC(endpoint3IN byte count)寄存器,表示為了響應(yīng)USB的下一個IN請求,將會傳送1個字節(jié)。傳送發(fā)生后,MAX3420E產(chǎn)生中斷請求,表明下一個字節(jié)的數(shù)據(jù)可以寫入 EP3INFIFO了。

下面是完整的傳送程序??梢詫⒁袅靠刂破鞯腍ID信息傳送給PC機??此品浅:唵危窃摼幋a卻包含了很多的HID控制頁面。剩余的代碼實現(xiàn)代碼循環(huán)。該循環(huán)會檢測旋轉(zhuǎn)控制器,然后點亮發(fā)光二極管。對任意USB外圍器件來說,USB樣板文件代碼需要進(jìn)行內(nèi)部處理。這個樣板文件代碼控制著器件的枚舉、懸掛、恢復(fù)以及USB總線置零等命令。[!--empirenews.page--]

Send_byte:

idi  MAX_Reg,rEP3INFIFO

mov  MAX_Dat,audio_flags

clr  audio_flags

rcall  wreg

idi  MAX_Reg, rEP3INBC

mov  MAX_Dat,1

rjmp  wreg

4 讀取旋轉(zhuǎn)控制

旋轉(zhuǎn)編碼器用格雷編碼端子A和B分別表示順時針和逆時針旋轉(zhuǎn)。旋轉(zhuǎn)控制器與MAX3420E上有內(nèi)置上拉電阻的GPIN引腳相連。圖2顯示的是左旋和右旋時的開關(guān)轉(zhuǎn)接狀態(tài)。鎖定位置狀態(tài)1和3是控制停止位置??刂破鹘?jīng)過1個或3個狀態(tài)后,可到下一個鎖定位置。該固件只需對旋鈕旋轉(zhuǎn)進(jìn)行譯碼,就可以實現(xiàn)向鎖定狀態(tài)1和3的轉(zhuǎn)換。例如,實現(xiàn)右旋狀態(tài)轉(zhuǎn)換需要由3到1或由2到3。

 

圖2 旋轉(zhuǎn)編碼器的開關(guān)連接狀態(tài)

5 完善代碼

ATtiny13有512字長的程序存儲空間。編碼需要完成以下幾項工作: 首先要對設(shè)備進(jìn)行枚舉。這一步包括對MAX3420主控制器的各種類型的“獲取描述符”請求進(jìn)行解碼,對對應(yīng)的表數(shù)據(jù)進(jìn)行定位以及對終端零值FIFO進(jìn)行數(shù)據(jù)寫入,以將其傳送至固件。

編碼時也應(yīng)該為隨時發(fā)生的USB總線置0以及USB總線的懸掛和恢復(fù)進(jìn)行測試。必須對旋轉(zhuǎn)控制位置和按鈕開關(guān)狀態(tài)進(jìn)行周期性讀取和譯碼。當(dāng)主機接受了由EP3IN傳來的用于發(fā)送HID控制數(shù)據(jù)的信息包后,該代碼還必須為下一次的IN傳送進(jìn)行終端的數(shù)據(jù)加載,并為下一次的數(shù)據(jù)傳輸表明控制端點。

為了減小代碼量,設(shè)計過程中采用下面的方法: 第一,省去了可選擇性USB串描述符。這些描述符是描述諸如供應(yīng)商、器件類型等的文本串。這些字符串只是信息性質(zhì)的,對USB外圍器件的操作來說,沒有任何價值。第二,沒有使用可選擇性USB遙控喚醒部分。這個部分實現(xiàn)起來并不困難(MAX3420E會承擔(dān)這項工作的絕大部分),但是卻會占用碼字空間。第三,沒有把HID報告的描述符寫入程序閃存器,而是寫入EEPROM。ATtiny13有64字節(jié)的EEPROM,可以寫入該EEPROM的任意表數(shù)據(jù),都會保存在程序閃存器中。

6 寫入代碼

如果只用圖符方式進(jìn)行此項設(shè)計,那么可以用6引腳的J2連接AVRISP2在線程序設(shè)計器來下載這些程序模塊。如果想要研究或修改該代碼,也可以把 ATJTAGICE2ND(用于AVR系列的完全在線仿真器)連接到J2上。不管使用哪種下載方式,都不要忘記把HEX文件(閃存器代碼)和EEP模塊 (EEPROM數(shù)據(jù))都寫進(jìn)去。

7 總結(jié)[2]

現(xiàn)在的電子應(yīng)用中,USB接口幾乎已經(jīng)取代了串行接口成為PC機上接口連接的首選。本設(shè)計表明:雖然USB比串行端口更為復(fù)雜,但是USB連接卻并不需要更多的代碼或者昂貴的微處理器。代碼的絕大部分是USB樣板文件,因此可以在多項設(shè)計中重復(fù)使用它。另外,USB有巨大的優(yōu)勢:從電纜中獲取電源,自動的“握手”和錯誤檢測以及可以進(jìn)行熱插拔。如果想要保留已有的MCU和工具,可以采用諸如MAX3420E那樣的基于SPI的USB控制器來搭建USB外圍電路。

參考文獻(xiàn)

[1] Maxim公司.MAX3420 datasheet,2005-09-26.

[2] 張弘.USB接口設(shè)計[M].西安:西安電子科技大學(xué)出版社,2002.

[3] 盧珞.羅婷. 基于SPI的USB控制器接口設(shè)計[J]. 單片機與嵌入式系統(tǒng)應(yīng)用,2006(12): 41-45.

本站聲明: 本文章由作者或相關(guān)機構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫毥谦F公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉(zhuǎn)型技術(shù)解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關(guān)鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動 BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運行,同時企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險,如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報道,騰訊和網(wǎng)易近期正在縮減他們對日本游戲市場的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機 衛(wèi)星通信

要點: 有效應(yīng)對環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實提質(zhì)增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競爭力 堅持高質(zhì)量發(fā)展策略,塑強核心競爭優(yōu)勢...

關(guān)鍵字: 通信 BSP 電信運營商 數(shù)字經(jīng)濟

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術(shù)學(xué)會聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會上宣布正式成立。 活動現(xiàn)場 NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會上,軟通動力信息技術(shù)(集團(tuán))股份有限公司(以下簡稱"軟通動力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉