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 |
| 成本 | 中等,授权费摊在芯片里 | 较低,无授权费 |
| 供货稳定性 | 受国际形势影响大 | 国产为主,相对稳定 |
| 适合场景 | 快速量产、团队成熟 | 成本敏感、自主可控需求高 |
具体到选型参数,我关注这几点:
- 主频: 电表不需要太高,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 | 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) --|>|----+
// 二极管
另外,RTC 芯片我推荐 DS3231,精度高,自带温度补偿。别用 DS1302,那玩意儿走时不准,一天能差好几秒。电表对时间精度有要求,差太多会被投诉的。
嗯,这一章就聊这么多。硬件架构设计,说白了就是平衡成本、性能和可靠性。选型时多想想:这个芯片我熟不熟?供货稳不稳?出了问题能不能快速定位?想清楚了再动手。