|
前言 DM9051ANX芯片是带有行业标准串行外设接口的独立以太网控制器。 本应用指南将介绍如何在AT32F4xx单片机上通过DM9051A网卡芯片实现iPerf服务器,用以评估网络吞吐量,并提供基于AT32F4xx_Firmware_Library_V2.x.x和LwIP协议栈的源代码。
支持型号列表:
AT32F402系列 AT32F403系列 AT32F403A系列 AT32F405系列 AT32F407系列 AT32F413系列 AT32F415系列 AT32F423系列 AT32F43x系列 AT32F45x系列 AT32F490系列 AT32A403A系列 AT32A423系列
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初始化 - void iperf_init(void)
- {
- struct tcp_pcb *pcb;
- pcb = tcp_new();
- tcp_bind(pcb, IP_ADDR_ANY, 5001); /* bind to iperf port */
- pcb = tcp_listen(pcb);
- tcp_accept(pcb, iperf_accept);
- }
复制代码PC端这边也需要下载iPerf工具,本应用笔记支持的是iPerf 2版本,可以到 官方网站下载。下载之后透过Windows的console tool进入iPerf tool所在的目录,输入以下命令:
n iPerf client端命令 - iperf.exe -c SERVER_IP -t DURATION -i INTERVAL
复制代码SERVER_IP为服务器端的IP, DURATION为想要测试的总时间,INTERVAL为多久印一笔报告,用户可以根据自己的需求修改输入,这里以测试时间60秒,每1秒打印一笔报告为例,结果如下图:
至此,本应用指南关于使用DM9051ANX进行iPerf的测试就完成了。
|