Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
国民技术_N32G45x
【N32G457】 基于RT-Thread和N32G457的迷你键盘
发布于 2022-03-27 07:54:34 浏览:1365
订阅该版
[tocm] 此文为参加RT-Thread与国民技术联手推出N32G457 RT-Thread设计大赛期间作品。 由于疫情影响加上其他各种原因,本应在3月25日结束的比赛在今日终于完成了一个比较完整的作品,无论是否可以参赛,还是希望对大家有所帮助。 先放个图。 ![fc7fffd52263768bfa21ed4d4958c61.jpg](https://oss-club.rt-thread.org/uploads/20220327/c8086e8f55b7fae822c0bbc800624d8d.jpg.webp) ## 应用背景 机械键盘在最近几年发展迅猛,功能也逐渐丰富,在开源环境中也存在几个发展迅猛的开源项目,比如[QMK](https://qmk.fm/)。这些项目对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为主控系统,部分内容通过对软件包的修改完成。 ## 硬件框架 如图: ![4ad378ef9f666fb5672f7f17489b61d.png](https://oss-club.rt-thread.org/uploads/20220327/22d671143fb7ff94788fc8e3fa4e3c57.png.webp) 实装了OLED,WS2812b,和键盘本体,通过FPC排线接到转接板,通过杜邦线连接到开发板。 对于机械键盘部分,原理图如下。 ![Schematic_Keyboard_ver1_Blues_2022-03-27.png](https://oss-club.rt-thread.org/uploads/20220327/11b552cce8fec883e0565b9c01b9ba21.png.webp) ## 软件框架说明 ![5e4fea2437017b8aebec6c6fcf91e64.png](https://oss-club.rt-thread.org/uploads/20220327/2b2d50864c5f71b8ad899c59719d63e2.png.webp) 针对每一个外设都有做线程,USB接收的信息有CapsLock和NumsLock,这类事件通过Event公告。 keyboard线程是10ms扫描一次,先扫描矩阵键盘,再扫描旋转编码器。 当发现有按键需要发送出去,在线程内先打包好,然后通过消息队列发送出去。 软件模块说明 由于N32G45X的BSP并不支持USB设备,在移植尝试进行了一些时间后,由于本身并未研究过USB设备,在仍然希望最终结果相对完整的前提下,选择了另一种方法。根据国民技术提供的N32G457的库函数,内部包含了部分使用USB向电脑发送数据的例程,本次项目将该部分例程魔改,并未初始化USB的device,但对USB设备分配了一个线程,使用RT-Thread的方法进行桥接,发送所需数据到例程中设备向USB主机发送设备的位置,最终实现了成功枚举HID设备并正常进行打字输入。 现阶段软件在打字部分已经比较完善,ws2812b部分存在bug,会出现颜色偏差。 对SPI部分驱动后续有进行小修复,验证通过,后续会提交PR。 ### 作品完整图片 ![33f3c905315a2b9dcbb5299e305cbcc.jpg](https://oss-club.rt-thread.org/uploads/20220327/c8086e8f55b7fae822c0bbc800624d8d.jpg.webp) ![d95c46a7b512e2379f89f70e3823809.jpg](https://oss-club.rt-thread.org/uploads/20220327/539423aa16630247e2fd6b8ac3f6535f.jpg.webp) ![dc2ff49b8089155551b0322a089035e.jpg](https://oss-club.rt-thread.org/uploads/20220327/fff5b23aed348b129f181e0a88587521.jpg.webp) ### 视频演示 演示内容放在了Bilibili:[一个不迷你的迷你机械键盘雏形的演示视频](https://b23.tv/I1EuaFM) ### 代码地址 [Gitee_Mini-Keyboard-Blues](https://gitee.com/bluesjiang/mini-keyboard-blues.git)
3
条评论
默认排序
按发布时间排序
登录
注册新账号
关于作者
Blues_Jiang
这家伙很懒,什么也没写!
文章
1
回答
4
被采纳
0
关注TA
发私信
相关文章
1
[N32G457]移植sdio驱动后,开启sdio1系统挂掉
2
N32G457开发板使用AT组件编译出错
3
ADC采样只有0和3.3v?
4
基于N32G45X开发板建立工程失败?
5
有没有人N32G457在挂载SPI Flash上挂载文件系统成功的?
6
使用N32G457的us函数程序会卡死?
7
在程序里关闭JTAG 后,无法再次烧录程序
8
求一个N32系列QSPI驱动
9
N32G457 MPU6050软件包使用不成功
10
在N32G455 HTTP_OTA升级上,下载成功,无法跳转
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
国产MCU移植系列教程汇总,欢迎查看!
4
机器人操作系统 (ROS2) 和 RT-Thread 通信
5
五分钟玩转RT-Thread新社区
6
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
FinSH
ART-Pi
USB
DMA
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
RTC
FAL
rt-smart
ESP8266
I2C_IIC
WIZnet_W5500
UART
ota在线升级
PWM
cubemx
freemodbus
flash
packages_软件包
BSP
潘多拉开发板_Pandora
定时器
ADC
GD32
flashDB
socket
中断
Debug
编译报错
msh
SFUD
keil_MDK
rt_mq_消息队列_msg_queue
MicroPython
ulog
C++_cpp
本月问答贡献
踩姑娘的小蘑菇
7
个答案
3
次被采纳
a1012112796
15
个答案
2
次被采纳
张世争
9
个答案
2
次被采纳
rv666
5
个答案
2
次被采纳
用户名由3_15位
13
个答案
1
次被采纳
本月文章贡献
程序员阿伟
9
篇文章
2
次点赞
hhart
3
篇文章
4
次点赞
大龄码农
1
篇文章
5
次点赞
RTT_逍遥
1
篇文章
2
次点赞
ThinkCode
1
篇文章
1
次点赞
回到
顶部
发布
问题
投诉
建议
回到
底部