做车身电子和工业板子的人,对 CAN 都太熟了。门控、灯光、座椅、空调风门,一根双绞线挂一串节点,几百 kbps 跑着,几十年没出过大事。大多数时候我画板子,CAN 收发器往上一放,控制器是 MCU 自带的,配好波特率和过滤器,活儿就干完了。
可这几年,节点要发的东西变多了。以前一个传感器就发几个字节的状态,现在还要发诊断信息、标定参数,偶尔还要在线升级固件。CAN 2.0 一帧 8 个字节,CAN FD 一帧 64 个字节,东西一多,就得自己在应用层切帧、编号、重组。总线利用率一上来,优先级低的报文就得排队等。
更麻烦的是另一头。域控制器和区域网关那头早就跑以太网了,CAN 那头的报文到了网关,得翻译成以太网帧再往上送。翻译这一步要一个网关盒子,要写转换代码,还要多一跳延迟。车越往区域架构走,这个翻译的活儿就越重。
10BASE-T1S 想干的,就是把这个翻译省掉。
一根双绞线,换了两样东西
它也是一根双绞线,也是一条总线挂多个节点,一条总线最多挂 8 个,25 米。速率先摆出来:高速 CAN 到 1Mbps,CAN FD 数据段一般到 5Mbps,T1S 是 10Mbps。光比速率,T1S 是高速 CAN 的十倍,CAN FD 的两倍。
高速 CAN、CAN FD、10BASE-T1S 对比:速率、帧长、节点数、仲裁方式
速率之外,还换了两样东西。一样是帧。以太网帧一帧能装 1500 个字节,CAN FD 一帧 64 个字节,CAN 2.0 一帧 8 个字节。诊断日志、配置文件、固件包,这些在 CAN 上得切成几十上百帧的东西,在以太网上一两帧就过去了。切帧的活儿不用应用层自己干了。
另一样是仲裁。CAN 靠 ID 仲裁,ID 小的赢,ID 大的等,总线一忙,低优先级报文的延迟就没个准数。10BASE-T1S 用 PLCA,做法是轮流发言:一个节点当协调器,按顺序给每个节点发时隙,轮到谁谁说话,没轮到就等着。延迟是能算出来的,控制环路敢用它。
这两样加起来,节点就能直接跑 TCP/IP。传感器和执行器挂上网关,网关不用再翻译了,它们在网里就是正经的 IP 节点。诊断、升级、时间同步,都能走同一套协议栈。
LAN8651:便宜单片机挂上以太网
LAN8651 就是干这个的。Microchip 的一颗 10BASE-T1S MAC-PHY,MAC 和 PHY 都在芯片里,主控只要一个 SPI 口就能联网,25MHz 的 SPI,走 OPEN Alliance TC6 的接口。单片机不用带以太网 MAC,几块钱的 MCU 也能挂上以太网。单 3.3V 供电,5×5 毫米的 QFN,零下 40 到 125 度,车规一级。睡眠不到 150 微瓦,收发带时间戳,能做 TSN。
LAN8651 接法:MCU 经 SPI 接 LAN8651,单对双绞线挂最多 8 个节点
用起来也简单。评估板现成的,MIKROE 的 Click 板 50 美元,Arduino 的扩展板 39 美元。Linux 主线驱动 6.12 就进去了,新版内核开箱能用,不用厂商补丁。
账得摊开算
价格先说。一颗高速 CAN 收发器,千颗价四毛六美分,立创上两三块钱。LAN8651 原厂直销单颗 4.85 美元,千颗 3.39 美元,五千颗 3.22 美元。光看芯片,贵了七倍。还不算软件:CAN 那头几乎不用协议栈,T1S 这头得在主控上跑一套 TCP/IP,轻量级也得几十 K 的 Flash 和 RAM,选主控的时候这笔资源得先留出来。
功耗也得算。LAN8651 发送最大 200 毫瓦,接收 150 毫瓦。CAN 收发器本身功耗小,可 T1S 这头主控还得跑协议栈,整机功耗还是要高一截。对常供电的节点没感觉,对靠电池、要休眠的节点,这笔账得细算。
还有生态。CAN 的工具链、测试仪、仿真器、三十年攒下来的经验,摆在那儿。10BASE-T1S 才刚起步,NXP 的 TJA1105 要 2027 年才量产,市面上能买到的 T1S 芯片一只手数得过来。
所以替班这个事,得看替哪块。节点只发几个字节的状态,十秒发一次,CAN 够用了,换 T1S 是多花钱。节点要发的东西多了,要接诊断、要在线升级、要进区域架构,CAN 切帧切得手酸,网关翻译翻得头疼,T1S 的 10Mbps 和 1500 字节帧就值回来了。
高速 CAN 和 CAN FD 干了三十年,不会被一夜换掉。T1S 替的,是 CAN 干不了的那部分活。画新板子的时候,先数一数节点要发多少东西,再决定这根总线用 CAN 还是 T1S。
167