ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

杰理 AW33N 四型号选型、BLE 6.0 与低功耗实战

杰理 AW33N 四型号选型、BLE 6.0 与低功耗实战 做蓝牙项目的朋友大概都有过这种体验一个系列名看着像亲兄弟型号只差最后一位数字价格却差出好几毛Flash、RAM、外设、封装也不一样选错一颗后面要么是固件塞不下连夜改板要么是花了大价钱买了一堆用不上的资源。杰理 AW33N 这一代的片子就是典型例子AW332A、AW333A、AW336A、AW338A 四颗放在一起名字几乎一样实际能干的活差别不小尤其在 BLE 6.0 相关特性逐步落地的当下选型要考虑的东西比两年前多了整整一层。这篇就把我自己做 AW33N 系列选型和落地时踩过的、验证过的东西摊开讲从命名规律、资源差异、BLE 6.0 新特性带来的实际影响一直讲到开发环境、烧录、功耗实测和常见故障排查尽量让第一次接触杰理蓝牙的兄弟看完就能上手也让做过几轮项目的人能对一下自己的判断。1. AW33N 四兄弟到底差在哪先把选型逻辑捋顺1.1 型号后缀其实透露了不少信息先把一个前提说清楚杰理这类 SoC 的命名不是随机编的。同一代平台里前缀相同AW33 系列代表同一代 BLE 内核与射频架构最后一位数字主要区分片上存储配置和外设/封装档位。也就是说AW332A、AW333A、AW336A、AW338A 共用同一套射频前端、同一套 BLE 协议栈底层、同一套工具链差别集中在你能往里面塞多少代码、能挂多少外部器件、封装能小到什么程度。这一点非常关键因为它直接决定了升级路径——如果四颗芯片是同一个平台那产品从低配版迁到高配版时射频匹配网络、天线调试参数、甚至是 PCB 的走线约束都可以基本沿用省掉一次射频重新调校的时间。我做过一次从低配切到高配的改版射频部分只重新核了一遍匹配网络的容差天线效率和低配版本实测差了不到 0.3 dB这在 BLE 这种对链路预算敏感的场景里是可以接受的。具体到数字含义按这个系列一贯的资源配置区间来看数字越大通常意味着片上 Flash 越大2 字头一般对应最小的存储档适合广播类、遥控类这种逻辑极简的应用6 字头和 8 字头则往上走能容纳更完整的协议栈配置、OTA 升级镜像、多服务 GATT 表以及一些本地数据处理逻辑。RAM 也基本是同步递增的只是增量没有 Flash 那么明显这一条在做缓冲设计的时候要特别注意别以为 Flash 涨了 RAM 就能随便开大缓冲区。注意不同批次、不同封装版本的实际容量可能会有微调选型定稿前一定要拿最新版本的官方数据手册核对一遍尤其是准备做量产的项目。本文里的资源区间是基于同系列命名的常见规律整理的用来建立判断框架不能替代官方手册。1.2 选型之前必须先定下来的三件事很多人一上来就翻参数表其实效率很低。我自己的习惯是先回答三个问题答案清楚了型号基本就锁定了。第一件事是这产品有没有 OTA 需求。BLE 产品的 OTA 不是简单地把新固件塞进去就完了你需要在 Flash 里划出两块区域一块跑当前固件一块暂存新固件再加上一个引导区做跳转判断。也就是业界常说的双区方案代价是 Flash 占用直接翻倍。如果一开始没规划好等产品做完再想加 OTA基本就只能换芯片。这是我在早期项目里吃过的最大一次亏当时用最小存储档做了个遥控器后来客户要求支持固件升级只能整板重画。第二件事是要不要跑非蓝牙的业务逻辑。比如带传感器融合的电子标签、带本地按键组合判断的遥控器、带简单状态机的玩具。纯广播的遥控器只需要周期性发几个字节最小档完全够用但只要涉及多个传感器的采样、滤波、缓存打包RAM 占用会迅速上升这时候就得往 6 字头或 8 字头靠。第三件事是封装和 GPIO 数量。这一点经常被忽略直到画板时才发现引脚不够。低档位型号往往引脚少、封装小成本低但如果你的产品要接三色 LED、蜂鸣器、多个机械按键、还要留调试口引脚会瞬间告急。我在一个带旋钮的音频配件上就遇到过这种尴尬最后只能把两个按键合成一个复用体验打了折扣。1.3 一张表先看全局差异把上面三件事套到具体型号上可以先建立一个大致的判断表。下面这张表是按同系列命名规律和常见应用场景整理的选型参考不是官方参数表具体数值务必以官方手册为准。型号存储档位常见区间典型引脚/封装适合的场景主要顾虑AW332A最小档引脚最少小封装单向上报的遥控器、简单广播标签、玩具遥控无法做双区 OTA复杂逻辑容易顶到天花板AW333A小档偏上引脚略多带按键组合判断的遥控器、简单传感器节点多服务 GATT 表会吃紧RAM 缓冲要精打细算AW336A中高档中等引脚带 OTA 的智能外设、带本地缓存的穿戴配件成本上升需要评估是否真的需要这么多资源AW338A最高档引脚最全多传感器融合、带屏幕或复杂交互的产品价格最高小批量项目要算清楚 BOM 占比这张表放在桌上你只需要问自己要不要 OTA引脚够不够业务逻辑复杂不复杂三个问题答完横向一对照基本就跑不出这个范围了。剩下的就是成本核算和供货情况确认。2. 逐个拆解四颗芯片的核心差异点2.1 Flash 与 RAM先算清楚你的固件到底有多大选型里最容易翻车的就是存储。协议栈本身不是一个小数目BLE 从底层链路层到 GATT、到各种 profile 的实现加上厂商 SDK 里的驱动、调度器、日志模块编译出来的基础体积就相当可观。你在上面每加一个自定义服务、每加一段数据处理逻辑、每加一个 OTA 模块都是实打实地往上叠。我一般的估算方法是分四块算协议栈基础体积 业务逻辑体积 OTA 预留 安全余量。前两块可以从编译产物里直接读出来第三块按业务逻辑体积的等量来留第四块我习惯留 15% 到 20%因为编译器版本变化、SDK 升级、调试宏开关都会让体积浮动。很多人编译完发现剩了一点点空间就以为够用结果换个编译器版本就溢出了这种坑很常见。RAM 的计算更微妙。BLE 协议栈需要维护连接上下文、广播数据缓冲、ATT 层的数据缓存这些都是固定开销。剩下的才给你的业务逻辑用。如果你在中断里做数据打包还需要额外留出栈空间。低档型号上我一般把业务侧的缓冲区控制在很小的范围用环形队列加逐包发送的方式处理避免一次性申请大块内存。实操心得不要用编译能过当成资源够用。真正靠谱的做法是把最坏情况跑一遍——连接数拉满、广播频率拉高、OTA 和业务逻辑同时跑观察稳定性和内存余量这时候才能确定这颗片子扛不扛得住。2.2 外设资源引脚数量决定了产品形态外设这块四个型号的差异主要体现在 GPIO 数量、是否带 ADC 通道数、PWM 通道、以及串口和 I2C 的复用情况。看起来都是有 GPIO、有 ADC、有 PWM但数量差一个产品形态就差一个档次。举个例子做一个带电池管理的穿戴配件你需要电池电压检测1 路 ADC、充电状态指示1 到 2 个 GPIO、按键1 到 2 个、LED 指示1 到 3 个 PWM、传感器通信I2C 两线、再加上保留的调试口2 个。算下来轻松超过十个引脚。低档型号如果只有十来个可用 IO还要扣掉复用和保留的基本就没余量了。ADC 的通道数量也值得留意。有些应用需要同时监测电池电压和外部模拟量输入如果通道不够就得外加模拟开关BOM 成本和板面积都上去了。我在一个带旋钮位置检测的产品里就因为这个多加了一颗模拟多路复用器后来换到高配型号反而更划算因为省下来的外围器件成本超过了芯片差价。PWM 通道数对灯效产品影响很大。要做出呼吸灯、渐变色、多灯独立控制通道数不够就只能软件模拟软件模拟在 BLE 连接事件密集的时候容易抖动视觉上能看出来。2.3 射频与 BLE 6.0新特性带来的实际约束BLE 6.0 这一代规范带来的变化里对我们做产品影响最直接的是**信道探测Channel Sounding**这类测距能力以及广播过滤、广播监听方面的增强。测距能力对防丢器、数字钥匙、室内定位类的产品价值很大因为它能在不依赖额外硬件的情况下给出距离估计。但要注意这类特性对射频链路的一致性、天线方向性、以及测量的时序精度都有更高要求。这意味着什么意味着你在做天线设计和 PCB 布局时不能再像做普通广播遥控器那样随意。天线附近的走线、地平面完整性、旁边有没有开关电源的干扰源都会直接影响测距结果的可重复性。我在一个带测距需求的项目里第一版板子把天线放在电源芯片旁边距离估计的抖动大得没法用把天线挪到板边、底下挖空、周围加隔离地之后才稳定下来。另外如果产品要用到这些新特性对固件侧的协议栈版本、SDK 支持程度也有要求。选购型号的时候要确认这颗芯片对应的 SDK 分支是否已经支持你需要的特性有些低配型号虽然硬件上是同平台但厂商给的 SDK 配置里可能裁掉了部分特性以节省空间。这一条在选型阶段就要问清楚别等做完才发现用不了。2.4 功耗曲线电池寿命不是靠猜的功耗这块四个型号在同一平台下静态功耗差别不算大差别主要在你能用多低的占空比工作。资源多的型号可以把更多处理放在本地一次做完减少射频唤醒次数资源紧张的型号可能需要频繁唤醒处理数据平均电流反而更高。这是很多人没意识到的反直觉点。我实测过同类产品的平均电流做广播间隔和发射功率的对比大致规律是广播间隔从 100 ms 拉到 500 ms平均电流能下降明显一档发射功率从最大档降几 dB也能省一些但代价是链路预算变差。具体的数值和你用的天线效率、外壳材质、以及环境干扰都有关系没有什么通用公式只能实测。测量方法上我一般用高精度电流表配合长时间的电流积分功能把设备放在真实工作状态下跑够时间看总量。单纯看示波器上的瞬时波形容易误判因为 BLE 的功耗是脉冲式的平均值的意义远大于峰值。注意电池寿命估算里最容易被低估的是漏电流和休眠残留。上电后某些外设没有正确关闭、GPIO 悬空导致漏电、稳压器静态电流偏大这些加起来可能比蓝牙本身的平均功耗还高。做低功耗产品先把休眠电流压到最低再谈蓝牙功耗优化。3. 动手实操从环境搭建到跑通第一个连接3.1 工具链和开发环境的准备杰理的开发环境是自成一体的工具链、IDE、烧录工具、配置工具都是一整套。第一次上手最容易卡住的地方不是写代码而是环境装完之后编译不过、下载不了。我的建议是不要贪多第一步只装最小可用的一套编译器工具链、代码编辑器或官方 IDE、烧录工具、以及官方的配置生成工具。安装路径上有个长期有效的经验全英文路径不要有空格不要有中文。这类工具链里有不少老旧的脚本和 makefile对路径的处理很不讲究路径里带空格或者中文编译报的错会非常莫名其妙比如提示找不到某个头文件其实文件就在那里。我见过有人折腾一整天最后只是把工程从我的项目目录挪到英文目录就好了。版本管理也要注意。杰理的编译器版本更新比较频繁不同版本对同一份代码的编译结果可能有差异体积、优化行为都会变。团队协作时我一般会把工具链版本写进项目文档甚至直接打包一份到项目仓库里保证所有人编译出来的东西一致。这一点在准备量产固件时尤其重要因为生产用的固件必须和验证过的固件是同一份二进制。3.2 工程配置与关键宏新建工程的时候官方配置工具会生成一堆宏定义和配置文件这些是控制协议栈裁剪、外设使能、引脚映射的核心。改这些的时候要养成习惯一次只改一个变量改完编译验证一次。同时改三四个宏出了问题根本不知道是哪个引起的。几个我特别关注的配置项广播参数间隔、发射功率、广播数据内容、连接参数最小最大间隔、从机延迟、超时时间、以及 GATT 服务表的组织方式。连接参数这块直接影响功耗和响应速度的平衡间隔设小了响应快但耗电设大了省电但交互有延迟感。我一般的做法是先按应用场景定一个大方向比如遥控类用较短的间隔保证手感传感器上报类用较长的间隔省电然后在实测中微调。引脚映射是最容易出错的地方。配置工具里改完引脚一定要对照原理图核一遍特别是复用功能。有些引脚在上电瞬间有默认功能如果外部电路没有做好处理会出现启动异常。我遇到过一次设备上电偶尔不启动的问题查了很久才发现是某个复用引脚在复位期间被外部下拉干扰了启动流程加了一颗电阻之后就再没出现过。3.3 烧录从常规下载到强制进入下载模式烧录是新手最容易卡住的环节。常规流程是设备正常启动后通过串口或者 USB 进入下载模式然后工具写入固件。但如果设备里的固件已经跑飞了、或者进了异常状态就没法用常规方式唤醒这时候就需要强制进入下载模式。强制下载的原理不复杂芯片在复位后的极短时间内会采样某些引脚的状态如果满足特定条件就跳过用户固件直接进入下载引导。不同型号的采样引脚和时序要求可能不同这个一定要查对应型号的文档。我见过有人拿别的型号的时序去套怎么试都不成功。这里就要说到社区里很流行的一个做法——自制一个强制下载工具。用一颗便宜的 8 位单片机比如 STC15F104 这类做一个 USB 转时序控制的小板子接上目标板自动完成上电、引脚拉低、复位释放这个序列省掉手动按按键的麻烦。这种工具的价值在于量产和反复调试时能省大量时间尤其是需要频繁烧录的调试阶段手动操作容易出错而且很烦。实操心得自制下载工具的时候时序参数不要照抄别人的一定要用示波器看一遍自己的板子上电和复位的实际波形。目标板的电源上升时间、复位电容的大小都会影响时序参数不对就会出现偶尔成功偶尔失败的玄学现象。烧录完成后建议做一个校验动作把写入的固件读出来做一次比对。这一步多花十几秒能避免很多烧录成功了但设备行为不对的排查时间。3.4 跑通广播与连接固件烧进去之后第一件事不是急着写业务逻辑而是先把广播跑起来用手机上的通用调试工具扫一下看能不能扫到、信号强度如何、广播数据对不对。这一步能验证射频链路、天线、和基础固件都是通的。广播数据里要注意厂商自定义数据的格式如果你打算做私有协议把关键信息放在广播包里可以省掉一次连接功耗和响应速度都更好。但广播包容量有限能塞的东西不多一般是设备标识、状态位、少量传感器数据。连接建立之后再逐个验证 GATT 服务。我习惯用调试工具手动读写每个特征值确认权限、长度、通知配置都对再去写应用侧代码。这样能把问题定位在协议层还是应用层省很多时间。很多人一上来就调应用遇到问题分不清是协议栈配置错了还是应用逻辑错了来回折腾。实测下来把广播、连接、通知这三步跑通一个 BLE 产品的基础框架就稳了后面的业务逻辑都是在这个骨架上加东西风险小很多。4. 选型决策与成本核算4.1 按场景直接给结论如果你不想看分析只想拿一个结论我按常见场景给个直接的参考具体还是要结合你的资源占用实测来定。遥控器、单向遥控玩具、简单的广播标签选最小档就够不需要 OTA 的情况下没必要多花钱。带按键组合判断、带简单状态指示的遥控器选小档偏上的型号给 RAM 留点余量避免频繁改代码时空间不够。带 OTA、带一两个传感器、有本地数据处理的产品走中高档这是目前需求最集中的一档。多传感器、带屏幕、或者需要跑更复杂状态的交互产品上最高档不要为了省几毛钱在后期反复优化空间人力成本比芯片差价高得多。4.2 别只看芯片价格要看整体 BOM选型时最容易犯的错是只盯芯片单价。实际成本要算的是芯片 外围器件 PCB 面积 生产效率。高档位芯片引脚多可能帮你去掉模拟开关、外部存储、扩展芯片整体下来反而更便宜。低档位芯片引脚少为了接够外设可能要多加一颗 IO 扩展这颗扩展的单价加上它的去耦电容、板面积很可能超过芯片差价。我在一个项目上对比过两种方案低配方案算下来单板成本只低了几分钱但因为外围器件多贴片工时和不良率都上去了最后选了高配方案。PCB 面积也是钱。小封装能省面积但如果你需要的外设多小封装带来的走线密度增加会让层数上升四层板变六层板这个成本差距远大于芯片差价。所以选封装的时候一定要和结构、板框一起考虑不能孤立地看。4.3 供货与生命周期技术选型之外供货稳定性也要在选型阶段确认。量产项目最怕的是选了一颗供货不稳定的型号做到一半断供。我的做法是主选型号 备选型号同时验证两颗芯片是同一平台切换成本低。同时和供应商确认清楚这颗型号的长期供货计划以及有没有明确的替代型号。另外同一系列里不同型号的 SDK 分支可能会分叉有些低配型号的 SDK 更新频率低遇到问题得不到及时修复。这一点在选型时就要问清楚不能只看硬件参数。5. 踩坑实录常见问题与排查速查5.1 烧录与连接类问题现象可能原因排查方向工具识别不到设备驱动未安装、USB 线只有充电功能、串口被占用换数据线、查设备管理器、关闭占用串口的软件能识别但下载失败时序不对、供电不稳、目标板处于异常状态改用强制下载、单独供电、用示波器看电源纹波烧录成功但设备不跑校验失败、启动引脚状态不对、固件不匹配读回比对、核对引脚配置、确认固件版本手机扫不到广播广播未开启、天线未接、发射功率过低用调试工具看广播数据、检查天线焊接、拉高功率测试烧录问题里最耗时的往往不是技术问题而是环境问题。我的经验是准备一套已验证的基准环境一根确认能用的数据线、一个确认能用的 USB 口、一份确认能过的固件。出问题的时候先用基准环境测一遍如果基准也失败那是环境或板子的问题如果基准成功而你的工程失败那是工程配置的问题。这样能快速二分定位。5.2 功耗与稳定性问题功耗异常是最难查的问题之一因为它往往是多个小问题叠加。我一般的排查顺序是先看休眠电流把蓝牙完全关掉只留 MCU 休眠测出来多少然后逐步开启外设看每一步增加多少最后开蓝牙广播。这样能定位到底是哪一部分在漏电。常见的漏电点包括悬空的 GPIO、未关闭的外设时钟、处于工作状态的稳压器、以及反灌电流。反灌电流这一条特别隐蔽当某个引脚的电压高于供电电压时电流会通过内部保护二极管倒灌进电源造成额外的功耗。做低功耗产品时所有连接外部信号的引脚都要考虑这个问题。稳定性问题里复位和死机最常见的原因是看门狗配置不当和栈溢出。栈溢出在资源紧张的型号上尤其容易发生因为 RAM 本来就少。我习惯在调试阶段给栈填充特征值运行一段时间后检查被覆盖的位置判断栈的峰值使用量据此调整栈大小。5.3 关于 MAC 地址变化这件事有不少人问过为什么同一颗芯片烧录之后 MAC 地址会变。这个问题的根源在于 MAC 地址的存放位置和读取逻辑。通常 MAC 存在芯片的信息区或者配置区量产时由工具写入。如果你在烧录的时候执行了全片擦除或者用了会覆盖信息区的配置那么原来的 MAC 就被清掉了设备重新上电时会按默认规则生成一个地址看起来就是变了。要避免这个问题量产烧录流程里要明确区分哪些区域是必须保留的哪些是可以擦的。批量生产的时候MAC 的分配和写入要有统一的记录避免重复。我一般会建议在做烧录脚本的时候把信息区的读回校验也加进去烧完确认 MAC 正确写入且没有被意外修改。注意调试阶段频繁擦写信息区是正常操作但量产固件发布前一定要确认最终的烧录配置只擦写需要擦写的区域别把序列号、MAC、校准参数一起擦掉。5.4 调试阶段值得养成的两个习惯第一把日志分级。杰理的 SDK 一般带日志输出功能全开的时候信息量巨大反而看不清关键信息。我的做法是只在需要的时候打开对应模块的日志比如排查连接问题时只开协议栈层的日志排查功耗时只留必要的状态打印其余全部关掉。日志本身也会影响功耗和时序调试时要注意这一点。第二保留版本快照。每次功能验证通过就打一个标签把代码、配置、固件二进制一起存下来。BLE 项目里配置文件的改动很容易被忽略出了问题回不到上一个已知good的状态排查效率会大打折扣。这个习惯在多人协作时价值更大。我个人做 AW33N 系列选型的体会是型号之间的硬件差距其实不算大真正决定成败的是你有没有在动手之前把资源占用算清楚、把 OTA 和引脚这两件事提前想明白。很多返工的根源都不是芯片选错了而是需求没想透就去选型。真要说一句实用的建议那就是先把最坏情况的资源跑一遍再回来定型号比对着参数表纠结半天靠谱得多。
返回列表