基于USB接口芯片CH372的人機(jī)接口設(shè)備設(shè)計(jì)與實(shí)現(xiàn)
4.2.2 部分子程序代碼
本地端主程序可以參照?qǐng)D4 流程編寫代碼。在程序中,外置模式的設(shè)置是在CH372 初始化的子程序中完成的;中斷子程序編寫需要參考CH372 中文手冊(cè)(二)。從圖2 的硬件電路連接上可以看出,單片機(jī)的P1 口與CH372 的數(shù)據(jù)端連接,并非以總線方式掛接在單片機(jī)上,因此需要單片機(jī)的I/O 擬出相應(yīng)的時(shí)序操作CH372 芯片。下面給出單片機(jī)通過(guò)數(shù)據(jù)端口寫命令,寫數(shù)據(jù),讀數(shù)據(jù)的三段代碼。
枚舉成功后,PC 機(jī)識(shí)別為USB Mouse.此時(shí)單片機(jī)根據(jù)圖2 中所示的遙控指示信號(hào)LeftKey(P3.0 腳)和RightKey(P3.1 腳)電平高低,通過(guò)CH372端點(diǎn)1(中斷端點(diǎn))發(fā)送USB 鼠標(biāo)相應(yīng)的鍵值給PC 機(jī),端點(diǎn)1(中斷端點(diǎn))的緩沖區(qū)數(shù)據(jù)塊長(zhǎng)度為4 個(gè)字節(jié),LeftKey 或者RightKey 鍵值需要放在第一個(gè)字節(jié)上。如果鼠標(biāo)左鍵按下,則返回0x01,0x00,0x00,0x00;若鼠標(biāo)右鍵按下,則返回0x02,0x00,0x00,0x00。
下面給出端點(diǎn)1 上傳數(shù)據(jù)示例:
5 結(jié)語(yǔ)
本系統(tǒng)是CH372 設(shè)置為靈活的外圍固件模式下的應(yīng)用和開(kāi)發(fā)。系統(tǒng)硬件設(shè)計(jì)簡(jiǎn)單,軟件流程清晰。
若將硬件和軟件做很小的改動(dòng),就可以設(shè)計(jì)出其他很多HID 類設(shè)備。
評(píng)論