kaiyun官方注册
您所在的位置: 首页> 嵌入式技术> 设计应用> 一种基于W5100的数据传输系统
一种基于W5100的数据传输系统
来源:电子技术应用2013年第9期
陈 实1,2,王 琪1,2,张铁军2,王东辉2,侯朝焕2
1.中国科学院大学,北京100049; 2.中国科学院声学研究所,北京100190
摘要:设计了一种基于TCP/IP通信协议、使用以太网控制器芯片W5100与ARM内核芯片AT91SAM7SE实现的数据传输系统。介绍了系统的硬件设计、接口时序以及软件流程。设计提出对W5100与AT91SAM7SE的硬件接口采用直接总线连接模式,软件操作采用直接总线连接模式与间接总线连接模式相混合的方式,以达到高速传输的目的。
关键词: ARM W5100 TCPIP 数据传输
中图分类号:TP3
文献标识码:A
文章编号: 0258-7998(2013)09-0054-03
A data transfer system based on W5100
Chen Shi1,2,Wang Qi1,2,Zhang Tiejun2,Wang Donghui2,Hou Chaohuan2
1.University of Chinese Academy of Sciences,Beijing 100049,China; 2.Institute of Acoustics,Chinese Academy of Sciences,Beijing 100190,China
Abstract:A data transfer system is introducesd in this paper,that is based on TCP/IP protocols and using Ethernet controller W5100 and AT91SAM7SE which combines an ARM core. This paper describes the system′s hardware design, interface timing as well as the software flow. In order to achieve high speed transmission, the interface between W5100 and AT91SAM7SE is direct bus interface mode, and the software operation is based on direct bus interface mode mixed with indirect bus interface mode.
Key words :W5100;TCP/IP;data transfer

在诸多应用中[1]都需要对终端提供大量数据流[2]。使用数据传输系统进行传输能够根据终端需求动态提供数据,并且数据传输系统能够针对不同终端的接口时序进行灵活调整[3]。本设计提出一种基于TCP/IP通信协议、使用以太网控制器芯片W5100ARM内核芯片实现的数据传输系统。本系统能够将PC上的文件数据连续地传输给终端,并且针对终端接口的多样性特点,能够通过简单的编程进行调整,以完成相同的数据传输功能。本文针对终端具有数据缓冲队列FIFO的情况阐述本系统的硬件设计、接口时序以及软件流程。对于不同终端,本系统只需经过少量的软件修改就可达到数据传输的目地。

1 以太网控制器芯片W5100
以太网控制芯片W5100是WIZnet公司推出的一款单片网络接口芯片[4]。W5100内部集成了传输层、网络层TCP/IP协议栈与数据链路层及介质访问子层MAC协议。这使得通过W5100进行以太网通信时,各层协议对设计者而言都是透明的。设计者不需要借助操作系统,只需要通过W5100的地址线、数据线对其内部寄存器进行简单的读写访问,就能灵活方便地控制W5100进行以太网通信。W5100还集成了物理层PHY并支持信号极性自适应,这使得在硬件设计中,只需要在W5100外部使用一个带有网络变压器的RJ45座HR911103C,就可以实现其与PC通信。故本设计中选择W5100实现以太网通信,既保证了接口简单,又使得开发周期短。
本设计中,对W5100供给3.3 V与1.8 V两种电源电压。为了保证信号完整性,降低干扰,两种电源电压分别划分为数字网络与模拟网络,网络之间使用电感隔离;其地平面也分为数字地与模拟地,网络之间使用铁心磁珠隔离。W5100使用直接总线连接模式,其15 bit地址线与8 bit数据线与ARM芯片的通用I/O连接;W5100的控制线/CS、/WR、/RD、/RESET也直接与ARM芯片的通用I/O连接。由此实现ARM芯片对W5100的控制。W5100的SPI接口中的SEN、SCLK、MISO接固定电压数字0 V,/SCS接固定电压数字3.3 V,MISO保持悬空,由此屏蔽SPI接口。
2 ARM内核芯片AT91SAM7SE
AT91SAM7SE是Atmel公司的一款基于ARM7内核的处理器[5]。在本系统中,其作为MCU,完成对W5100一侧的读写访问,并完成对终端一侧的数据转发。AT91SAM7SE具有丰富的通用I/O管脚,能保证整个系统的灵活性。AT91SAM7SE使用 55.296 MHz作为主时钟MCK、处理器时钟PCK。
3 硬件设计与接口时序
3.1 硬件设计

W5100与AT91SAM7SE在硬件设计中采用直接总线连接模式,可以同时兼容间接总线连接模式。这样设计是为了能够在连续访问发送存储器、接收存储器时工作于间接总线模式,使用W5100的地址自增功能;并且在非连续访问时工作于直接总线模式,减少读写时序,以提高传输速率。
AT91SAM7SE与W5100之间的接口、AT91SAM7SE与终端之间的接口以及硬件设计的总体框图如图1所示。

3.2 AT91SAM7SE与W5100间接口时序
当AT91SAM7SE在/RESET线上输出低电平2 ?滋s及以上时,W5100被复位,其公共寄存器、各端口寄存器都恢复初始值。本设计中/CS始终同步于/WR和/RD选中W5100。/WR、/RD与DATA[7:0]、ADDR[14:2]、ADDR[1:0]构成读写时序,完成对W5100片内寄存器、存储器的访问,/WR与/RD同时只能有一个有效。W5100可以工作于两种总线模式下。
3.2.1 间接总线模式
当AT91SAM7SE连续访问W5100发送存储器、接收存储器时,W5100工作在间接总线模式下,其地址线ADDR[14:2]稳定输出0。AT91SAM7SE首先在地址线ADDR[1:0]输出01,选中W5100间接总线模式地址寄存器IDM_AR0;然后在数据线DATA[7:0]输出需要访问的W5100存储器地址高7位AH,接着/WR与/CS输出下降沿将AH写入IDM_AR0;之后AT91SAM7SE再将需要访问的W5100存储器地址低8位AL以同样方式写入间接总线模式地址寄存器IDM_AR1;最后,通过/CS与/WR(或与/RD)连续输出下降沿,连续访问间接总线模式数据寄存器IDM_DR。间接总线模式地址寄存器IDM_AR0与IDM_AR1值的自增以及间接总线模式数据寄存器IDM_DR值的变化同步于/WR或/RD的下降沿。AT91S-
AM7SE在间接总线模式下连续访问W5100的存储器时序如图2、图3所示。

3.2.2 直接总线模式
当AT91SAM7SE访问W5100模式寄存器、端口寄存器时,W5100工作在直接总线模式下,其15 bit地址线ADDR[14:0]直接选中各个寄存器。然后通过/CS与/WR(或与/RD)输出下降沿实现访问。
3.2.3 间接总线模式与直接总线模式对比
访问单一存储器时,使用间接总线模式需要3个总线时序,使用直接总线模式只需要一个总线时序。连续访问存储器时,使用地址自增功能,能够使得访问一个地址平均花费大约一个总线时序。虽然在间接总线模式下使用地址自增功能时,平均访问一个地址仍然不会花费少于一个总线时序,但是在连续访问时,AT91SAM7SE不需要在其通用I/O上准备每一个需要访问的W5100的存储器地址,在连续访问开始后ADDR[1:0]的值是固定为11,因此平均花费在一个总线时序上的指令条数有所减少。所以当AT91SAM7SE配置为W5100工作模式、端口模式来读取和更新端口信息时,使用直接总线模式以减少总线时序次数;当AT91SAM7SE读取、写入TCP数据段数据时,使用间接总线模式以减少总线时序中的平均指令数。
3.3 AT91SAM7SE与终端间接口时序
AT91SAM7SE将从W5100接收存储器中取回的TCP数据段数据先缓存在片内,再转发给终端。考虑到本设计终端具有数据缓冲队列FIFO,所以只使用RESET、CS、BLOCK、WR、DATA[31:0]信号线。当终端具有存储器空间时,还需要使用ADDRESS信号线。根据终端接口的不同,可以对AT91SAM7SE编程,使其生成匹配的接口时序。由于选择了ARM内核的芯片作为MCU完成存储转发功能,所以能够保证编程简便,易于经过少量修改而匹配各种终端的接口时序,使得代码的重用性强。本设计中,RESET输出高电平时清空FIFO;CS实现对终端的片选。当FIFO空时,BLOCK信号无效,指示AT91SAM7SE可以转发数据;当FIFO趋近于满时,终端给出指示信号BLOCK,阻塞AT91SAM7SE,使其停止转发数据。本设计中,AT91SAM7SE在WR的每一次上升沿将TCP数据段中的数据转发到DATA[31:0]。由于AT91SAM7SE编程灵活,通用I/O管脚丰富,故可以重用于对各种终端进行数据传输。
4 软件流程
在本设计中,AT91SAM7SE作为W5100的控制芯片,控制其工作在TCP/IP协议下,并作为服务器模式端SERVER。而客户模式端CLIENT由PC机充当,PC运行Linux操作系统,使用套接字Socket编程。由于PC通过本系统向终端传输大量数据流,这些数据不经过路由,独享信道,所以不会出现路由拥塞而导致分组被丢弃的情况。因此,本设计简化了关于分组超时的检测,使用AT91SAM7SE查询W5100端口状态寄存器Sn_SR及其他端口寄存器的方式来获知通信所处的状态,并使用写端口命令寄存器Sn_CR的方式来控制通信进程。图4描述了PC通过本系统向终端传输数据的流程。

PC上的Socket程序非常简单,只需要调用最基本的文件操作函数与Socket函数就能实现端口连接与文件传输。AT91SAM7SE上程序流程细节如下。
(1)上电,复位:AT91SAM7SE开始执行程序。
(2)芯片初始化:配置AT91SAM7SE时钟模块、PIO模块等。
(3)配置W5100:配置W5100的公共寄存器,设置IP地址、子网掩码、MAC地址等。
(4)配置TCP端口:配置端口寄存器,使端口工作于TCP模式,设置端口号等。
(5)等待建立连接:写端口命令寄存器,使端口处于等待PC发起连接的状态。
(6)监听是否建立连接:轮询端口状态寄存器,循环等待端口与PC建立连接。
(7)监听是否接收到TCP数据段:轮询端口接收数据长度寄存器,循环等待W5100从PC接收到TCP数据段。
(8)检查是否为最末TCP数据段:查询端口状态寄存器,检测当前状态,判断其是否为最末TCP数据段。
(9)缓存TCP数据段中数据:访问接收数据长度寄存器、端口读指针寄存器等,计算数据读取位置等参数,将接收到的TCP数据段数据以1 B为单位缓存在片上。
(10)转发数据:将缓存在AT91SAM7SE片上的数据以4 B为单位向终端FIFO转发。
(11)断开连接,关闭TCP端口:写端口命令寄存器,使端口关闭,断开与PC的连接。
其中步骤(9)需要访问各寄存器,还需要通过间接总线模式数据寄存器连续访问接收存储器。本设计中采用直接总线模式和间接总线模式相配合的方式,完成对TCP数据段数据的读取,步骤如下:
①在直接总线模式下访问各寄存器。
②计算参数,获得TCP数据段数据在接收存储器中的地址。
③切换至间接总线模式,开启地址自增功能。
④连续读取接收寄存器。
⑤切换回直接总线模式。
⑥访问各寄存器,更新配置,继续接收分组。
5 测试
测试中,通过PC向本系统传输文件,再使用FPGA模拟终端FIFO的接口时序,同时将本系统传输至终端的数据输出到逻辑分析仪。对比逻辑分析仪采样信号与原始文件数据可以得出结论,本系统能够实现数据的准确传输。逻辑分析仪采样结果如图5所示。表1记录了传输不同大小文件所用的时间与平均传输速率。兼顾系统的灵活性与性能,MCU工作在55.296 MHz的情况下,平均传输速率能够达到2.7 Mb/s。

本设计使用W5100与AT91SAM7SE实现了一种基于TCP/IP通信协议的数据传输系统。其硬件设计简单,软件编程灵活方便,可以适应不同的终端接口时序。整个系统具有集成度高、重用性强、适应性广的特点。
参考文献
[1] 蒋峰.W5100在远程温度采集系统中的应用[J].化工自动化及仪表,2011,38(2):214-217.
[2] 邹依依,郭灿新,黄成军,等.W5100在DSP远程以太网数据通信系统中的应用[J].工业控制计算机,2008,21(8):20-21,23.
[3] 王炳义,刘爽,张伟,等.基于硬件协议栈W5100的图像采集传输系统[J].电子技术应用,2009,35(3):92-93,96.
[4] WIZnet Co.,Inc.W5100 datasheet version 1.2.4[Z].2011.
[5] Atmel.AT91SAM ARM-based Flash MCU SAM7SE version 6222F[Z].2011.

此内容为AET网站原创,未经授权禁止转载。
Baidu
map