3、网关硬件选型:主流MCU对比、CAN控制器与收发器选型、以太网PHY芯片选型
做网关硬件选型,说白了就是给项目挑一颗“心脏”。
我这些年经手过不少网关项目,从工业数据采集到车载协议转换,踩过的坑能写满一本笔记本。今天咱们就聊聊MCU、CAN控制器、收发器以及以太网PHY芯片怎么选。嗯,这里没有绝对的对错,只有合不合适的方案。
3.1 主流MCU对比:STM32F4/H7 vs NXP i.MX RT
先说说MCU。我个人习惯把网关的MCU分成两类:一类是“传统派”,比如STM32F4/H7;另一类是“跨界派”,比如NXP的i.MX RT系列。为什么这么分?你看完就明白了。
3.1.1 STM32F4系列:老将出马,一个顶俩
STM32F4,尤其是F405和F427,在CAN网关圈子里算是“老兵”了。我记得2016年做第一个网关原型时,用的就是F405。它的优势在于:
- CAN外设成熟:内置2路CAN 2.0B,支持BasicCAN和PeliCAN模式。说白了,你不需要额外挂CAN控制器,直接接收发器就能用。
- 主频够用:168MHz,对于单路CAN转以太网,处理数据包绰绰有余。
- 生态完善:HAL库、LL库、CubeMX,开发工具链非常成熟。你遇到任何问题,网上基本都能找到答案。
但F4也有短板。它的以太网MAC需要外接PHY芯片,而且没有硬件加密引擎。如果你要做安全传输,比如TLS,F4的CPU会累得够呛。
3.1.2 STM32H7系列:性能怪兽,但要注意散热
H7系列,比如H743,主频能跑到480MHz。我去年做一个多路CAN(4路)转以太网的项目,就选了H7。为什么?因为F4的CAN FIFO深度不够,在高负载下容易丢帧。H7的CAN-FD支持更长的数据段,而且有专用的DMA通道。
不过,H7有个坑——功耗和散热。我曾经在密闭机箱里测试H7,温度直接飙到85°C。所以,如果你选H7,一定要做好散热设计,或者降频使用。
3.1.3 NXP i.MX RT系列:跨界选手,性能与灵活性的平衡
i.MX RT系列,比如RT1050或RT1060,是NXP的“跨界处理器”。它既有MCU的实时性,又有MPU的高性能。我为什么喜欢它?
- 主频高:RT1060能到600MHz,处理多路CAN数据流毫无压力。
- 内置以太网MAC:支持IEEE 1588精确时间协议,这对工业同步应用非常关键。
- 灵活的启动方式:可以从QSPI Flash、HyperFlash甚至SD卡启动。我在一个原型机上直接用SD卡启动,调试起来非常方便。
但i.MX RT也有缺点。它的CAN外设是FlexCAN,和STM32的bxCAN寄存器结构完全不同。如果你从STM32迁移过来,代码要重写不少。另外,它的开发工具链相对复杂,我建议用MCUXpresso,别用IAR,否则你会被许可证折腾疯。
3.1.4 选型对比表
| 参数 | STM32F4 (F405) | STM32H7 (H743) | NXP i.MX RT (RT1060) |
|---|---|---|---|
| 主频 | 168 MHz | 480 MHz | 600 MHz |
| CAN接口 | 2路CAN 2.0B | 2路CAN-FD | 2路FlexCAN (支持CAN-FD) |
| 以太网MAC | 需外接PHY | 需外接PHY | 内置,支持1588 |
| 典型功耗 | ~200 mW | ~500 mW | ~400 mW |
| 开发难度 | 低 | 中 | 中高 |
| 适用场景 | 单路/双路CAN网关 | 多路CAN-FD网关 | 高性能、多协议网关 |
3.2 CAN控制器与收发器选型
MCU选好了,接下来就是CAN控制器和收发器。这里有个误区:很多人以为MCU内置了CAN控制器,就不需要额外考虑了。其实不然,收发器的选型直接影响通信的可靠性。
3.2.1 CAN控制器:内置还是外置?
现在主流的MCU都内置了CAN控制器,比如STM32的bxCAN、NXP的FlexCAN。我个人建议优先使用内置控制器,原因很简单:
- 减少BOM:少一颗芯片,少一份焊接风险。
- 降低延迟:外置控制器通过SPI或并行总线通信,会增加几十微秒的延迟。对于高速CAN(1Mbps),这可能导致帧丢失。
但有一种情况你需要外置控制器:当MCU的CAN通道数不够时。比如你要做4路CAN网关,而MCU只有2路,那就得用MCP2515或SJA1000这类外置控制器。我曾经在一个项目里用过MCP2515,它的SPI时钟最高只能到10MHz,在高负载下会丢帧。后来我换成了TCAN4550,它支持CAN-FD,而且SPI时钟能到40MHz,问题才解决。
3.2.2 CAN收发器:选对型号,少走弯路
收发器是CAN总线的“物理层”。选型时主要看三点:
- 速率:普通CAN用TJA1050或SN65HVD230,支持1Mbps。CAN-FD要用TJA1044或TCAN1042,支持5Mbps甚至更高。
- 隔离:工业现场总线经常有共模干扰。我建议用隔离式收发器,比如ISO1050或ADM3053。虽然贵一点,但能省去后期排查“总线错误”的麻烦。
- 工作电压:3.3V还是5V?STM32的GPIO是3.3V,但很多收发器是5V供电。你需要确认电平兼容性,或者加电平转换电路。
3.3 以太网PHY芯片选型
以太网PHY芯片,说白了就是负责把数字信号变成模拟信号,再通过网线发出去。选PHY芯片时,我主要看这几个参数:
3.3.1 速率与接口
- 速率:10/100Mbps是主流,千兆(1000Mbps)在工业网关中很少用,因为CAN总线本身只有1Mbps,千兆以太网纯属浪费。
- 接口:RMII接口最常用,只需要7根线(TX_EN、TXD[1:0]、RX_DV、RXD[1:0]、REF_CLK)。MII接口需要16根线,占用太多GPIO,不推荐。
3.3.2 常用型号对比
| 型号 | 速率 | 接口 | 特点 |
|---|---|---|---|
| LAN8720A | 10/100M | RMII | 便宜,功耗低,适合STM32F4 |
| DP83848 | 10/100M | RMII/MII | 工业级,抗干扰强,适合恶劣环境 |
| KSZ8081 | 10/100M | RMII | 集成度高,外围电路简单 |
我个人习惯用LAN8720A,因为它便宜且容易买到。但如果你做的是工业级产品,我建议用DP83848。为什么?因为LAN8720A的ESD防护等级只有2kV,而DP83848能达到8kV。你想想看,工厂里静电无处不在,一个不小心,PHY芯片就挂了。
3.3.3 硬件设计要点
- 时钟源:PHY芯片需要25MHz时钟。你可以用MCU的MCO引脚输出,也可以用独立晶振。我建议用独立晶振,因为MCO输出的时钟抖动较大,可能影响通信质量。
- 网络变压器:不要省!网络变压器提供电气隔离,防止雷击和浪涌。常用的型号有HR911105A(集成RJ45)或H1102NL(分立式)。
- PCB布局:PHY芯片的差分信号线(TX+/TX-、RX+/RX-)要等长布线,长度差不要超过5mm。另外,远离晶振和电源模块,避免串扰。
好了,硬件选型就聊到这里。下一章咱们开始讲原理图设计,到时候我会分享一些“画板子”的实战技巧。嗯,记得带上你的EDA工具,咱们动手干起来。