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网关 高性能、多协议网关
我的建议: 如果你做的是2路以内的CAN转以太网,且对成本敏感,STM32F4是首选。如果你需要CAN-FD或者多路CAN,H7更合适。如果你追求极致性能,或者需要IEEE 1588同步,i.MX RT值得一试。

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总线的“物理层”。选型时主要看三点:

  1. 速率:普通CAN用TJA1050或SN65HVD230,支持1Mbps。CAN-FD要用TJA1044或TCAN1042,支持5Mbps甚至更高。
  2. 隔离:工业现场总线经常有共模干扰。我建议用隔离式收发器,比如ISO1050或ADM3053。虽然贵一点,但能省去后期排查“总线错误”的麻烦。
  3. 工作电压:3.3V还是5V?STM32的GPIO是3.3V,但很多收发器是5V供电。你需要确认电平兼容性,或者加电平转换电路。
避坑指南: 我曾经在一个项目中用了TJA1050,但没注意它的共模电压范围只有-2V到7V。现场电机启动时,总线电压瞬间被拉到-5V,结果收发器烧了一片。后来换成TJA1044,它的共模电压范围是-12V到12V,再也没出过问题。

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。另外,远离晶振和电源模块,避免串扰。
经验之谈: 我做过一个网关,PHY芯片的REF_CLK走线绕了晶振一圈,结果以太网死活连不上。后来用示波器一看,时钟信号上全是毛刺。重新布线后,问题解决。所以,PCB布局真的不能马虎。

好了,硬件选型就聊到这里。下一章咱们开始讲原理图设计,到时候我会分享一些“画板子”的实战技巧。嗯,记得带上你的EDA工具,咱们动手干起来。