ARTICLE DETAIL

资讯详情

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

CAN FD收发器选型与硬件设计实战:从物理层到PCB调试

CAN FD收发器选型与硬件设计实战:从物理层到PCB调试 CAN Flexible Data-Rate Transceiver Family翻译过来就是CAN FD收发器系列。这个标题看着挺直白但作为硬件工程师我每次看到这种datasheet标题都会多想几层CAN FD到底和传统CAN在物理层差多少收发器是不是只要“能跑到2Mbps”就能随便选Family这个后缀背后的型号差异有哪些坑如果你正打算在下一块板子上用CAN FD或者正在为“经典CAN明明够用为什么要折腾FD”纠结这篇内容就是给你准备的。我会从底层逻辑讲到选型对比再落到PCB设计和实际调试争取让你看完能直接对着自己的项目动手。1. 先把标题拆开看CAN FD、收发器、Family分别意味着什么1.1 CAN FD解决了什么问题CAN FDCAN with Flexible Data-Rate最早是为了解决经典CAN的两个痛点带宽不够和帧长受限。经典CAN最高1Mbps一帧最多8字节数据。对动力总成、ADAS这类动辄几十上百个信号的控制单元来说8字节一帧意味着要拆成好多帧总线利用率上不去实时性也受影响。CAN FD把数据段速率抬高到2Mbps甚至5Mbps以上单帧数据可以到64字节一条总线上能挂的节点反而可以更多传输效率明显提升。但这里有个重要前提CAN FD的协议和物理层不是一回事。协议层是控制器里跑的东西物理层就是总线上的电信号。很多人以为把控制器换成支持CAN FD的芯片收发器照旧能用实际上在数据段高速传输时普通CAN收发器的延迟指标可能撑不住波形畸变后采样点偏移误码率就会飙升。这也是“CAN FD收发器”作为一个独立品类存在的原因。1.2 Transceiver在链路里扮演什么角色收发器Transceiver连接的是CAN控制器和总线物理介质。控制器的TX/RX是数字逻辑电平TTL或者CMOS而总线上需要的是差分信号CANH和CANL两根线。收发器负责把逻辑电平转换成差分电平同时接收总线上的差分信号变回逻辑电平给控制器。对CAN FD来说收发器不只是“电平变换器”这么简单。高速数据段的位时间很短2Mbps时一个位只有500ns5Mbps时是200ns。收发器内部从TXD引脚到总线、再从总线到RXD引脚的延迟会直接挤占有效位时间。如果延迟太大或者上升沿和下降沿不对称控制器的采样点再准也拯救不了。1.3 为什么强调“Family”标题里的Family不是营销词汇。市面上的CAN FD收发器确实以“系列”形式出现同一个核心架构衍生出不同配置有的带待机模式有的支持远程唤醒有的带VIO电平转换有的强调低EME电磁发射。比如NXP的TJA1042、TJA1043、TJA1044、TJA1051TI的TCAN1042、TCAN1043、TCAN1044Microchip的MCP2562FD、MCP2542FD基本都是一家人的不同定位。选型的时候不能只看“支持CAN FD”这个共性要细看到引脚定义、唤醒方式、待机电流、TXD显性超时行为这些差异。同一个Family里不同型号可能就差一个引脚功能就完全不同焊上去才发现不兼容就麻烦了。2. CAN FD物理层的底层逻辑为什么波特率越高越难做2.1 总线电平基础显性、隐性与仲裁CAN总线是差分的两线制逻辑上有两种状态显性Dominant和隐性Recessive。显性时CANH被拉高、CANL被拉低差分电压大概在2V左右隐性时两个线都偏置在2.5V附近差分电压接近0。总线上没有数据的时候就是隐性状态。之所以要做成差分是为了抗共模干扰。汽车、工业现场的环境里地电位差和电磁噪声都很常见共模干扰会同时叠加在CANH和CANL上差分接收器能把它抵消掉。这是CAN能在恶劣环境里活下来的基础。但差分信号的另一个作用很少有人细想多节点仲裁。CAN协议允许节点同时发显性和隐性位显性位会覆盖隐性位。仲裁阶段多个节点通过逐位比较ID实现无损仲裁谁的ID优先级高谁继续发。这个过程发生在仲裁段速率通常不高所以对收发器在仲裁段的时序要求相对宽松。2.2 仲裁段与数据段可变速率是怎么切换的CAN FD的“Flexible Data-Rate”指的是同一个帧内仲裁段和数据段用不同速率。以常见的500kbps/2Mbps配置为例帧起始SOF、仲裁ID、控制位用的是500kbps速率切换位BRS之后数据段和CRC段切换到2MbpsCRC定界符之后又切回500kbps。这样既保留了仲裁逻辑又让数据段跑得更快。对收发器来说难点在于速率切换的瞬态。BRS位之后位时间突然从2µs缩短到500ns收发器必须在几个位时间内稳定下来输出波形的边沿不能有过大的振铃或过冲。普通CAN收发器在500kbps下表现很好但到2Mbps时上升沿和下降沿的对称性问题就会暴露出来。2.3 传输延迟与延迟对称性CAN FD的隐形杀手收发器有一个指标叫环路延迟Loop Delay指的是信号从TXD到总线、再从总线经过另一个节点回到RXD的总延迟。经典CAN的标准里这个延迟只要满足总传播时间的一半规则就行因为位时间足够长留的余量很大。CAN FD的数据段位时间短延迟预算极其紧张。更关键的是延迟对称性。数据段高速传输时一个显性位和紧跟着的隐性位如果上升沿延迟和下降沿延迟不一致就会导致位宽度被拉伸或压缩。积累到采样点时采样位置可能已经漂到位边界附近误码率直线上升。所以CAN FD收发器的datasheet里通常会给两个方向的延迟参数工程上叫tLoop1和tLoop2两者差值越小越好。2.4 采样点的工程计算采样点是指控制器在一个位时间内什么时候去读取总线电平。CAN协议规定采样点落在位时间的70%左右是常见做法CAN FD因为数据段速率高采样点甚至配到80%。但采样点不是随便定的它和传播延迟、位时间直接相关。公式可以简化理解在一个位时间内总线信号从发送节点传到接收节点接收节点需要等信号稳定后再采样。总线传播延迟一般按5ns/m估算收发器环路延迟看datasheet。假设2Mbps数据段位时间是500ns收发器环路延迟300ns两个节点的距离等效传播延迟50ns那么留给信号稳定的时间就是500-300-50150ns采样点要落在信号稳定之后太早会采到未稳定的电平太晚会压到下一个位。所以你在CAN配置工具里看到的“采样点80%”背后是物理层延迟参数和线束长度决定的。实测中很多CAN FD通信故障最后都归结为采样点设置不当而不是芯片坏了。3. 收发器家族选型实战别只看最高速率3.1 市面主流家族梳理先理一下市面上常见的CAN FD收发器家族方便你对着选型表找定位。NXPTJA1042基础版有待机模式、TJA1043带唤醒和待机功能最全、TJA1044简化版适合5V供电的标准CAN FD、TJA1051带VIO适合3.3V MCU。TITCAN1042、TCAN1043、TCAN1044基本对齐NXP的定位TCAN1043同样支持待机和唤醒。MicrochipMCP2562FD、MCP2542FD后者支持待机模式价格通常更有竞争力。InfineonTLE9251、TLE9252TLE9252带唤醒功能在大众、奥迪的平台上用得比较多。选型第一步不是比谁速度快而是先把你的系统需求列出来MCU的I/O电压是多少需不需要低功耗待机要不要支持远程唤醒工作温度范围是多少再拿这些需求去过滤datasheet。3.2 关键参数逐个看电压、电流、VIO、延迟有一个常见误解是“CAN FD收发器一定是5V供电”。实际上TJA1044这类芯片就只支持5V供电而TJA1051、TJA1042这类通过VIO引脚可以适配3.3V或5V的I/O电平。如果你的MCU是3.3V控制器输出的TX/RX高电平只有3.3V直接接5V供电的收发器逻辑高电平阈值可能不够通信就时好时坏。延迟参数也要重点看。CAN FD收发器的datasheet会给出环路延迟的典型值和最大值有些还细分了TXD到总线和总线到RXD的延迟。数据段跑到5Mbps时位时间只有200ns如果收发器环路延迟超过500ns那直接没法用。选型时算一下位时间 — 收发器延迟 — 线束延迟剩下来的就是采样窗口这个窗口必须大于控制器的采样容忍度。3.3 待机模式与部分网络低功耗需求怎么选如果你的设备需要长时间待机比如车门控制器、传感器节点待机电流就是关键指标。TJA1043、TCAN1043这类芯片在待机模式下总线监听电流可以做到微安级别同时还能检测总线上的唤醒报文。而基础的TJA1042只有一个引脚控制的静音模式静音时不能发送但还在接收待机电流远不如专门的唤醒型芯片。部分网络Partial Networking是另一个进阶需求它要求节点在特定报文唤醒之前保持睡眠减少整车静态电流。支持部分网络的收发器比如TJA1145内部集成了报文过滤逻辑只有收到匹配的唤醒帧才唤醒MCU。普通CAN FD收发器做不到这个选型时如果整车的休眠电流有硬指标这块要提前规划。3.4 兼容替代与直接替换注意事项现在市场上很多国产CAN FD收发器可以直接替代主流型号比如SIT1042替代TJA1042、SIT1051替代TJA1051引脚兼容寄存器层面也没区别。但直接替换前一定要看两点一是VIO引脚的上电时序二是TXD显性超时DTO行为。TXD显性超时是指如果TXD引脚长时间保持低电平显性收发器会强制释放总线防止某个故障节点一直占用总线。老一代CAN收发器这个超时时间比较长而CAN FD收发器在数据段传输时显性位很密集如果超时逻辑没区分CAN FD模式可能误判成故障。所以兼容替代芯片如果DATASHEET里明确写了支持CAN FD DTO那基本没问题否则要仔细测。4. 硬件设计实操收发器只是开始4.1 终端电阻120欧的摆放有讲究CAN总线两端各放一个120欧终端电阻这是经典CAN的规矩。CAN FD依然成立但在高速数据段终端电阻的精度和放置位置对波形质量影响更大。我的建议是优先选用精度1%的120欧贴片电阻不要用5%的因为数据段位时间短终端不匹配带来的反射会让波形振铃采样点稍微靠后就直接采错。终端电阻的位置要放在总线的最远端节点上不是每个节点都放。如果你的板子做成了节点级联结构最远端节点要单独焊上终端电阻其他节点不放。有些板子为了调试方便做了一键切换终端电阻的跳线设计但在CAN FD高速场景下跳线和开关的寄生电容可能影响信号完整性建议正式版本直接焊固定电阻。4.2 EMC三件套共模电感、TVS、匹配电容汽车和工业现场的EMC测试绕不开。共模电感Common Mode Choke放在CANH和CANL上可以抑制共模噪声是很多成熟方案的标准配置。但要注意共模电感有寄生电感和直流电阻选型时不能只凭“感觉”要看它对差分信号的阻抗。通常选几十微亨级别的共模电感插损在CAN FD数据段频率范围内不能太大。TVS管放在连接器入口处用来吸收ESD和浪涌。CANH和CANL对地各放一个同时CANH和CANL之间也可以放一个。注意TVS的结电容不能太大否则会影响信号边沿。有些厂家推荐分立TVS加匹配电容的组合比如在终端电阻旁边并联一个4.7nF的共模电容这个电容能把高频共模噪声滤掉但对差分信号影响很小。4.3 电源与接地别让收发器饿着收发器是模拟电路供电质量直接决定总线电平质量。VCC引脚上的去耦电容要靠近芯片放置我习惯用100nF加10µF的组合100nF放在最靠近VCC的位置10µF放在稍远的地方。如果板子上有DC-DC模块收发器供电尽量不要直接串到开关节点上纹波太大会在总线上形成噪声。另一个隐蔽的问题是地回路。收发器的GND必须和控制器、连接器的GND可靠连接不能靠单点细走线。CAN是差分但参考地不能飘地电位差会转成共模电压超过收发器输入共模范围接收端就会误判。长线束通信时在连接器附近加一个小值的共模电容到地有时能救回来。4.4 拓扑结构短stub、菊花链还是星型经典CAN时代STUB分支长度有一定容忍度比如500kbps下几米的STUB也能跑。CAN FD不一样尤其是数据段2Mbps以上时STUB上的反射会严重影响波形。如果你现场勘测到某条线上挂了几个节点节点离主干线的距离超过十几厘米那基本可以预见CAN FD会有偶发丢包。推荐的结构是最坏情况下也尽量让每个节点的收发器离总线主干线足够近或者说干脆做成菊花链——每个节点内部把CANH/CANL直通到下一节点减少物理上的分支长度。星型拓扑在CAN FD里不是不能用但要保证汇合点的容性负载不能太高必要时在汇合点加共模电感隔离。5. 调试与故障排查把波形和采样点抠到极致5.1 一台示波器能看什么合格波形长什么样调试CAN FD示波器是刚需。带宽至少100MHz最好200MHz以上不然边沿测不准。把探头接到CANH和CANL用差分方式看波形。健康的CAN FD波形有这几个特征空闲时CANH和CANL都在2.5V附近显性位时CANH升到3.5V左右、CANL掉到1.5V左右差分大概2V数据段的波形边沿干净振铃幅度小于200mV位宽度均匀不能出现一个宽一个窄的情况。如果你看到数据段的波形边沿有明显的过冲或者回勾大概率是终端电阻、STUB或者共模电感选型出了问题。把示波器的解码功能打开设置好仲裁段和数据段波特率能直接解出CAN ID和报文内容。这一步能快速判断是物理层问题还是协议层问题。如果解码器能稳定解码说明通信链路基本OK如果解码出错但波形看着还行就要怀疑采样点位置或者控制器配置。5.2 采样点测量方法用误码率找最优位置理论上采样点算出个大概值后实际还是要实测。我常用的方法是用CAN分析仪连续发送长帧压力测试报文然后在控制器端从70%到85%之间调整采样点每档跑几分钟统计错误帧数量。采到一个“两端都开始出错”的范围中间比较稳的就是最佳工作点。实测中经常出现“某个采样点配置下通信正常换一个采样点就偶发错误”的情况。这时不要急着改硬件先用示波器抓一下实际波形的位时间看看是否和理论配置一致。有些控制器的时钟精度不高标称2Mbps实际可能偏差百分之几采样点再靠边就更容易出错。5.3 常见问题速查表乱码、bus off、错误帧现象可能原因排查方向数据段全是错误帧采样点过早采到边沿不稳定区提高采样点比例比如从75%提到80%通信偶发中断bus off数据段速率太高线束太长或STUB太长缩短主线长度去除分支降低数据段速率单独一个节点收不到报文该节点收发器未进入正常工作模式检查待机/静音引脚确认TXD/RXD接线波形有严重振铃终端电阻缺失、放置错误或阻值不当用万用表量总线两端电阻应该约60欧发送时报告TXD显性超时控制器TXD持续拉低或收发器DTO在CAN FD下误触发检查MCU的CAN外设配置确认BRS和FDF位正确两块板子直连OK多节点就乱线路拓扑有问题反射叠加缩短STUB调整连接方式为菊花链5.4 好用的调试工具链工具方面我常用的组合是一台CAN分析仪加PC软件比如周立功的USBCAN系列或者PCAN的USB接口预算充足的话直接用CANoe虽然贵但CAN FD的采样点分析、负载率统计这些功能非常顺手。纯开源方案可以用cantact加Wireshark的socketCAN接口linux下用candump、cansend就能做很多事了。初始调试时建议先用回环模式Loopback验证MCU侧配置把收发器焊上后先不发总线数据只在MCU内部回环发CAN FD帧排除硬件问题再上总线。这个顺序能省下大量抓波形时间。6. 最后分享两个实测技巧第一个技巧测收发器延迟对称性不用专业仪器用示波器看TXD和总线波形的交叉就能估出大概。抓一帧数据段的波形把TXD和CANH-CANL差分波形叠在一起看单个显性位的起始和结束TXD边沿和总线边沿之间的时间差就是收发器延迟。多抓几个不同模式的位对比上升沿和下降沿的延迟差如果超过datasheet标称太多可以考虑换芯片。第二个技巧现场排查时拿万用表量CANH和CANL之间的直流电阻正常总线两端各120欧并联应该是60欧左右。如果测出来是120欧附近说明只有一端有终端如果是0欧说明有短路。60欧这个值在CAN FD调试里几乎是第一直觉养成习惯后能省很多事。CAN FD收发器系列这个东西说难不难但细节确实多。从选型到PCB再到调试每一步都会遇到“看起来没问题但就是不行”的情况。希望这篇内容能帮你把坑提前踩平剩下的就是动手去做、用示波器说话。
返回列表