分享一下最近自己入门嵌入式写的几篇博客, 一步一步在 stm32f103 开发板上移植上 qmk 固件

231 天前
 hitsmaxft

最近业余时间把自己多年前买了之后一直吃灰的 野火指南者开发板拿出来把 qmk 跑上去了. 一点点地熟悉了 qmk chibios 和 stm32, 完全没搞过微电子类的开发, 算是分享一下学习笔记.

说实话 stm32f103 不是新手入门 qmk 的好选择, 不过我自己一点点把问题搞清楚并解决, 也算是提前学习了更多基础知识了.

文章一, 给这块老板子刷上了 dfu bootloader, 解决刷 qmk 固件麻烦的问题.

https://io.bhe.ink/2024/04/16/YEHUO-ZNZ-Part-1-build-dfu-bootloader-for-znz-board/

其实, 这块板子的 usb 的 disc pin 困扰了我好久, 这也让我学习了要看原理图, 相关引脚的原理图上都要看一遍, 该初始化对的一个都不能少.

文章二, 开始一步一步调试把 qmk 跑了起来.

https://io.bhe.ink/2024/04/29/YEHUO-ZNZ-Part-2-make-a-qmk-prototype-base-on-znz-board/

这块没啥困难, 需要了解一下 layout 和引脚的映射关系, 用的 direct pin. 用更实用的行列式配置也简单的.

文章三, 搞定了 qmk 的基本部分, 接下来就是让板载的 eeprom 存储发挥作用, 和 w2812 RGB 灯珠.

https://io.bhe.ink/2024/04/30/YEHUO-ZNZ-Part-3-make-a-qmk-prototype-base-on-znz-board-rgb-and-eeprom/

oled 还没写. 由于 chibios 很挫的只支持了 i2c1 , 我实际上又把 eeprom 切回了实用 mcu 内部的 flash 模拟(更简单), 把 i2c1 让给了 ssd1306 这块屏幕

成品图 https://img.bhe.ink/IMG_2238.jpeg

1784 次点击
所在节点    程序员
11 条回复
CEBBCAT
231 天前
很好👍 收藏了 /doge

学校学的都是软件方向,虽然自己也尝试过加入电子社团,但是就像我那学了一半的编译器,始终没有很好的进展。晚点时候看看,希望能有大结果
tywtyw2002
231 天前
f103 弄 qmk 的确有点跟自己作对。除非是老板子是带 f103 mcu 的,否则新设计都不会去选 f103 ,毕竟那个 mcu 性能有点堪忧。

现在 diy 键盘,有线 mcu 选 rp2040 ,蓝牙选 nrf52840 。

自己 diy 键盘还是要选社区支持性好的 mcu ,否则折腾底层太浪费时间了。
hitsmaxft
231 天前
@tywtyw2002 实际操作下来难度倒也不大,毕竟键盘固件基础功功能开销很小。我也就是学习了下 dma 和时钟是咋工作的。

蓝牙我打算下一步用外挂 nrf52810 来实现。参考一下 annepro2 的代码实现

我用 stm32f1 用出于学习目的,基础知识完备工作量也挺小的。
tywtyw2002
231 天前
@hitsmaxft #3
是啊键盘 8bit AVR 都能跑。mcu 性能好了,编程就容易多了,不用去考虑 flash ram 够不够。

如果我没记错的化,qmk 蓝牙是目前是走得 AT 协议,的确可以说是外挂了。不过需要蓝牙模块有支持 HID 的 AT 协议程序。

qmk 挂蓝牙,功耗在那里摆着呢,太费电了。根本没法到 uA 级别,远不如原生 nrf52480+zmk 了。

说起代码,QMK 真的跟一坨 X 一样。远远不如 ZMK 简洁。
( QMK 的主逻辑跟功能支持是用一堆 define 写的,ZMK 的主逻辑是消息队列。)
hitsmaxft
231 天前
@tywtyw2002 作为一个开源项目,还是做得不错了,社区和文档都还行,就是蓝牙这个协议上限制死了很让人头疼
hitsmaxft
231 天前
@tywtyw2002 qmk 目前在用外挂蓝牙的方案挺普遍, anne pro 2 和 keychron 都是, 还有大量个人做的定制键盘 pcb


zmk 在计划任务里. nrf52480 开发板还没买.

qmk 定制的改起来难度也不大,该有的回调函数也都提供了, 可能我没怎么接触 c 代码项目. 看上去都一个样, 宏满天飞..

就是底下那个 chibios 感觉不是太流行, 也不支持 nrf52 或者 esp32
tywtyw2002
231 天前
@hitsmaxft #6
历史遗留问题啊,201X 年那时候机械键盘刚流行,很多 60%定制 PCB 都是 GH60 开源的改版,mcu 是 AVR8bit ,出货量最大的是 Satan 的板子。
后来一些开源项目把 MCU 升级成了 STM32 了,然后各个作坊就开始量产定制键盘了。
画画 pcb + qmk 就敢说是定制。

chibios 就是当年 STM32 刚出来的产物,要移植 QMK 到 STM32 平台,最简单就是找个支持 USB HID 的底层,然后不知道为什么就选了 chibios 。
VIA 什么的应该是为了方便改 QMK 键盘层搞出来的东西,对普通人意义重大,但是对程序员没啥用,改键位什么的直接改 C 代码然后编译,也就是几分钟的事情。

EPS32 没有任何支持的固件,各种 RTOS 对 ESP32 USB 的支持很差,想搞键盘固件,要不你把 QMK 的 keymatrix scan 和 action 移植到 IDF 上,要不等 zephyrproject 支持了 ESP32 USB 和低功耗跑 ZMK 。

ZMK 算是现在键盘固件,直接找了个 RTOS 然后重写整个键盘的逻辑层,只要 zephyrproject 支持的 MCU ,简单移植下,ZMK 就能跑。

现在社区键盘高玩们都在画板子玩 Split 了,类似 Corne 3*6 之类的了。layout 搞 tap dance/macro 等等。

ZMK nrf52 蓝牙无灯,能做到 500mha 电池半年一冲。


nrf52480 搜 nicenano ,30+吧。RP2040 10+左右。
hitsmaxft
230 天前
@tywtyw2002 我自己现在用着 61 键和 lily58 的分体,说实话我实在是没觉得分体和直列有多大优势,误操作太多了,还不如固定的😂
tywtyw2002
230 天前
@hitsmaxft 分体优势还是 36 42keys 这样的,不过需要练习,熟悉了就觉得很舒服。键盘定义一堆 combo ,然后大部分操作都可以 2 个键解决。

这东西跟 vim 一样,有学习曲线。
hitsmaxft
230 天前
@tywtyw2002 我就是长时间使用了直列分体之后的感想
直列只不过简化了制作,但是使用体感确实不如交错布局😵‍💫。
tywtyw2002
229 天前
@hitsmaxft 斜列也不复杂啊。

画 pcb 的时候 switch 和 diode 都是用脚本排位置啊,什么布局都没差别。。。。

边框用 cad 画或者 build123d 直接脚本出 dfx 了。

corne 我搞了个专门玩游戏的键位,玩起来特别爽。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1038884

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX