ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

QMK 固件实战:Acheron Themis 开源 TKL 键盘 PCB 的构建与刷写指南

QMK 固件实战:Acheron Themis 开源 TKL 键盘 PCB 的构建与刷写指南 QMK 固件实战Acheron Themis 开源 TKL 键盘 PCB 的构建与刷写指南【免费下载链接】qmk_firmwareOpen-source keyboard firmware for Atmel AVR and Arm USB families项目地址: https://gitcode.com/GitHub_Trending/qm/qmk_firmware本篇技术指南以 keyboards/acheron/themis/readme.md 为核心系统讲解 Acheron Project 推出的开源无背光 TKLTenkeyless机械键盘 PCB——Themis 在 QMK 固件仓库中的三个硬件变体87H、87H-T-SC、88H-T-SC的布局差异、源码组织结构、固件编译与 DFU 刷写流程。读完本文你将掌握make acheron/themis/revision:default系列命令的完整用法理解该板子的矩阵定义、单 LED Caps Lock 指示与 RGB 灯效实现原理并能独立完成从克隆仓库到刷写固件的全流程。Themis 是什么无背光、热插拔、固定布局的开源 TKL PCBThemis 是 Acheron Project 推出的开源、免费发布的 TKL87/88 键无数字小键盘布局PCB其核心设计取向有三点无 LED 背光No LED lighting板载灯效并非用于照亮键帽而是仅保留一颗 WS2812 RGB LED 作为 Caps Lock 状态指示灯无焊接热插拔 MX 轴座Solderless hotswap MX switches support支持直接插入 Cherry MX 兼容轴体无需焊接每个变体固定布局Fixed layout for each variant不同型号的配列在硬件上已固定选择对应 revision 编译即可。键盘维护者为 GondolindrimÁlvaro Volpato硬件基于 Acheron Project 的 Joker 模板 记录了厂商信息AcheronProject、维护者Gondolindrim以及 USB VID0xAC11。仓库目录结构与三个硬件变体Themis 在 QMK 仓库中位于 keyboards/acheron/themis/包含三个可独立编译的 revision每个 revision 都是一个独立的子目录变体目录键盘名称USB PID配列说明87h/Themis 87H Rev. Alpha0x5448LAYOUT_tkl_ansi标准 ANSI TKL18 列无 F13 的标准 TKL87htsc/Themis 87H-T-SC Rev. Alpha0x5449LAYOUT_tkl_ansi_tsanganTsangan 底排87 键 Tsangan 配列88htsc/Themis 88H-T-SC Rev. Alpha0x5450LAYOUT_tkl_f13_ansi_tsanganF13 Tsangan带 F13 键的 88 键版本三个变体的核心差异集中在顶层功能行与底排87H采用标准 TKLF1–F12 分成 4 组功能键区与主键区之间留有 0.25U 间隙底排为 1.25U Ctrl / 1.25U Win / 1.25U Alt 6.25U 空格 1.25U Alt / 1U Win / 1U MO(1) / 1.25U Ctrl 的标准配列87H-T-SC与88H-T-SC采用Tsangan 底排1.5U Ctrl、1U Win、1.5U Alt、6.25U 空格、1.5U Alt、1U Win、1.5U Ctrl并删去了右下角的MO(1)键88H-T-SC在 F12 右侧额外增加一个F13键见 88htsc/keyboard.json使其成为 88 键。三个变体同时声明了对应的社区布局支持87H 支持tkl_ansi87H-T-SC 支持tkl_ansi_tsangan88H-T-SC 支持tkl_f13_ansi_tsangan这意味着你可以在仓库的 layouts/community/ 目录中复用这些社区布局的键映射方案。每个变体目录内的文件构成以 87H 为例87htsc、88htsc 结构相同keyboard.jsondata-driven 配置定义矩阵引脚、功能开关、处理器、bootloader、布局与键位坐标config.hWS2812 PWM 驱动相关宏定义87h.c板级自定义逻辑Caps Lock LED 指示halconf.h 与 mcuconf.hChibiOS/RT 外设配置PWM、PAL 与 TIM1keymaps/default/keymap.c默认键映射。核心硬件配置解析keyboard.json 与 config.h以 87h/keyboard.json 为例这份>processor: STM32F401, bootloader: stm32-dfu,采用 STM32F401Cortex-M4Fbootloader 为stm32-dfu即通过 USB DFU 模式刷写固件。矩阵定义9 行 × 18 列diode_direction为COL2ROWmatrix_pins: { cols: [A8,C9,C8,B14,B12,B10,B1,B0,A7,A6,A5,A4,C5,C7,B3,A2,C12,D2], rows: [A15,A10,C6,C4,A3,A1,C11,C10,B4] }启用功能features: { bootmagic: true, mousekey: true, extrakey: true, rgblight: true, nkro: true },依次启用了 Bootmagic开机按住左上角键可进入 DFU / 触发特殊功能、鼠标键、多媒体键、RGB 灯效与全键无冲NKRO。EEPROM 磨损均衡eeprom.wear_leveling.backing_size为 8192字节借助 STM32F401 片上 Flash 实现配置持久化避免频繁擦写 EEPROM 导致寿命问题。RGB 灯效rgblight.led_count为 1ws2812.pin为B15——正如前文所述整块 PCB 只有一颗 WS2812 可寻址 LED由 TIM1 PWM 驱动输出。WS2812 的 PWM 驱动细节87h/config.h 中的宏揭示了这颗 LED 的驱动方式#define WS2812_PWM_COMPLEMENTARY_OUTPUT #define WS2812_PWM_DRIVER PWMD1 #define WS2812_PWM_CHANNEL 3 #define WS2812_PWM_PAL_MODE 1 #define WS2812_PWM_DMA_STREAM STM32_DMA2_STREAM5 #define WS2812_PWM_DMA_CHANNEL 6对应地mcuconf.h 开启 TIM1 的 PWM 通道#undef STM32_PWM_USE_TIM1 #define STM32_PWM_USE_TIM1 TRUEhalconf.h 则开启 PWM 与 PAL引脚复用两个 HAL 模块。这里使用互补输出模式COMPLEMENTARY_OUTPUT通过 DMA 从内存直接搬运波形数据到定时器从而在尽量少占用 CPU 的情况下稳定输出 WS2812 所需的 800kHz 时序信号。Caps Lock 状态指示的实现由于没有背光、仅有一颗 RGB LED板厂将这颗 LED 复用作 Caps Lock 指示灯。87h.c 通过led_update_kb钩子实现bool led_update_kb(led_t led_state) { bool res led_update_user(led_state); if(res) { led_state.caps_lock ? rgblight_setrgb_at(0xAA,0xAA,0xAA,0) : rgblight_setrgb_at(0x00,0x00,0x00,0) ; } return res; }当 Caps Lock 点亮时LED 置为暖白色0xAA,0xAA,0xAA关闭时熄灭0x00,0x00,0x00。函数先调用led_update_user把控制权交给用户层用户层允许返回 true后才执行板级 RGB 设置——这也是 QMK 分层钩子_kb/_user的标准协作模式。默认键映射标准 ANSI TKL 与一层功能层默认键映射 采用两层设计使用LAYOUT_tkl_ansi宏第 0 层主层标准 ANSI TKL 全键位右上角为 Print Screen / Scroll Lock / Pause导航区为 Insert / Home / Page Up、Delete / End / Page Down方向键保留右 Ctrl 左侧的MO(1)用于切换到功能层第 1 层功能层Esc 位置放置QK_BOOT进入 DFU bootloader 的快捷键与 readme 中“按住复位键进入 DFU”等效并集中放置 RGB 灯效控制键键位功能UG_TOGG开关 RGB 灯效UG_NEXT切换 RGB 模式UG_HUEU/UG_HUED色相 / -UG_SATU/UG_SATD饱和度 / -UG_VALU/UG_VALD亮度 / -UG_SPDU/UG_SPDD动态模式速度 / -由于整板只有一颗 LED这些灯效参数的实际效果主要体现在 Caps Lock 指示灯的亮灭与启用模式下颜色上。87H-T-SC 与 88H-T-SC 的默认键映射结构相同仅因 Tsangan 底排删去了MO(1)键位、配列宏改为LAYOUT_tkl_ansi_tsangan/LAYOUT_tkl_f13_ansi_tsangan。编译固件make 命令详解前置条件搭建 QMK 构建环境安装qmk_firmware依赖、工具链与qmkCLI克隆当前仓库到本地对于 STM32 目标需要安装 ARM 交叉编译工具链如arm-none-eabi-gcc以及dfu-utilLinux 下通常由libusb相关软件包提供。编译默认配列在仓库根目录执行make acheron/themis/revision:default其中revision为87h、87htsc或88htsc例如make acheron/themis/87h:default # 标准 ANSI TKL make acheron/themis/87htsc:default # 87 键 Tsangan 底排 make acheron/themis/88htsc:default # 88 键带 F13Tsangan 底排编译产物固件名.bin/.hex会输出到对应 revision 目录下。keyboard.json中启用了build.lto链接时优化可以显著减小固件体积这在 STM32F401 的 Flash 空间规划下是必要且默认开启的。使用自定义键映射如果你在keymaps/下新增了自定义 keymap例如keymaps/myconfig/可以这样编译make acheron/themis/87h:myconfig刷写固件DFU 模式与双通道操作Themis 采用 STM32 的 DFUDevice Firmware Update引导方案bootloader 为stm32-dfu刷写流程如下进入 DFU 模式将 PCB 接入 USB 后按住复位Reset按钮至少 5 秒板子会以 DFU 模式枚举到主机选择刷写工具使用dfu-util或 QMK Toolbox 等支持 DFU 协议的烧录工具将编译好的固件上传到微控制器一键式编译 刷写也可以直接执行make acheron/themis/revision:default:flash该命令会在编译完成后自动将板子带入 DFU 等待状态并调用配套工具完成刷写Linux 下通常需要dfu-util可用且具备相应 USB 权限。进阶技巧上述进入 DFU 的方式与键映射层 1 中的QK_BOOT快捷键、以及features.bootmagic提供的 Bootmagic Lite按住左上角键插入 USB是三种等效入口任选其一即可进入刷写状态。新手入门与常见问题定位第一次接触 QMK建议先完成 QMK 官方的构建环境安装指南与编译指南熟悉make的 target 语法后再回到本板刷写失败排查确认进入 DFU 模式后dfu-util -l能列出0xAC11:0x544887H、0x544987H-T-SC或0x545088H-T-SC设备若枚举不到请检查复位键按住时长与线材/USB 端口供电改配列前先确认型号三个变体的配列是硬件固定的87htsc与88htsc不能互刷配列编译时务必使用与手中 PCB 对应的 revision单 LED 灯效预期管理rgblight.led_count 1意味着绝大多数 RGB 流光模式在这块板上表现有限其核心用途是 Caps Lock 指示。总结Acheron Themis 是一个“去繁就简”的开源 TKL 项目无背光、热插拔、固定配列配套 QMK 支持也保持了同样的精简风格——单一 LED 的 WS2812 驱动、清晰的三个 revision 划分、完整的 contenteditable="false">【免费下载链接】qmk_firmwareOpen-source keyboard firmware for Atmel AVR and Arm USB families项目地址: https://gitcode.com/GitHub_Trending/qm/qmk_firmware创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表