第三章 主控芯片选型与电路设计:STM32/GD32选型对比、最小系统电路、GPIO分配策略
好,咱们进入第三章。这一章我打算聊聊主控芯片的选型,还有最小系统怎么搭。说白了,这就是整个电梯语音播报系统的大脑和骨架。选错了芯片,后面代码写得再漂亮也白搭;电路设计有坑,调试的时候能让你怀疑人生。
我个人习惯,做项目第一步不是画原理图,而是先定芯片。芯片定了,后面的路才好走。咱们这个电梯语音播报系统,对主控的要求其实不算高——要能解码音频文件、要能控制语音芯片、要能处理按键和传感器信号。嗯,STM32和GD32是国产和进口的两大主流选择,咱们来掰扯掰扯。
3.1 STM32 vs GD32:选型对比
先说说STM32。ST公司的产品,江湖地位不用我多讲。稳定、资料多、生态好。我最早做嵌入式就是从STM32F103开始的,那叫一个经典。但这两年芯片涨价,供货也不稳定,很多项目开始转向国产替代。
GD32呢,是兆易创新的产品。说白了,它就是STM32的“平替”。指令集兼容,引脚兼容,很多情况下可以直接替换。但注意,我说的是“很多情况”,不是所有情况。
| 对比项 | STM32F103 | GD32F103 |
|---|---|---|
| 内核 | Cortex-M3 | Cortex-M3 |
| 主频 | 72MHz | 108MHz |
| Flash | 64KB-512KB | 64KB-512KB |
| SRAM | 20KB-64KB | 8KB-96KB |
| 价格(约) | 8-15元 | 3-8元 |
| 供货稳定性 | 一般(近年波动大) | 较好 |
| 生态资料 | 极其丰富 | 较丰富 |
你看这个表,GD32的主频反而更高,价格更低。但为什么还有人用STM32?因为稳定。我在项目中遇到过GD32在高温环境下偶尔死机的情况,换回STM32就没事。当然,那是几年前的事了,现在的GD32已经改进很多。
我的建议:
- 量产产品、对稳定性要求极高 → 选STM32
- 成本敏感、供货要求高 → 选GD32
- 个人学习、原型验证 → 两者皆可,看预算
咱们这个课程,我以STM32F103C8T6为例来讲。为什么?因为资料最多,你遇到问题网上随便一搜就有答案。等你学会了,换成GD32也就是改改库函数的事。
3.2 最小系统电路设计
最小系统,就是让芯片能跑起来的最基本电路。包括三样东西:晶振、复位、电源。缺一不可。
3.2.1 晶振电路
晶振是芯片的心跳。STM32F103有两个晶振接口:
- HSE(高速外部晶振): 8MHz,用于系统时钟
- LSE(低速外部晶振): 32.768kHz,用于RTC实时时钟
咱们这个电梯语音播报系统,需要精确的时序来控制语音播放,所以HSE必须用。LSE嘛,如果你不需要记录时间戳,可以省掉。但我建议加上,万一以后要加个“当前时间播报”功能呢?
晶振电路其实很简单,就两个电容加一个晶振。但这里有个坑——电容值要匹配。我见过有人随便焊了两个22pF的电容上去,结果晶振不起振。为什么?因为晶振的负载电容和匹配电容要算的。
经验公式:
匹配电容 CL = (C1 * C2) / (C1 + C2) + 杂散电容
一般8MHz晶振配15-22pF电容,32.768kHz晶振配12.5pF电容。我习惯直接看晶振的数据手册,上面会写推荐值。
// 晶振电路原理图示意(非实际代码)
// HSE: 8MHz晶振 + 两个20pF电容到地
// LSE: 32.768kHz晶振 + 两个12.5pF电容到地
// 注意:晶振要尽量靠近芯片引脚,走线要短
3.2.2 复位电路
复位电路,说白了就是让芯片重新开始跑。STM32是低电平复位,所以复位引脚NRST平时要拉高,按下按键时拉低。
最简单的复位电路:一个10kΩ电阻上拉到3.3V,一个100nF电容到地,再加一个按键。嗯,就这样。但要注意,复位引脚对噪声很敏感。我在项目中遇到过,电机启动时复位引脚被干扰,导致芯片莫名其妙复位。后来加了个RC滤波就好了。
避坑指南:
我曾经在一个项目中,复位电路只放了电阻没放电容。结果在强电磁干扰环境下,芯片频繁复位。从那以后,我每个板子的复位电路都必加100nF电容,而且电容要靠近芯片引脚放。
3.2.3 电源电路
STM32F103需要3.3V供电。但咱们的电梯系统,一般提供的是5V或12V电源。所以需要稳压电路。
我推荐用AMS1117-3.3,这玩意儿便宜又好用。输入5V,输出3.3V,最大输出电流800mA,够用了。
// 电源电路设计要点
// 1. 输入电容:10μF电解电容 + 100nF陶瓷电容
// 2. 输出电容:10μF电解电容 + 100nF陶瓷电容
// 3. 注意:电容要靠近稳压芯片的引脚
// 4. 如果电流需求大,考虑加散热焊盘
你想想看,电源不稳,芯片工作就不稳。特别是语音播报的时候,如果电源纹波大,喇叭里会有“滋滋”的噪声。所以电源电路一定要做好滤波。
3.3 GPIO分配策略
GPIO分配,说白了就是决定哪个引脚干什么活。这步做不好,后面布线的时候会哭的。
我的分配原则很简单:
- 功能优先: 有特殊功能的引脚(如I2C、SPI、UART)先分配
- 就近原则: 外设靠近哪个引脚就用哪个
- 留有余量: 至少留2-3个GPIO备用
咱们这个电梯语音播报系统,需要的外设包括:
- 语音芯片(如SYN6288):需要UART接口
- 按键输入:2-3个普通GPIO
- 楼层传感器:需要外部中断引脚
- LED指示灯:普通GPIO
- 调试串口:UART接口
| 功能模块 | 接口类型 | 推荐引脚 | 备注 |
|---|---|---|---|
| 语音芯片 | UART | PA9(TX), PA10(RX) | USART1,优先级最高 |
| 调试串口 | UART | PA2(TX), PA3(RX) | USART2,用于打印调试信息 |
| 楼层传感器 | 外部中断 | PB0, PB1 | 上升沿触发 |
| 按键1(播报) | GPIO输入 | PB12 | 内部上拉 |
| 按键2(取消) | GPIO输入 | PB13 | 内部上拉 |
| LED指示灯 | GPIO输出 | PC13 | 板载LED,低电平点亮 |
| 备用 | GPIO | PA4, PA5, PA6 | 预留,方便后期扩展 |
重要提醒:
分配GPIO时,一定要看数据手册里的“复用功能映射表”。有些引脚默认是JTAG/SWD调试接口,比如PA13、PA14、PA15、PB3、PB4。如果你把这些引脚当普通GPIO用了,调试器可能连不上芯片。我刚开始学的时候就被这个坑过,焊好板子发现下载不了程序,查了半天才发现是PB3被占用了。
嗯,到这里,主控芯片选型和最小系统电路就讲完了。下一章咱们开始画原理图,把今天讲的这些落实到图纸上。记住,芯片选型要慎重,电路设计要细心,GPIO分配要有规划。这三步走稳了,后面的路就好走了。