<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于USB接口芯片CH372的人機(jī)接口設(shè)備設(shè)計(jì)與實(shí)現(xiàn)

          基于USB接口芯片CH372的人機(jī)接口設(shè)備設(shè)計(jì)與實(shí)現(xiàn)

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

            基于一種新型USB 總線接口芯片CH372,設(shè)計(jì)出一種設(shè)備-USB 鼠標(biāo)。闡述了CH372 的工作原理和特點(diǎn),給出了系統(tǒng)的硬件電路圖;在軟件設(shè)計(jì)中,分析了 類設(shè)備描述符枚舉過程,根據(jù)主程序流程圖,寫出了部分單片機(jī)本地端主程序。通過硬件和軟件調(diào)試,最后成功模擬出鼠標(biāo)左鍵和右鍵功能。

            1 引言

            USB(Universal Serial Bus,通用串行總線)是計(jì)算機(jī)上的一種新型接口技術(shù),它使得計(jì)算機(jī)和外部設(shè)備的連接十分方便。 是Human InterfaceDvices 的縮寫,即設(shè)備,是USB 協(xié)議中最早提出并支持的一種設(shè)備類。典型的 有鍵盤和鼠標(biāo)等,其主要用于和計(jì)算機(jī)進(jìn)行交互通信。鼠標(biāo)屬于HID 設(shè)備,USB 串行總線規(guī)范專門定義了HID 類規(guī)范。Windows 操作系統(tǒng)能夠方便地和HID 設(shè)備建立連接。

            2 USB總線接口芯片CH372

            2.1 功能介紹

            CH372 是一個(gè)USB 總線的通用設(shè)備接口芯片,是CH371的升級(jí)產(chǎn)品,是CH375芯片的功能簡(jiǎn)化版。

            CH372 具有8 位數(shù)據(jù)總線和讀、寫、片選控制線以及中斷輸出,可以方便的掛接到單片機(jī)/DSP/MCU/MPU 等控制器的系統(tǒng)總線上;在計(jì)算機(jī)控制中,CH372 的配套軟件提供了簡(jiǎn)潔易用的操作接口,與本地端的單片機(jī)通訊就如同讀寫文件。

            CH372 內(nèi)置了USB 通訊中的底層協(xié)議,具有省事的內(nèi)置固件模式和靈活的外置固件模式。在內(nèi)置固件模式下,CH372 自動(dòng)處理默認(rèn)端點(diǎn)0 的所有實(shí)物,本地端的單片機(jī)只要負(fù)責(zé)數(shù)據(jù)交換,所以單片機(jī)程序非常簡(jiǎn)潔。在外置固件模式下,由外部單片機(jī)根據(jù)需要自行處理各種USB 請(qǐng)求,從而可以實(shí)現(xiàn)符合各種USB 類規(guī)范的設(shè)備。

            2.2 通信原理

            

          圖1 通信原理框圖

            圖1 為CH372 通信原理框圖,D7~D0 為8 位雙向數(shù)據(jù)總線、RD#為讀選通輸入引腳、WR#為寫選通輸入引腳、CS#為片選輸入引腳、INT#為中斷輸出引腳、A0 為地址輸入引腳。

            CH372 芯片的RD#和WR#可以分別連接到單片機(jī)的讀選通輸出引腳和寫選通輸出引腳。CS#由地址譯碼電路驅(qū)動(dòng),用于當(dāng)單片機(jī)具有多個(gè)外圍器件時(shí)進(jìn)行設(shè)備選擇。INT#輸出的中斷請(qǐng)求是低電平有效,可以連接到單片機(jī)的中斷輸入引腳或者普通I/O 引腳,單片機(jī)可以使用中斷方式或者查詢方式獲知中斷請(qǐng)求。

            當(dāng)WR#為高電平并且CS#和RD#及A0 都為低電平時(shí),CH372 中的數(shù)據(jù)通過D7~D0 輸出;當(dāng)RD#為高電平并且CS#和WR#及A0 都為低電平時(shí),D7~D0 上的數(shù)據(jù)被寫入CH372 芯片中;當(dāng)RD#為高電平并且CS#和WR#都為低電平而A1 為高電平時(shí),D7~D0 上的數(shù)據(jù)被作為命令碼寫入CH372 芯片中。

            3 硬件電路

            

          圖2 HID 設(shè)備硬件電路圖

            圖2 中是沒有外部擴(kuò)展總線的單片機(jī)系統(tǒng),單片機(jī)用普通的I/O 引腳模擬出8 位并口時(shí)序操作CH372 芯片。在這個(gè)電路中,CH372 的CS#固定為低電平,一直處于片選狀態(tài)。IC1 的P1 端口作為8位雙向數(shù)據(jù)總線,在單片機(jī)程序中,可以控制各個(gè)I/O引腳模擬并口時(shí)序與CH372 進(jìn)行數(shù)據(jù)交換。

            單片機(jī)的P3.0 引腳模擬為鼠標(biāo)的左鍵;P3.1 引腳模擬為鼠標(biāo)的右鍵。

          4 軟件設(shè)計(jì)

            4.1 HID 類設(shè)備描述符枚舉

            USB Mouse 屬于HID 設(shè)備,和所有的HID 設(shè)備一樣遵從USB 啟動(dòng)流程:設(shè)備插入→總線復(fù)位→設(shè)備枚舉→數(shù)據(jù)接收/傳送。怎樣讓PC 認(rèn)識(shí)USB Mouse流程中的設(shè)備枚舉就是告知PC 設(shè)備描述類型[5]。當(dāng)插入U(xiǎn)SB 設(shè)備后,主機(jī)會(huì)向設(shè)備請(qǐng)求各種描述符來(lái)識(shí)別設(shè)備。為了把一個(gè)設(shè)備識(shí)別為HID 類別,設(shè)備在定義描述符的時(shí)候必須遵守HID 規(guī)范,因此除了USB 標(biāo)準(zhǔn)定義的一些描述符外,HID 設(shè)備還必須定義HID 描述符。主機(jī)通過識(shí)別描述符從而認(rèn)識(shí)設(shè)備,認(rèn)識(shí)設(shè)備數(shù)據(jù)通信格式,從而才能正常進(jìn)行數(shù)據(jù)傳送接收。

            下面圖3 是在調(diào)試過程中的截圖,可以清楚地看出枚舉有沒有成功,有沒有被PC 機(jī)設(shè)別出來(lái)。他們分別是成功識(shí)別,識(shí)別出設(shè)備有問題,無(wú)法識(shí)別USB設(shè)備。

            

          圖3 調(diào)試過程3 種狀態(tài)截圖。

            4.2 單片機(jī)本地端主程序

            4.2.1 主程序流程圖

            

          圖4 主程序流程圖


          上一頁(yè) 1 2 下一頁(yè)

          關(guān)鍵詞: USB接口 人機(jī)接口 HID

          評(píng)論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();