串口轉(zhuǎn)HID鍵鼠功能芯片CH9329應(yīng)用指南

概述

CH9329是一款串口轉(zhuǎn)USB HID設(shè)備功能芯片,根據(jù)不同的工作模式,HID設(shè)備可以識(shí)別為:USB鍵盤設(shè)備、USB鼠標(biāo)設(shè)備或者自定義HID類設(shè)備。接收串口數(shù)據(jù),并自動(dòng)根據(jù)串口工作模式進(jìn)行數(shù)據(jù)解析,解析完成后按照HID類設(shè)備規(guī)范,將數(shù)據(jù)打包通過USB口上傳給計(jì)算機(jī)。


image.png


特點(diǎn)

1、芯片出廠內(nèi)置固件程序,無需進(jìn)行二次開發(fā)。

2、支持Windows/Linux/安卓/macOS等操作系統(tǒng),使用系統(tǒng)內(nèi)置的鍵盤、鼠標(biāo)、HID設(shè)備驅(qū)動(dòng)程序,無需額外安裝。

3、提供4種工作模式(單一鍵盤/鼠標(biāo)/自定義HID功能,或幾個(gè)功能的復(fù)合)。

4、提供3種串口通信模式(協(xié)議傳輸模式/ASCII模式/透?jìng)髂J剑?/p>

5、支持USB設(shè)備信息、串口通信地址、鍵盤回車符等信息的配置。


工作模式

image.png

串口通信模式

image.png

USB鍵盤功能

芯片可以實(shí)現(xiàn)標(biāo)準(zhǔn)USB鍵盤功能,USB鍵盤包含普通按鍵和多媒體按鍵。通過接收串口數(shù)據(jù)實(shí)現(xiàn)模擬鍵盤按鍵的效果。

該功能常用于:掃碼槍、收銀機(jī)、小鍵盤、遠(yuǎn)程控制等。


USB鼠標(biāo)功能

芯片可以實(shí)現(xiàn)標(biāo)準(zhǔn)USB鼠標(biāo)功能,USB鼠標(biāo)包含相對(duì)鼠標(biāo)和絕對(duì)鼠標(biāo)。通過接收串口數(shù)據(jù)實(shí)現(xiàn)模擬鼠標(biāo)的效果。

該功能常用于:硬件版按鍵精靈、遠(yuǎn)程控制等。


自定義HID功能

此自定義非彼自定義,這里的自定義實(shí)際上是指HID的subclass和protocol均為0的設(shè)備類型,并非是指用戶可以自定義類別或HID報(bào)表格式等,把它比作一個(gè)不需要使用COM口的USB轉(zhuǎn)串口設(shè)備功能更形象些。

該功能常用于:USB轉(zhuǎn)串口雙向數(shù)據(jù)透?jìng)鳎怛?qū)HID方式),配合鍵鼠功能使用提供計(jì)算機(jī)的數(shù)據(jù)下傳通道。


常見Q&A

Q:如何選擇芯片工作模式?

A:各工作模式的適用場(chǎng)景:

模式0:多功能同時(shí)應(yīng)用的場(chǎng)景(如使用鍵鼠功能時(shí)需要和計(jì)算機(jī)之前收發(fā)自定義數(shù)據(jù))、需要多媒體鍵盤的場(chǎng)景、需要通過USB通道獲取/配置芯片參數(shù)的場(chǎng)景。

模式1:使用單一USB鍵盤功能,并且不使用多媒體鍵盤,適用于不支持復(fù)合設(shè)備的老式計(jì)算機(jī)。

模式2:同時(shí)使用鍵盤和鼠標(biāo)功能,且對(duì)Linux/Android/蘋果等操作系統(tǒng)的鼠標(biāo)兼容性更好。

模式3:使用單一USB自定義HID功能,配合計(jì)算機(jī)軟件實(shí)現(xiàn)串口設(shè)備和計(jì)算機(jī)的雙向數(shù)據(jù)收發(fā),類似于USB虛擬串口(COM口)應(yīng)用,區(qū)別是看不到COM虛擬端口,而是直接用系統(tǒng)HID API和設(shè)備完成交互。


Q:如何選擇串口通信模式?

A:各串口通信模式的適用場(chǎng)景:

模式0:協(xié)議傳輸模式,此模式適用于至少2個(gè)功能同時(shí)應(yīng)用的場(chǎng)景、需要通過串口通道獲取/配置芯片參數(shù)的場(chǎng)景。該模式功能最齊全,在不完全確定產(chǎn)品功能的前提下,建議優(yōu)先選用此模式作為默認(rèn)模式。

模式1:ASCII碼模式,為USB鍵盤功能量身定做的簡(jiǎn)版按鍵傳輸模式,該模式會(huì)將通常的可見ASCII字符直接轉(zhuǎn)成按鍵的HID報(bào)表以及按鍵釋放的HID報(bào)表,轉(zhuǎn)換的字符主要包含:數(shù)字0~9,字母A~Z,空格和回車等。注:

不能轉(zhuǎn)換特殊按鍵,如:F1~F12,方向鍵,Shift和Ctrl按鍵等。

模式2:透?jìng)髂J?,是指串口?shù)據(jù)原封不動(dòng)的通過USB打包上傳給計(jì)算機(jī),該模式適用于自定義HID模式,實(shí)現(xiàn)類似USB轉(zhuǎn)虛擬串口的應(yīng)用效果。


Q:協(xié)議傳輸模式鍵盤包怎么填充?

A:需要使用的命令碼:

image.png

這里以USB鍵盤普通數(shù)據(jù)為例:


image.png

串口報(bào)文的核心數(shù)據(jù)就是中間的8個(gè)字節(jié)的內(nèi)容,這8個(gè)數(shù)據(jù)芯片提取后會(huì)直接通過USB打包上傳給計(jì)算機(jī),內(nèi)容格式:

image.png

對(duì)于字節(jié)3~字節(jié)8的對(duì)應(yīng)鍵值,可查看文檔附錄的“CH9329 鍵碼表”

image.png

如:數(shù)字1~0對(duì)應(yīng)HID Code:0x1E~0x27,如果需要模擬按鍵1,則8字節(jié)內(nèi)容為:

鍵1按下:{0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00}

按鍵釋放:{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}

確認(rèn)了中間的8字節(jié)包,傳輸?shù)臅r(shí)候再按照協(xié)議要求,添加包頭,命令碼,地址碼和自動(dòng)計(jì)算得到的累加和等就可以實(shí)現(xiàn)鍵盤控制了。

舉例1:模擬"A"鍵先按下,再釋放
串口下傳: 57 AB 00 02 08 00 00 04 00 00 00 00 00 10
芯片上傳: 57 AB 00 82 01 00 85

串口下傳: 57 AB 00 02 08 00 00 00 00 00 00 00 00 0C
芯片上傳: 57 AB 00 82 01 00 85

舉例2:模擬先同時(shí)按下“左Shift”+“A”鍵,再釋放:
串口下傳: 57 AB 00 02 08 02 00 04 00 00 00 00 00 12
芯片上傳: 57 AB 00 82 01 00 85

串口下傳: 57 AB 00 02 08 00 00 00 00 00 00 00 00 0C
芯片上傳: 57 AB 00 82 01 00 85

除以上方法外,開發(fā)時(shí)還可以用其他方式便捷確定需要的鍵盤包內(nèi)容,使用USB分析儀軟件(USB2.0 Monitor或者BusHound等工具)抓取計(jì)算機(jī)上的USB鍵盤相應(yīng)按鍵按下時(shí)的USB包,然后復(fù)制下來使用即可。


Q:協(xié)議傳輸模式鼠標(biāo)包怎么填充?

A:需要使用的命令碼:

image.png

這里以USB相對(duì)鼠標(biāo)為例:

image.png

image.png


協(xié)議文檔介紹比較全面,可直接參考,此外開發(fā)時(shí)同樣可以使用USB分析儀軟件(USB2.0 Monitor或者BusHound等工具)抓取計(jì)算機(jī)上的USB鼠標(biāo)操作時(shí)的USB包,然后復(fù)制下來使用即可。


Q:使用鍵盤功能遇到部分機(jī)器鍵碼上傳不正確?

A:如果遇到傳多個(gè)鍵盤碼有碼丟失、重復(fù)或干脆不響應(yīng)的問題,可從以下幾個(gè)方面排查:

1、上傳時(shí)USB鍵盤設(shè)備是否在線,可通過設(shè)備管理器的“USB鍵盤”列表查看是否有CH9329對(duì)應(yīng)的KeyBoard,右擊“屬性”->“詳細(xì)信息”-》“硬件ID”,芯片默認(rèn)VID是:0x1A86。


2、檢查串口數(shù)據(jù)和USB數(shù)據(jù)是否符合設(shè)計(jì)預(yù)期,如果是協(xié)議傳輸模式,檢查每個(gè)串口數(shù)據(jù)包的回復(fù)內(nèi)容是否正確。


3、若串口數(shù)據(jù)和USB數(shù)據(jù)均未報(bào)錯(cuò),嘗試放慢上傳間隔。
(1)、在ASCII碼模式下,控制串口字符間的發(fā)送間隔,建議區(qū)間為5~50ms
(2)、在協(xié)議傳輸或透?jìng)髂J较?,控制每個(gè)鍵盤包的包間隔,建議區(qū)間為10~100ms


4、若主機(jī)端收不到任何數(shù)據(jù),則原因可能為:部分主機(jī)只能使用固定VID和PID的鍵盤,此時(shí)要用配置工具修改CH9329的USB ID信息和原有設(shè)備相同。


5、若遇到上傳的鍵盤數(shù)據(jù)中若存在連續(xù)相同鍵值,只顯示第一個(gè)數(shù)據(jù),后面重復(fù)的不顯示。比如:123444567778,只顯示:12345678,此時(shí)原因?yàn)椋?/p>

該部分機(jī)器對(duì)于連續(xù)鍵值上傳時(shí)的釋放包有特殊要求,此時(shí)ASCII模式(一個(gè)串口對(duì)應(yīng)2個(gè)鍵盤包:一個(gè)按鍵包和一個(gè)釋放包)無法適用,需要使用協(xié)議傳輸模式,在此模式下發(fā)包更改為:連續(xù)上傳鍵值按鍵包,上傳完成后最后再傳一個(gè)釋放包。


6、一個(gè)定位問題的便捷方式:出現(xiàn)兼容性問題后,若機(jī)器有正??捎玫膾叽a槍等設(shè)備,可以使用USB總線分析儀或其他USB抓包軟件抓取掃碼槍和電腦之間的通訊數(shù)據(jù)包,然后使用CH9329模擬該設(shè)備發(fā)包規(guī)律上傳。


不支持單一鼠標(biāo)模式嗎


您好,CH9329不支持單一鼠標(biāo)模式。


請(qǐng)教,9329芯片原理圖,LED燈用3k3電阻為啥?


您好,芯片原理圖中的電阻僅為配合LED使用起到限流作用,無特別要求??筛鶕?jù)實(shí)際需求選擇是否使用,及調(diào)節(jié)阻值。


請(qǐng)教:

我的應(yīng)用場(chǎng)景是RS232接口輸出的條碼數(shù)據(jù)轉(zhuǎn)為USB HID輸出。條碼數(shù)據(jù)25條以內(nèi)沒什么問題,條碼超過30條,就會(huì)出現(xiàn)數(shù)據(jù)丟失的情況。請(qǐng)問有什么解決的思路嗎?

每個(gè)條碼的長(zhǎng)度是20個(gè)字節(jié),RS232的波特率是9600,MCU給9329的發(fā)送邏輯是while(1)里面查詢,有數(shù)據(jù)就往9329發(fā)。是不是給9329發(fā)太快了,超過30個(gè)條碼的時(shí)候,9329內(nèi)部緩存滿了導(dǎo)致部分?jǐn)?shù)據(jù)被覆蓋??

硬件方案是通過MCU接收到RS232數(shù)據(jù)后,轉(zhuǎn)發(fā)給CH9329輸出。

CH9329使用的工作模式1:?jiǎn)我绘I盤功能,串口工作模式1:ASCII模式。


您好,請(qǐng)按照置頂帖的方法排查下問題。

image.png


硬件挺好,就是缺一個(gè)對(duì)應(yīng)CH9329的定制串口客戶端。再+光電隔離,+CH340,這樣直接就可以安全控制主機(jī)了。


只有登錄才能回復(fù),可以選擇微信賬號(hào)登錄

国产91精品新入口,国产成人综合网在线播放,九热这里只有精品,本道在线观看,美女视频a美女视频,韩国美女激情视频,日本美女pvp视频