尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

CAN物理层一致性测试实战:标准、仪器、采样点与电容测试

CAN物理层一致性测试实战:标准、仪器、采样点与电容测试 1. 物理层一致性测试到底在测什么CAN 这东西在车上、在储能柜里、在工业设备上用了三十多年几乎每个做过嵌入式的人都觉得自己懂它。可真到了样机装车、批量下线或者客户现场出问题的时候你会发现大多数通信故障最后都落在同一个地方——物理层。物理层一致性测试Compliance Test做的事情说白了就是拿一套标准里写死的判定窗口去量你的收发器、你的节点电路、你的整条总线看它到底有没有踩线。它不关心你上层报文怎么发、ID 怎么排只关心电压够不够、边沿快不快、时序偏不偏、电容大不大这些看得见摸得着的东西。我在实际项目里最常遇到的一个场景某个 CAN 节点在实验室台架上跑一天都没事一装到整机上就开始偶发丢帧抓波形看又好像都是正常的方波。这种问题最耗时间因为它既不是纯软件 bug也不是明确的硬件损坏。最后查下来十有八九是物理层的参数刚好卡在临界值上——差分电压偏低、采样点偏后、节点电容偏大导致边沿变缓再加上线束一长传播延迟叠加采样点就采到了边沿上。物理层一致性测试的价值就在于把这些刚好卡线的隐患在量产前用仪器量化出来而不是靠跑起来没报错来判断。这篇文章面向的是做过 CAN 硬件设计、总线调试、台架测试的工程师也包括刚接手一致性测试、手里拿着示波器却不知道从哪下手的朋友。我会把物理层一致性测试的核心指标、仪器选型、参数计算、实操流程和踩坑记录全部摊开讲尤其是最近被问得比较多的CAN 物理层测试和物理层电容测试这两块会给你一套能直接照着做的方案。2. 一致性测试、功能测试、EMC 测试的边界在哪2.1 别把能通信当成过了物理层很多人对 CAN 测试的理解还停留在接上能收发报文就行。这其实是功能测试它验证的是协议栈、控制器、驱动能不能把一帧数据从 A 送到 B关注的是通不通。而一致性测试关注的是合不合规它拿标准里定义的参数区间去卡你的物理层即使你的节点现在能通信只要某个参数超了窗口到了别的线束长度、别的节点数量、别的温度下就可能翻车。举个很典型的区别功能测试里一条 1 米的双绞线连着两个节点500kbps 跑得好好的。但一致性测试会去测你的差分输出电压在带负载时是否还在 1.5V 到 3.0V 之间、共模电压有没有跑到收发器共模范围之外、位时间对称性偏差有没有超过容限。这些参数在短线上可能完全看不出问题一旦总线拉到 40 米、挂上十几个节点反射和延迟一叠加问题立刻现形。2.2 和 EMC 测试的分工还有一类容易混淆的是EMC 测试。EMC 关心的是你的设备会不会干扰别人、别人干扰你时你还能不能活做的是辐射发射、传导发射、抗扰度这些。物理层一致性测试不测这些但它和 EMC 又有强关联。原因在于物理层的边沿速率、对称性、共模电压这些参数直接决定了整条总线的电磁行为。一个边沿过冲严重、上下沿不对称的节点往往是 EMC 测试里辐射超标的元凶。所以我一般把一致性测试放在 EMC 之前做先把物理层参数调干净再去打 EMC能省掉不少返工。两者的核心差别可以先记住这个粗线条功能测试问能不能用一致性测试问符不符合规范EMC 测试问抗不抗干扰、干不干扰别人。三者的测试平台、判定依据、关注频段都不一样别指望一套设备全包。下面这张表我平时拿来给新人做区分比较直观。测试类型核心问题主要依据典型仪器输出结果功能测试通不通项目自定上位机、CAN 卡收发正常/异常一致性测试合不合规ISO 11898-2 等高带宽示波器、差分探头、LCR 表参数值 判定EMC 测试抗扰与发射车厂/行业 EMC 标准暗室、LISN、干扰源通过/超标3. 标准体系与核心测试项拆解3.1 从 ISO 11898-2 看 CAN 物理层的演进做CAN 物理层测试绕不开的基础标准就是 ISO 11898-2它定义了高速 CAN 的物理层也就是收发器和总线电气特性那一层。这个标准这些年改过好几版核心变化就一个字快。经典 CAN 最高 1Mbps到了 CAN FD数据段可以冲到 5Mbps 甚至更高物理层要承受的边沿速度、时序精度要求一下子严了好几档。速率一上去最直接的影响就是采样点和对称性变得极其敏感。经典 CAN 里采样点设 75% 还是 87.5%很多时候都能跑到了 CAN FD 数据段采样点、位时间对称性、收发器环路延迟这几项只要有一项偏了眼图就闭合误码率直接上去。这也是为什么这两年 CAN FD 的物理层测试需求突然变多很多以前不做一致性测试的团队现在也被迫要建这套能力。再往后为了在复杂拓扑和长线束下保证 FD 的信号质量业界又推出了带信号改善能力的收发器方案本质上还是围绕物理层做文章。所以你看物理层一致性测试不是过认证走个流程它是高速总线能不能落地的地基。地基没打牢上层协议再怎么优化都是白搭。3.2 核心测试项一览与判定依据下面这张表是我整理的 CAN 物理层一致性测试里最常做的项目包含物理意义、常见限值和所需仪器。限值我给的是常见工程参考范围实际判定一定要以你项目适用的标准版本和车厂/客户规范为准不同版本差异不小别直接抄。测试项物理意义常见参考限值主要仪器显性差分电压 Vdiff(d)显性位时 CAN_H 与 CAN_L 电压差约 1.5V ~ 3.0V带载示波器 差分探头隐性差分电压 Vdiff(r)隐性位时两线电压差约 -0.5V ~ 0.05V示波器 差分探头共模电压范围两线对地平均电压通常落在 -2V ~ 7V 内双通道示波器终端电阻总线两端阻抗匹配单端约 120Ω等效约 60Ω万用表/LCR 表位时间与采样点位宽精度与采样位置采样点常见 75%~87.5%示波器位时间对称性显性/隐性位宽偏差偏差越小越好按标准容限示波器上升/下降沿边沿速率按信号速率与标准要求高带宽示波器环路延迟收发器 TX 到 RX 延迟经典 CAN 常要求 ≤ 255ns示波器差分/对地电容总线与节点电容按项目与线束要求控制LCR 表/VNA这张表建议打印出来贴在测试台上每次测之前对着勾一遍避免漏项。我见过不少团队只测电压和电阻就发报告结果上批量后发现边沿和电容才是真凶。4. 测试平台怎么搭仪器选型与参数计算4.1 示波器带宽、采样率与探头怎么算建物理层测试平台钱要花在刀刃上最贵也最关键的就是示波器和探头。很多人选示波器只看采样率其实带宽才是第一位的。测量系统要能如实还原信号的上升沿否则你看到的边沿是被示波器自己滤过的测出来的上升时间比真实值大判定就会出错。这里有个常用的经验公式示波器的上升时间tr_scope ≈ 0.35 / BW。要让示波器对信号上升时间的影响控制在可接受范围一般要求示波器自身的上升时间不超过被测信号上升时间的三分之一到五分之一。反过来推被测信号边沿越快需要的带宽越高。拿 CAN FD 数据段 5Mbps 举例一个位只有 200ns边沿上升时间按十几到几十纳秒算。要看清这个边沿细节并做眼图示波器带宽一般要选到几百 MHz 以上高端项目直接上 1GHz。采样率方面经验上至少取带宽的 5 倍或者说不低于信号最高有效频率分量的 10 倍1GSa/s 是很常见的起步值。要是采样率不够边沿上就几个点眼图模板根本没法看。探头这块必须用差分探头做差分电压测量用单端探头测 CAN_H 和 CAN_L 分别对地的电压。差分探头的带宽要和示波器匹配不然就是短板效应。另外探头的共模抑制能力要关注CAN 的共模电压会动共模抑制差会污染差分测量结果。我吃过一次亏用一个便宜差分探头测出来的 Vdiff 比实际偏小差点把一个合格的节点判成不合格换了探头才发现是探头的问题。4.2 夹具设计、负载电阻与供电处理测试平台搭好仪器只是第一步夹具和负载决定了你测的到底是标准环境下的节点还是被你的测试线引入了一堆寄生参数的东西。测物理层参数时节点应该在规定的负载条件下工作所以要准备标准的终端电阻和可调负载。测总线等效阻抗时两端各一个 120Ω 是基本配置但你要清楚测某个单独节点时节点本身不该带终端电阻除非规范要求否则你测出来的是节点加电阻的并联值会误判。供电要干净。CAN 收发器的输出电压和边沿对供电纹波敏感如果测试时用的电源噪声大测出来的共模电压和边沿都会飘。我习惯在测试夹具上每路电源加去耦电容并且用低噪声线性电源供电减少变量。探头的接地线要尽量短最好用探头自带的接地弹簧而不是长鳄鱼夹不然接地回路引入的振铃会让你误以为信号本身有振铃。下面这段 Python 是我平时用来算位时间分段和寄存器值的输入你要的波特率和采样点它会给出各段长度方便和示波器实测的位时间做对照。def can_bit_timing(bitrate, sample_point0.875, tq_nsNone): bitrate: 波特率如 500000 sample_point: 采样点如 0.875 tq_ns: 单个时间份额长度不填则按典型值估算 tbit_ns 1e9 / bitrate if tq_ns is None: # 常见做法先取一个能整除的 tq简化演示 tq_ns tbit_ns / 20 # 演示用实际由控制器分频决定 tq_num round(tbit_ns / tq_ns) # Sync_Seg 固定 1 tq remaining tq_num - 1 phase_seg1 round(remaining * sample_point) phase_seg2 remaining - phase_seg1 print(f位时间 Tbit {tbit_ns:.1f} ns) print(fTQ 长度 {tq_ns:.1f} ns, 总 TQ 数 {tq_num}) print(fSync_Seg 1, Prop_SegPhase_Seg1 合计 {phase_seg1}, Phase_Seg2 {phase_seg2}) print(f实际采样点 {(1 phase_seg1) / tq_num * 100:.1f}%) can_bit_timing(500000, sample_point0.875)这只是个估算工具真实的位时间分段还要结合控制器的分频器和传播延迟来算。但用它对一下示波器测出来的位时间很快就能发现采样点有没有设偏。5. CAN 物理层一致性测试实操过程5.1 显性/隐性电平与差分电压实测先把示波器接好通道一用差分探头测 CAN_H 和 CAN_L 的差分电压通道二用两个单端探头分别测 CAN_H、CAN_L 对地电压或者用数学运算算差分。触发方式用总线上的正常通信帧触发电平设在差分电压中间偏上一点。测的时候一定要让节点处在真实负载和真实通信状态下别用空闲状态的静态电压代替动态测量两者可能差很多。先看隐性状态也就是总线空闲或隐性位时CAN_H 和 CAN_L 都接近 2.5V差分电压接近 0V。规范里对隐性差分电压有明确窗口只要在这个窗口内基本没问题。再看显性状态CAN_H 抬到 3.5V 左右CAN_L 压到 1.5V 左右差分电压在 2V 附近带载后允许下降到 1.5V 左右。这里要特别注意带载测量如果你空载测电压很漂亮一带上整条总线就掉下去那说明收发器的驱动能力或者线束压降有问题。注意测量差分电压时示波器的垂直档位要合理别为了看大信号把档位设太大导致小信号细节被量化噪声淹没。我一般先把档位设在能看全信号的范围再用数学运算或者缩放去看细节。实测中经常遇到的一个现象是共模电压偏移。如果整条总线的 CAN_H 和 CAN_L 整体往上或往下平移差分电压看着正常但可能已经接近收发器共模输入范围边界。这种问题在节点多、地电位不齐的系统里很常见测的时候一定要用双通道同时看两线对地电压别只看差分。5.2 位时间、采样点与对称性测量位时间和采样点是 CAN FD 时代最容易翻车的两项。测位时间可以用示波器在总线上抓一段连续的显性/隐性翻转用光标量单个位宽和理论值对照。500kbps 的位时间是 2000ns如果你实测出来偏差大要么是晶振精度问题要么是位时间配置被传播延迟吃掉了一部分。采样点的测量稍微绕一点。示波器本身测不出采样点但你可以通过变速率扫描或者调节采样点后看误码率来间接判断。更实用的做法是用支持采样点扫描的测试工具或者用总线分析仪配合扰动测试。实际工程里我一般按标准推荐值设置采样点再用眼图去验证——眼图张开度足够说明采样点位置是合理的。位时间对称性指的是显性位和隐性位的实际宽度是否对称。如果显性位偏宽、隐性位偏窄多节点仲裁时就会出现相位累积误差严重时误判优先级。测量方法是抓一串特定图案的位流比较显性段和隐性段宽度。这项在 CAN FD 高速数据段尤其重要对称性差会直接让眼图一边塌陷。5.3 终端电阻与物理层电容测试终端电阻的测量最简单也最容易出低级错误。必须在总线断电、节点断开的条件下测用万用表或 LCR 表测两端之间的电阻正常应该是两个 120Ω 并联后的约 60Ω。如果测出来只有 120Ω说明只装了一个终端如果远低于 60Ω说明挂了好几个终端电阻总线负载过重。我见过一个项目现场五个节点每个都焊了 120Ω等效阻抗掉到二十几欧通信时好时坏查了两天才发现是这个原因。物理层电容测试是最近被问得最多的一块也是很多团队容易忽略的。总线电容主要由三部分构成收发器引脚电容、线束分布电容、以及节点上的滤波/保护器件电容。电容太大边沿变缓、上升下降时间拉长高速时眼图直接闭合电容太小或者不对称又会带来对称性和共模问题。所以这块必须量。具体测法先把节点断电、从总线上摘下来用 LCR 表或带电容测量功能的仪器分别测CAN_H 对地电容、CAN_L 对地电容、以及CAN_H 对 CAN_L 的差分电容。差分电容尤其关键它直接影响差分信号的边沿速率。测量前一定要给节点充分放电否则残留电荷会让读数飘。测的时候频率选择也有讲究LCR 表一般有 100Hz、1kHz、10kHz、100kHz 几档测这种小电容建议用较高频率档读数更稳定。线束的分布电容怎么估双绞线的分布电容大概在每米几十皮法量级具体看线材规格。你可以用 LCR 表直接量一段已知长度的线算出单位长度电容再乘以实际线长做预估。下面这张表是我整理的一个电容问题排查对照供参考。现象可能原因排查方向边沿明显变缓总线电容偏大测差分电容、检查线长和滤波电容上下沿不对称两线对地电容不一致分别测 CAN_H/CAN_L 对地电容高速段眼图闭合节点电容 线束电容叠加减节点、缩线长、换低电容保护器件电容读数不稳定未放电或测量频率不当放电、换高频档重测注意很多节点在 CAN_H/CAN_L 上会加 TVS 或滤波电容做防护。这些器件选型时一定要关注它的寄生电容一个高寄生电容的防护器件可能就是你边沿变缓的元凶。选型时优先挑低电容型号。6. 常见问题与排查技巧实录6.1 典型失效模式速查表做久了会发现物理层的问题翻来覆去就那么几类。下面这张速查表我把现象、根因、处理动作放在一起方便现场快速定位。现象常见根因处理动作偶发丢帧波形正常采样点偏后 传播延迟大前移采样点缩短线束或减少节点显性电压偏低驱动能力不足/线束压降/负载过重减少终端、复查负载、换收发器共模电压超范围地电位差、节点接地不一致检查接地、考虑隔离方案边沿过冲/振铃阻抗不匹配、探针接地长优化终端、缩短接地线高速数据段误码电容大 对称性差减电容、调位时间、验证眼图通信随温度变化器件参数温漂高低温下复测关键参数6.2 几个踩过的坑与处理思路第一个坑是只测静态不测动态。有次测一个节点静态隐性电压、显性电压都合格报告就发出去了。结果客户在整机上抓到一个现象连续翻转时显性电压会短暂塌陷。后来发现是节点电源去耦不足翻转时瞬态电流把电压拉低了。从那以后我坚持所有电压项都必须在连续通信状态下测静态数据只作参考。第二个坑是探头和测量方法引入的误差。前面提过差分探头共模抑制的问题还有一个更隐蔽的用两个单端探头做数学运算测差分时两个探头的延迟不一致会引入虚假的差分毛刺看起来像是信号本身有尖峰。所以测差分电压优先用真正的差分探头实在要用两个单端探头也要先做延迟校准。第三个坑是电容测量不放电。这个太常见了节点刚下电电容上还有电荷LCR 表读数忽大忽小很容易误判。正确做法是断电后等一会儿短接放电再测。测完记得把测试夹具恢复原状别把放电用的短接线留在总线上。提示电容测试最好固定一套夹具和测量流程把每次的读数记录成表。因为小电容测量的重复性受环境影响大只有横向对比才有意义单次绝对值的参考价值有限。6.3 测试报告怎么写才有用最后说说报告。物理层一致性测试的报告不是给认证机构看的交差文件它是给硬件、软件和整车集成团队用的决策依据。所以我写报告时坚持三件事一是每个参数都写清测试条件速率、负载、温度、线长脱离条件谈数值没有意义二是判定要写依据的标准版本和条款别只说合格/不合格三是把临界项标出来即使它当前合格只要离限值很近也要提醒后续设计注意。我见过太多报告只列一堆数值和Pass结果出了问题谁都说不清是在什么条件下测的。测试的价值在于可复现、可追溯报告就是你交付的凭证。把条件写全把临界项标出后面复测或者换供应商对比时这份报告能给你省下大量时间。
返回列表