前言
在嵌入式设备网络化的趋势下,稳定可靠的以太网物理层(PHY)芯片是连接的关键。国产芯片厂商沁恒微电子推出的CH182系列百兆以太网PHY,以其简洁的外围电路和灵活的电压兼容性,为设计者提供了新的选择。本文将以CH182H2型号为核心,基于官方评估板CH32V307V-EVT-R3,对其应用设计、性能表现以及基于MounRiver Studio的开发流程进行深入解析和实测。
开发平台:CH32V307V-EVT-R3评估板
评估板是验证PHY芯片功能的理想载体。CH32V307V-EVT-R3开发板板载资源丰富,核心是一颗144MHz主频的RISC-V微控制器CH32V307VCT6。板载主要接口包括一个HR911105A型号的100M以太网接口、用于调试的SWD接口、全速和高速USB接口,以及电源、复位、下载按钮。
该板一个显著优点是,通过一个14Pin的排针(P6)完整引出了RMII接口的所有相关信号线,包括:
RMII_TXD0/TXD1 (发送数据)
RMII_RXD0/RXD1 (接收数据)
RMII_CRS_DV (载波/数据有效)
RMII_REF_CLK (参考时钟,50MHz)
RMII_MDC/MDIO (管理接口)
这种设计极大方便了开发者使用逻辑分析仪直接观测RMII总线时序,对于调试和深入学习网络底层通信非常有益。
CH182H2 PHY芯片深度解析
CH182H2是一款支持10/100Mbps自适应的以太网PHY芯片,其IO接口电压可独立配置为3.3V、2.5V或1.8V,能灵活适配不同电平的主控芯片。
硬件设计要点
结合开发板原理图,CH182H2的应用电路可以分解为以下几个关键部分:
-
电源设计
CH182系列采用多电源域设计以优化功耗和噪声:
- VDDIO:I/O接口电源,需对地接0.1μF电容。支持3.3V、2.5V、1.8V输入。
- AVDD33:3.3V模拟主电源,需对地并联0.1μF和10μF电容进行滤波。
- AVDDK/DVDDK:内核及数字逻辑电源引脚,由内部LDO产生,外部分别需接1μF和0.1μF的退耦电容。
-
管理接口(MDIO/MDC)
CH182H2的MDIO和MDC引脚内部已集成上拉电阻,可省去外部上拉电阻,简化电路。
-
复位电路
复位引脚RSTB低电平有效。典型设计采用阻容复位,如4.7kΩ电阻与0.1μF电容串联,可保证足够的上电复位时间。
-
LED与地址配置
LED0和LED1引脚复用为PHY地址配置功能。其上下拉状态决定了PHY的地址(PA1和PA0)。开发板使用默认内部上下拉配置(LED0上拉,LED1下拉),对应PHY地址为01。
同时,这两个引脚也用于连接网络状态指示灯。通过配置寄存器LED_SEL,可以定义LED指示的内容。默认LED_SEL为11时,其功能定义如下:
| LED_SEL 值 |
LED0 功能 |
| 00 |
ACT_ALL (所有活动) |
| 01 |
LINK_ALL / ACT_ALL |
| 10 |
LINK_10 / ACT_ALL |
| 11 |
LINK_10 / ACT_10 (默认) |
-
网络变压器接口(MDI)
MDI_TX_P/N和MDI_RX_P/N直接连接至网络变压器的TD+/-和RD+/-。网络变压器的中心抽头通过0.1μF电容接地即可,无需连接至电源。
-
中断输出
INTB为低电平有效的中断输出引脚,在RMII模式下可用。需通过一个4.7kΩ电阻上拉至VDDIO。
-
时钟电路
XI和XO引脚外接25MHz晶体。芯片内部已集成约12pF的负载电容,因此若选用负载电容为12pF的晶体,则无需外接匹配电容。若晶体负载电容更大,则需外接电容补足差值。
-
RMII接口模式配置
- 接口选择:
RXDV引脚默认内部下拉为MII模式。要配置为RMII模式,需通过4.7kΩ电阻将其外部上拉至VDDIO。
- 时钟方向:
RXD0引脚默认内部下拉,此时TXC引脚输出50MHz时钟供MAC使用。若需由外部提供50MHz时钟,则需将RXD0通过4.7kΩ电阻上拉至VDDIO,此时TXC变为输入引脚。
核心寄存器简介
CH182H2遵循标准的IEEE 802.3 Clause 22 MII管理接口规范。其基础寄存器(第0页)与通用PHY兼容。需要重点关注0号控制寄存器,用于配置速度、双工模式和自协商。对于CH182H2,若未使用引脚配置这些参数,则需通过此寄存器设置。其关键位定义如下:
- 位13 - 速度选择:1 = 100Mbps, 0 = 10Mbps。自协商完成后反映实际链接速度。
- 位12 - 自协商使能:1 = 启用,此时忽略位13和位8;0 = 禁用,由位13和位8决定链接参数。
- 位8 - 双工模式:1 = 全双工, 0 = 半双工。自协商完成后反映实际双工状态。
通过寄存器31 (PAGE_SEL)可以进行页切换,访问厂商自定义的扩展功能寄存器。
主要特点总结
- 外围简洁:MDIO内部上拉、晶体内置部分负载电容、集成50Ω线路匹配电阻,显著减少BOM成本和PCB面积。
- 电压灵活:独立I/O电源支持1.8V/2.5V/3.3V,便于与各种主控连接。
- 封装多样:系列中有CH182D等小至3x3mm QFN封装型号,并内置唯一MAC地址,适合空间受限应用。
- 便于调试:评估板引出完整RMII信号,方便进行底层信号分析。
网络性能实测
我们基于评估板的Demo例程,对CH182H2的底层发送能力及TCP协议栈的收发性能进行了定量测试。测试环境为开发板与PC通过网线直连,PC端IP设为192.168.1.9,开发板IP为192.168.1.10。
1. MAC RAW发送极限测试
此测试旨在评估PHY及MAC底层驱动的最大发送带宽。我们修改了MAC_RAW例程,使其在链路建立后,以最高速率持续发送定长的ARP请求包,并计算平均速率。
核心测试代码如下:
while(1)
{
WCHNET_MainTask();
if(LinkSta) // 链路已建立
{
if(ETH_SUCCESS == MACRAW_Tx(ARPPackage, sizeof(ARPPackage))){
sndlen += sizeof(ARPPackage);
if(tick2 - tick1 >= 5000){ // 每5秒计算一次速率
speed=((uint64_t)sndlen/125)/(tick2-tick1); // 计算Mbps
printf("%d Mbps!\r\n", speed);
tick1 = tick2;
sndlen = 0;
}
}
}
}
测试结果:RAW数据发送速率稳定在 93 Mbps 左右,接近百兆以太网的物理层极限,证明了PHY和底层驱动的效率非常出色。
93 Mbps!
93 Mbps!
93 Mbps!
...
2. TCP接收性能测试
此测试评估系统作为TCP服务器时的接收吞吐量。使用TCPServer例程,PC端作为客户端(iperf或网络调试助手)向开发板发送大量数据。我们在协议栈的数据回环处理函数WCHNET_DataLoopback中加入了速率统计代码。
测试结果:TCP接收速率最高可达 70 Mbps 左右,波动范围大约在59-76 Mbps之间。这表明在协议栈处理开销下,系统仍能保持较高的数据流入能力。
59 Mbps!
72 Mbps!
73 Mbps!
70 Mbps!
...
3. TCP发送性能测试
此测试评估系统作为TCP客户端时的发送吞吐量。修改TCPClient例程,使其在连接到PC端的服务器后,持续发送缓冲区中的数据。
测试结果:TCP发送速率约为 80 Mbps,使用iperf工具监测到的带宽曲线在测试期间(约80-90秒)基本维持在80Mbps上下,峰值可达90Mbps。这显示了在硬件校验和加速的加持下,协议栈的发送效率很高。
4. 性能优化建议
根据测试经验,以下措施有助于提升网络吞吐量:
- 提升主频:将MCU主频配置至最高(如144MHz)。
- 调整DMA缓存:在
net_config.h中,根据数据流方向调整发送或接收描述符数量(ETH_TXBUFNB/ETH_RXBUFNB)和协议栈缓存区大小(WCHNET_NUM_TCP_SEG)。
- 启用硬件校验和:这是提升TCP/UDP性能最关键的一步,能极大减轻CPU负担。确保
net_config.h中HARDWARE_CHECKSUM_CONFIG定义为1。
- 使用大数据包:应用层协议设计应尽量避免频繁发送短包,尽量凑满MTU(最大传输单元)以提升效率。
基于MounRiver Studio的开发实践
沁恒提供的MounRiver Studio (MRS)是基于VS Code深度定化的集成开发环境,对自家芯片支持良好。
1. 工程配置
- 导入工程:解压SDK后,直接打开
TCPServer.wvproj等工程文件。
- 选择驱动:对于RMII 100M模式,需在项目树中右键点击
eth_driver_RMII.c,选择“Include in Build”;将eth_driver_10M.c排除编译。
- 配置浮点单元:在项目属性
Tool Settings -> RISC-V Compiler 中,使能 Single precision extension(RVF)。
- 链接库:根据是否使用浮点,在项目树中保留
libwchnet.a或libwchnet_float.a中的一个,将另一个从项目中移除。
2. 编译与调试
- 编译:直接点击Build Project即可。若遇编译慢的问题,可能是系统服务冲突,可按提示禁用相关服务(如Microsoft PC Manager Service)。
- 仿真器配置:使用WCH-Link时,需通过
WCH-LinkUtility工具将其模式切换为WCH-LinkRV。在项目属性的Debugging页面选择正确的仿真器和设备型号,并指定SVD文件以便查看外设寄存器。
- ISP下载:若无仿真器,可使用ISP方式。将板上
BOOT0跳线接VCC,通过USB连接电脑,使用WCHISPTool软件选择生成的HEX文件进行下载。完成后需将BOOT0恢复接地才能正常运行程序。
3. 运行与验证
程序下载后,通过串口终端(115200, 8, N, 1)可看到启动日志。将电脑IP设置为同一网段,用网络调试工具连接开发板的IP和端口(默认为1000),即可进行数据收发测试,验证网络功能。
总结
沁恒CH182H2百兆以太网PHY芯片以其外围电路简洁、IO电压灵活、功耗封装选择多的特点,在成本敏感和空间受限的嵌入式网络应用中具有明显优势。实测表明,其与CH32V307系列MCU搭配,在硬件校验和加速的辅助下,能够实现超过80Mbps的TCP应用层吞吐性能,足以满足大多数百兆以太网应用的需求。
配合官方提供的MounRiver Studio IDE以及完善的驱动库、协议栈库和丰富例程,能够大幅缩短开发周期,降低嵌入式网络应用的开发门槛。对于需要百兆以太网连接的工控、物联网网关、智能家居等产品,CH182系列是一个值得考虑的国产化解决方案。
参考资料
[1] 国产100M以太网PHY:沁恒CH182H2性能测试应用看这篇就够了, 微信公众号:mp.weixin.qq.com/s/rwF13XNkMxe0ke5E48ikyg
版权声明:本文由 云栈社区 整理发布,版权归原作者所有。