板子上要多一个网口,第一笔画在哪儿,通常由手里那颗 MCU 决定。以太网这条路从应用代码往下数,依次是协议栈、MAC 控制器、PHY 收发器,最后才到网线。主控里已经有的模块不用再放,少掉的那几层得由外接芯片补上。下图把几种常见主控并排放在一起,每列往下多出来的方块,就是需要外挂的部分。
每列从上往下少掉的方块,由下面那颗外接芯片补上。以太网的活分两截,MAC 把数据组织成帧,PHY 把帧变成双绞线上跑得动的信号,编码、线路驱动、接收端的信号恢复都归 PHY。
MCU 自带 MAC 也得配一颗 PHY,MAC 出来的并行数据没法直接送上双绞线。原理图上看是两束线加一个小方块,布板时最占心思的常常是它。
内置 MAC 主控 + PHY 芯片
主控自带 MAC 时,剩下要补的只有物理层,这是板子上最常见的一种接法。
MAC 和 PHY 之间那束数据线走 MII 还是 RMII,是第一笔要算的账。MII 用 4 位数据、16 根信号线,收发时钟各走一根。RMII 压到 2 位数据,引脚少掉近一半,靠 50MHz 参考时钟双倍采样把带宽补回来。小封装 MCU 经常拿不出 MII 那一排脚,RMII 就成了默认。这件事得在布线前定死,有些 PHY 的 MII 与 RMII 靠上电复位期间某个引脚的锁存电平来选,样机回来发现选错,只能改板。
接口电压也常在这里卡住。主控是 1.8V IO,PHY 只认 3.3V,中间要加电平转换,几颗器件加上去,布线跟着绕。把 PHY 的 IO 电源独立出来,跟着主控走,这一段就能省掉。CH182 把 MII、RMII 和 1.8V、2.5V、3.3V 三档 IO 电压都留了,接 MCU、MPU、FPGA 或 DSP 时不必另做转换。动手前按主控的空脚和电压先定接口,再回头挑封装。
无MAC主控 + 控制器芯片
主控没有 MAC,或者以太网接口已经用掉了,能走的总线就剩 SPI 和并口这类。这时候得把 MAC 控制器和 PHY 一起放进外接芯片,主控只负责把帧交给它,主机侧的协议栈照旧要跑。
CH390 属于这一类,SPI 或并口挂上去就能用。多挂几颗还能扩出双网口和多网口,工业网关、多网段采集的板子上常见这种接法。接口电压覆盖 1.8V、2.5V、3.3V,MAC 地址内置,有 QFN20 封装。代价留在主机侧,IP 编址、连接管理和重传仍然要自己写。
小容量主控 + 协议栈芯片
协议栈一般跑在 MCU 里,占 Flash,占 RAM,还要人维护。小容量 MCU 上这笔账很直接,协议栈一进去,应用代码就剩不下多少地方。放得下也有后面的事。断线重连、心跳保活、对端异常断开、一帧数据收到一半怎么办,这些边角要一条条写,量产以后现场报回来的多半是
另一种做法是把协议栈整个交给外接芯片。主控不再处理 IP 报文,只通过 SPI、串口或并口调用现成的接口收发数据,TCP、UDP、IPv4、IPv6、DHCP、ARP 这些都在芯片里跑。CH395 和 CH394 走的是这条路,配套有参考例程,底层细节可以不管。协议栈搬走以后,能开几路连接由芯片定,CH395 这一档给到 8 个独立 Socket 对同时收发。远程设备管理和状态监控往往要同时跟好几个上位机说话,这个数得先算够。不同后缀的 Socket 数量有差别,下单前翻一遍对应手册。
各类主控 + 串口转接芯片
再往上,连应用代码也可以省掉。做法是在协议栈之外再放一层专用固件,把 TCP 和 UDP 的客户端、服务端都固定下来,主控只从串口送字节进去,芯片负责把串口数据和网络数据包来回翻译。
CH9121 和 CH9120 属于这一类,配置走串口,不用写网络程序。老设备要联网,常常只剩一个串口可用,这样接改动最小。代价也在这里,数据怎么打包、连接什么时候建、断了怎么重连,都按芯片固件来,应用侧插不上手。
按主控对号入座
把上面几段合起来,选型的顺序基本定了。先看主控里有没有 MAC,再看 Flash 和 RAM 够不够跑协议栈,最后数空闲引脚和要留几个网口。
自带 MAC 又跑得动协议栈,补一颗 PHY 就行,CH182 这一类按 RMII 接最省脚。
没有 MAC 或者网口不够,用 CH390 这类把 MAC 和 PHY 合起来的控制器,SPI 或并口挂上去,主机侧协议栈照旧要写。
主控容量小,把协议栈一起交给 CH395、CH394 这类芯片,动手前先算清楚要几路连接。
只剩串口、也不打算写网络代码,交给 CH9121、CH9120 这类转接芯片,改动最小,能调的东西也最少。
这几条都走不通,再考虑换一颗自带 PHY 的 MCU。CH32V317 内部带 480Mbps 高速 USB PHY 和 10/100M 以太网 PHY,同一批产品里还有百兆 USB 网卡芯片 CH397,以及 BLE5.3 加 10M 以太网的 CH32V208。换主控要连整板平台一起动,比加一颗外接芯片大得多,放到最后再权衡。