前言
由于工作有给做键盘的客户提供过技术支持,所以做了个键盘demo用于演示,记录一下做个参考。
一、目标
制作104键全键无冲的有线RGB键盘。
二、MCU选型
这里其实也没有选型的说法,用的公司的芯片,以下是芯片有关本键盘需要使用的参数简介:
1、8位单片机,PIC18架构,主频内部RC=24MHz,cpu运行频率最高6MHz;
2、RAM = 2.3K,ROM = 32K,最多48个IO,封装LQFP64;
3、IO驱动能力,5V供电下,灌电流 = 25mA/0.6V,拉电流 = 25mA/0.6V;
4、所有IO均有上拉、下拉电阻及电平唤醒功能;
5、一组IO输出电压可选;
6、最多有28路的16位PWM;
7、支持USB2.0全速模式;
三、硬件设计
1、引脚分配
首先,104键盘需要6行、21列的按键及RGB灯,考虑到MCU只有48个IO,所以分配如下:
USB部分:DM、DP,共2个IO;
按键部分:6 + 21,共27个IO,做矩阵扫描;
灯光部分:同样做矩阵,12个COM,9个SEG,每个SEG对应3个PWM控制RGB,综上需要12 + 3*9,共39个IO;
由于灯光的SEG可以和按键的列复用,所以按键+灯总计6+12+3*9 = 45;再加USB总计47个IO;
备注:如果考虑后续添加EEPROM或者RF芯片,那么可以把灯光的COM增多达到节省更多的IO,亦或者通过给COM再加一层COM,相当于矩阵套矩阵,可以节省更多的IO,代价是较难实现灯效高帧数,且亮度可能会有损失。
2、物料
⑴、电源,由于芯片内部有3.3V的LDO,所以只需要正常的滤波电容即可
⑵、按键,每个按键1个二极管,可以用sot23的两路二极管做,物料少一点,这版本没做轴座,也可以加入轴座;
⑶、灯光,RGB灯用的共阳,所以有多少COM就要用多少PMOS,这里需要12个PMOS,由于IO灌电流能力较强,所以阴极就不加管子了,然后每路PWM加限流电阻即可,这里的PMOS的电阻参数如图:
电阻选的3K和1K,用于加快灯的开关速度。
⑷、USB部分,DP、DN预留RC;
四、软件设计
这部分后续再详细记录每个模块,这里先记录需要实现的功能:
1、按键、灯光矩阵扫描
2、USB通信
3、按键报告处理、Fn组合键处理
4、灯效
5、键盘上位机通信