[应用相关] 如何在AT32F4xx单片机上通过DM9051A网卡芯片实现iPerf服务器

[复制链接]
95|3
MCU学习帮 发表于 2026-8-25 17:22 | 显示全部楼层 |阅读模式
前言
DM9051ANX芯片是带有行业标准串行外设接口的独立以太网控制器。
本应用指南将介绍如何在AT32F4xx单片机上通过DM9051A网卡芯片实现iPerf服务器,用以评估网络吞吐量,并提供基于AT32F4xx_Firmware_Library_V2.x.x和LwIP协议栈的源代码。

支持型号列表:

  
支持型号
  
AT32F402系列
  
AT32F403系列
  
AT32F403A系列
  
AT32F405系列
  
AT32F407系列
  
AT32F413系列
  
AT32F415系列
  
AT32F423系列
  
AT32F43x系列
  
AT32F45x系列
  
AT32F490系列
  
AT32A403A系列
  
AT32A423系列

备注说明:本文档仅供有需求的小伙伴参考,如需更多资料,可访问雅特力官网获取:https://www.arterytek.com/cn/support/index.jsp?index=1

1                 简介
DM9051ANX SPI接口网卡芯片是为了方便MCU单片机系统进行以太网通信而开发出的解决方案。DM9051ANX芯片是带有标准串行外设接口(Serial Peripheral Interface,SPI)的独立以太网控制器。DM9051ANX符合IEEE 802.3 规范,它还支持以DMA 模式来传输,以实现快速传送资料。DM9051ANX通过1个中断引脚和SPI接口来进行与主控制器/MCU单片机的通信,资料传输规格为10/100M。
l  Package:支持24接脚封装QFN.
l  IEEE 802.3az Energy Efficient Ethernet (EEE)
l   支持可变电压1.8V,2.5V,3.3V
l  远程唤醒 (WOL)
l   并行线/交叉线自动切换 (HP Auto-MDIX)
l  Support 光口界面
l   具有16KB SRAM静态随机存取记忆
l  EMI (Class B) and HBM ESD Rating 6KV
l  工业温度规范: –40℃ to +85℃
l  功率:(10/100 M) => 32/45 mA
l   100M模式连续工作芯片温度30.7度
l  不须外置bandgap电阻与EEPROM

l   每个芯片自带一个MAC地址

1.1           基于AT32的以太网通信
本应用指南将介绍如何在AT32F4xx单片机上通过DM9051ANX网卡芯片实现以太网通信,并提供基于AT32F4xx_StdPeriph_Lib和LwIP协议栈的源代码。该以太网通信应用程序基于LwIP协议栈对TCP/IP网络进行解析,DM9051ANX通过SPI接口与AT32F4xx单片机进行数据交换。结合AT-START Board与Davicom提供的SPI接口DM9051ANX模块 可以方便快速的搭建起一套以太网通信设备。

1.2           iPerf
iPerf是测量网络吞吐量的一个工具,藉由server和client之前在指定时间内传输数据,计算出这段时间内的平均网速,以评估当前的网络环境。
2                 使用方法2.1           硬件资源
以下是所需的硬件资源:
1)      AT-START-F4xx实验板
2)      DM9051ANX SPI Fast EthernetController模块
3)      Micro-USB传输线
4)      网线

5)      PC机

Note: demo是基于AT32F415的硬件条件,若需要在AT32其他型号上使用,请修改相应配置即可。

2.2            管脚配置
本应用笔记未针对该应用设计Arduino Daughter Board, 因此需要自行飞线开发板上的管脚到SPI网络模块上,代码中配置的管脚如下:
  
DM9051ANX
  
AT32F415
VDD
3.3V
GND
GND
CS
PB6
RST
PB8
CLK
PA5
MISO
PA6
MOSI
PA7
如有其他设计上的考虑,可以自行更换配置的管脚。


2.3            代码设置2.3.1       LwIP设置
获取IP的方式,可以透过DHCP或是手动设定IP,但在配置上有些许需要注意的地方,主要有以下两个部分:
1)      使用DHCP的话需要将lwipopts.h中的LWIP_DHCP这个宏定义设成1, 本应用笔记默认为0(Fixed IP)
2)      使用DHCP的话需要将netconf.h中的DNS_SERVER_ADDRESS这行宏定义给取消定义(undef),并从Ali, Baidu, Google和NAT四个DNS server中选择一个来重新定义

在这个应用中,默认使用手动设定IP的方式直接与计算机对接,用户可以根据需求选择获取IP的方式。

2.3.2        iPerf配置
iPerf的IP跟着开发板的配置,但作为server开放的端口需要符合规范,默认是5001这个端口,用户如果没有特殊需求可以直接沿用不需要修改。iPerf server会在获取IP后自动初始化,这部份用户也可以自行配置,只要注意该应用需要在IP层配置完之后才能初始化即可。

n  iPerf初始化
  1. void iperf_init(void)
  2. {
  3.   struct tcp_pcb *pcb;
  4.   pcb = tcp_new();
  5.   tcp_bind(pcb, IP_ADDR_ANY, 5001); /* bind to iperf port */
  6.   pcb = tcp_listen(pcb);
  7.   tcp_accept(pcb, iperf_accept);
  8. }
PC端这边也需要下载iPerf工具,本应用笔记支持的是iPerf 2版本,可以到官方网站下载。下载之后透过Windows的console tool进入iPerf tool所在的目录,输入以下命令:

n  iPerf client端命令
  1. iperf.exe -c SERVER_IP -t DURATION -i INTERVAL

SERVER_IP为服务器端的IPDURATION为想要测试的总时间,INTERVAL为多久印一笔报告,用户可以根据自己的需求修改输入,这里以测试时间60秒,每1秒打印一笔报告为例




玛尼玛尼哄 发表于 2026-8-30 17:57 | 显示全部楼层
DM9051ANX 是 SPI 接口独立以太网控制器,内置 MAC、16KB SRAM,支持 10/100M,本方案基于 AT32 标准库 + LwIP 协议栈,板子做 iPerf Server,PC 做 iPerf2 客户端,不支持 iPerf3。
幸福小强 发表于 2026-9-1 16:06 | 显示全部楼层
21IC 帖子《如何在 AT32F4xx 单片机上通过 DM9051A 网卡芯片实现 iPerf 服务器》,基于雅特力 AT32F4xx 固件库 V2.x + LwIP 协议栈,iPerf‑2 版本,MCU 作为 iPerf Server,PC 作为 Client 测试网络吞吐量。
天灵灵地灵灵 发表于 2026-9-4 17:17 | 显示全部楼层
iperf_accept为自定义回调函数,处理 TCP 连接、收发 iPerf 测试数据流,官方 demo 自带完整实现。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

88

主题

88

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部
0