内容提要
作者使用STM32F103C8T6 MCU和QMK固件制作数字小键盘,验证键盘原理图。成功修改QMK固件以启用I2C Remap,并配置I2C引脚,测试屏幕正常显示。
延伸解读
为什么选择 STM32F103 与 QMK 组合
作者之前用 ATMega32A 制作的键盘在 Mac 上兼容性不佳,推测与软件模拟 USB 有关。STM32F103C8T6 在 QMK 支持列表中,且配合 STM32duino-bootloader 可直接通过 USB 刷机,无需额外调试器,降低了开发门槛。这一选择兼顾了兼容性与便利性,适合想尝试 STM32 键盘的开发者参考。
I2C Remap 的必要性与实现步骤
原理图选用 PB8、PB9 作为 I2C 引脚连接 OLED,但 STM32F103 的 I2C1 默认引脚并非这两者,必须启用 Remap 才能正常通信。修改涉及三处:在 mcuconf.h 中开启 I2C1,在 board.c 的 boardInit 中添加 AFIO_MAPR_I2C1_REMAP 标志位,并在 rules.mk 中指定 I2C1_SCL_PIN 和 I2C1_SDA_PIN。步骤环环相扣,缺一不可。
从数字小键盘验证到全尺寸键盘的路径
由于 40% 配列 PCB 尺寸超出嘉立创免费打样范围,作者先设计数字小键盘来验证 STM32F103 的键盘原理图。这种做法能以较低成本测试行列为、I2C 屏幕等关键设计,确认无误后再扩展至全尺寸键盘,可有效降低整体开发风险。
Q&A
为什么选择STM32F103C8T6作为数字小键盘的MCU?
因为STM32F103C8T6支持QMK固件,并且可以通过STM32duino-bootloader方便地刷机。
如何在QMK固件中启用I2C Remap?
需要在mcuconf.h文件中启用I2C1,并在初始化代码中添加AFIO_MAPR_I2C1_REMAP标志位。
数字小键盘的原理图中使用了哪些引脚?
原理图中使用PB8和PB9作为I2C通信引脚,确定行和列的引脚以支持104键。
测试结果显示屏幕正常工作,这意味着什么?
这表明数字小键盘的I2C通信和OLED屏幕配置成功,功能正常。
之前使用ATMega32A MCU制作的键盘有什么问题?
在Mac上兼容性有问题,因为ATMega32A使用的是软件模拟USB。
如何配置rules.mk文件以正常使用OLED屏幕?
在rules.mk中定义I2C_DRIVER为I2CD1,并设置I2C1_SCL_PIN为B8,I2C1_SDA_PIN为B9。