當(dāng)前位置:首頁(yè) > 電源 > 數(shù)字電源
[導(dǎo)讀]隨著電子技術(shù)的高速發(fā)展,USB控制器向小體積、低功耗的方向發(fā)展。本文介紹如何使用MAX3420進(jìn)行Windows系統(tǒng)HID設(shè)計(jì)的過程。

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

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

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

  系統(tǒng)設(shè)計(jì)中最重要的一點(diǎn)是,選

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

  這里簡(jiǎn)單介紹一下MAX3420。它是Maxim公司推出的一種全速USB(12 Mbps)外設(shè)控制器,支持USB2.0協(xié)議。MAX3420內(nèi)建全速收發(fā)器,支持±15 kV的ESD保護(hù),可以編程控制USB總線的連接和斷開;內(nèi)含的串行接口引擎可以控制底層的USB協(xié)議細(xì)節(jié),如錯(cuò)誤校驗(yàn)和總線重連接。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è)計(jì)中,良好的外部POR電路非常重要。與USB連接頭上的 VBUS5 V信號(hào)相連接,并且將其調(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時(shí),MAX3420E的SPI端口不被選中。

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

  2 對(duì)話式SPI[1]

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

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

音量控制器的電路原理圖

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

  3 HID基礎(chǔ)

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

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

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

  .DB 0x05,0x0C
  ;使用頁(yè)面(用戶).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;檢測(cè)下一次
  .DB 0x09,0xB6;檢測(cè)前一次
  .DB 0x75,0x01;描述符報(bào)告大小
  .DB 0x95,0x06;描述符報(bào)告數(shù)量
  .DB 0x81,0x02;輸入描述符報(bào)告
  .DB 0x75,0x01;描述符報(bào)告大小
  .DB 0x95,0x02;描述符報(bào)告數(shù)量
  .DB 0x81,0x01.DB 0xC0

  當(dāng)主機(jī)發(fā)出“獲取描述符報(bào)告”要求時(shí),ATtiny13將該表返回給主機(jī)。報(bào)告描述符的格式是單字節(jié)報(bào)告,以使用(VOL+)行開頭的描述符將二進(jìn)制數(shù)據(jù)集合到一個(gè)以LSB開頭的字節(jié)內(nèi)??刂祈?xiàng)只需要6

位,所以該字節(jié)內(nèi)的最后兩位被賦予0值。描述符報(bào)告格式如下:

報(bào)告格式

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

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

  下面是完整的傳送程序。可以將音量控制器的HID信息傳送給PC機(jī)。看似非常簡(jiǎn)單,但是該編碼卻包含了很多的HID控制頁(yè)面。剩余的代碼實(shí)現(xiàn)代碼循環(huán)。該循環(huán)會(huì)檢測(cè)旋轉(zhuǎn)控制器,然后點(diǎn)亮發(fā)光二極管。對(duì)任意USB外圍器件來說,USB樣板文件代碼需要進(jìn)行內(nèi)部處理。這個(gè)樣板文件代碼控制著器件的枚舉、懸掛、恢復(fù)以及USB總線置零等命令。

  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分別表示順時(shí)針和逆時(shí)針旋轉(zhuǎn)。旋轉(zhuǎn)控制器與MAX3420E上有內(nèi)置上拉電阻的GPIN引腳相連。圖2顯示的是左旋和右旋時(shí)的開關(guān)轉(zhuǎn)接狀態(tài)。鎖定位置狀態(tài)1和3是控制停止位置。控制器經(jīng)過1個(gè)或3個(gè)狀態(tài)后,可到下一個(gè)鎖定位置。該固件只需對(duì)旋鈕旋轉(zhuǎn)進(jìn)行譯碼,就可以實(shí)現(xiàn)向鎖定狀態(tài)1和3的轉(zhuǎn)換。例如,實(shí)現(xiàn)右旋狀態(tài)轉(zhuǎn)換需要由3到1或由2到3。

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

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

  5 完善代碼

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

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

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

    6 寫入代碼

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

  7 總結(jié)[2]

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

  參考文獻(xiàn)

[1] Maxim公司.MAX3420 datasheet,2005-09-26.
[2] 張弘.USB接口設(shè)計(jì)[M].西安:西安電子科技大學(xué)出版社,2002.
[3] 盧珞.羅婷. 基于SPI的USB控制器接口設(shè)計(jì)[J]. 單片機(jī)與嵌入式系統(tǒng)應(yīng)用,2006(12): 41-45.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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