尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

Nucleo-WBA25CE1实战:蓝牙DTM射频测试从原理到产测落地

Nucleo-WBA25CE1实战:蓝牙DTM射频测试从原理到产测落地 1. 项目概述这块板子的DTM到底能帮你干什么搞蓝牙开发和射频测试的人对Nucleo-WBA25CE1这块板子应该不陌生。它是ST在STM32WBA系列上推出的一款Nucleo-64开发板核心用的是STM32WBA25CEArm Cortex-M33主频100MHz1MB Flash / 128KB RAM支持Bluetooth LE 5.4。今天要聊的不是常规的BLE应用开发而是它最容易被忽略、但做硬件调试和认证时又绕不开的一个功能Direct Test Mode也就是DTM。DTM是什么一句话解释它是蓝牙规范里定义的一种测试模式让测试仪器或电脑上的测试软件直接控制蓝牙芯片的射频收发器绕过协议栈的上层逻辑用来做发射功率、接收灵敏度、调制特性、频率误差这些射频指标的测量。你可以把它理解成射频链路的一场裸考——不穿协议栈的衣服直接看硬件本身行不行。实际工作中DTM一般出现在三个场景。第一板子刚贴片回来要快速验证射频链路有没有焊好、有没有短路、天线匹配对不对DTM是最快的验证手段。第二产品要过蓝牙认证认证实验室就是用DTM模式配合综测仪跑RF-PHY那堆测试用例。第三量产产测阶段很多工厂也是用DTM的简化版接口配合PC端软件做射频快速校验。所以不管你是硬件工程师、嵌入式软件工程师还是刚入行的射频测试工程师DTM这套东西迟早要碰。这篇内容就基于Nucleo-WBA25CE1把DTM从原理到实操完整走一遍。2. DTM的原理与三种实现路径2.1 蓝牙规范里的DTM定义在哪个位置先花点时间把DTM在蓝牙协议栈里的位置说清楚。蓝牙协议栈从上到下是应用层、Host主机、Controller控制器其中Controller里包含了链路层和物理层。DTM直接作用于物理层它绕过了整个Host也绕过了链路层的正常连接流程由测试设备Tester直接向被测设备IUT的控制器下发命令让射频部分按照指定参数工作。这个机制在蓝牙核心规范里是单独成章的卷号是Core Specification Vol 6 Part F叫做Direct Test Mode。规范里规定了两种访问DTM的途径一种是标准HCI接口测试仪通过HCI指令和被测设备通信另一种是2-wire UART接口专门给那些不带完整Host、只带控制器的设备用。Nucleo-WBA25CE1这两种都支持但实际用起来差别很大。为什么需要区分这两种路径因为测试对象不同。如果被测设备是一个完整的蓝牙SoC比如手机上那颗蓝牙芯片它跑着完整的协议栈测试仪想进入DTM就得通过HCI命令下发但如果被测对象是模块里边那颗纯控制器或者为了产测方便不想初始化整个协议栈那2-wire UART这种简化接口就更有优势命令格式简单一个字节就能触发一次测试对产测脚本非常友好。2.2 2-wire UART的帧格式2-wire UART DTM接口在规范里有明确的帧格式规定比特率固定115200 bps8数据位、1停止位、无校验。数据包是16位固定格式第0位是停止位固定为1接着8位是命令分三类0x00是发射测试命令0x01是接收测试命令0x02是测试结束命令再往后的位根据命令类型填充频率通道号、数据包长度、载荷格式这些参数。这里有个容易踩的坑频率通道号的编码规则是通道索引乘以2比如测试物理通道索引0实际编码值是0通道索引39编码值是78。换算关系很简单但很多人在写上位机脚本时容易直接填39导致射频根本不在目标通道上工作。我见过不止一次这种低级错误测了半天数据不对最后发现是通道号没有乘以2。2.3 STM32WBA系列DTM的实现结构STM32WBA系列的DTM实现和STM32WB系列类似ST在STM32CubeWBA固件包里提供了完整的DTM工程和预编译固件。对于Nucleo-WBA25CE1这块板子ST官方给的标准做法是直接烧录STM32CubeMonitor-RF配套的DTM固件然后通过ST-LINK的虚拟串口和上位机交互。这个方案走的是2-wire UART路径不需要额外接线USB一插就能开测非常方便。如果是产品化开发阶段就需要把DTM功能集成到自己的固件里。ST的SDK里有一个BLE_DTM的示例工程展示了如何用HCI命令触发DTM测试适合那些协议栈已经跑起来的项目。两种实现路径的选择逻辑其实很清晰开发调试阶段怎么快怎么来跑官方固件就行产品量产阶段则要把DTM代码固化在量产固件里还要做密码保护或者命令隐藏避免终端用户误触发射频测试。3. 环境准备与硬件连接3.1 硬件清单与板载资源确认在跑DTM之前先确认一下手头的东西是否齐全。Nucleo-WBA25CE1这块板子的关键资源包括板载ST-LINK/V3调试器带虚拟串口、一个用于射频输出的SMA连接器、板上印刷天线以及USB Type-C供电接口。需要特别注意的是板子上的射频路径选择是由板载跳线或电阻配置的SMA口和PCB天线之间二选一。如果要用频谱仪测发射功率强烈建议走SMA口接同轴线到频谱仪不要对着天线用辐射法测虽然也能测但误差很大除非你专门做了暗室环境标定。板子上默认出厂配置通常是SMA口没有焊接需要自己装好SMA头或者通过板上标注切换天线路径。具体看板子丝印找到标着SMA和ANT的跳线区域按需用0欧电阻或跳线帽切换。3.2 固件准备直接烧ST官方DTM固件最快的起步方式是到ST官网下载STM32CubeMonitor-RF工具以及STM32CubeWBA固件包在固件包里找到Projects/NUCLEO-WBA25CE1/Applications/BLE/DTM_2Wire_UART这个工程用STM32CubeIDE编译后烧录。如果不想折腾编译环境ST在CubeMonitor-RF的安装目录里通常会附带对应板卡的预编译DTM固件直接烧录即可。烧录方式有两种任选其一用STM32CubeProgrammer通过ST-LINK烧录或者直接把hex文件拖到板载ST-LINK映射出的U盘里Windows下Nucleo-64会识别出一个移动磁盘。第二种方式对不熟悉命令行的人最友好把固件hex文件拖进去然后按一下板子上的复位键固件就生效了。3.3 STM32CubeMonitor-RF的配置要点打开STM32CubeMonitor-RF后第一步选择正确的串口。这里有个很容易迷惑的点ST-LINK的虚拟串口在系统里可能枚举出两个COM口一个是ST-LINK本身的调试串口另一个才是DTM固件用的串口。怎么分辨看设备管理器里USB设备描述选带Virtual COM Port的那个通常是那个不带STLink字样的COM口。选错端口的表现是上位机一直报连接失败这时不用急着怀疑硬件先换个端口试试。波特率设置成115200这个不要动。连接成功后工具界面会显示当前设备已经进入DTM模式接下来就可以配置发射测试和接收测试了。4. 实操跑通完整的DTM测试流程4.1 发射测试TX Test参数详解这是DTM里最常做的测试。打开STM32CubeMonitor-RF的TX测试界面需要配置的参数有几个测试通道0到39对应2.4GHz频段中BLE使用的40个物理通道、PHY类型1M、2M、Coded S2、Coded S8、数据包长度0到255字节、载荷模式PRBS9、PRBS15、0x0F、0x55等。载荷模式的选择很关键。PRBS9和PRBS15是伪随机序列频谱特性最接近真实数据适合测调制特性和频谱模板0x55二进制01010101是方波模式的交替比特容易暴露调制质量问题0x0F则偏向能量集中。我的习惯是快速验证时用PRBS9做认证预测试时按蓝牙规范要求跑全序列。发射功率等级在DTM里也是一个可配置参数。STM32WBA25CE的发射功率范围大约是-20dBm到4dBm分多个等级。注意DTM命令里填的power level索引和实际dBm值不是一一对应的需要查芯片数据手册里的映射表。用CubeMonitor-RF时这个映射工具已经帮你处理好了直接选dBm值就行。配置好参数后点发射按钮用频谱仪看中心频率如果选的是通道0中心频率就是2402MHz通道39对应的中心频率是2480MHz。频谱仪上会看到一个宽度约1MHz或2MHz取决于PHY的调制信号。这时可以做几件事测输出功率、测占用带宽、观察频谱模板是否在规范要求的mask内、测单边带相位噪声。4.2 接收测试RX Test与误码率统计接收测试比发射测试稍微绕一点。在CubeMonitor-RF里切到RX测试界面配置好测试通道和PHY类型点开始接收这时芯片的接收机在工作但没有信号进来时界面是收不到数据的。你需要用另一台信号发生器或者一台跑着DTM的另一块板子朝被测板发送测试信号。更常见的做法是两台Nucleo-WBA25CE1背靠背对测一块配置为TX模式持续发射PRBS9另一块配置为RX模式接收然后RX那侧的CubeMonitor-RF会实时显示收到的数据包数量和误码率。这个方法不需要综测仪就能做基础的链路验证对预算有限的团队非常实用。接收灵敏度的评估比较讲究。要得到可信的灵敏度数据需要信号源输出精确的功率等级一般从-20dBm开始逐档往下压找到误码率超过30.8%这是BLE认证对64字节PRBS9数据的PER要求的那个功率点大体就是接收灵敏度了。注意DTM的RX统计是基于收到多少有效包来计算的如果信号源和被测板之间的频偏过大、调制指数偏差超标即使功率很足误码率也会偏高所以测试前最好确认发射端频偏是正常的。4.3 用DTM做天线调试的实操技巧天线调试是DTM一个特别实用的场景。很多工程师在调天线匹配网络时喜欢用网络分析仪但网络分析仪测的是S参数反映的是阻抗匹配好坏实际辐射性能还得靠整机测试。DTM配合频谱仪或者临时天线可以在不写应用代码的情况下快速评估天线改动前后的发射射功率变化。具体操作方法是板子进入DTM模式后固定在某个通道发射比如通道192440MHz处于频段中间用频谱仪记录天线端的辐射功率。调整匹配电路的电感电容值再记录新的辐射功率反复对比找到一个峰值点这个点就是当前匹配网络的最佳值。实测下来这个方法比单纯追求S11最低更直观因为S11最低点不代表辐射效率最高两者之间往往有偏差。对于接收方向的调试可以用DTM RX模式配合信号源发射已知功率的信号观察误码率变化来间接推断灵敏度。这个方法精度不如传导法高但在没有专业暗室的情况下足够用来判断天线改动是变好还是变坏。5. 常见问题与排查技巧实录5.1 连接不上串口先从驱动和端口找原因最典型的问题就是CubeMonitor-RF连不上设备。遇到这个情况我的排查顺序是第一步看设备管理器确认ST-LINK的虚拟串口驱动是否正常安装有没有出现未知设备第二步确认串口号把串口逐个试一遍第三步检查DTM固件是否真的烧录成功最简单的方式是重新烧录后按复位键再试着连接第四步确认串口没有被其他程序占用比如串口调试助手、固件烧录工具之类的软件占用后上位机就看不到设备了。还有一个容易被忽略的点某些ST-LINK虚拟串口需要先在STM32CubeProgrammer里做一次固件升级否则虚拟串口功能可能不完整。升级方式就是把板子接到电脑上打开STM32CubeProgrammer选择ST-LINK固件升级选项按提示操作。5.2 频谱仪上没信号或者功率严重偏低发射测试已经点了频谱仪上也设好了中心频率但看不到信号这是第二个高频问题。先排除基础的测量配置错误频谱仪的中心频率是否对准了测试通道频率Span是否设置得够大建议至少设5MHz参考电平是否合理建议先从10dBm开始。这些都没问题后再检查板子的射频路径SMA口是否焊好、天线路径的跳线是否切到了SMA侧、同轴线缆是否完好。功率严重偏低往往也有迹可循。如果测得的功率比预期低了20dB以上先怀疑射频走线、焊接问题特别是SMA连接器和芯片射频引脚之间的微带线。这块板子的射频走线是50欧姆阻抗设计如果焊接时用了过长的引线或者SMA头没有按照丝印方向焊接都会造成不必要的损耗。另外确认供电是否稳定USB供电时如果板子上还有其他外设吃电流可能导致射频PA供电不足。5.3 测试模式退不出程序再也不响应这个现象在从DTM回到正常应用模式时偶尔出现。原因多半是DTM命令没有正确结束芯片的链路层还停在测试状态。解决思路有两个一是用上位机再发一次Test End命令确认返回了正确的事件报告二是直接按复位键让芯片重新初始化。如果复位后仍然不响应那就检查固件本身确认是不是DTM工程里的测试结束回调处理有问题。在自研固件时要注意DTM状态和协议栈状态之间的切换。DTM测试结束后链路层需要重新初始化才能恢复正常蓝牙广播和连接这个流程在ST的SDK示例里是有的但很多人在裁剪代码时会不小心把这个环节删掉导致退出DTM后设备再也搜不到。我的经验是保留SDK示例里完整的状态切换逻辑不要在DTM相关代码上做过度裁剪除非你非常确定自己在做什么。5.4 常见问题速查表现象大概率原因处理办法上位机连接失败串口选错/被占用逐个选择串口关闭调试工具后重试连接成功但无响应DTM固件没烧进去重新烧录固件后按复位键频谱仪不出信号通道号填了索引没乘2检查通道编码值索引乘以2功率比预期低很多射频通路损耗或供电不足检查SMA焊接、跳线、USB供电误码率异常偏高信号源频偏/调制超标用标准信号源检查发射端频偏退出DTM后无广播链路层未重新初始化复位或检查状态切换代码6. 产测落地的几点经验如果只是调试阶段用DTM上面的内容已经够了。但如果你想在量产产测里用这套方案有几个坑得提前说透。第一产测不要指望每个工位都用CubeMonitor-RF这种GUI工具效率太低。真正量产时是用Python或LabVIEW写自动化脚本通过串口直接向DTM固件发2-wire UART命令然后解析返回值。命令格式就那几个字节文档里写得很清楚脚本化改造并不难就是注意串口超时和重试机制产测现场环境杂偶发串口异常一定要能自动恢复。第二产测的射频环境要做归一化处理。每个工位的射频线缆、衰减器、SMA转接头损耗都不一样必须用校准板参考板在产测前做一次标准校准把所有线损记录下来测试软件里做差值补偿。不做这一步测出来的绝对功率值根本不可信不同产线之间也没法横向对比。第三关于产测标准怎么定我建议不要只看绝对功率和灵敏度这两个值还要关注频偏和调制特性。手机端、音箱端这些复杂产品对频偏很敏感频偏超标的产品即使在灵敏度测试时能过到了整机互操作阶段也会暴露问题。产测脚本里把频偏测量加进去能拦截掉一大批隐患。第四量产固件里做DTM功能时一定要加保护逻辑。常见的做法是连续收到三次正确格式的管理帧才进入DTM模式或者加一层简单的加密校验防止产品在市场流通后被人通过串口误触发进入测试模式。这个坑我是真实踩过的第一批产品还没出完客户那边就有人通过串口进了测试模式导致设备无法正常连接手机后面加了个握手保护才解决。
返回列表