• 方案介紹
  • 推薦器件
  • 相關(guān)推薦
申請(qǐng)入駐 產(chǎn)業(yè)圖譜

基于LPC5516的SDVX手臺(tái)技術(shù)分享-自制音樂(lè)游戲控制器

2024/05/17
6293
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點(diǎn)資訊討論

本感覺(jué)一個(gè)鍵鼠復(fù)合設(shè)備沒(méi)啥好講的,但是應(yīng)不住日天兄再三之邀,寫(xiě)下此文。

首先簡(jiǎn)單科普一下USB的速度,對(duì)于USB2.0來(lái)說(shuō),一共有3種速度

低速(USB1.0):1.5Mbit/s

全速(USB1.1):12Mbit/s

高速(USB2.0):480Mbit/s

對(duì)于大部分支持USB2.0的單片機(jī)來(lái)說(shuō),一般都是支持的全速模式,高速模式是比較少見(jiàn)的,而這次使用的LPC5516是全速模式與高速模式都支持的。

我們先看一下手臺(tái)的USB類(lèi)型。

可以看到,識(shí)別出來(lái)的是高速USB,但是事實(shí)上對(duì)于鍵盤(pán)鼠標(biāo)這種低速設(shè)備來(lái)說(shuō),完全是大才小用了,這里我就是屬于弄著玩玩,看起來(lái)比較酷炫。

手臺(tái)本身由兩部分組成,鍵盤(pán)與鼠標(biāo),可以看到配置描述符里面有兩個(gè)接口

分別就是鼠標(biāo)跟鍵盤(pán)了

USB鼠標(biāo)部分:

鼠標(biāo)發(fā)送給PC的數(shù)據(jù)每次4字節(jié)

BYTE1 --

|--bit7~3: 無(wú)意義

|--bit2: 中鍵,1按下 0抬起

|--bit1: 右鍵

|--bit0: 左鍵

BYTE2 -- X坐標(biāo)變化量,負(fù)數(shù)表示向左移,正數(shù)表右移。用補(bǔ)碼表示變化量

BYTE3 -- Y坐標(biāo)變化量,負(fù)數(shù)表示向下移,正數(shù)表上移。用補(bǔ)碼表示變化量

BYTE4 -- 滾輪變化,0x01表示滾輪向前滾動(dòng)一格;0xFF表示滾輪向后滾動(dòng)一格;0x80是個(gè)中間值,不滾動(dòng)。

USB是一個(gè)主機(jī)向從機(jī)查詢的協(xié)議,對(duì)于鼠標(biāo)來(lái)說(shuō),查詢的速度越快,連續(xù)性越好,這里我程序設(shè)置的主機(jī)輪詢速度為2ms,也就是鼠標(biāo)部分1S通信500次。

這個(gè)參數(shù)在鼠標(biāo)上叫回報(bào)率,也叫刷新率,簡(jiǎn)單理解就是1S能上傳多少次數(shù)據(jù)到電腦,一般鼠標(biāo)是125Hz。我的鼠標(biāo)測(cè)試(羅技 M90)

手臺(tái)數(shù)據(jù)測(cè)試

500Hz的回報(bào)率對(duì)手臺(tái)來(lái)說(shuō)完全足夠。

USB鍵盤(pán)部分:

鍵盤(pán)發(fā)送給PC的數(shù)據(jù)每次8個(gè)字節(jié)

定義分別是:

BYTE1 --

|--bit0: 左Ctrl,1為按下 0為抬起

|--bit1: 左Shift

|--bit2: 左Alt

|--bit3: 左GUI

|--bit4: 右Ctrl

|--bit5: 右Shift

|--bit6: 右Alt

|--bit7: 右GUI

BYTE2 -- 保留

BYTE3--BYTE8 -- 普通按鍵

所以說(shuō)一般的USB鍵盤(pán)只考慮軟件的話只能做到6鍵無(wú)沖,如果需要更多,那只能加點(diǎn)接口,也就是那些支持多鍵無(wú)沖的鍵盤(pán)(需要硬件支持)。

對(duì)于手臺(tái)來(lái)說(shuō),上面只有7個(gè)按鍵,這7個(gè)按鍵是直接接到IO上的。硬件完全支持無(wú)沖。而且其中一個(gè)按鍵還是確定鍵,平時(shí)使用中軟件只要保證6鍵無(wú)沖即可。

同時(shí)按下6鍵,可正常識(shí)別。

鍵盤(pán)另一個(gè)比較重要的就是反應(yīng)速度了,也就是按下按鍵到電腦反應(yīng)的時(shí)間(其實(shí)我覺(jué)得完全不重要,因?yàn)殒I盤(pán)又不像鼠標(biāo)一樣是個(gè)連續(xù)的過(guò)程,人的反應(yīng)速度才多少)。

軟件上配置的主機(jī)輪詢速度就是4ms,也就是理論上,按下按鍵到電腦有反應(yīng),最長(zhǎng)要4ms。

這個(gè)只能說(shuō),主觀感受是完全沒(méi)問(wèn)題的。

對(duì)于LPC5516來(lái)說(shuō)這種應(yīng)用只能說(shuō)是毛毛雨了,150MHz的主頻,完全輕輕松松。

按鍵與編碼器

按鍵、編碼器通通外部上拉加電容消抖,軟件部分沒(méi)添加消抖,使用中未出現(xiàn)按鍵抖動(dòng)的問(wèn)題。

編碼器代碼采用外部中斷的方式寫(xiě)的,穩(wěn)定性還可以,就是買(mǎi)的編碼器分辨率太低了,效果不太理想。

WS2812:

代碼上使用了SPI去模擬,沒(méi)有做按鍵與燈的綁定代碼,目前只支持全彩漸變呼吸燈的效果。目前板子硬件上有11個(gè)燈,驅(qū)動(dòng)毫無(wú)壓力。

代碼是用了mgn的程序改巴改巴搞出來(lái)的,原地址: https://www.nxpic.org.cn/module/forum/forum.php?mod=viewthread&tid=620562

程序開(kāi)發(fā)上,NXP官方提供了很詳細(xì)的例程,很方便就能上手,手臺(tái)的軟件部分的開(kāi)發(fā)時(shí)間加起來(lái)不超過(guò)2小時(shí)。MCUXpresso Config Tools確實(shí)好用,配IO配時(shí)鐘不要太簡(jiǎn)單,

最后總結(jié)一下:對(duì)于鍵鼠設(shè)備來(lái)說(shuō),全速USB就完全足夠,因?yàn)殒I鼠是走中斷傳輸模式的,速度的提升到了1ms之后的意義就不大了,太快反而給主機(jī)帶來(lái)了負(fù)擔(dān)。比如現(xiàn)在我在使用的鍵盤(pán)就是全速USB的,能查到的鼠標(biāo)信息,好的游戲鼠標(biāo)的回報(bào)率就是500Hz或者1000Hz了,換算到USB速度上,差不多也就是全速USB的水平吧(手上沒(méi)有這么高級(jí)的玩意,猜的速度,歡迎有大佬在帖子留下自己鼠標(biāo)的測(cè)試記錄)。

對(duì)于我這個(gè)手臺(tái)來(lái)說(shuō)LPC5516可以說(shuō)性能?chē)?yán)重過(guò)剩。還是得想個(gè)辦法逼出極限性能來(lái)啊。

推薦器件

更多器件
器件型號(hào) 數(shù)量 器件廠商 器件描述 數(shù)據(jù)手冊(cè) ECAD模型 風(fēng)險(xiǎn)等級(jí) 參考價(jià)格 更多信息
DSC1001DL5-025.0000 1 Microchip Technology Inc OSC MEMS 25.000MHZ CMOS SMD

ECAD模型

下載ECAD模型
$2.07 查看
DSC1123CI2-125.0000 1 Microchip Technology Inc CRYSTAL OSCILLATOR, CLOCK, 125MHz, LVDS OUTPUT

ECAD模型

下載ECAD模型
$2.44 查看
HFBR-1414T 1 Hewlett Packard Co Transmitter, 792nm Min, 865nm Max, 175Mbps, ST Connector, Panel Mount
$16.71 查看

相關(guān)推薦