3、主控芯片选型:STM32系列介绍、芯片选型依据、最小系统电路设计
好,咱们进入第三章。这一章聊的是整个电表的大脑——主控芯片选型。说白了,就是决定用哪颗MCU来干活。
我在智能电表项目里摸爬滚打了好几年,换过好几款芯片。说实话,选型这一步要是走偏了,后面整个硬件设计都得跟着遭殃。你想想看,电表要跑十几年不关机,还要在严寒酷暑里稳定计量,这可不是闹着玩的。
3.1 STM32系列介绍
STM32,意法半导体的王牌产品线。为什么智能电网行业这么偏爱它?我个人觉得,核心原因就三个字:生态好。
STM32家族非常庞大,我简单给你捋一捋常见的几个系列:
| 系列 | 内核 | 主频 | 典型应用场景 |
|---|---|---|---|
| STM32F0 | Cortex-M0 | 48MHz | 低成本、简单控制 |
| STM32F1 | Cortex-M3 | 72MHz | 通用型、性价比之王 |
| STM32F4 | Cortex-M4 | 168MHz | 带DSP、浮点运算 |
| STM32L4 | Cortex-M4 | 80MHz | 超低功耗、电池供电 |
| STM32G4 | Cortex-M4 | 170MHz | 数字电源、高级定时器 |
对于多费率电表,我个人最推荐的是STM32F1系列和STM32L4系列。F1是经典款,资料多、价格稳、够用。L4则是低功耗利器,适合对功耗有严格要求的场景。
核心观点:选STM32,不是越贵越好,也不是越新越好。关键是「够用」+「稳定」+「好买」。
3.2 芯片选型依据
好,到了关键环节。芯片选型到底看什么?我总结了五个维度,你照着这个框架去选,基本不会翻车。
3.2.1 性能需求
多费率电表要干的事其实不少:
- 实时采集电压电流数据
- 运行计量算法(比如FFT、功率计算)
- 管理费率切换逻辑
- 驱动LCD或段码屏显示
- 处理红外、RS485通信
- 存储冻结数据、事件记录
这些任务加起来,对MCU的主频和算力有一定要求。我建议主频不低于48MHz,Flash不低于128KB,RAM不低于20KB。STM32F103C8T6(72MHz、64KB RAM、128KB Flash)就是一个非常经典的起步配置。
3.2.2 外设接口
电表需要哪些外设?我列个清单:
- ADC:至少2路,用于采样电压和电流。最好是12位以上。
- UART:至少2路,一路给红外通信,一路给RS485。
- SPI/I2C:用于连接EEPROM、LCD驱动芯片、RTC等。
- 定时器:用于产生PWM或捕获脉冲。
- RTC:实时时钟,费率切换全靠它。
我的经验:选型时多留1-2路UART和SPI备用。我遇到过项目后期要加一个蓝牙模块,结果发现UART口不够用,只能飞线改板子,那叫一个狼狈。
3.2.3 功耗要求
智能电表通常要求整机功耗低于2W,甚至1.5W。MCU本身功耗不能太高。STM32F1在72MHz全速运行时大约50-60mA,而STM32L4在同样频率下可以做到20-30mA,待机模式更是低到微安级。
如果你做的是单相表,F1完全够用。如果是三相表或者无线通信表,我建议上L4,省下来的功耗可以给通信模块用。
3.2.4 工作温度与可靠性
电表装在户外电表箱里,夏天暴晒能到70°C,冬天北方能到-40°C。所以芯片必须选工业级(-40°C ~ 85°C)甚至汽车级(-40°C ~ 125°C)。
警告:千万不要用商业级芯片(0°C ~ 70°C)做电表。我曾经见过一个项目,为了省几毛钱用了商业级芯片,结果夏天大批量死机,最后全部召回更换,损失惨重。
3.2.5 供货与成本
这一点容易被忽略,但非常重要。选型前一定要确认:
- 这颗芯片是否在ST官方长期供货清单里?
- 是否有第二货源(比如GD32、APM32等国产替代)?
- 批量价格是否在预算范围内?
我个人习惯是:优先选STM32F103系列,因为国产替代方案成熟,万一ST缺货,可以快速切换到国产芯片,代码改动很小。
3.3 最小系统电路设计
芯片选好了,接下来就是让它跑起来。最小系统,就是让MCU能工作的最低硬件配置。我以STM32F103C8T6为例,给你拆解一下。
3.3.1 电源电路
STM32需要3.3V供电。电表内部通常有开关电源输出5V或12V,所以需要一级LDO降压到3.3V。
// 推荐LDO型号:AMS1117-3.3
// 输入:5V,输出:3.3V,最大输出电流:1A
// 电路要点:
// 1. 输入输出各加一个10uF电解电容 + 0.1uF瓷片电容
// 2. 电容尽量靠近LDO引脚
// 3. 输出端加一个LED指示灯(串1K电阻)
避坑指南:我曾经遇到过电表上电后MCU偶尔启动失败,查了半天发现是LDO输出电容离得太远,导致上电瞬间电压跌落。后来把电容焊到LDO屁股底下,问题就解决了。
3.3.2 时钟电路
STM32有两个时钟源:
- HSE(高速外部晶振):8MHz,用于系统主时钟
- LSE(低速外部晶振):32.768kHz,用于RTC
晶振两端各接一个20pF左右的负载电容,具体值要看晶振手册。走线要短,晶振外壳最好接地。
重要:RTC晶振一定要选低功耗型,否则待机时电池会很快耗光。我见过有人用了普通晶振,结果RTC电池一个月就没电了。
3.3.3 复位电路
STM32的NRST引脚是低电平复位。最简单的做法:
- NRST接一个10KΩ上拉电阻到3.3V
- 再对地接一个0.1uF电容
- 再并联一个按键(可选)
这样上电时电容充电,NRST保持一段时间低电平,MCU完成复位。按键按下时强制拉低,实现手动复位。
3.3.4 启动模式配置
STM32的BOOT0和BOOT1引脚决定启动方式:
| BOOT0 | BOOT1 | 启动模式 |
|---|---|---|
| 0 | X | 主Flash启动(正常模式) |
| 1 | 0 | 系统存储器启动(ISP下载) |
| 1 | 1 | SRAM启动(调试用) |
正常工作时,BOOT0接10KΩ下拉电阻到GND。BOOT1可以悬空或下拉。
3.3.5 调试接口
强烈建议保留SWD接口(SWDIO + SWCLK),只需要两根线就能下载和调试程序。比JTAG省引脚,而且速度不慢。
// SWD接口引脚分配(STM32F103C8T6)
// PA13 -> SWDIO,接10KΩ上拉到3.3V
// PA14 -> SWCLK,接10KΩ下拉到GND
// 再加一个GND和3.3V,共4个引脚即可
我的习惯:每个项目我都会在PCB上留一个4针的SWD插座。哪怕量产时不用,开发调试阶段也离不开它。别省这个成本。
3.4 完整最小系统原理图要点
把上面几部分拼起来,就是一个完整的最小系统。我再强调几个容易踩坑的地方:
- 去耦电容:每个VDD引脚旁边放一个0.1uF瓷片电容,位置越近越好。
- VDDA:模拟电源引脚必须单独供电,不能和数字VDD共用。加一个10Ω电阻+10uF电容做滤波。
- VREF:如果用到ADC,VREF引脚要接高精度参考电压,或者直接接VDDA。
- 未使用的IO:建议配置为推挽输出低电平,或者外部下拉,防止悬空引入干扰。
血的教训:我做过一个项目,VDDA直接接了VDD,结果ADC采样值跳得像心电图。后来加了RC滤波,采样值才稳定下来。记住,模拟和数字供电一定要分开处理。
好了,这一章的内容就到这儿。芯片选型不是一锤子买卖,你得多看、多比、多试。下一章咱们聊聊计量芯片的选型与接口设计,那又是另一番天地了。