第二讲:电子标签硬件平台——主控芯片选型与外设接口详解

大家好,欢迎来到第二讲。今天咱们聊聊电子标签的硬件平台。说实话,这块内容我琢磨了很久才敢动笔。为什么?因为硬件选型一旦定下来,后面所有软件工作都得围着它转。选错了,后面全是坑。

我个人习惯,做任何嵌入式项目,第一步不是写代码,而是把芯片数据手册翻烂。电子标签这东西,看着简单,其实门道不少。咱们今天就从主控芯片选型开始,一步步把硬件平台搭起来。

2.1 主控芯片选型:STM32 vs ESP32

先说说这两款芯片。STM32和ESP32,我估计大家都听过。但具体到电子标签场景,怎么选?

STM32系列,我用了快十年。它的优势在于稳定、功耗低、外设丰富。特别是STM32L0和L4系列,专门为低功耗设计。我在一个医疗标签项目里用过STM32L051,待机电流能做到1μA以下。嗯,这个数据很关键。

ESP32系列,自带Wi-Fi和蓝牙。如果你需要无线通信,它确实方便。但代价是什么?功耗高。ESP32在深度睡眠模式下,电流大概在5μA左右,比STM32高不少。而且它的ADC精度一般,驱动LCD时偶尔会有闪烁问题。

我建议这样选:

  • 纯电子标签(无无线通信):选STM32L0系列,功耗最低
  • 需要蓝牙连接手机:选ESP32,省一个蓝牙模块
  • 需要低功耗+无线:选STM32WB系列,它内置蓝牙

核心观点:电子标签的主控芯片,功耗是第一优先级。别为了省几块钱选了个高功耗芯片,后面电池撑不住,产品就废了。

我曾经在一个项目中,为了省成本选了某国产M0芯片。结果呢?待机电流标称2μA,实际测出来8μA。电池容量算得好好的,实际寿命缩水了三分之一。从那以后,我选芯片一定先看实测数据,不看宣传。

2.2 外设接口:I2C、SPI、UART怎么分配

电子标签的外设不多,但每个接口都有讲究。咱们一个一个说。

2.2.1 I2C接口

I2C主要用于连接传感器和存储芯片。比如温湿度传感器、EEPROM、加速度计。它的好处是只需要两根线(SCL、SDA),节省IO口。

但I2C有个坑:速度慢。标准模式100kHz,快速模式400kHz。如果你要刷屏,千万别用I2C驱动LCD,会卡到你怀疑人生。

我一般这样分配:

  • I2C1:接温湿度传感器(如SHT30)
  • I2C2:接EEPROM(存储配置参数)

小技巧:I2C上拉电阻选4.7kΩ比较通用。如果总线电容大,可以换成2.2kΩ。我曾经遇到过I2C通信偶尔失败,查了半天发现是上拉电阻太大,信号上升沿太慢。

2.2.2 SPI接口

SPI是电子标签的“主力接口”。为什么?因为电子墨水屏(E-Ink)基本都是SPI驱动。SPI速度快,全双工,适合传输大量数据。

电子墨水屏的刷新,说白了就是往屏幕里灌数据。一张200x200的黑白图片,大概需要5KB数据。用SPI的话,几毫秒就传完了。如果用I2C,得几十毫秒。

我建议这样分配:

  • SPI1:接电子墨水屏(主设备)
  • SPI2:接Flash芯片(存储字库或图片)

注意:SPI的时钟频率不要设太高。电子墨水屏一般支持2-4MHz。我试过设到8MHz,结果屏幕显示花屏。后来查手册才发现,屏幕的SPI时序要求比较严格。

2.2.3 UART接口

UART主要用于调试和通信。调试嘛,就是打印日志。通信的话,可以接蓝牙模块或4G模块。

我个人习惯,每个项目至少留一个UART口做调试。别省这个口,否则出了问题你连log都看不到,那才叫抓瞎。

UART的波特率,我一般用115200。够快,也够稳定。如果接蓝牙模块,注意蓝牙的波特率可能不同,需要先配置好。

注意:UART的TX和RX不要接反。我见过不止一个新手,把TX接TX,RX接RX,结果死活通信不上。正确的接法是:TX接对方的RX,RX接对方的TX。

2.3 显示驱动:电子墨水屏的驱动要点

电子墨水屏和普通LCD不一样。它刷新一次需要好几步:

  1. 发送刷新命令
  2. 传输图像数据
  3. 等待刷新完成(约1-3秒)
  4. 进入睡眠模式

驱动电子墨水屏,我总结了几条经验:

  • 不要频繁刷新:电子墨水屏刷新一次耗电约10-30mJ。频繁刷新,电池很快没电。
  • 局部刷新:如果只改一小块内容,用局部刷新命令,省电又省时间。
  • 刷新完立刻睡眠:屏幕不刷新时,让它进入睡眠模式。电流从几毫安降到几微安。

我曾经做过一个货架标签项目,客户要求每5秒刷新一次。我说不行,电池撑不住。后来改成“内容变化时才刷新”,电池寿命从3天延长到了6个月。你想想看,这个差别有多大。

2.4 功耗管理:从硬件到软件的协同

功耗管理是电子标签的核心。硬件选型再好,软件写不好,功耗照样高。

硬件层面的功耗管理

  • 选择低功耗LDO(如XC6206系列,静态电流1μA)
  • 电源路径设计:主控、屏幕、传感器分别供电,不用时关掉
  • 使用MOS管控制外设电源

软件层面的功耗管理

  • 主控进入Stop模式或Standby模式
  • 外设不用时关闭时钟
  • 使用RTC定时唤醒,而不是一直跑着

我一般这样设计功耗策略:

工作状态 电流消耗 说明
运行模式(刷屏) 20-50mA 持续1-3秒
空闲模式(等待) 1-5mA 保持时钟运行
睡眠模式(待机) 2-10μA RTC运行,可唤醒
深度睡眠 0.5-2μA 仅保留唤醒引脚

你看这个表格,睡眠模式和运行模式差了上万倍。所以,让系统尽可能待在睡眠模式,是省电的关键。

核心原则:能睡就睡,醒了赶紧干完活再睡。别让芯片闲着没事干还在跑。

我记得有一次,客户说他们的电子标签电池只能用两个月。我一看代码,发现主控每100ms醒来一次,检查有没有按键按下。我说你改成外部中断唤醒,平时深度睡眠。改完之后,电池用了两年。嗯,这就是软件优化的力量。

2.5 本章小结

好了,这一讲的内容就这些。咱们总结一下:

  • 主控芯片选型:STM32L0适合纯标签,ESP32适合带无线的
  • 外设接口:I2C接传感器,SPI接屏幕,UART接调试
  • 显示驱动:电子墨水屏要局部刷新,刷完立刻睡眠
  • 功耗管理:硬件选低功耗器件,软件让芯片多睡觉

下一讲,咱们开始动手搭建开发环境,把RTOS移植到STM32上。到时候我会手把手教大家配置工程、编写启动代码。敬请期待。

如果你在选型或驱动方面有疑问,欢迎在评论区留言。我看到了会回复。咱们下期见。


公众号:蓝海资料掘金营,微信deep3321