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