ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

蓝牙4.2与NFC超紧凑二合一模块设计实战解析

蓝牙4.2与NFC超紧凑二合一模块设计实战解析 把蓝牙4.2和NFC塞进一块指甲盖大小的PCB里听上去就是把两颗芯片画在一张板子上这么简单真做起来才知道天线隔离、协议切换、功耗分配和量产一致性每一个环节都能让人反复怀疑人生。这块超紧凑Bluetooth 4.2 NFC模块就是我最近一段时间的核心项目目标是把近场身份识别、免唤醒握手和低功耗蓝牙通信整合到一起给智能门锁、电子标签、设备配网、小批量身份认证这类场景提供一个既省电又省空间的二合一支架。这篇博文打算把从方案选型、硬件设计到实际调试踩坑的完整过程都讲一遍适合正在做低功耗无线模组、物联网产品或者想自己动手玩NFC应用的工程师和爱好者参考。1. 项目概述与方案选型1.1 这个模块到底解决什么问题很多人第一次听到蓝牙NFC二合一模块会下意识觉得这是功能堆叠。但仔细想一层就会发现这两者其实是天然互补的关系。蓝牙负责的是连接之后的事——传输数据、维持链路、后台通信而NFC负责的是连接之前的事——碰一下、识别身份、交换配对信息、唤醒设备。用一句话概括NFC解决的是你是谁和怎么建立信任的问题蓝牙解决的是建立信任之后怎么通信的问题。实际使用中这个逻辑非常流畅。以智能门锁为例传统蓝牙锁需要用户打开App、等待扫描、点击配对有时候还要输入PIN码整个过程慢且容易失败。而加上NFC以后手机靠近锁体的NFC感应区模块内的NFC前端被射频场激活直接把蓝牙地址和配对密钥以NDEF或自定义格式传给手机手机后台自动完成蓝牙连接整个开锁动作不到一秒钟。模块平时不广播、不扫描蓝牙部分深度睡眠只有NFC被触发时才把通信栈拉起来平均功耗比纯蓝牙方案低一个数量级。这类模块还可以用在资产盘点、巡检打卡、儿童玩具交互、消费电子配网等场景。当产品本身空间受限比如智能手表、门锁锁芯、耳机充电盒一块超紧凑的蓝牙NFC模组就是很刚需的元器件。市场上常见的方案都是蓝牙和NFC各占一颗独立模块占板面积大、天线互相干扰问题还得自己处理把它们整合在一起正好是差异化切入点。1.2 为什么锁死蓝牙4.2而不是蓝牙5.x项目立项时团队内部关于蓝牙版本争论过一轮。有人提出直接上蓝牙5.0毕竟2M PHY和广播扩展听起来更先进。但综合评估下来这块模块最终锁定了蓝牙4.2原因分成三层。第一层是BLE 4.2本身引入了两个非常关键的安全能力LE Secure Connections和LE Privacy 1.2。前者用椭圆曲线加密做配对解决了早期蓝牙配对容易被窃听和中间人攻击的问题后者允许设备快速轮换随机地址防止被外部节点长时间跟踪。这两个能力对门锁和身份类应用来说是刚需而它们不是5.0才有的4.2已经齐了。第二层是功耗与成本的账。BLE 5.0虽然在2M PHY下理论速率翻倍但在超小天线、低发射功率的模块里实际吞吐提升很有限功耗反而因为射频前端的调整变得不容易控。4.2的链路层经过多年优化各种低占空比模式、连接事件调度策略都非常成熟。对纽扣电池供电的设备来说平局电流每少1微安都是实打实的续航收益而4.2在这一点上比5.x更容易做到极致。第三层是生态兼容性。BLE 4.2设备可以被所有支持BLE的手机、平板和网关识别不存在旧设备连不上新模块的问题。反观一些早期5.x芯片在跟老旧安卓机兼容时出现过广播包解析异常、连接参数协商超时等幺蛾子。做模块类产品兼容性就是口碑我宁可牺牲一点理论指标也要保证用户手里的设备都能顺畅连接。实测下来这款模块在iPhone和从安卓8到安卓14的设备上连接成功率都能稳定在99%以上这个问题下面会展开讲。1.3 NFC与蓝牙的分工逻辑模块一共要处理两种无线信号NFC工作在13.56MHz蓝牙工作在2.4GHz两者频率差了将近两个数量级理论上互不干扰但在指甲盖大小的板子上天线间的耦合、地电流的串扰以及射频开关的隔离度都会让理论上变成理想中。设计上我采用了主从联动的结构NFC是主入口蓝牙是从出口。上电后蓝牙部分完全进入睡眠状态只有NFC检测到外部射频场时才触发中断然后模块的MCU才开始初始化蓝牙协议栈、准备广播或扫描数据。这样做的好处是模块静态功耗极低实测在3.3V供电下深睡电流可以压到1.2微安左右。NFC除了触发蓝牙还承担了身份凭据交换任务。思路是让NFC标签区里存一份握手报文其中包含蓝牙设备地址、配对密钥、设备能力标记和随机数。手机碰一下读到这份报文就能在蓝牙层发起带认证的安全连接。这套逻辑和很多智能家居设备的NFC配网方式一致但这里它不只是配网而是把NFC当作一把物理钥匙随手一挥就能完成身份确认比蓝牙层的纯软件配对要直观得多。2. 核心细节解析与实操要点2.1 蓝牙4.2的关键特性与实际性能边界做硬件的人不能只看数据手册得把每一个特性落到实际测试里才有意义。蓝牙4.2最值得关注的几个点我逐个说。LE Secure Connections也就是常说的SC配对。它使用P-256椭圆曲线算法每对设备之间都会生成一个临时密钥即使攻击者抓到了空中报文也无法离线破解出长期密钥。在模块的固件实现里配对回调、密钥存储和加密重连这三个环节都要写到位缺一个就会出现第一次配对成功重启后连接失败的诡异情况。另一个是LE Privacy 1.2。它让设备每过一段时间就更换一次随机地址手机端通过IRK解析出真实身份。这个特性会引出一个常见坑如果你的扫描程序没有正确配置白名单和解析密钥就会看到一堆乱跳的地址却怎么也连不上。我在这里花过整整两天后来发现是扫描回调里没有调用解析函数地址验证一致但身份核验失败。再就是数据包长度扩展。4.2把LE数据包从原来的两个字节Payload上限扩展到251字节配合DLE协商可以让单次连接事件的吞吐量提升数倍。但注意DLE需要两端都支持并协商成功如果手机端没有使能模块会自动降级到27字节的MTU这时候如果你在固件里硬编码了长包发送会导致链路层反复重传功耗飙升。正确做法是连接建立后用GATT的方式查询MTU大小动态计算分片。实际性能测试方面这块模块在开阔环境下BLE的视距通信距离能做到约40米0dBm发射功率1M PHY室内隔一堵墙也能稳定保持连接。吞吐率如果双方都支持DLE实测能到约50kbps的可靠应用层速率已经足够传输传感器数据、开关指令和小型文件。2.2 NFC协议家族选型14443A与15693的取舍NFC模块的心脏是读写芯片和与之配合的标签协议。项目里遇到最多的问题就是有人把14443A和15693混为一谈实际上它们的定位完全不同。ISO/IEC 14443A是近距卡协议工作距离通常在10厘米以内典型速率是106kbps、212kbps、424kbps、848kbps。它用在支付卡、身份证、门禁卡以及NTAG系列标签上。NFC Forum定义的Type 2 Tag就是基于14443A的NTAG213、NTAG215、NTAG216都属于这一类优点是兼容性好几乎所有手机NFC都能读读写速度快安全特性相对完善。缺点是通信距离短对天线设计比较敏感稍微错位就可能读不到。ISO/IEC 15693是远距卡协议工作距离可以做到1米左右常用于图书馆盘点、仓库货物管理、资产跟踪这些需要批量识别的场景。它的数据速率比14443A低很多基础速率只有26.5kbps扩展模式53kbps但胜在抗干扰能力强、读取范围大、对天线定位不敏感。如果应用场景是隔着手套扫一下或者不用对准也能读15693会是更好的选择。在这个项目里NFC读写前端同时支持14443A和15693的读取但标签侧默认采用14443A的NTAG系列原因很简单终端用户的手机要直接读到标签数据手机NFC对14443A的支持最好15693虽然也支持但很多品牌的读取器兼容性堪忧。最终模块通过寄存器配置让用户按场景切换默认值锁定在14443A/NTAG。做模块就不能替用户做太多决定但也不能把所有决定权都抛给用户保留一个合理的默认值很关键。2.3 超小体积下的NFC天线与蓝牙天线设计超紧凑三个字最大的代价就是天线尺寸被压得极狠。蓝牙2.4GHz天线的四分之一波长在自由空间中大约31毫米但在PCB上通过走线倒F天线可以做到10毫米左右NFC天线则需要在13.56MHz频率上形成一个完整的感应回路通常面积越大越灵敏而模块面积只有约11mm×13mm能分配给NFC天线的面积非常有限。设计NFC天线时我试过把线圈走在外围一圈蓝牙天线放在内侧结果NFC读距只有不到1厘米而且蓝牙工作时会拉低NFC灵敏度两个功能甚至不能同时稳定工作。后来改成NFC天线占据模块最外圈蓝牙天线走板边开槽区域的布局读距恢复到约2.5厘米蓝牙和NFC同时工作时也能保持7dB以上的隔离度。这里的关键是地平面分割和阻抗匹配。NFC天线本身就是电感线圈需要并联谐振电容把谐振点调到13.56MHz具体电容值要通过矢量网络分析仪实测。我最初按照芯片参考设计直接上了56pF并联电容结果谐振点偏了快1MHz导致读距骤降。后来用可调电容边测边调锁定在47pF才稳定。蓝牙天线则要控制特征阻抗走线宽度、到地距离、匹配网络的推荐值都要严格执行特别是板边净空区不能放任何铜皮不然阻抗会偏发射功率和灵敏度一并恶化。天线调好后还要做整机测试不能只在裸板上看指标。我测过一批样品发现同一批板子在天线性能上有近2dB的离散度原因是PCB叠层厚度公差和焊锡量差异。解决办法是和生产厂约定阻抗控制叠层同时把匹配网络的电容改成1%精度这些细节虽然琐碎但直接决定了量产时天线的稳定度。3. 实操过程与核心环节实现3.1 原理图设计与硬件布局要点硬件方案上我选用一颗低功耗蓝牙SoC作为主控外接一颗NFC前端芯片再加上少量外围被动件。蓝牙SoC负责协议栈、应用逻辑和电源管理NFC前端通过I2C与SoC通信二者共用一颗晶振尽量减少器件数量。原理图设计有两条容易被忽略的线。一是电源去耦蓝牙在发射瞬间电流会从微安级跳到十几毫安如果电源上没做好本地去耦射频输出会被拉偏导致连接不稳定。我在蓝牙SoC的每一个电源引脚旁边都放了一颗100nF陶瓷电容再在总入口处放了一颗4.7uF钽电容做低频蓄能。二是I2C上拉电阻NFC前端的I2C速率要足够快才能满足NDEF读取的时序要求上拉电阻太小会增加灌电流太大则上升沿太慢实测项目里用2.2kΩ刚好。PCB布局上最关键的是把数字电路和射频电路分区。晶振、I2C走线、复位电路这些尽量靠近引脚放不要横穿天线净空区。我见过一个失败的布板为了走线方便把I2C线从蓝牙天线底下穿过结果每次读NFC的时候蓝牙立刻断开噪声全耦合到天线上了。改版把走线绕开天线区域问题立刻消失。模块的外形尺寸定在11.5mm×12.5mm×1.2mm邮票孔半孔工艺四边一共引出18个引脚包含电源、地、UART、I2C、GPIO、复位和天线测试点。这样的封装能直接贴到主板上也方便用转接板手工焊接调试。3.2 NFC内存映射与读写时序分析NFC标签部分我默认支持NTAG213/215/216系列的读写这三款芯片都基于NFC Forum Type 2 Tag规范。很多刚上手的人会被内存地址搞晕这是因为Type 2 Tag的页和块概念有歧义。规范里每一页是4个字节而早期软件和命令里经常用块来指代同样4字节的单位导致地址错位。常见的映射形式从page0开始page0存放UID的第一个字节page1到page2存放UID的其余字节和校验位page3存放内部字节和锁定位。用户数据区从page4开始NTAG213用户区到page39NTAG215到page129NTAG216到page225。注意不同型号的用户空间差异很大如果你要把URL、文本甚至一个小图片塞进去选NTAG215会更从容它有504字节用户空间比NTAG213的144字节宽裕得多。有人遇到内存地址从page0开始偏移的情况就是因为把NFC工具里显示的十进制页号直接当成了命令地址。读取命令实际发送的地址是从0x00开始的page0就是地址0x00page1是0x01依此类推。但某些工具或库为了对齐扇区会在地址参数上多加一个偏移量如果两端不一致写进去的数据就跑到错误的位置读出来乱码一堆。另外写NTAG标签时一定要记得处理写保护和一次性锁位。NTAG系列有一个配置页可以设置密码保护或锁定用户区。很多人在调试时为了图方便直接锁死了标签之后想改内容就发现怎么也写不进。我的经验是开发阶段不要设置任何锁定位等产品定型后再通过配置页把关键区域锁死防止用户误写。3.3 蓝牙NFC联动工作流设计整机联动逻辑用状态机来实现一共分成五个状态休眠、NFC激活、蓝牙广播、蓝牙连接、数据传输。休眠状态下蓝牙SoC进入深度睡眠NFC前端处于低功耗侦听模式。当有外部NFC设备靠近NFC前端检测到射频场并产生中断SoC被唤醒进入NFC激活状态。这一步是整个联动设计的第一步也是对硬件要求最高的一步——NFC前端必须在极低功耗下保持足够灵敏度否则碰一下没反应会让用户体验瞬间崩塌。进入NFC激活状态后SoC通过I2C读取NFC前端收到的报文并解析。如果报文是配对请求则从用户配置区提取蓝牙地址、密钥和广播参数然后初始化蓝牙协议栈进入广播状态。广播参数里我特别设置了高速广播模式广播间隔20毫秒持续3秒确保手机扫码后能立即发现时间太长费电太短则连接成功率下降。蓝牙连接建立后模块进入数据传输状态。此时NFC前端可以关闭进一步降低整机功耗。如果连接意外断开状态机会回退到休眠而不是立刻重连避免反复尝试导致电池快速耗尽。实测这套状态机在无外部干预的情况下一次完整NFC触发到蓝牙连接建立的平均耗时为0.8秒左右比纯蓝牙配对流程快一个量级。4. 典型应用案例与场景落地4.1 NFC 215芯片DIY音乐墙实操模块本身是硬件基础但很多朋友拿着模块不知道能做什么这里用NFC圈子里非常火的一个玩法来演示用NTAG215芯片做一面音乐墙。之前有人用它做酷我音乐歌曲快捷链接的墙面导览把一个歌单变成一面可以碰一碰播放的实体墙这个创意非常适合用来展示NFC标签的完整读写流程。实现思路并不复杂先把歌曲的播放链接拿到手在手机上用音乐App找到歌曲复制分享链接或者抓取真实的音频URL然后用NFC写入工具把链接写进NTAG215芯片。写入时选择NDEF URI格式而不是纯文本格式这样手机NFC读取后会直接跳转播放而不是显示一段文字。NTAG215之所以比NTAG213更合适是因为有些歌曲链接串非常长213那点空间不够存215的504字节就从容多了。如果你把这面墙和前面说的蓝牙NFC模块结合可以做进阶玩法每个标签里除了存音乐链接还额外存一个设备标识手机识别后主动蓝牙连接墙角的音箱把音频推送到音箱播放。整个交互里NFC干的是告诉手机该连谁的活蓝牙干的是把声音怎么传过去的活正好印证了前面说的分工逻辑。写这类标签时的坑是链接格式。有些人直接复制App里的短链写进去手机扫码能识别但NFC读取时不会做301重定向导致部分手机上打开失败。正确做法是先用浏览器打开短链获取到最终的有效播放地址再写入NTAG215。另外要注意链接里如果带中文或特殊字符要确认写入工具使用的编码与手机解析一致一般建议用UTF-8编码并且在NDEF里显式声明。4.2 JavaH5实现NFC标签功能有了模块硬件很多开发者更关心的是应用层怎么写。这里给一套比较通用的Java原生H5 WebView方案既能利用Android的NFC能力又能让界面开发更加灵活。Android端在Activity的onNewIntent里捕获NFC Tag对象然后用NfcAdapter.getTechList检查标签支持的NFC技术类型再通过Ndef.get识别到NDEF格式。识别成功后把NDEF消息里的记录解析出来通过JavaScriptInterface暴露给WebView里的H5页面。H5页面里调用window.Android.readTag()这样的桥接方法就能拿到标签内容并展示给用户整套流程跑通后界面迭代就完全不用改原生代码了。这里我第一次开发时踩过一个挺常见的坑WebView默认不允许在页面里使用ES Module如果H5脚本里写了import语句会直接报cannot use import statement outside a module或者typemodule相关的错误。解决方法是把script标签加上typemodule同时确保WebView的setJavaScriptEnabled是true并且setDomStorageEnabled也打开否则部分模块代码在本地存储时会静默失败。原生和H5的桥接也要注意线程问题。NFC回调发生在主线程而H5页面的业务逻辑可能涉及网络请求或数据库操作不能直接把耗时任务放在主线程里跑。我的做法是原生侧把NFC解析结果封装为JSON字符串通过postMessage投递给H5H5侧用异步函数处理避免阻塞UI。4.3 ESP32扩展NFC通信的快速实现如果你手头没有核心板只想先验证NFC和蓝牙的联动逻辑用ESP32开发板加一个PN532模块就能快速搭出一套原型。ESP32自带BLEPN532支持I2C、SPI和UART三种接口我实际使用的是I2C方式接线最少配合Adafruit PN532库可以很轻松地完成读写。关键步骤是I2C地址配置。PN532的I2C地址默认是0x24但有些模块板上会多一个地址选择电阻导致实际地址变成0x25如果你初始化时报no module found之类的错误不要急着怀疑硬件坏了先用I2C扫描程序扫一遍地址。我在调试时就遇到了地址翻车扫描了一遍才确认板上实际是0x25。ESP32接PN532的重点是唤醒逻辑。PN532有休眠唤醒脚低功耗模式下需要拉低指定引脚来唤醒它。很多初学者忽略了这一步结果程序上电时能读取过一会儿就再也检测不到标签了其实芯片早就睡了。正确的做法是在每次读取前先唤醒读取完成后再让它休眠这样既省电又能保证长时间稳定运行。用ESP32做原型时还要注意天线区域不要被杜邦线遮挡。PN532自带的天线面积有限我试过用长杜邦线连接模块后手稍微靠近就会读不到标签后来改成短跳线并尽可能远离天线下方的金属桌面读距才恢复正常。5. 常见问题与排查技巧实录5.1 NFC读写失败的类型化排查NFC读写不成功是最常见的故障但不成功背后往往有完全不同的原因。我习惯把它分成三类完全无响应、能识别但读取出错、能读写但不稳定。完全无响应时先用手机的NFC读取功能测试一下标签本身再检测模块的NFC前端上电状态和中断引脚电平。如果手机能读但模块读不到问题大概率出在天线匹配或I2C通信上。好的做法是用示波器看I2C总线上是否有正确的地址和ACK信号就能判断NFC芯片是否正常工作。能识别但读取出错最常见的原因是标签不是NDEF格式或者数据用了非标准格式。用NFC工具读一下原始内存看看页0到页3的UID和校验是否正确再检查页4以后的数据是否按NDEF的TLV结构正确编排。如果数据是中文还要确认编码格式是UTF-8还是UTF-16很多写入工具默认按ISO-8859-1处理中文就乱码了。至于能读写但不稳定多半是天线的位置和角度问题。NFC天线对金属非常敏感标签或天线附近有金属就会失谐。我把模块贴在金属门板上测试时读距从2.5厘米掉到0.8厘米后来在模块背面加了一层铁氧体隔磁片才恢复到1.8厘米。这是做实际产品时必须考虑的因素金属外壳配NFC基本是标配动作。5.2 蓝牙连接不稳定的调试思路蓝牙连接不稳定有两种表现一种是根本连不上另一种是连上一会儿就断开。连不上的问题先检查广播参数和连接间隔。BLE从机广播间隔太长手机扫描窗口刚好错过就会出现一会儿能搜到一会儿搜不到的现象。把广播间隔调到30毫秒以内广播超时时间延长到30秒能大幅提高连接成功率。如果还不行检查是否使能了白名单或隐私过滤功能很多开发者没注意到模块固件里默认启用了这些特性导致扫描端解析不了地址。连上后频繁断开的原因就多了。常见的是双方连接间隔协商不一致主机要求7.5毫秒的连接间隔从机却按30毫秒处理导致超时断开。解决办法是在固件里把连接参数更新请求的处理逻辑写对允许主机的合理参数并拒绝异常参数。还有一个隐蔽问题就是电源噪声蓝牙发射瞬间电流跌落超过200毫伏就会导致射频失锁如果你发现连接断开总是发生在模块发数据时优先查电源。我遇到最诡异的一个问题是模块在设备休眠后再唤醒蓝牙总连不上。排查了很久发现是RAM保持设置不对唤醒后协议栈运行数据丢失了。解决方法是启用SoC的RAM保持功能把蓝牙协议栈的关键上下文放在不掉电的RAM区里。5.3 软硬件模块报错速查表开发这套模块的过程中除了硬件调试还绕了不少软件环境的弯路。很多报错其实和功能本身没关系纯粹是开发环境问题但特别耗时间。我把踩过的几个典型的module类报错整理成一个速查表方便后来者快速定位。报错信息出现场景实际原因与对策modulenotfounderror: no module named pkg_resourcesPython构建脚本找不到依赖环境里setuptools版本太老或缺失升级setuptools并重新安装requirementsmodulenotfounderror: no module named matplotlib.backends.registry用Python分析NFC日志画图matplotlib版本过旧或损坏卸载重装为新版本cannot find module react-scripts/package.jsonH5前端工程启动失败node_modules未安装完整或路径不对删除重装依赖QT unknown module multimedia编写桌面调试工具时QT模块不存在安装QT时未勾选multimedia模块需要补装cannot locate a 64-bit oracle client library后台管理系统连数据库报错环境缺少Oracle客户端安装对应版本的Instant Client并配置环境变量vue cannot use import statement outside a moduleH5页面引用模块失败script标签缺少typemodule或构建配置未按ESM处理cannot find module node:util ... styletextNode调试工具解析格式化失败Node版本与工具链不匹配升级Node到LTS版本并重点检查util模块表格里的这些报错在官方文档里很难找到完整解释因为它们往往是多版本混杂的环境问题。遇到这类报错我的通用排查路径是先确认运行时版本再检查依赖是否完整最后看报错栈里第一个自定义文件调用点。超过九成的module类报错都能用这三步解决剩下的多半是操作系统的动态库缺失那就要检查系统依赖了。5.4 NFC安全设计关于中继攻击的提醒把NFC用于身份识别时绕不开一个安全问题NFC中继攻击。攻击者利用两个设备做桥梁把用户身上的卡或手机发出的射频信号中继给远处的读卡器实现人在家中坐门被隔空开的效果。这是NFC技术本身的设计边界因为NFC通信基于射频场感应攻击者可以通过中继绕过物理距离限制。在模块设计上我做了两层防护来降低中继风险。第一层是引入蓝牙层的实时握手NFC只负责交换密钥和唤醒真正的鉴权动作放在蓝牙连接后完成即使NFC被中继攻击者也拿不到蓝牙层的动态密钥。第二层是在NDEF报文中加入随机数和时间戳读卡端校验时间窗口超过1秒的报文直接拒绝。这样即使攻击者截获了NFC报文也无法在有效时间内重放。需要特别说明的是中继攻击无法完全消灭只能提高攻击成本。设计产品时每个开发者都应该把攻击者的目标是什么想清楚如果只是防止门口陌生人刷卡进门基础防护就够了如果涉及资金交易则必须把蓝牙的加密通道和后台风控都做起来。NFC本身不是保险箱它只是一把钥匙锁还是得靠整个系统来配。6. 最后再补充几个量产才有的体会模块从样机走到量产中间有好几个实验室里发现不了的问题。比如回流焊之后NFC天线线圈和匹配电容的焊点温度曲线会影响谐振频率同一批板子贴片后扫一圈发现中心频率有上下200kHz的漂移后来要求贴片厂把回流焊峰值温度控制在245℃±5℃问题才收敛。这告诉了我一个道理射频性能不是设计完就定了的生产工艺能直接改写最后的结果。另外就是固件升级通道。模块量产后不能拆下来刷固件必须预留OTA或者串口升级的接口。蓝牙OTA大家都懂但要小心升级过程中NFC功能是否会被临时禁用如果用户在升级瞬间拿手机碰了一下轻则升级失败重则进入不可恢复的Bootloader。我在这块模块的固件管理器里加了一个升级中禁用NFC中断的逻辑细节不值钱但掉了这个细节售后投诉就会值很多钱。我个人在整套流程里最大的体会是把两种无线技术放进一个极小空间真正考验的不是单点性能而是系统级的权衡。NFC触发的灵敏度、蓝牙的连接延迟、整机功耗、天线隔离度每一个都是互锁的变量调好一个另一个就会劣化。项目做到后期我反而特别感谢当初定下的超紧凑目标因为正是这种极致的限制逼着我把每一个microamp和每一毫米净空都算清楚最后出来的方案才没法轻易被对手抄走。
返回列表