DIY一把属于自己的机械键盘(三)

硬件篇


  上篇讲完键盘配列,这篇更新下我的硬件电路。首先,明确一下需要的功能:(需求明确是一个项目最重要的开端,可以说是项目的指导纲领,在需求合理的情况下一切按需求办事,不仅能避开不必要的问题和责任,还能使项目生命周期健康推进,这也是大公司和小公司的区别之一。)

  1. 设备采用USB接口;
  2. 支持背光显示, 亮度可调;
  3. 适当增加背光动画,不必太花哨;
  4. 按键响应速度快;
  5. 支持全键无冲;

一、硬件方案

1. USB接口

  USB接口有两种方案:一是采用外围USB驱动芯片,如CH9329串口转USB,傻瓜式配置即可实现USB键盘功能,这种方案虽然减少了软件开销和难度,但是增加了硬件成本,且降低通信速率;二是使用带有USB接口的单片机,通过软件实现USB键盘功能,减少了硬件成本但增加了软件负担。
  本着软件能解决的问题就不使用硬件的原则,选择使用带有USB接口的单片机,这里用的是最熟悉的STM32F103。
  这是STM32F103C8T6最小系统原理图:
在这里插入图片描述

2. 背光显示

  为了实现LED背光和亮度调整,单纯使用IO是无法驱动的,必然要使用外围器件增加驱动能力,那么就有两种方案:一是使用晶体管元件,二是使用集成驱动芯片。相比之下,使用集成驱动IC,不管在成本上,还是软、硬件开销都优于分立元件搭的驱动电路。经过选型,选用了TM1629A这颗芯片,芯片大致参数如下:
在这里插入图片描述
在这里插入图片描述
  这颗芯片的驱动电流已经完全够用,因此不需要外部元件增加驱动能力,况且太亮的话反而影响使用体验。原理图如下:
在这里插入图片描述

3. 按键扫描

  为了增加按键响应速度,按键扫描电路应尽可能便于扫描,再普通矩阵键盘的基础上每一行增加一个上拉电阻,这样只要扫描一次就能得出键值,而不需要行列转换扫描,原理图如下:
在这里插入图片描述

4.全键无冲

  全键无冲属于软件问题,这里大概讲一下USB硬件接口。Micro USB的引脚定义如下:

PIN 名称 描述
1 VBUS 电源正5 V
2 D- 数据线负
3 D+ 数据线正
4 ID OTG模式下检测ID脚状态高低,从而判断为主设备或从设备
5 GND 信号地线

  这里不需要OTG功能,因此ID脚悬空处理。
  由于USB2.0是向下兼容USB1.X的,即USB2.0支持高速、全速、低速的USB设备(HIGH-SPEED,FULL-SPEED,LOW-SPEED),而USB1.X不支持高速设备。因此如果高速设备接在USB1.X的hub上,也只能工作在全速状态。因此对速度的识别是很重要的,否则没办法以想要的速度通信。全速设备和低速设备的识别取决于设备端的一个上拉电阻,如果D-上拉1.5K电阻则是低速设备,D+上拉1.5K电阻则是全速设备。高速是基于全速设备基础上,通过握手信号进一步识别,这里就不详细说明。USB接口原理图如下:
在这里插入图片描述


  至此,硬件原理基本设计完了,下一篇讲一下程序设计。

发布了7 篇原创文章 · 获赞 8 · 访问量 5378

猜你喜欢

转载自blog.csdn.net/WANGWANG_A/article/details/104530402