2. 硬件架构设计:主控芯片选型与核心模块

好,咱们进入第二章。硬件架构设计,说白了就是给智能电表搭骨架。骨架搭不好,后面软件写得再漂亮也白搭。这一章我重点聊聊三个核心模块:主控芯片怎么选、计量芯片怎么配、电源管理怎么做。

我个人习惯是先定主控,再围绕它搭外围。为什么?因为主控决定了你的开发工具链、成本、甚至团队招聘。你想想看,选了个冷门芯片,招人都费劲。

2.1 主控芯片选型:ARM Cortex-M vs RISC-V

主控芯片是电表的大脑。目前主流就两派:ARM Cortex-M 和 RISC-V。

ARM Cortex-M 系列,比如 STM32、GD32、NXP 的 LPC 系列。这玩意儿生态太成熟了。我在项目中遇到过最头疼的事,就是芯片缺货。那时候 STM32F103 炒到天价,逼得我们不得不考虑国产替代。

RISC-V 呢,开源指令集,这几年国内厂商推得很猛。比如沁恒的 CH32V 系列、博流的 BL702 系列。优点是授权费低、自主可控。缺点是工具链还不够完善,遇到坑得自己填。

怎么选?我列个对比表,你一看就明白:

对比项 ARM Cortex-M RISC-V
生态成熟度 极高,资料多,社区活跃 中等,资料偏少,社区在成长
开发工具 Keil、IAR、STM32CubeIDE Eclipse、PlatformIO、厂家IDE
成本 中等,授权费摊在芯片里 较低,无授权费
供货稳定性 受国际形势影响大 国产为主,相对稳定
适合场景 快速量产、团队成熟 成本敏感、自主可控需求高
我的建议: 如果是第一次做电表,或者团队经验不足,老老实实选 ARM Cortex-M。别折腾。等产品稳定了,再考虑用 RISC-V 做降本方案。

具体到选型参数,我关注这几点:

  • 主频: 电表不需要太高,48MHz~100MHz 足够。跑 FreeRTOS 加计量算法,绰绰有余。
  • Flash/RAM: 至少 128KB Flash、16KB RAM。我见过有人为了省几毛钱选了 64KB Flash 的芯片,结果固件塞不下,最后还得换。得不偿失。
  • 外设接口: 必须要有 SPI(接计量芯片)、UART(接通信模块)、I2C(接 RTC 和 EEPROM)。最好再留个 USB,方便调试。
  • ADC: 有些低端电表想省计量芯片,直接用主控的 ADC 采样。嗯,这里要注意,主控的 ADC 精度和稳定性远不如专用计量芯片,千万别这么干。

2.2 计量芯片:RN8302B vs ADE9000

计量芯片是电表的核心。它负责把电网的电压电流信号,变成你能算的电能数据。目前国内用得最多的就是 RN8302B(钜泉光电)和 ADE9000(ADI)。

RN8302B 是国产芯片,性价比极高。我在一个三相电表项目里用过它,精度完全满足国标 0.5S 级要求。它内部集成了多路 ADC、数字积分器、功率计算模块。你只需要通过 SPI 读寄存器就行。

ADE9000 是 ADI 的旗舰产品,性能更强。支持 8 通道同步采样,谐波分析功能很强大。但价格也贵,一片顶 RN8302B 三四片。适合高端场合,比如关口表、谐波监测表。

我画了个简单的连接图,你感受一下:

// 主控与 RN8302B 的 SPI 连接示意
// 主控 (STM32F103)          RN8302B
// PA5 (SCK)  ------------>  SCLK
// PA6 (MISO) <------------  DOUT
// PA7 (MOSI) ------------>  DIN
// PB0 (CS)   ------------>  CS
// PB1 (IRQ)  <------------  IRQ  (用于过零检测、电能脉冲)
避坑指南: 我曾经在 RN8302B 的 SPI 通信上栽过跟头。它的 SPI 时序要求比较严格,时钟极性 CPOL 和相位 CPHA 必须配成模式 0(CPOL=0, CPHA=0)。如果配错了,读回来的数据全是乱的。调试时一定要用示波器抓波形确认。

两个芯片的对比:

特性 RN8302B ADE9000
通道数 3 相电压 + 3 相电流 8 通道(可灵活配置)
精度 0.5S 级 0.2S 级
谐波分析 不支持 支持,最高 63 次
价格 约 5-8 元 约 20-30 元
开发难度 低,寄存器少 中,配置项多

怎么选?说白了看预算和需求。家用单相表,RN8302B 完全够用。如果是工业级关口表,需要高精度和高次谐波分析,那就得上 ADE9000。

2.3 电源管理模块:AC-DC 与 RTC 后备电池

电源是电表的命脉。电表常年挂在电网上,但电网可不一定靠谱。雷击、浪涌、掉电,都是家常便饭。

AC-DC 部分: 电表从电网取电,一般是 220V AC 输入。需要降压、整流、稳压。常用的方案有两种:

  • 阻容降压: 便宜,但效率低、不安全。我建议别用,除非成本压到极致。
  • 开关电源: 用 HLK-PM01 这类模块,或者自己搭反激电路。效率高,输出稳定。我习惯用模块,省事,而且有认证。

输出一般需要两路:

  • 3.3V: 给主控、计量芯片、通信模块供电。
  • 5V: 给继电器、LCD 背光供电。

RTC 后备电池: 电表掉电后,时间不能丢。RTC 需要持续供电。我一般用 CR2032 纽扣电池,配合一个二极管做电源切换。

电路很简单,但有个坑:

// RTC 后备电池电路示意
// VCC_3.3V ----|>|----+---- RTC_VCC
//                 二极管  |
// BAT+ (CR2032) --|>|----+
//                 二极管
关键点: 两个二极管必须用肖特基二极管(比如 BAT54),压降低,漏电流小。如果用普通 1N4148,压降 0.7V,电池很快就没电了。我吃过这个亏,第一批样机电池半年就耗光了,后来换成 BAT54,问题解决。

另外,RTC 芯片我推荐 DS3231,精度高,自带温度补偿。别用 DS1302,那玩意儿走时不准,一天能差好几秒。电表对时间精度有要求,差太多会被投诉的。

嗯,这一章就聊这么多。硬件架构设计,说白了就是平衡成本、性能和可靠性。选型时多想想:这个芯片我熟不熟?供货稳不稳?出了问题能不能快速定位?想清楚了再动手。