把BS21这颗芯片做成能用的SLE/BLE双模模块,难度比想象中高不少。去年项目定下来做星闪模组,第一版方案里SLE部分几乎全是照着BLE的经验猜的——毕竟星闪SLE的公开资料和现成参考设计远没有蓝牙那么丰富,芯片手册里很多参数又只能走一步看一步。两轮打样、前后三个月,从原理图到PCB、从射频匹配到协议共存,算是把这条链路彻底摸了一遍。这篇文章不打算复述数据手册,而是把我在设计基于BS21的星闪模块电路时踩过的坑、验证过的做法和最后沉淀下来的设计思路完整梳理一遍,给同样在做SLE/BLE双模模块的工程师作个参考。
1. 选型决策:为什么把SLE/BLE双模方案押在BS21上
1.1 星闪SLE与BLE到底差在哪里
“星闪”这个词这两年出现频率越来越高,尤其是智能家居、穿戴设备、汽车电子这些对连接实时性和功耗敏感的场景。但从本质上说,SLE(SparkLink Low Energy)和BLE一样工作在2.4GHz ISM频段,都属于短距离低功耗无线通信技术,只是底层设计思路不同。BLE走的是窄带、跳频、广播配对的路线,连接建立过程相对复杂、时延偏大,但胜在生态成熟、兼容性极好;SLE则更强调低时延、高并发和抗干扰,物理层设计上做了不少“减法”和“加法”——减掉冗余信令、简化连接流程,加上更灵活的信道分配和更高效的调制方式。
这个差异直接影响了模块电路设计。BLE的射频链路经过十几年打磨,业界已经形成了非常标准的参考设计,照着抄基本不会出大问题;而SLE的射频前端和协议栈与BLE并不完全相同,不能简单地把BLE那套射频参数直接搬过来。比如SLE在2.4GHz频段上的信道带宽和调制方式与BLE不一样,对晶振频率稳定度、接收机灵敏度设计余量都有不同要求。选BS21的一个直接原因,是它把SLE和BLE做进了同一颗芯片,共用同一个天线、同一套射频前端,至少在硬件层面省掉了一颗独立蓝牙芯片的开销。这个集成度对模组的尺寸和成本非常关键。
1.2 BS21的资源盘点与模块形态选择
BS21的具体型号和封装以海思官方资料为准,这里只说设计层面必须重点关注的几个维度。首先是电源域,这颗芯片内部包含了射频收发机、协议栈处理器和多种外设接口,各部分对供电电压和纹波要求不同,模块电路里起码要规划好主电源、IO电源和射频模拟电源这几路,不能像设计简单MCU板子那样只在芯片附近丢几个104电容了事。其次是时钟系统,BS21需要一颗主时钟晶体给射频收发机提供基准频率,同时内部还有低功耗时钟源用于休眠唤醒,这两部分电路设计直接决定了后续协议连接性能和休眠功耗表现。
模块形态上,常见的做法是做一颗邮票孔或LGA封装的贴片模块,把晶振、匹配网络、天线(或天线焊盘)、去耦电容、烧录接口全部集成在一块小板上,对外引脚按电源、UART、SPI、I2C、GPIO等分类引出。我第一版选的是PCB天线加邮票孔半孔工艺,尺寸做到12mm乘15mm左右,这样下游客户既能直接用模块上的天线,也可以把天线关闭后通过IPEX座外接天线,两种用法都覆盖到。
1.3 目标场景与设计约束
这款模块的目标场景非常明确:在智能家居设备里做低功耗传感节点和上报网关,既要用BLE去兼容手机App和存量生态,又要用SLE去接入星闪网关,实现更快的上报响应和更高的并发承载。这就带来一个传统BLE模块里很少遇到的设计约束——两种协议可能同时在跑,硬件上必须保证射频链路在SLE和BLE两种模式下都能达到可用的发射功率和接收灵敏度,同时还要防止两种协议互相干扰。这个点我会在第四章专门展开。
2. 电源和时钟:决定SLE性能上限的两个基础电路
2.1 供电拓扑设计:LDO与DC-DC的取舍
这一节是我在整个设计过程中最想强调的部分。很多做BLE模块的工程师习惯直接用一颗LDO从系统电源降压给芯片供电,因为BLE的发射功率本就不大,LDO的损耗可以接受,而且LDO纹波小、电路简单。但到了SLE场景,协议对时延和同步要求更高,射频发射时瞬时电流变化比BLE更剧烈,供电回路如果响应不过来,很容易出现发射瞬间电压跌落,直接表现为传导杂散超标或接收灵敏度下降。
我在第一版原理图里就是图省事,主电源用一颗普通LDO,结果频谱仪上发射频谱明显带毛刺,排查了半天最后锁定是瞬态跌落引起的。第二版改成DC-DC加后级LDO的级联结构:DC-DC先把外部5V或锂电池电压降到3.6V附近,保证效率;芯片主电源再接一颗低dropout、低噪声的LDO,把DC-DC的开关纹波压掉,稳定到芯片数据手册推荐的额定值。后级LDO输出端要保留足够的输出电容,用来支撑射频发射时的瞬态电流。实测下来这个拓扑在发射功率和频谱纯净度上都有了可感知的改善。
2.2 去耦电容布局与地回流
去耦电容的布局位置比容值更值得花时间。芯片供电引脚旁边的104电容要尽量靠近芯片电源引脚,但很多人忽略的是不同容值电容的分工:大容量电容(10uF、22uF)负责低频能量供给,可以放得稍远一些;小容量电容(100pF、1nF、1uF)负责高频去耦,必须紧贴电源引脚,而且回流到芯片地引脚的环路面积要尽量小。环路面积这个点,我在Layout阶段反复提醒自己一句话:高频电流走的是最小电感路径,不是最短直线路径。地过孔如果打远了几毫米,环路电感就会明显变大,去耦效果直接打折扣。
模拟地和数字地的问题也值得单独说。BS21这类SoC虽然内部已经把RF和数字部分分离,但模块设计时如果盲目地切开地平面、分成“射频地”和“数字地”,反而容易造成回流路径断裂。我第一版就犯过这个毛病,后来验证下来更实用的做法是:完整地平面加分区布局。射频部分、晶体部分、数字接口部分各自布置在完整的参考地上,同时避免射频走线跨越任何地平面分割缝隙。
2.3 主晶体选型与匹配电容的实操计算
射频芯片对主晶体的要求比普通MCU严格得多。BLE和SLE都工作在2.4GHz频段,参考频率的偏差会直接换算成载波频偏,晶体偏差过大时接收灵敏度会急速恶化。我当时选晶体的几个硬指标是:频率32MHz、负载电容按芯片手册推荐值、频差控制在正负10ppm以内、优先选温漂特性好的型号。这个组合在量产阶段比较稳,不会因为晶体批次差异出现整批频偏超标的尴尬。
晶体匹配电容的计算方法可以给一个可复用的思路。理论估算公式是负载电容等于两支匹配电容的串联值再加上杂散电容,具体是C_load = (C_L1 × C_L2) / (C_L1 + C_L2) + C_stray,其中C_stray是PCB走线和芯片引脚引入的杂散电容,一般取1到3pF。假定芯片手册要求负载电容为9pF,两支匹配电容都取15pF,串联后约7.5pF,加上2pF左右的杂散正好接近9pF。注意这只是初始值,最终焊上晶体后要用频谱仪或频率计实测实际频偏,再微调匹配电容。这个步骤千万别省,我当初图快直接按手册初始值出过一批样板,结果有十几片连接距离明显变短,返工实测发现就是晶体频偏超了。
3. 射频链路设计:2.4GHz频段上SLE和BLE的共用与分工
3.1 从RFIO到天线的整体链路规划
BS21的射频输出输入引脚输出的是单端射频信号,阻抗50欧姆,走线到天线之间需要经过匹配网络。整条链路从芯片RFIO引脚开始,依次是ESD防护器件(可选)、π型匹配网络、天线或天线连接座。这里有个很关键的点:SLE和BLE共用同一个RFIO引脚和同一条射频链路,匹配网络的设计需要在两种模式的频段需求之间取平衡。好在SLE和BLE都落在2.4GHz频段附近,信道范围接近,匹配网络对两个协议的性能影响一致,按常规2.4GHz宽带匹配来做就行,不需要分频段独立匹配。
链路规划的损耗预算也要提前算清楚。常规2.4GHz单端走线,阻抗控制得好时每厘米插损可以控制在0.1dB以内;匹配网络用0402或0201封装的射频电感电容,等效串联电阻造成的插入损耗大约0.2到0.5dB;如果加ESD保护器件,还会增加约0.1dB损耗。全部加到一起,模块整机从芯片引脚到天线口的总损耗尽量控制在1dB以内。损耗偏大时,发射功率和接收灵敏度的余量都会被吃掉,星闪SLE主打的高可靠低时延连接,恰恰最怕这种链路损耗。
3.2 匹配网络设计与π型拓扑的调试
匹配网络我推荐直接采用π型拓扑,也就是两支并联电容夹一支串联电感,这样调试时留了三个可调位置,灵活性最大。初始值可以参考芯片厂商的评估板BOM,没有参考就从50欧姆源端、50欧姆负载端的常规匹配起步:串联电感2.2nH左右,并联电容从1pF起步,焊上之后测S11。
调试匹配网络最理想的设备是矢量网络分析仪。实验室如果没有VNA,用频谱仪加跟踪源也能测回波损耗,精度略差但够用。调试核心目标是让S11在2.4GHz频段、尤其是SLE和BLE实际工作信道附近尽量低于负10dB,也就是反射系数小于0.316,反射功率不超过10%。我第一次调的时候盯着Smith圆图一点一点改匹配元件,电容从1.5pF换到2.2pF、电感从3.3nH换到2.7nH,前后烧了七八片样板,最后在2440MHz附近压到了负18dB左右。
匹配元件的选型必须用高频特性的射频电感电容,普通厚膜电阻电容不能直接替代。普通电容在2.4GHz下等效串联电感会明显改变谐振点,导致匹配失效。电感选Q值尽量高的,高频瓷片电容选C0G/NPO温漂特性的。物料尺寸推荐0402,空间确实紧张可以局部用0201,但0201的手焊和返工难度会明显上升,量产贴片倒没问题。
3.3 天线选型与净空区设计
天线是整个射频链路里最容易被低估的一环。模块形态不同,天线方案差别很大:PCB板载天线成本最低、集成度最高,但对净空区和地平面形状极其敏感;IPEX外接天线灵活性强、性能上限高,但要增加连接器和线缆成本;陶瓷天线体积小,带宽和效率通常低于同尺寸的PCB天线。
我第一版做的是PCB倒F天线,按2.4GHz的常规尺寸估算,预留了差不多15mm乘6mm的净空区。这里特别要提醒的是,天线的净空区不仅指天线下方没有铜皮,还包括天线四周一定范围内不要放置金属器件和地平面。我在第一版里把天线旁边放了一颗晶振和一个金属屏蔽框,屏蔽框离天线净空区边缘不到3mm,结果整机灵敏度比预期差了4到5dB,后来把屏蔽框移远、把天线旋转90度才恢复正常。这个教训值两版PCB的钱。
如果模块留给天线的空间实在紧张,我会优先建议走“邮票孔射频焊盘加IPEX座”的路线,把天线放在主板上而不是硬塞进模块。模块上只出50欧姆射频走线到焊盘或座子,主板端用同轴线连接天线。这种方案性能最可控,只是对下游客户的主板设计能力提出了一定要求。
4. SLE与BLE共存:同一个模块里两种协议怎么和平共处
4.1 共存冲突的本质:同频段下的时频竞争
这可能是BS21模块设计里最特殊、也最容易被忽视的部分。SLE和BLE都工作在2.4GHz频段,信道范围高度重叠。BLE使用40个2MHz宽的信道,SLE的信道规划虽然和BLE不同,但频段资源是同一个,不可能做到完全不重叠。如果SLE和BLE同时收发,射频前端在同一时刻只能服务一个协议,这就是共存冲突的本质。
共存冲突有两种典型表现。第一种是频域冲突,SLE和BLE恰好落在相邻或重叠信道上,能量互相干扰;第二种是时域冲突,两种协议的收发时隙在时间上撞在一起,芯片内部射频前端被占用,只能放弃其中一个包的接收或发射,表现为丢包率上升和重传增加。BS21作为双模SoC,内部有共存仲裁机制,但硬件设计不到位时,仲裁再聪明也救不回来。
4.2 硬件层的隔离与共享设计
硬件层面能做的主要有三件事。第一是保证射频链路在SLE和BLE两种模式下都有足够的线性度,避免匹配网络反射过大,导致接收机在强干扰场景下饱和。第二是供电和地的干净程度,数字接口的噪声如果耦合到射频供电上,会让SLE和BLE的接收底噪同时抬高,我在实测频谱上见过这种问题,噪声底整体抬高后两种协议的灵敏度都会下降。第三是外设接口的信号完整性,UART、SPI这些数字信号如果走线过长且没有完整的参考地,会通过空间辐射耦合到射频部分,形成额外干扰源。
还有一个很实用的做法:如果系统里同时有Wi-Fi或者其他2.4GHz设备,在主板上预留一个外部共存接口(比如传统的COEX三线接口),用来和Wi-Fi芯片做时分仲裁。虽然BS21本身是SLE/BLE双模,但不代表它不会受到其他2.4GHz设备的干扰,预留Coex接口的成本几乎为零,却给后期系统集成留了很大的调整空间。
4.3 协议调度参数与连接流程的配合
协议层面的共存优化,很大程度上依赖芯片SDK和协议栈的配置能力。BLE的连接间隔、从机延迟这些参数,不只是功耗优化的手段,也可以用来给SLE让出时隙。我自己在测试中发现,当BLE连接间隔设置得比较短(比如7.5ms)时,SLE的周期性上报时延会出现明显抖动;把BLE连接间隔拉长到30ms左右,再把SLE的广播间隔和连接事件错开配置,两者的上报时延都稳定了很多。这个调节过程需要结合具体业务场景去平衡——BLE连接间隔拉长,BLE本身的响应实时性会下降,对手机App那种交互场景就不太友好。
从热词里的“BLE连接过程”和“uni-app BLE iOS根据deviceid建立连接”也能看出一个现实问题:模块的BLE兼容性直接影响手机App侧的连接体验。BLE连接过程大致是广播、手机扫描、发起连接请求、连接参数协商、服务发现这几个阶段。iOS系统对广播间隔、连接参数有比较严格的限制,如果模块端把广播间隔设得太窄或者连接参数不符合iOS规范,就会出现“iPhone 13能搜到但连不上”这种经典问题。我在模块的参考配置里,把广播参数和连接参数的推荐值做成了一套默认设置,确保下游App用uni-app这类跨平台框架按deviceid去连接时,iOS和Android的行为能保持一致。
5. PCB Layout与打样:射频电路最容易翻车的地方
5.1 射频走线的阻抗与参考地控制
Layout做得好不好,基本决定了射频性能的天花板。射频走线从芯片RFIO引脚出来,经过匹配网络再到天线焊盘,全程必须按50欧姆控制阻抗。两层板设计时,通过控制线宽和到参考地平面的距离来实现50欧姆。我这边2层板、板厚1.0mm、铜箔到地平面距离约0.6mm这种常规叠层时,走线宽度大概做到0.6mm;如果换成4层板,参考地就在相邻层,线宽一般会更细,具体值需要用阻抗计算工具按板材介电常数和叠层结构算一遍再定。
走线形状上,射频线要尽量短、尽量直,不要出现90度直角和尖锐拐角,拐角用45度斜角或圆弧过渡。两条射频走线不要平行跑长距离,以免互相耦合。匹配网络里电感电容的摆放方向尽量一致,且不要跨接到参考地平面的分割线上,否则回流路径被切断,匹配效果全废。
5.2 数字与射频分区、过孔缝合
模块里既有射频部分,又有UART、SPI、I2C、GPIO这些数字接口,Layout时要把两类电路在物理上分区。我的做法是:射频链路(RFIO引脚、匹配、天线)放在板边一侧,晶体放在靠近芯片的另一侧,数字接口连接器和测试点集中在第三侧,保证数字信号不会横穿射频区域。芯片正下方保持完整地平面,作为所有高频回流的公共参考。
地过孔缝合是个容易被忽略但极其关键的细节。地平面上的过孔如果太稀疏,会造成不同区域的地电位不一致,高频回流会绕远路,等效于增加回路电感。模块面积就那么大,我习惯在芯片地引脚周边、射频走线两侧、天线焊盘周围这几个位置,每隔1到2mm打一个地过孔,形成一道“过孔墙”。这个操作成本极低,但对射频指标和EMC表现的改善非常明显。
5.3 打样阶段必须留的调试接口
打样PCB之前,一定要把调试接口留足,别觉得浪费面积。至少要有这几样:第一,射频输出端到天线之间预留一个0欧电阻或焊盘断点,方便断开天线做传导测试;第二,电源主路上预留电流测试焊盘或跳线,方便测量工作电流和休眠电流;第三,芯片的SWD或UART烧录调试接口引到测试点或邮票孔上;第四,晶体附近预留频率测试点,方便验证起振和频偏。
这些看起来都是小事,但在调试阶段能省大量时间。我第一版打样就是因为没预留射频断点,每次测传导指标都得拿刀片割走线,测完再飞线,来回几次板子就废了。第二版加了0欧断点后,调试效率至少翻了一倍。
6. 调试、测射频与量产问题排查
6.1 从样板到射频指标的正确调试顺序
拿到样板后,调试顺序很重要。我建议按“电源、时钟、固件、射频传导、天线辐射、共存”这个顺序来,不要一上来就测连接距离。先确认各路电源电压和纹波正常,再确认晶体起振且频率在容差范围内,然后烧录最小固件确认芯片运行正常,接着在射频断点处做传导测试(此时天线端接假负载或直接断开),测发射功率、频偏、S11和接收灵敏度,通过后再接回天线测整机辐射性能,最后才测SLE/BLE共存场景下的丢包和时延表现。这个顺序能最大限度缩短问题定位范围,不然每一步都是黑盒。
6.2 实测中踩过的典型坑
第一版样品测试遇到几个典型问题,按排查链路还原一下。
第一个是发射功率上不去。频谱仪显示发射功率比芯片手册标称值低了3dB,最开始怀疑匹配网络插损太大,但用VNA测下来链路插损只有0.4dB,排除。后来查供电,发现射频发射瞬间电源电压跌落超过200mV,把去耦电容从2.2uF加大到10uF、并调整了LDO输出电容后,发射功率才恢复到正常。这个问题的教训是,遇到功率异常要敢于怀疑供电动态响应,而不是只盯着静态电压。
第二个是接收灵敏度差。样板放在同一位置,SLE接收灵敏度比评估板差了5dB。排查链路是这样的:先查匹配,S11正常;再查晶体,频偏在范围内;最后发现是天线净空区旁边的屏蔽框降低了天线效率,把屏蔽框移动后恢复正常。这就是典型的“电路没问题、结构背锅”,所以Layout阶段就一定要把结构件和天线的相对位置确认清楚。
第三个是SLE和BLE同时工作时丢包率上升。排查后发现SDK的共存策略默认没开启。把共存仲裁使能打开、再配合调整BLE连接间隔后,丢包率明显下降。这里想说的是,芯片能力往往是够的,但默认配置不一定适合你的具体场景,一定要把共存相关的配置逐项过一遍再定型。
6.3 一致性控制与产测方案
从样板走向量产,一致性是最关键的一道坎。物料端要指定晶体频差、电感电容的精度和温漂等级;PCB端要控制板材批次一致性,换板材供应商必须重新做阻抗验证;生产端要避免RF走线附近被过度维修和返工。产测方案上,至少做到全检三项射频基本项:发射功率、载波频偏、接收灵敏度(可以用PER或RSSI替代全灵敏度测试来节省时间),这三项基本可以覆盖一致性风险的大部分。有余力的话,增加天线辐射方向性的抽检,确保贴片天线的焊接一致性。
最后再分享一个量产阶段的实际体会:产测工位的测试环境一定要固定,天线耦合板的位置、测试线缆型号、频谱仪设置都要做成标准化作业指导书。我遇到过产线反馈某批次灵敏度集体偏低,折腾两天最后发现只是测试线缆换了一根更长的,插损差了1dB。这类问题跟芯片和电路设计没关系,但处理起来最耗时间。预留好产测位、固化测试条件,比在实验室里调出再好的指标都更能保证出货质量。