当前位置: 首页 > article >正文

第2期:APM32微控制器键盘PCB设计实战教程

第2期:APM32微控制器键盘PCB设计实战教程

一、APM32小系统介绍

使用apm32键盘小系统开源工程操作

APM32是一款与STM32兼容的微控制器,可以直接替代STM32进行使用。本教程基于之前开源的APM32小系统,链接将放在录播评论区中供大家参考。

1.1 电路组成

相比标准开发板,我们的小系统有以下简化:

  • 只保留一个8MHz晶振电路,去掉了32.768KHz晶振(通常只用于时钟应用)
  • 保留USB接口(Type-C)
  • 使用线性稳压器将5V转换为3.3V供主控使用
  • 预留烧录Bootloader的跳线(CBT6/C8T6一般不自带Bootloader)

1.2 CBT6与C8T6对比

  • CBT6比C8T6性能稍好,内存更大
  • 价格方面,CBT6约5.6元,C8T6约8元
  • 两款芯片可以直接互相替换,没有功能差异

1.3 针脚使用指南

  • 总共48个引脚,去除供电、地、数据等引脚后,可用约31个引脚
  • 不建议使用的引脚:C13、C14、C15和A0(直接打叉标记)
  • 可用引脚:A1至B11,B9、B8、B7至B3,A15,A14,A10至B12
  • 必须预留烧录用针脚

二、矩阵原理与绘制

在这里插入图片描述
在这里插入图片描述

2.1 基础矩阵设计

设计矩阵键盘与之前的32U4系统类似,主要步骤如下:

  1. 选择合适的轴座封装(本例使用带RGB灯的下灯位凯华轴座)
    在这里插入图片描述

  2. 使用阵列副本功能批量创建轴座(5行4列,行距列距均为200)

  3. 连接正极线路(使用阵列副本功能)

    • 注意:WS2812B 6028反贴灯需要接5V电源(而非3.3V VCC)
  4. 连接行列线(也可使用阵列副本)

2.2 添加防反向二极管

  1. 选择合适的二极管(推荐1N4148W SOD323封装)
  2. 使用阵列副本功能批量放置
  3. 注意选择元器件库时,建议使用嘉立创基础库,避免SMT加工时产生额外换料费

提示:使用嘉立创基础库中的元器件可以避免20元/项的换料费,只要封装和功能相同即可替换。

2.3 处理空轴位

根据键盘布局,需要删除以下位置的轴座:

  • 第一行第三列
  • 第三行第三列
  • 第四行第一列

2.4 添加RGB灯光

若需要更均匀的灯光效果,可以调整LED位置或增加LED数量(详细在RGB矩阵教程中介绍)。

2.5 添加引脚标号

为行列线添加相应引脚标号,标记不使用的引脚位置。

三、旋钮编码器添加

3.1 EC11编码器介绍

在这里插入图片描述

EC11是客制化键盘常用的旋钮编码器:

  • 有半轴和梅花轴两种版本
  • 共有7个引脚
  • 旋钮帽推荐使用电吉他旋钮帽(价格合理,外观良好)

3.2 编码器引脚连接

在这里插入图片描述

  1. D引脚和E引脚用作普通按键功能(按下旋钮时触发)
  2. A引脚和B引脚直接连接到主控(用于检测旋转方向)
  3. C引脚和F/G引脚接地(F/G为固定点,可选择接地或打叉不连接)

四、PCB布局设计

画好图后,点击:
在这里插入图片描述

4.1 准备工作(转PCB后)

  1. 设置网格大小为23.438mil
  2. 原理图转PCB
  3. 放置边框
    在这里插入图片描述

4.2 元器件布局技巧

  1. 轴体布局:

    • 使用"查找相似对象"和"布局传递"功能快速摆放轴体
    • 微调位置确保对齐
  2. 二极管布局:

    • 同样可使用布局传递功能
    • 可放置在旋钮底部节省空间
  3. 关键器件放置:

    • Type-C接口(根据空间决定放在正面或侧边)
    • APM32芯片
    • 线性稳压器及外围电路
    • 晶振及相关电容
    • USB识别电阻
  4. 空间利用技巧:

    • 利用卫星轴下方空间放置接口
    • 在小型PCB上合理安排元器件位置,避免布线困难
      在这里插入图片描述
      一些细节图如下:
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述

五、总结

通过本次教程,我们学习了:

  1. APM32小系统的特点与使用方法
  2. 键盘矩阵的设计原理
  3. 阵列副本功能的高效应用
  4. 布局传递功能的使用技巧
  5. 旋钮编码器的添加方法

http://www.lryc.cn/news/2394960.html

相关文章:

  • Docker-搭建MySQL主从复制与双主双从
  • LeetCode - 203. 移除链表元素
  • canvas 实现全屏倾斜重复水印
  • vue3项目 前端文件下载的两种工具函数
  • SpringAI系列 - 升级1.0.0
  • 5.31 day33
  • Vue3 + VTable 高性能表格组件完全指南,一个基于 Canvas 的高性能表格组件
  • 【七. Java字符串操作与StringBuilder高效拼接技巧】
  • 题解:洛谷 P12672 「LAOI-8」近期我们注意到有网站混淆视听
  • HTML 计算网页的PPI
  • WIN11+eclipse搭建java开发环境
  • Linux 环境下C、C++、Go语言编译环境搭建秘籍
  • MMR-Mamba:基于 Mamba 和空间频率信息融合的多模态 MRI 重建|文献速递-深度学习医疗AI最新文献
  • 2.5/Q2,Charls最新文章解读
  • Unity QFramework 简介
  • C++ 日志系统实战第五步:日志器的设计
  • @Docker Compose部署Alertmanager
  • 前端面试准备-3
  • 性能测试-jmeter实战1
  • 汽车高速通信的EMC挑战
  • [SC]SystemC在CPU/GPU验证中的应用(五)
  • [蓝桥杯C++ 2024 国 B ] 立定跳远(二分)
  • 现代网络安全攻防技术与发展现状
  • 杏仁海棠花饼的学习日记第十四天CSS
  • ESP8266远程控制:实现网络通信与设备控制
  • RabbitMQ监控:关键技术、技巧与最佳实践
  • 【机器学习基础】机器学习入门核心算法:隐马尔可夫模型 (HMM)
  • zookeeper 操作总结
  • golang 实现基于redis的并行流量控制(计数锁)
  • Leetcode 2819. 购买巧克力后的最小相对损失