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

求一種基于RT-Thread和N32G457的便攜測(cè)距模塊設(shè)計(jì)方案

評(píng)論