3、网关硬件选型:主流CAN转以太网芯片对比
做网关选型,说白了就是选“大脑”和“嘴巴”。
大脑负责处理协议,嘴巴负责收发数据。
我这些年折腾过不少方案,踩过坑也捡过宝。今天就把三种主流路线掰开揉碎讲清楚。
3.1 方案一:STM32+PHY(内置CAN控制器)
这是我最常用的方案。STM32系列很多型号自带CAN控制器,比如F105、F407、H743。
你只需要外接一个PHY芯片(比如TJA1050),再加一个以太网PHY(比如LAN8720A),就能同时搞定CAN和以太网。
我在一个车载网关项目里用过STM32F407+LAN8720A+TJA1050的组合。
当时客户要求同时转发5路CAN数据和1路以太网数据,还要做协议转换。
嗯,这个方案跑下来,CPU占用率才40%左右,完全扛得住。
| 组件 | 型号举例 | 作用 |
|---|---|---|
| 主控MCU | STM32F407VGT6 | 运行协议栈,处理数据 |
| CAN PHY | TJA1050 | 将CAN控制器信号转为差分电平 |
| 以太网PHY | LAN8720A | 将MAC层信号转为RJ45电平 |
3.2 方案二:MCP2515+ENC28J60(外挂控制器)
这个方案适合低成本、低性能的场景。
MCP2515是Microchip的独立CAN控制器,通过SPI接口和MCU通信。
ENC28J60是独立以太网控制器,也是SPI接口。
说白了,就是MCU本身没有CAN和以太网外设,全靠外挂芯片补上。
我记得有个朋友做智能家居网关,主控用的是ESP8266,没有CAN接口。
他就外挂了MCP2515和ENC28J60,硬是把CAN和以太网都接上了。
不过代价是性能受限——SPI时钟跑不了太高,数据量大时容易丢包。
| 对比项 | MCP2515 | ENC28J60 |
|---|---|---|
| 接口 | SPI(最高10MHz) | SPI(最高20MHz) |
| 缓冲区 | 2个接收缓冲,3个发送缓冲 | 8KB收发缓冲 |
| 典型延迟 | 约50μs(单帧) | 约100μs(单帧) |
| 适用场景 | 低速CAN(125kbps以下) | 低吞吐以太网(<1Mbps) |
3.3 方案三:专用网关模块(一体式方案)
如果你不想自己画板子、写驱动,直接买现成的网关模块是最省事的。
比如周立功的CANET系列、创芯科技的CAN转以太网模块。
这些模块内部已经集成了MCU、CAN控制器、以太网控制器,甚至跑好了协议栈。
你只需要通过AT指令或者配置软件设置参数,就能直接用了。
我有个项目工期特别紧,从立项到交付只有两周。
当时果断选了专用模块,一周搞定硬件,一周写应用层代码,按时交了货。
| 方案 | 开发周期 | 单件成本 | 灵活性 | 推荐指数 |
|---|---|---|---|---|
| STM32+PHY | 2-4周 | 低(约30-50元) | 高 | ★★★★★ |
| MCP2515+ENC28J60 | 1-2周 | 最低(约15-25元) | 中 | ★★★☆☆ |
| 专用网关模块 | 即插即用 | 高(约100-300元) | 低 | ★★★★☆ |
3.4 选型决策流程
你想想看,选方案其实就三个问题:
- 量有多大? 批量超过1000片,建议自研方案(STM32+PHY)。
- 时间有多紧? 少于1个月,直接买专用模块。
- 性能要求高不高? 需要高速转发(>1000帧/秒),必须上STM32+PHY。
3.5 我的最终建议
如果你问我个人偏好,我会说:
量产项目用STM32+PHY,原型验证用专用模块,低成本玩具用MCP2515+ENC28J60。
别想着一个方案打天下。我见过有人为了省几块钱,在高速网关里用MCP2515,结果丢包率高达5%,最后被客户骂惨了。
也见过有人花大价钱买专用模块,结果量产后发现成本根本扛不住。
选型这事,说白了就是平衡成本、时间、性能三个维度。
你心里有数了,就知道该选哪个了。