硬件平台介绍:主流电子标签芯片与MCU选型
做Bootloader开发,说白了就是跟硬件打交道。你得先搞清楚你的“战场”长什么样。这一章,我带你看看嵌入式电子标签领域常见的硬件平台。嗯,这里头有不少坑,我当年刚入行时也踩过几个。
主流电子标签芯片:ST25系列与NXP NTAG系列
目前市面上,做电子标签用得最多的就是ST和NXP两家的片子。我个人习惯把ST25系列看作是“全能选手”,而NXP的NTAG系列更像是“专精选手”。
ST25系列
ST25系列覆盖范围很广,从简单的标签芯片到带MCU内核的读写器芯片都有。我在项目中用得最多的是ST25DV系列,它支持I2C接口,能跟主控MCU直接通信。这玩意儿有个好处——你可以通过NFC手机给它写数据,然后MCU通过I2C读出来。说白了,就是给产品加了个“无线调试口”。
关键特性:
- 支持ISO/IEC 15693和ISO/IEC 18000-3协议
- 内置EEPROM,容量从4Kbit到64Kbit不等
- I2C接口,最高速率400kHz
- 能量收集功能(这个很实用)
NXP NTAG系列
NTAG系列主打的是低成本、低功耗。我记得有一次做消费级产品,客户要求标签成本控制在几毛钱以内,那NTAG就是首选。它不支持I2C,纯粹靠NFC射频通信。但它的防碰撞机制做得不错,多个标签同时读取时不容易出错。
我的建议:如果你的产品需要MCU主动读写标签数据,选ST25系列带I2C接口的。如果只是做简单的标签识别,NTAG系列性价比更高。
MCU选型与内存映射
MCU是Bootloader的“大脑”。选型时,我主要看三点:Flash大小、RAM大小、以及是否支持IAP(In-Application Programming)。
我曾经在一个项目里选了颗Flash只有32KB的MCU,结果Bootloader占了8KB,应用程序只剩24KB。客户后来要加功能,愣是挤不出来空间。从那以后,我选型时都会留出至少50%的余量。
内存映射结构
典型的Bootloader内存映射长这样:
0x08000000 - 0x08001FFF Bootloader区域 (8KB)
0x08002000 - 0x0800FFFF 应用程序区域 (56KB)
0x08010000 - 0x080103FF 配置参数区域 (1KB)
0x20000000 - 0x20004FFF RAM区域 (20KB)
你想想看,Bootloader放在最低地址,上电后先执行它。它检查有没有新固件,有就更新,没有就跳转到应用程序。这个跳转地址,就是0x08002000。
注意:中断向量表也要跟着挪。应用程序的中断向量表必须重映射到0x08002000,否则中断一进来就跑飞了。我刚开始做时忘了这茬,调试了整整两天才找到原因。
Flash与EEPROM的区别
这个问题,面试时经常被问到。我一般这么解释:
- Flash:按扇区擦除,最小擦除单位通常是1KB或2KB。写入前必须先擦除。寿命约1万到10万次。
- EEPROM:按字节擦除,可以单独改一个字节。寿命约100万次。但容量小,速度慢。
说白了,Flash适合存代码和大块数据,EEPROM适合存配置参数。我在做Bootloader时,固件放Flash,升级标志和版本号放EEPROM。这样每次升级时,只需要改EEPROM里的几个字节,不用动整个Flash扇区。
实际经验:有一次产品批量返修,发现是Flash擦写次数超了。后来我把频繁变动的参数挪到EEPROM里,问题就解决了。所以,别把频繁改动的数据放Flash里,那是给自己挖坑。
通信接口:I2C、SPI与NFC
电子标签的通信接口,决定了你怎么跟它“说话”。
I2C
两根线(SCL、SDA),支持多设备挂载。速度一般400kHz,也有1MHz的。我习惯用I2C做板内通信,比如MCU和ST25DV芯片之间。优点是引脚少,缺点是速度慢,不适合传大文件。
SPI
四根线(SCK、MOSI、MISO、CS),全双工,速度能到几十MHz。如果你要传固件,SPI是首选。我记得有一次升级一个几百KB的固件,用I2C要等十几秒,换成SPI后三秒搞定。
NFC
无线通信,频率13.56MHz。距离近(几厘米),但方便啊。手机一碰就能读写。我在Bootloader里加了个NFC升级功能,现场维护时不用拆机,手机贴上去就能更新固件。客户看了直呼“黑科技”。
选型建议:
- 板内通信:I2C(简单)或SPI(高速)
- 无线升级:NFC(近距离)或蓝牙(远距离)
- 如果空间允许,我建议I2C和SPI都留出来,灵活应对不同场景
小结
这一章我们聊了主流芯片、MCU选型、存储介质和通信接口。嗯,内容不少,但都是基本功。下一章,我会带你看看Bootloader的启动流程,那是整个系统的“第一行代码”。
对了,如果你在实际选型中遇到纠结的地方,可以翻翻芯片的数据手册,重点关注“Memory Map”和“Electrical Characteristics”这两章。我当年就是靠啃数据手册,才慢慢摸清了这些门道。