3. CAN收发器选型:TJA1050/SN65HVD230等常用芯片对比、供电电压与速率选择

收发器选型,说白了就是给CAN控制器配一个“翻译官”。控制器只懂逻辑电平(0和1),收发器负责把它变成差分信号怼到总线上。我见过不少项目,MCU选得挺好,结果收发器随便挑了个便宜的,最后现场通信一塌糊涂。

这一节,咱们把市面上最常用的几款收发器掰开揉碎讲清楚。你以后选型时,心里就有谱了。

3.1 收发器到底在干什么?

先看一张功能框图,你就明白它的角色了。

CAN收发器功能定位图 CAN控制器 (MCU内部) CAN收发器 TJA1050 / SN65HVD230 逻辑电平 ↔ 差分信号 CAN总线 CANH / CANL 核心功能: • TXD → 驱动CANH/CANL差分输出 • CANH/CANL → RXD 逻辑电平输入 • 提供总线故障保护、斜率控制、待机模式等

收发器一端连着控制器的TXD和RXD引脚,另一端连着CANH和CANL总线。它干的活就两件:发送时把逻辑0转成差分信号,接收时把差分信号转回逻辑电平。

3.2 三款主流收发器横向对比

我这些年用过不下十种收发器,最常用的就是这三款:TJA1050、SN65HVD230、TJA1040。下面这张表是我自己的选型笔记,你直接拿去用。

参数 TJA1050 SN65HVD230 TJA1040
供电电压 4.75V ~ 5.25V 3.0V ~ 3.6V 4.75V ~ 5.25V
最大速率 1 Mbps 1 Mbps 1 Mbps
待机模式 无 有(低功耗) 有(待机+唤醒)
斜率控制 无(固定斜率) 有(Rs引脚) 无(固定斜率)
总线引脚耐压 -27V ~ +40V -4V ~ +7V -27V ~ +40V
工作温度 -40°C ~ +125°C -40°C ~ +85°C -40°C ~ +125°C
封装 SOP-8 SOP-8 / MSOP-8 SOP-8
典型应用 工业控制、车载 电池供电、便携设备 车载、需要低功耗唤醒

我的选型口诀:

  • 5V系统、不在乎功耗 → TJA1050(便宜、皮实、耐操)
  • 3.3V系统、需要低功耗 → SN65HVD230(唯一3.3V主流选择)
  • 5V系统、需要待机唤醒 → TJA1040(比1050多了待机模式)

3.3 供电电压:5V还是3.3V?

这个问题其实很简单——看你的MCU供电电压。

如果MCU是5V的,比如STM32F103、S32K144,直接用TJA1050或TJA1040,供电和逻辑电平都匹配,省事。

如果MCU是3.3V的,比如STM32F4系列、GD32、ESP32,那就得上SN65HVD230。为什么?因为TJA1050的输入阈值是5V逻辑,3.3V的MCU输出高电平可能达不到它的VIH最小值(约3.5V),导致通信不可靠。

我曾经踩过的坑:

有一次用3.3V的MCU接了TJA1050,刚开始测试没问题,量产了200台后,有十几台在高温下通信间歇性失败。查了两天才发现,3.3V的高电平在85°C时掉到了3.2V,刚好卡在TJA1050的阈值边缘。从那以后,电平不匹配的方案我再也不用了。

如果你实在想用5V收发器配3.3V MCU,也不是不行,但必须加电平转换。我一般用两个方法:

  • 分立件方案:RXD加一个2N7002开漏输出+上拉电阻,TXD用电阻分压
  • 集成方案:用SN65HVD230这种3.3V收发器,一步到位

3.4 速率选择:不是越快越好

CAN总线的速率取决于两个因素:总线长度和节点数量。

这里有个经验公式,我用了很多年:

最大总线长度(米) ≈ 40 / 速率(Mbps)

举个例子:

  • 1 Mbps → 最长约40米
  • 500 kbps → 最长约80米
  • 250 kbps → 最长约160米
  • 125 kbps → 最长约320米

为什么会这样?因为CAN总线是载波监听多路访问机制,位时间必须大于信号在总线上往返的延迟。速率越高,位时间越短,总线长度就得缩短。

我的建议:

工业现场总线长度超过100米时,我一般选250 kbps。车载网络(长度一般小于10米),直接上500 kbps或1 Mbps。别盲目追求高速,稳定才是第一位的。

3.5 选型决策流程图

下面这张图是我自己画的一个选型决策流程,你照着走一遍,基本不会选错。

CAN收发器选型决策流程图 开始选型 MCU供电电压是多少? 5V 还是 3.3V? 5V 3.3V 需要待机唤醒? (低功耗需求) 是 否 TJA1040 TJA1050 需要斜率控制? (降低EMI) 是 否 SN65HVD230 SN65HVD230 结论: 5V系统 → TJA1050(基础)/ TJA1040(低功耗);3.3V系统 → SN65HVD230(唯一选择)

3.6 实际项目中的选型案例

我去年做了一个工程车辆控制器项目,说说当时的选型过程:

  • MCU:S32K144(5V供电)
  • 总线长度:约80米(工程车辆内部布线)
  • 节点数:8个
  • 速率要求:250 kbps
  • 环境温度:-40°C ~ +105°C

最终选了TJA1050。原因很简单:5V供电、不需要待机、温度范围够宽、价格便宜(批量不到2块钱)。SN65HVD230虽然也能用,但3.3V供电需要额外LDO,成本反而高了。

选型总结:

  • 供电电压匹配是硬约束,不匹配就得加电平转换
  • 速率根据总线长度和节点数决定,别盲目上1 Mbps
  • 待机模式只有需要低功耗唤醒时才考虑
  • 斜率控制对EMI有帮助,但SN65HVD230是唯一支持斜率控制的常用型号
  • 总线耐压:工业环境选TJA1050/TJA1040(±40V),便携设备选SN65HVD230(±7V够用)