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