應用背景
機械鍵盤在最近幾年發(fā)展迅猛,功能也逐漸豐富,在開源環(huán)境中也存在幾個發(fā)展迅猛的開源項目,比如QMK。這些項目對STM32之類的芯片雖然有所支持,但是相關資料也會少很多,所以項目之初我是希望可以將QMK作為一個軟件包接入RT-Thread,但是由于對其了解不夠深入,最后項目變成了完成鍵盤為主(主要PCB已經(jīng)畫回來了)。
本次作品,是希望借實現(xiàn)一個小鍵盤接觸QMK之類的開源項目,并將其接入RT-Thread,這樣對于機械鍵盤這個行業(yè)而言,主控芯片的選擇會豐富很多。
實現(xiàn)功能
本項目主要為一個通過USB HID協(xié)議對電腦進行通信的機械鍵盤(30左右鍵+3個編碼器),添加WS2812的燈珠,添加1.14寸OLED顯示屏,均完成基礎功能編寫測試(存在部分不穩(wěn)定的bug)。通過RT-Thread為每一個設備建立線程,實現(xiàn)了互相通訊,實現(xiàn)了部分互動特效。
開發(fā)板和RT-Thread使用情況概述
本次設計對鍵盤部分設計了PCB以及頂部定位板的PCB,使用40P的FPC排線將所有所需引腳引出,通過杜邦線連接到主控板,使用的主控板為國民技術提供的N32G457開發(fā)板,將所有IO引出,考慮之下,作為前期項目,采取了杜邦線的形式。
在設計PCB的時候,考慮到整體鍵盤一體性,有做額外設計,將主控部分放置于頂層定位板處,床層PCB通過FPC排線進行連接。當然由于時間與資源關系并沒有完成該部分,定位板只做定位板使用,是便于調(diào)試的選擇。
在軟件層面該程序使用RT-Thread 4.1.0為主控系統(tǒng),部分內(nèi)容通過對軟件包的修改完成。
硬件框架
如圖:
實裝了OLED,WS2812b,和鍵盤本體,通過FPC排線接到轉(zhuǎn)接板,通過杜邦線連接到開發(fā)板。
對于機械鍵盤部分,原理圖如下。
軟件框架說明
針對每一個外設都有做線程,USB接收的信息有CapsLock和NumsLock,這類事件通過Event公告。
keyboard線程是10ms掃描一次,先掃描矩陣鍵盤,再掃描旋轉(zhuǎn)編碼器。
當發(fā)現(xiàn)有按鍵需要發(fā)送出去,在線程內(nèi)先打包好,然后通過消息隊列發(fā)送出去。
軟件模塊說明
由于N32G45X的BSP并不支持USB設備,在移植嘗試進行了一些時間后,由于本身并未研究過USB設備,在仍然希望最終結(jié)果相對完整的前提下,選擇了另一種方法。根據(jù)國民技術提供的N32G457的庫函數(shù),內(nèi)部包含了部分使用USB向電腦發(fā)送數(shù)據(jù)的例程,本次項目將該部分例程魔改,并未初始化USB的device,但對USB設備分配了一個線程,使用RT-Thread的方法進行橋接,發(fā)送所需數(shù)據(jù)到例程中設備向USB主機發(fā)送設備的位置,最終實現(xiàn)了成功枚舉HID設備并正常進行打字輸入。
現(xiàn)階段軟件在打字部分已經(jīng)比較完善,ws2812b部分存在bug,會出現(xiàn)顏色偏差。
對SPI部分驅(qū)動后續(xù)有進行小修復,驗證通過,后續(xù)會提交PR。
-
PCB布線
+關注
關注
21文章
463瀏覽量
42132 -
OLED顯示屏
+關注
關注
6文章
218瀏覽量
30803 -
RT-Thread
+關注
關注
31文章
1305瀏覽量
40384 -
STM32芯片
+關注
關注
0文章
38瀏覽量
4424 -
N32G457
+關注
關注
0文章
17瀏覽量
955
發(fā)布評論請先 登錄
相關推薦
評論