资讯动态

CAN-FD波形差异实测:PicoScope看经典CAN与FD帧

发布时间:2026/9/28 19:28:53 来源:尧图企业网站定制
一辆实验车的VCU频繁上报CAN-FD丢帧总线分析仪解析出来的报文完全正常ID、数据、CRC全都对得上。可我拿PicoScope接上总线一看问题一目了然数据段的窄脉冲在总线末端出现明显振铃接收节点的采样点恰好落在振荡区间里。从那次之后我做CAN/CAN-FD相关调试都是示波器和协议解析仪一起上一个看内容对不对一个看电信号走得稳不稳。这篇就把我用PicoScope实测两种协议波形差异的完整方法写出来包括探头怎么接、解码怎么配、采样率设多少、以及判断CAN-FD帧的几个肉眼技巧适合正在从经典CAN向CAN-FD迁移的工程师也适合刚接触车载总线的新人照着操作。1. 为什么波形层面必须有一台示波器兜底1.1 协议解码器告诉你数据还在示波器告诉你数据走不走得稳先说我实际踩过的坑。团队里调试一辆控制器间的CAN-FD通信报文周期任务里偶发丢帧整车日志里能看到接收节点报bus-off然后进入恢复流程。同事第一反应是拿CAN卡抓报文结果怎么抓都是完整帧——ID正确、数据正确、CRC也正确看起来一切正常。但问题恰恰出在这里协议分析仪的功能是能不能解出来它根本不关心波形长什么样。只要接收节点的采样点踩到了正确的位电平上哪怕信号已经振铃、过冲、边沿变缓得一团糟它照样能解出完整报文。换句话说解码器告诉你的是数据数值还在它并不知道信号离崩溃有多近。相比之下UART、SPI、I2C这类信号相对宽容但CAN/CAN-FD属于差分异步总线既要看通信时序又要看物理层质量示波器就成了必须项。后来我把PicoScope接上总线看到数据段2Mbps的窄脉冲在长线缆末端叠加明显振铃接收节点采样位置恰好落在电平判定临界区丢帧原因立刻清楚了——不是协议栈问题是信号完整性不达标。这就是为什么我现在始终强调解析仪示波器组合二者从来不是替代关系而是上下楼关系。1.2 PicoScope在CAN总线调试里的特殊定位PicoScope本质上是一台基于PC的示波器主机通过USB连电脑软件窗口就是操作面板。它有几个特性特别适合车载总线调试一是深存储配合高速采样能长时间连续捕获偶发故障不容易漏二是12位ADC分辨率远高于传统8位示波器测量显性电平、过冲幅度这些细节更准三是PicoScope 7对CAN和CAN-FD都提供串行解码能直接显示ID、DLC、数据、CRC校验结果还能把解码字段和波形逐位对齐。这种波形协议透视的组合对新人非常友好。会接探头、会选量程、会配解码就能上手看CAN波形对老手来说12位分辨率、长捕获能力和掩膜测试功能又能支撑信号质量分析和偶发故障复现。下面我会按照从连探头到看懂波形差异的顺序把关键步骤压缩成一套可直接照做的流程。如果时间紧张先看第4节的波形对比就够应付日常判断了其余章节是原理和避坑补充。2. 动手前的三个底层认知物理层、帧结构和时序2.1 物理层CAN与CAN-FD共用同一套差分电平规则很多人以为CAN-FD改变了物理层其实没有。ISO 11898-2规定的差分电平、终端电阻、显性/隐性逻辑对经典CAN和CAN-FD完全一样。总线两条线CAN_H和CAN_L隐性逻辑1时两条线都被拉到2.5V附近典型2.0~3.0V差分电压接近0V显性逻辑0时CAN_H被拉到约3.5V、CAN_L约1.5V差分电压约2V。示波器上把两路通道分别接CAN_H和CAN_L再用数学通道做A-B得到的就是差分波形。CAN解码一般都以这条差分波形作为输入因为规范里所有位时序指标都是针对差分电压定义的只看单根线的波形无法准确反映总线真实状态。终端电阻方面总线两端各一只120Ω网络等效直流阻抗约60Ω这两只电阻直接影响波形幅度只有一个终端电阻时差分显性幅度大约只有1V两只都在才会看到标准2V摆幅。关于如何通过波形幅度反推终端状态我放在第5节细说。2.2 帧结构差异FDF、BRS、ESI和DLC扩展经典CAN数据帧结构大家比较熟SOF、11位或29位标识符、RTR、IDE、控制段r0DLC、数据段最多8字节、15位CRC、CRC分隔符、ACK槽、ACK分隔符、EOF、IFS。CAN-FD在保留这套框架基础上做了几处关键改造先看标准帧的字段对比字段经典CAN标准帧CAN-FD标准帧SOF1位显性1位显性标识符11位11位RTR/r1RTR位数据帧显性r1保留位显性IDE显性标准格式显性标准格式FDF无隐性FD帧标志r0显性显性BRS无隐性数据段提速ESI无发送节点错误状态DLC0~8字节0~64字节9~15为扩展长度编码CRC15位17或21位4位填充计数速率全程一致仲裁/数据双速率这里面FDF位最关键。经典CAN在r0位置固定发显性CAN-FD在该位置发隐性作为FD标志协议解码器就靠这一位区分两种帧。ESI位表示发送节点的错误状态主动/被动工程上可以用它快速判断哪个节点处于错误被动状态。DLC编码在CAN-FD里扩展为12、16、20、24、32、48、64字节4位DLC已经不够直观表达实际长度解码器通常会直接换算成字节数显示。2.3 两种速率切换点BRS位与CRC分隔符CAN-FD真正的精髓是可变速率。仲裁段SOF到BRS位沿用经典速率通常是500kbps或250kbpsBRS位为隐性时触发切换从BRS之后开始进入数据段高速率常见2Mbps或5Mbps到了CRC分隔符再切回仲裁速率之后ACK、EOF都是低速段。所以一帧CAN-FD报文在示波器上会呈现宽位——突然变窄——再变宽的节奏。BRS位本身是隐性从它之后的ESI位开始位时间明显缩短。如果BRS为0表示本帧没有启用速率切换整帧都走低速波形上就和经典CAN难以区分——不过这类帧数据段可以到64字节帧体明显偏长这也是一个判断依据。理解这个切换点对配置解码器非常关键PicoScope 7里配置CAN-FD解码时要分别填仲裁速率和数据速率软件才能正确对齐采样点、计算CRC。只填一个速率时数据段解码几乎必乱。3. PicoScope实测准备从探头到解码配置一次到位3.1 机型与探头选择PicoScope产品线里做车载CAN/CAN-FD比较常见的是4225A两通道和4824A八通道。4225A入手门槛低测单条CAN总线完全够用两个通道接CAN_H和CAN_L刚好一一对应。4824A的优势是一次性挂8路适合多条总线、多节点联合调试比如同时看CAN、CAN-FD和LIN。预算有限时先上两通道型号把差分测量和解码功能跑熟后续再按需扩展。探头方面最省钱且足够可靠的方案是两支10:1无源电压探头分别接CAN_H和CAN_L。10:1探头输入阻抗约10MΩ对总线几乎没有负载影响带宽也足够覆盖最高5Mbps的场景。有条件的话建议上差分探头对地隔离更好在可疑共地环境下更安全。不过普通实验室和维修场景里使用无源探头A-B数学通道已经能满足绝大多数需求我下面就以这个方案为例。3.2 通道连接与差分波形A-B把CH-A接到CAN_HCH-B接到CAN_L探头地线夹到总线节点的电源地或底盘地。注意不要只接CH-A去测因为总线处于隐性状态时两条线等电位单通道波形就是一条稳定的2.5V平线看不出总线有多少活动。接好之后在PicoScope 7里创建一个数学通道选择A-B这就是CAN_H与CAN_L的差分信号。后续的边沿测量、触发和解码都基于这条数学通道共模噪声会被剔除显性电平和隐性电平的摆幅更规整测量位时间也更准确。还有一个容易忽略的细节打开软件之前先把两个通道都做一次探头补偿。两支探头如果高频响应不一致CAN-FD数据段的窄脉冲边沿会被不同程度地衰减A-B差分波形会出现虚假的过冲或凹陷。补偿方法很常规接1kHz方波调整探头上的微调电容直到波形上下沿平整没有圆角即可。3.3 PicoScope 7的CAN解码配置在Tools菜单里选择Serial Decoding新建一个CAN解码器源通道选刚才建的Math通道A-B然后按总线实际参数填写协议类型选CAN或CAN FD仲裁段速率填实际值比如500kbps数据段速率填2Mbps或5Mbps仅CAN-FD需要信号极性选显性为低因为CAN总线是低有效逻辑采样点默认在60%~80%附近即可。配置完成后解码结果会以表格和叠加层的形式显示在波形图上。每一帧报文被标记帧起始位置表格里能看到ID、DLC、数据、CRC状态。如果配置速率和实际总线速率不一致解码大概率出现大量bit错误提示很多人会误以为解码功能坏了——此时先不要折腾软件用标尺量一下波形上的实际位宽反推真实速率再回头改配置。例如测到位宽2μs就是500kbps测到0.5μs就是2Mbps。3.4 采样率与触发策略采样率是观测CAN-FD最容易翻车的环节。每个位周期至少要采10个点才能可靠解码仲裁段500kbps位宽2μs需要10MS/s起步数据段2Mbps位宽0.5μs需要至少20MS/s5Mbps就要50MS/s以上。PicoScope支持深存储可以设置比如50MS/s采样、捕获100ms这样一屏里能看到成百上千帧便于观察异常帧的上下文和复现规律。触发方面简单场景用边沿触发就能稳定捕捉帧起始要定位特定ID或特定数据时可以尝试CAN总线触发类型直接设置ID条件让触发点停在目标帧上。对偶发故障我习惯用循环捕获加时间戳先把一大段时间窗的波形存下来故障复现后再缩小时间窗看细节。这里提醒一句如果时间轴拉得很长又不主动降采样软件可能因内存限制自动降采样解码错误率会明显上升排查时先确认采集界面的实际采样率。4. 实测截图对比同一组数据两种协议的波形差异在哪这一节我用文字还原PicoScope 7上的实测波形截图细节足够你在自己屏幕上对照验证。以下说的截图均基于同一条总线、同样的ID和相似的负载条件抓取。4.1 经典CAN标准帧实测波形逐个阶段拆解先看一条经典CAN标准帧仲裁速率500kbps、数据8字节、ID假设0x123。屏幕从上到下三条波形蓝线是CAN_H红线是CAN_L绿线是A-B差分波形。差分波形上第一眼看到的是起始处的SOF显性位从隐性电平跳到约2V的显性平台宽度2μs紧随其后的11位标识符每位都是2μs宽度看起来就是一段连续的显性/隐性交替脉冲。中间有一个较宽的隐性位数据帧里这是RTR位之后的IDE和r0两个显性位然后就是4位DLC。数据段8字节一共64位在500kbps下要128μs加上SOF、ID、CRC和EOF整帧大约108位、约220μs具体取决于位填充数量。解码覆盖层会把ID、DLC、DATA逐字段标出来表格里CRC状态显示OK。整帧波形看起来规整、对称、没有明显振铃显性电平平台平直隐性电平稳定在2.5V附近这是健康经典CAN帧的典型形态。4.2 CAN-FD实测波形速率切换点的直观表现再看一条CAN-FD标准帧同样ID 0x123仲裁段500kbps、数据段2Mbps数据长度64字节BRS1。差分波形前17位SOF到BRS和经典CAN完全一样2μs一位。关键看BRS之后的变化从ESI位开始波形突然变密每个位只有0.5μs——直观感受就是原本平铺的脉冲被压缩到了原来的四分之一数据段64字节在2Mbps下总共512位屏幕这一段是一长串紧挨着的窄脉冲。CRC段同样在数据速率下直到CRC分隔符这个隐性位位宽又跳回2μs之后的ACK槽、ACK分隔符、EOF和IFS全部回到500kbps的慢速节奏。整帧总时长取决于位填充和CRC类型实测64字节帧大约330~360μs。这张截图里最值得留意的是BRS切换点前后的密度突变如果环境噪声较大或采样率不足突变处的边沿会变得模糊解码器此时很容易报位错误因为这个位置恰好是接收节点重新同步采样点的忙乱时刻。4.3 不看解码结果如何一眼识别CAN-FD判断一条总线上的帧是经典CAN还是CAN-FD不打开解码器也完全可以做到。先量一个位宽确认仲裁速率如果整帧位宽均匀那是经典CAN或未开BRS的CAN-FD。如果帧中段位宽突然变窄、之后又恢复变宽那基本就是CAN-FD且BRS1。观察数据段总长同样在500kbps下如果数据字段长到明显超过经典CAN最大8字节的64位说明即便BRS0这也是CAN-FD帧。还可以看CRC区域长度CAN-FD的17位或21位CRC在屏幕上比经典CAN的15位CRC明显更长。这个肉眼判断法在混跑总线上尤其好用。同一条物理总线可以同时存在经典CAN帧和CAN-FD帧协议层面靠FDF位区分现代CAN控制器即使不支持FD格式也不会对FD帧发送破坏性错误帧。我在调试网关转发、经典CAN与CAN-FD桥接的总线时就是先靠波形特征判断哪些帧是FD帧再决定该用哪个速率配置解码。另外一个和仲裁相关的细节CAN-FD仲裁段保持低速所以CAN-FD节点和经典CAN节点在同一物理总线上争用总线时仲裁机制完全兼容示波器上能看到显性电平覆盖隐性电平的正常仲裁过程。4.4 典型帧时间对比8字节与64字节的差距用实测值算一笔账更能理解CAN-FD的提速价值。忽略位填充的理想情况下场景帧结构总位长总时长经典CAN单帧8字节500kbps111111464151117108位216μs经典CAN发送64字节需8帧108×824IFS888位1776μsCAN-FD单帧64字节500kbps/2Mbps17×2550×0.512×2μs约580位等效约333μs同一份64字节负载CAN-FD在2Mbps数据段下比经典CAN快5倍以上这还没算总线空闲和帧间间隔。实测波形里CAN-FD单帧在屏幕上的时间占用远小于经典CAN的8帧连环这也是两种波形非常直观的差异。如果数据段速率升到5Mbps优势还会进一步拉大但对线束和连接器的要求也同步提高。5. 实测中更容易踩的坑与信号质量判断5.1 探头、地线与共模偏移三种容易被低估的干扰源我用无源探头测CAN-FD时吃过一次亏探头地线用了很长的鳄鱼夹线结果数据段振铃被夸大一度误判为总线拓扑问题后来换成弹簧针式短地线振铃明显减弱。原因很简单长地线的分布电感在2Mbps边沿下会感应出可观压降。所以测CAN-FD数据段时务必用最短的地线路径。车载环境下还要注意探头地线和底盘地之间可能存在电位差最好把PicoScope主机和车辆电源系统共地避免地环路噪声叠加进差分波形。共模偏移也是常见隐患。理论上隐性时CAN_H和CAN_L都在2.5V附近但两个节点地电位不一致时两条线会整体上移或下移隐性电平可能变成2V或3V。别急着认为收发器坏了先测一下节点的地偏移。简单判断方法示波器上同时看CAN_H和CAN_L如果两条线的隐性电平同时偏离2.5V且偏移方向一致基本是共模问题如果只有一条线异常才更像是收发器或线束问题。5.2 采样率不足导致解码乱码这是新手最常见的困惑。明明速率配对了解码还是大量错误。第3.4节给过采样率参考这里再强调一次2Mbps数据段至少20MS/s5Mbps至少50MS/s并且要保证这个采样率覆盖到关心的整个时间段。如果你把时间轴拉长到几十毫秒又不降采样率软件可能因内存限制自动降采样这是解码错误的隐性来源。遇到解码乱码先看采集设置界面的实际采样率再决定是缩短时间窗还是降低分辨率不要一上来就怀疑解码器坏了。5.3 终端电阻异常在波形上的特征终端电阻缺失或损坏的第一特征是显性电平幅度下降。标准双终端时差分显性幅度约2VCAN_H约3.5V、CAN_L约1.5V只剩单终端时差分显性幅度只有约1VCAN_H约3V、CAN_L约2V。如果测到显性幅度明显偏低先别怀疑收发器用万用表在总线两端量一下120Ω终端电阻是否到位中间节点测量时等效阻值60Ω左右也是正常的。终端电阻不匹配还会在波形边缘产生台阶状反射尤其CAN-FD数据段的窄脉冲上边沿后会出现一小段阻尼振荡。这在长线束、多节点拓扑里很常见排查时优先看终端位置是否规范。比如一条总线上存在三个节点都带了120Ω终端等效阻抗变成40Ω甚至更低显性幅度会异常偏大上升沿也会明显变快这在5Mbps数据段下会引发额外振铃。5.4 振铃与过冲CAN-FD数据段的头号敌人数据速率提高后信号边沿时间相对位宽的比例变差反射和振铃更容易踩到采样点。实测中最典型的恶性波形是数据段每个上升沿后叠加一个超过幅度5%的过冲随后出现1~2个周期的振铃。接收节点如果采样点设置偏早或偏晚就会在振铃区间采到错误电平表现为偶发CRC错误或位错误。对这种问题用PicoScope的测量工具直接量差分波形的过冲百分比和振铃峰值再对照ISO 11898-2的信号质量要求判断是否超标。配合解码器的错误帧标记位置能迅速锁定是哪一段线束或哪一个连接器造成的反射源。调整方法一般是检查终端电阻位置、缩短高数据速率段的线缆长度、避免总线在不必要的点位上分支。数据段速率从2Mbps升到5Mbps之前务必先用示波器确认波形余量足够。5.5 掩膜测试与总线负载率统计最后分享两个提效功能。PicoScope的掩膜极限测试Mask Limit Testing可以把一条已知正常的CAN-FD帧存成参考波形定义上下限掩膜然后让软件自动跑几小时任何超出掩膜范围的异常边沿或幅度突变都会被自动标记。这对复现偶发丢帧特别有用不用人一直盯屏跑完回来看标记点就行。总线负载率可以通过解码结果统计。把一屏的时间跨度设为T屏内帧数记为f每帧时长按位宽和长度估算负载率近似等于所有帧时间之和除以T。实际操作时我会把时间轴设成几十毫秒用PicoScope的帧起始列表和时间戳做统计比逐个看帧更直观。负载率高的总线更容易暴露信号完整性问题因为节点间干扰和反射会叠加这也是观察CAN-FD波形差异之外需要额外关注的一层。写到这顺便说一句无论是研发调试还是售后诊断千万别省掉用示波器看总线波形这一步。CAN与CAN-FD的协议差异可以看文档但真正理解它们的数据速率切换、信号质量边界和故障表现必须依赖波形级观测。PicoScope的深存储、12位分辨率和CAN/CAN-FD解码刚好把这些能力整合进一台电脑里。如果你的项目也开始从经典CAN向CAN-FD迁移建议下次上电前先按这篇的配置搭好捕获环境等波形出来后对照着看一遍你对协议的理解会比只读规范深一个台阶。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑