ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

CAN FD收发器家族:选型、信号完整性与故障排查实战

CAN FD收发器家族:选型、信号完整性与故障排查实战 做嵌入式、做车载电子、做工业现场总线的工程师这两年基本上都躲不开一个词CAN FD。不少项目里我都见过同一个现象MCU本身支持CAN FD代码里也把BRS位打开了可一到2Mbps甚至5Mbps的数据段就疯狂冒错误帧查来查去最后往往发现是收发器没选对或者压根没意识到“CAN Flexible Data-Rate Transceiver Family”这个标题背后藏着多少门道。收发器虽然只是链路层的物理器件但恰恰是它决定了高速可变速率下整条总线的信号质量。这篇文章就围绕CAN FD收发器家族展开既讲原理也讲选型更重要的是把我踩过的坑和验证过的方法整理出来。无论你是刚开始接触CAN总线的嵌入式新人还是已经在产线上反复排查过bus off问题的老工程师这篇文章应该都能给你的工作带来一些参考。1. 从经典CAN到CAN FD收发器家族到底解决了什么1.1 数据量倒逼出来的“可变速率”经典CAN的最高速率是1Mbps这个数字在目前的汽车电子和工业控制里已经越来越不够用了。整车ECU数量动辄几十个软件包越来越复杂OTA升级、远程诊断、标定数据上传这些场景动辄需要传输几百KB甚至几MB的数据。如果还停留在500kbps总线上一次升级要等好几分钟效率非常难看。CAN FD的思路很直接把帧分成仲裁段和数据段仲裁段沿用原有波特率保证和经典CAN设备兼容数据段通过BRS位切换到一个更高的速率。这就是“Flexible Data-Rate”的核心含义。但问题也随之而来收发器是挂在总线上的它必须能跟上数据段的高速率切换否则控制器即使把BRS位拉起来了物理层也扛不住。我见过有人直接用老款经典CAN收发器去做CAN FD实验短距离、低速数据段比如1Mbps勉强能跑一旦把数据段调到2Mbps以上错误帧就开始飙升甚至直接bus off。原因在于老的经典CAN收发器在设计时并没有为更窄的位时间优化信号的传播延迟和边沿对称性。CAN FD收发器家族的出现就是要把这部分物理层的性能补上。1.2 收发器在总线链路中的“中间件”角色CAN收发器位于协议控制器和物理双绞线之间承担的是电平转换和驱动功能控制器送出来的TX位流是普通数字逻辑电平收发器把它转成CANH和CANL上的差分信号总线上的差分信号再经收发器转回逻辑电平送给RX引脚。听起来很简单但CAN FD对这两条路径都有更高要求。一方面数据段位时间在5Mbps时只有200ns8Mbps时只有125ns。收发器的传播延迟、上升下降沿、显隐电平切换时间这些参数稍微差一点就会在高速位流里产生明显的占空比失真。另一方面收发器还要驱动总线上的多个节点当位时间变短后总线等效负载和反射对信号的影响会被放大这就需要收发器具备更好的驱动能力和抗干扰表现。有一点要提醒收发器本身不参与CAN协议的状态机、错误计数和仲裁逻辑它只是一个模拟前端。也正因为如此很多人容易低估它的重要性觉得“只要能通就行”。但实际情况是当总线出现偶发错误帧时示波器探头插上去第一个要看的往往就是收发器输出的差分波形。2. 选型必看收发器家族的五个关键参数2.1 传播延迟、循环延迟和对称性CAN FD收发器最核心的时序参数有三个TXD到总线输出的传播延迟、总线输入到RXD的传播延迟以及这两段路径的上升下降对称性。数据手册里通常以tPLH和tPHL表示有些厂家直接给出最大循环延迟比如“loop delay max 300ns”。为什么这个参数在CAN FD里至关重要你可以这样理解位时间就像一个时间窗口收发器每一次电平切换都要在这个窗口内让接收端稳定采样。如果循环延迟太大或者上升沿和下降沿一个快一个慢那么高电平位宽和低电平位宽就会产生偏差。在2Mbps时位时间是500ns一个不对称的收发器可能会让占空比偏移几十纳秒在5Mbps时问题就更明显。我自己的选型标准比较直白数据段如果准备跑5Mbps以上优先看循环延迟在200ns以内的型号如果跑2Mbps300ns以内也可以接受。同时要看整个温度范围内的指标不要只盯25℃的典型值收发器datasheet里会给出-40℃到125℃的max值这里才是真正的设计边界。2.2 供电电压、I/O电平与逻辑接口CAN FD收发器家族内部型号众多一个重要分水岭是供电电压。常见的5V供电收发器输出差分电平幅度更大驱动能力更强适合长总线3.3V供电收发器功耗和发热更低适合某些低压域系统但要注意和MCU的I/O电平匹配。还有一个容易踩的坑是TXD/RXD引脚的逻辑电平。有些收发器的I/O引脚被设计成可以容忍3.3V或5V逻辑有些则只能按特定电平工作。如果你的MCU是3.3V而收发器是5V逻辑输入中间可能需要加电平转换或者选择带有VIO引脚、支持直接电平适配的型号。我见过有人在3.3V MCU上直接驱动5V输入型收发器短时间能用几小时后TXD引脚内部ESD保护二极管被泵浦电流搞出问题通信开始间歇性失败。2.3 低功耗、待机模式与远程唤醒车载应用里很多节点在整车上电前是不允许大电流工作的这时收发器是否支持待机Standby或睡眠Sleep模式就很关键。待机模式下收发器电流可以压到微安级别但仍能监视总线上的唤醒报文一旦收到符合条件的唤醒帧或本地唤醒信号就通过INH引脚拉高外部电源把MCU带起来。家族里不同型号的低功耗能力差异很大。基础型收发器可能只有待机模式唤醒条件也比较简单高配版本则支持选择性唤醒也就是基于CAN FD报文内容和ID过滤来决定是否唤醒节点这就是CIA 601-4协议规范的范畴。选型时需要先确定你的系统是否需要远程诊断唤醒以及网络拓扑里节点数量是否多到需要选择性唤醒来降低无谓唤醒。2.4 ESD防护与电磁兼容CAN总线是双绞线经常会被引出到连接器位置走线较长所以收发器的ESD等级非常关键。一般来说收发器引脚应该能承受至少±4kV的HBM车规级产品通常要更高而且实际产品在接入连接器的地方往往还要再加TVS管做二次防护。另外CAN FD的高速率会带来更高的边沿陡峭度如果收发器的驱动电流和压摆率过高总线就会像一个微型天线向外辐射EMI。反过来如果为了抑制EMI把斜率控制调得太慢高速数据段又可能出现位宽畸变。这是一个需要平衡的点。有些收发器提供斜率控制引脚或寄存器配置在低速应用中可以放慢边沿在高速CAN FD下建议使用全速模式通过合理的布线和共模电感来抑制辐射。2.5 协议符合性与车规认证最后是看认证和标准符合性。收发器至少要符合ISO 11898-2:2016这是CAN物理层的核心标准。如果面向车载量产还需要看AEC-Q100车规认证、工作温度范围-40℃到125℃是基本盘。如果面向工业控制温度范围可以放宽但可靠性要求依然不低。同时要注意CAN FD收发器不一定都支持8Mbps数据段有些型号标称支持CAN FD但最大数据速率是5Mbps。选型前建议先看datasheet里的“CAN FD data rate支持范围”一节把最大速率、典型应用拓扑长度、CIA推荐测试用例比如CIA 601-4的物理层测试一起对照避免后期发现硬件性能不够。3. 终端电阻、拓扑和采样点信号完整性的三个坑3.1 终端电阻到底应该怎么接先回答一个被问了很多次的问题CAN总线上的CANH和CANL之间到底需不需要跨接120Ω终端电阻需要但不是每个节点都跨接而是只在总线物理两端的两个节点各跨接一个120Ω电阻。两根终端电阻并联后的等效电阻约60Ω这也是用万用表在总线空闲时从任意节点测CANH和CANL之间应该看到的近似值。很多人喜欢在每个节点上都加120Ω以为这样信号更好实际上会让总线等效负载变小显性电平幅度被拉低接收端差分电压余量不足。曾经有客户拿CAN FD调试板让我帮忙查问题总线上一共四个节点每个都带120Ω终端等效电阻只有30Ω示波器上一看显性电平的差分幅度比正常值低了一截数据段一快就出错。直接把中间节点的终端电阻去掉问题就消失了。CAN FD对拓扑的要求比经典CAN更加严格。经典CAN还能容忍一些星型接线和长分支CAN FD数据段跑到2Mbps以上后分支短线的阻抗不连续会产生反射反射波叠加在信号边沿上轻则造成位宽抖动重则直接让采样点采到错误电平。经验做法是总线采用直线型或菊花链拓扑分支线长度尽量小于0.3米如果实在没法避免星型结构就要拉低数据段速率或者使用CAN中继方案当然中继器会引入额外延迟需重新核算。3.2 差分信号波形怎么看才算正常判断总线信号质量最直接的方法是拿示波器测CANH和CANL。隐性状态下CANH和CANL都约为2.5V差分电压约为0V显性状态下CANH升到约3.5VCANL降到约1.5V差分电压约2V。注意示波器要用差分探头或者把两个通道用数学运算相减不要拿单端探头对一个引脚量一下就下结论。CAN FD场景下还要关注数据段的位波形。比如5Mbps时每一位只有200ns很多示波器探头如果带宽不够量出来的波形的边沿已经被滤掉了一部分看起来斜率很缓其实是测量系统的问题。建议至少用100MHz以上带宽的示波器实际看边沿建议200MHz。打开示波器的余辉模式让它累积一段时间可以观察到偶发的振铃和过冲。我一般还会看显性电平幅度是否规整以及相邻位之间的过渡是否干净。如果某个节点的收发器驱动能力偏弱波形会呈现“拉不动”的平滑圆角如果终端电阻或拓扑不合理波形边缘会出现明显的台阶和回勾。这些现象在单次波形里很难发现用余辉模式加上统计测量功能会靠谱很多。3.3 采样点配置怎么从公式到实际参数信号能不能被正确解调还取决于控制器里的采样点位置。采样点应该落在位时间的后段也就是信号已经稳定、电平已经建立完成的时候这样能最大程度避开上升沿和反射区域。CAN FD的仲裁段采样点通常建议75%到80%数据段建议80%甚至87.5%具体取决于总线长度和速率。采样点的计算公式是采样点 (SYNC段 BS1段) / (SYNC段 BS1段 BS2段) × 100%。在实际寄存器配置里SYNC段固定是1个时间量子BS1和BS2可调BS2减1后就是寄存器里的值因为硬件从0开始计数。举一个实际例子MCU外设时钟40MHz目标仲裁段波特率500kbps位时间2μs。选择预分频4时间量子TQ为100ns位时间共20个TQ。SYNC占1个TQBS1设置15个TQBS2设置4个TQ采样点就是(115)/2080%完全符合要求。如果数据段要跑2Mbps位时间500ns同样40MHz时钟选预分频2TQ为50ns位时间共10个TQSYNC占1个TQBS1设7个TQBS2设2个TQ采样点就是8/1080%。这里给一个非常实用的配置组合40MHz外设时钟下500kbps/2Mbps的采样点可以这样配——仲裁域PRESC4BS115BS24采样点80%数据域PRESC2NBT10BS17BS22采样点80%。如果你的控制器支持的CAN FD位时间和标准CAN不是同一个计算单元需要分别配置很多芯片调试工具里直接有“位时间配置助手”填了目标速率和采样点会自动算出寄存器值但仍建议自己会算一遍避免工具在某些边界条件下给的参数不对。4. 错误帧、Bus Off与故障排查实录4.1 错误帧类型与错误状态机CAN协议里有五种主要错误位错误、填充错误、CRC错误、格式错误和ACK错误。这些错误在CAN FD里同样适用只不过由于数据段帧结构更复杂错误发生的位置除了可能在帧起始、仲裁场、控制场还可能出现在数据场和CRC场。每次错误发生协议控制器会发送错误帧同时错误计数器会累加。记录一下常见的计数规则接收节点每检测到一个错误接收错误计数器加1发送节点检测到错误时发送错误计数器加8。当发送错误计数器超过127时节点进入error passive状态只能被动监听不再主动发送错误帧当发送错误计数器超过255时节点进入bus off彻底脱离总线需要由协议控制器执行恢复流程一般是检测到128次连续的11位隐性位后重新回到bus on。很多工程师排查bus off时有个误区就是不停地重启MCU。如果收发器硬件本身损坏或者总线一直被某个节点拉成显性电平重启多少次都没有用。正确做法是先把所有节点断开用示波器看总线上是否还有异常电平然后一个个节点接入找到那个主动制造问题的节点。4.2 一次真实的CAN FD错误帧排查我分享一个印象很深的现场案例。客户送来两套板子板间距离不到0.5米CAN FD配置为500kbps仲裁段、2Mbps数据段短距离按理说毫无压力但一跑起来就周期性出现错误帧甚至偶尔bus off。我第一反应是采样点设置问题把数据段采样点从80%调到87.5%错误并没有消失说明问题不在控制器配置。接着用示波器量总线波形。正常情况下无通信时总线应该稳定在隐性电平2.5V但示波器显示CANH被拉到了接近0V这就有点不对劲了。再把两个节点的总线断开分别单独量发现其中一块板子上的收发器CANH引脚对GND接近短路。进一步检查这颗收发器之前接错过总线CANH和CANL反接还经历过一次过压内部输出驱动已经损坏。更换收发器后再配合终端电阻检查错误帧彻底消失。这个教训值得记住错误帧和bus off不一定是软件问题很多时候是物理层出了硬伤。排查顺序建议是先看供电和接线再看终端电阻和总线电平然后用示波器捕捉异常波形最后才回到软件参数上面调。反过来排查很容易在正确代码里反复折腾。4.3 收发器会“刷坏”吗有人问过“CAN通道可以刷坏吗”我理解是两个层面一种是说程序反复刷写会不会坏一种是讨论收发器硬件会不会损坏。程序反复刷写刷的是控制器寄存器不会对收发器造成物理损伤顶多是你把模式寄存器配置错误让某引脚一直输出显性把总线拉死这只要重新上电或复位就能恢复。但如果总线上来了过压、静电或错误接线的冲击收发器作为直接面对总线的器件是最容易受伤的。表现形式通常是通信时好时坏、错误帧高发或者干脆把总线电压钳在一个不正常的电平上。这就是为什么量产产品在总线入口处一定要加TVS管、共模电感等保护器件上位机或者调试工具连接时也要养成先确认供电和接线、再上电通信的习惯。5. 实操记录从选型到CAN FD节点跑通5.1 一个具体的选型流程假设我们要做一个车载域控制器节点MCU自带CAN FD控制器外设时钟40MHz目标通信速率为仲裁段500kbps、数据段2Mbps后续可能升级到5Mbps需要支持待机唤醒环境温度-40℃到105℃总线入口靠近连接器。按这个需求来选收发器第一步是看速率支持范围必须明确支持5Mbps以上的CAN FD数据段并保留余量第二步是看供电和逻辑电平MCU是3.3V逻辑优先选带VIO引脚或者I/O可容忍3.3V输入的5V收发器第三步是确认低功耗模式需要待机模式并把唤醒输出接到电源管理芯片的使能脚第四步是看ESD和车规认证至少AEC-Q100最后再看封装、成本和供货。市面上主流的CAN FD收发器家族里典型型号大体可以按这几类来分基础型5V供电、支持5Mbps数据段、带待机模式适合大多数车载节点增强型支持8Mbps数据段、更低延迟适合后续高速升级带选择性唤醒的型号适合节点多、需要按报文过滤唤醒的复杂网络。选型不需要一味追求高参数关键是匹配你的总线速率、供电体系和低功耗策略。5.2 焊接、上电与通信联调步骤拿到收发器和控制器后先用万用表确认电源、地、CANH、CANL引脚没有短路特别是电源和地之间。上电后用示波器量一下VCC和VIO电压以及TXD和RXD引脚的电平状态。如果TXD在空闲状态下不是高电平而是低电平说明控制器配置有问题总线会被一直拉成显性整个网络都会瘫痪。接着把收发器接到控制器和总线上先用经典CAN 500kbps配置验证基本通信。能通说明控制器和收发器的基本链路没问题再打开CAN FD。第一次跑CAN FD建议用低的数据段速率比如1Mbps确认BRS位切换和波特率配置都正确再逐步提升到2Mbps、5Mbps。每次提速率都要回看示波器波形和错误帧计数器不要一步到位出了问题不好定位。5.3 寄存器配置示例与调试工具用法以下是一个典型的位时间配置伪代码假设MCU外设时钟40MHz仲裁段500kbps、数据段2Mbps采样点80%// 仲裁段500 kbps
返回列表