4、5V与3.3V供电选型:电平匹配、LDO选择、功耗对比

供电这事儿,看着简单,翻车的人可不少。我见过不少工程师,选好收发器就往板子上焊,结果通信死活调不通,最后发现是电平没对齐。嗯,咱们今天就把这事掰开揉碎了讲清楚。

4.1 电平匹配:为什么不能直接怼?

CAN收发器的逻辑电平,说白了就是它和MCU之间怎么认“0”和“1”。传统收发器比如TJA1050,VCC是5V,IO口电平也是5V。但现在很多MCU是3.3V的,直接连上去,3.3V的TX/RX引脚可能推不到5V收发器需要的逻辑高电平阈值。

反过来,5V收发器输出的高电平接近5V,直接灌进3.3V的MCU引脚,轻则烧IO,重则烧芯片。我在项目中就遇到过这种情况——一个同事把5V收发器的RXD直接连到3.3V的STM32上,板子一上电,MCU直接冒烟。从那以后,电平转换成了我原理图审查的第一关。

核心原则: 收发器的VIO(如果有)必须与MCU的IO电压域一致。没有VIO引脚的,必须加电平转换电路。

4.2 三种电平匹配方案

我按实际项目中的使用频率,排了个序:

方案 实现方式 成本 速率影响 我的推荐场景
直接匹配 选带VIO引脚的收发器 中 无 新设计首选,省心
分立电平转换 MOS管+电阻,或专用电平转换芯片 低 轻微延迟 旧板改造、成本敏感
电阻分压+钳位 分压电阻+肖特基二极管 最低 速率受限 低速CAN(125kbps以下)

我个人习惯,新项目一律选带VIO引脚的收发器。比如TJA1043、SN65HVD230这些,VIO接3.3V,IO口电平自动对齐,省掉一堆麻烦。

小技巧: 如果MCU是3.3V但收发器只有5V版本,可以在RXD和TXD上串一个330Ω电阻,利用MCU内部钳位二极管限幅。但注意——这只适用于低速且信号质量要求不高的场合,别在1Mbps的CAN FD上用。

4.3 LDO选择:给收发器喂电有讲究

收发器的供电质量,直接影响CAN总线的信号质量。我见过有人用7805这种老掉牙的线性稳压器给CAN收发器供电,结果总线上的共模噪声大得离谱。

选LDO,我主要看三个指标:

  • PSRR(电源纹波抑制比): 至少60dB@100kHz。收发器内部比较器对电源噪声敏感,PSRR低了,隐性电平容易漂。
  • 输出噪声: 最好低于30μVrms。我踩过坑——用了一颗噪声100μVrms的LDO,CAN总线在重载时偶尔出现位错误,查了两天才发现是电源噪声耦合到了CANH/CANL上。
  • 压差: 5V转3.3V时,压差1.2V以内就行。但如果是电池直供(比如12V转5V),建议用开关电源+LDO二级滤波。

常用的LDO型号,我列个表:

型号 输入范围 输出 噪声 PSRR@100kHz
TPS7A4700 3.0V - 20V 1.4V - 20.5V可调 3.8μVrms 70dB
LT3042 1.8V - 20V 0V - 15V可调 0.8μVrms 79dB
AMS1117-3.3 4.75V - 12V 3.3V固定 40μVrms 45dB
注意: AMS1117虽然便宜,但噪声和PSRR都不太够。用在CAN FD或高速CAN上,建议至少用TPS7A系列。我曾经在批量产品上用了AMS1117,结果EMC测试时辐射超标,换成TPS7A4700后一次通过。

4.4 功耗对比:5V vs 3.3V,差多少?

很多人觉得3.3V供电肯定比5V省电,其实没那么简单。收发器的功耗主要分三块:

  • 静态功耗: 收发器自身工作电流。3.3V版本通常比5V版本低20%-30%。
  • 动态功耗: 总线驱动时的功耗。CAN总线是差分驱动,功耗和总线负载、位速率相关,和供电电压关系不大。
  • LDO损耗: 如果输入电压相同(比如都是5V转出来),3.3V的LDO损耗更大,因为压差更大。

我拿两个典型型号做了个实测对比:

参数 TJA1050(5V) SN65HVD230(3.3V)
静态电流 5mA 3.5mA
显性位功耗(500kbps) 65mW 50mW
隐性位功耗 25mW 18mW
待机功耗 0.5mW 0.3mW

你看,3.3V版本确实省电,但差距没想象中那么大。真正省电的关键,是让收发器在不工作时进入待机或睡眠模式。我有个项目,电池供电的设备,靠软件在总线空闲时把收发器切到待机模式,功耗从30mW降到了0.5mW。

结论: 如果系统对功耗敏感,优先选带待机/睡眠模式的3.3V收发器,而不是单纯看供电电压。

4.5 供电架构决策树

为了帮你快速决策,我画了张图:

CAN收发器供电架构决策树 MCU电压域 MCU = 3.3V MCU = 5V 收发器有VIO引脚? 是:VIO接3.3V 否:加电平转换 收发器供电来源? 5V系统:直接供电 12V/24V:LDO降压 最终建议:优先选带VIO引脚的3.3V收发器 如TJA1043、SN65HVD230,简化设计,降低功耗

4.6 避坑清单

最后,我把这些年踩过的坑整理成清单,你照着检查就行:

  1. 别把5V收发器的RXD直接连3.3V MCU。 我曾经这么干过,MCU的IO口烧了三个才反应过来。
  2. LDO的输出电容别省。 收发器在显性/隐性切换时,电流会突变,输出电容小了,电压会掉。我一般用10μF陶瓷+0.1μF高频电容并联。
  3. 注意LDO的散热。 如果输入12V输出3.3V,电流100mA,LDO上功耗就是(12-3.3)*0.1=0.87W,SOT-23封装根本扛不住。我吃过这个亏,后来换成了SOP-8带散热焊盘的封装。
  4. 3.3V收发器的共模范围。 有些3.3V收发器的共模输入范围比5V版本窄,比如SN65HVD230只有-7V到+12V,而TJA1050是-12V到+12V。在恶劣环境下,这个差距可能致命。
  5. 待机模式下的供电。 如果系统需要低功耗待机,确保LDO在轻载时仍然稳定。有些LDO在负载低于1mA时输出电压会飘,我遇到过待机时电压从3.3V掉到2.8V的情况。
我的习惯: 原理图定型前,先把收发器和MCU的电压域画在同一张图上,用不同颜色标出5V和3.3V区域,然后逐条检查电平转换路径。这个方法帮我避免了好几次低级错误。