2. 从站硬件架构解析:ESC芯片选型、微控制器接口、PHY芯片与变压器电路
好,咱们直接进入正题。上一章我们聊了EtherCAT的整体框架,这一章我带你看看从站硬件到底长什么样。说白了,从站硬件就是三块东西拼起来的:ESC芯片、MCU、以及PHY和变压器。这三者怎么搭,决定了你的板子稳不稳、快不快、好不好调试。
2.1 ESC芯片选型:LAN9252 vs. SSC
ESC(EtherCAT Slave Controller)是从站的心脏。市面上主流的方案就两个:Microchip的LAN9252,以及Beckhoff授权的SSC(Slave Stack Code)软核方案。
LAN9252 是硬核芯片,内部集成了EtherCAT数据链路层。我个人的习惯是,如果项目周期紧、不想折腾FPGA,直接上LAN9252。它支持两个PHY接口,内部有8KB的DPRAM,跟MCU通信走SPI或32位并行总线。
SSC方案 则是把ESC逻辑用Verilog/VHDL写出来,烧到FPGA或CPLD里。好处是灵活,你可以定制DPRAM大小、PDO映射方式。但代价是——你得懂FPGA开发,而且时序收敛是个坑。我曾经在一个项目中用SSC方案,结果因为FPGA内部布线延迟导致EtherCAT帧校验出错,查了整整三天。
选型建议:
- 量产产品、追求稳定 → LAN9252
- 需要特殊PDO映射、高速IO控制 → SSC + FPGA
- 成本敏感、小批量 → LAN9252(因为SSC的FPGA BOM成本更高)
2.2 微控制器接口:SPI还是并行?
ESC芯片和MCU之间怎么通信?这是硬件设计的关键。LAN9252支持两种接口:SPI和32位并行总线。
SPI接口 简单,4根线搞定。但速度有限,一般跑20MHz左右。如果你只需要几十个字节的PDO数据,SPI够用。我见过有人用SPI跑100MHz,结果信号完整性一塌糊涂,EtherCAT链路动不动就断。
并行总线 速度快,32位数据线一次传4字节。但占用的MCU引脚多,PCB布线也麻烦。我记得有个项目,MCU是STM32F407,用FSMC接口接LAN9252的并行总线,PDO更新速率直接飙到10kHz以上。
我的经验:
如果MCU主频超过200MHz,且PDO数据量大于128字节,建议用并行总线。否则SPI完全够用。别为了省几根线把性能砍了。
2.3 PHY芯片与变压器电路
PHY芯片负责把EtherCAT的数字信号转成差分模拟信号,变压器则提供隔离。这两个选不好,你的从站可能连不上主站。
PHY芯片 我推荐KSZ8081或LAN8720。它们都是RMII接口,跟LAN9252直连。注意PHY的时钟源——LAN9252可以输出50MHz时钟给PHY,也可以让PHY自己晶振。我习惯用LAN9252提供时钟,这样少一个晶振,BOM成本低一点。
变压器 选型要看共模抑制比和隔离电压。工业现场干扰大,变压器至少要有1500Vrms的隔离。我踩过一个坑:用了便宜的变压器,结果EtherCAT线缆一靠近变频器,链路就丢包。后来换成TDK的HX1188,问题解决。
下面这张图是我画的典型从站硬件架构,你一看就明白:
嗯,这张图很直观。信号从EtherCAT线缆进来,先过变压器隔离,再到PHY转成数字信号,然后ESC处理数据帧,最后通过SPI或并行总线交给MCU。反向路径同理。
2.4 硬件设计避坑指南
做EtherCAT从站硬件,有几个坑我帮你列出来:
- PHY复位时序:LAN9252的复位信号必须保持至少1ms低电平。我曾经用MCU的GPIO直接拉低,结果复位时间不够,PHY死活不工作。后来加了个RC延时电路搞定。
- 变压器中心抽头:HX1188的中心抽头要接3.3V,不是GND。接反了信号幅度直接减半,EtherCAT链路根本建不起来。
- PCB差分走线:PHY到变压器的差分对要等长,误差控制在5mil以内。我见过有人随便拉线,结果EMC测试过不了,辐射超标。
- DPRAM访问冲突:ESC和MCU同时访问DPRAM时,要处理好仲裁。LAN9252内部有硬件仲裁,但如果你用SSC方案,得自己写逻辑。我有个同事没注意这个,数据读出来全是乱的。
特别注意:
EtherCAT从站的PHY芯片必须支持自动协商关闭功能。因为EtherCAT是确定性协议,不需要自动协商。如果PHY开启了自动协商,链路建立时间会变长,导致主站扫描不到从站。我遇到过好几次这种问题,最后在PHY寄存器里把自动协商关了才解决。
2.5 实际项目中的选型组合
我整理了几种常见的组合,供你参考:
| 应用场景 | ESC方案 | MCU | PHY | 接口 |
|---|---|---|---|---|
| 简单IO从站 | LAN9252 | STM32F103 | LAN8720 | SPI |
| 伺服驱动器 | SSC (FPGA) | STM32F407 + FPGA | KSZ8081 | 并行总线 |
| 高速数据采集 | LAN9252 | STM32H743 | KSZ8081 | 并行总线 |
| 低成本从站 | LAN9252 | GD32F303 | LAN8720 | SPI |
你看,不同场景的选型差别很大。我个人建议,如果你刚开始做EtherCAT从站,先拿LAN9252 + STM32F407这套组合练手。资料多、社区活跃,遇到问题好查。等把流程跑通了,再考虑SSC方案或者换国产MCU降成本。
好了,这一章的内容就这些。硬件架构搞清楚了,下一章我们就能开始写驱动了。记住,硬件是基础,基础不牢,地动山摇。
公众号:蓝海资料掘金营,微信deep3321