杭州卓天科技有限公司 郭炎鹏 金理剑 陈国栋
介绍了一种采用DSP总线挂载W5300以太网协议芯片实现工业以太网数据传输的软硬件设计及优化方法。该设计实现了TCP/IP协议数据高性能、高稳定性传输,并在项目工程实践中得到广泛应用。
工业以太网技术是目前工业领域最广泛的网络数据传输技术,能满足工业应用中的高稳定、高效率、低时延、低成本、远距传输、智能化、易集成等多种需求。根据其技术应用特点,在工业生产过程的控制及管理领域得到广泛应用。工业以太网解决方案目前有三种:(1)采用中央处理器单元(Central Processing Unit,CPU)与物理层接口芯片连接,在控制器内编写以太网(Ethernet)通信协议。此种方法需要耗费大量的时间精力去编写繁杂协议程序及进行后期调试,网络协议比较庞大和复杂,程序稳定性往往会出现问题,对快速开发系统与可靠运行是不利的。(2)在嵌入式系统上运行Linux操作系统,因操作系统自带TCP/IP等复杂的通信协议,可方便实现以太网通信,但该方法需对操作系统比较熟悉,移植难度大、专业性强、开发周期长。(3)将网络协议芯片独立于系统处理器CPU之外,只需要系统处理器CPU对网络协议芯片进行总线访问,实现寄存器读写就可以进行以太网传输通信,此方式采用硬件模块化替代软件开发,分担处理器CPU负担,系统硬件简单,软件稳定,开发周期短,利于后期维护升级。因此,本文基于第三种工业以太网解决方案,设计了一种采用DSP TMS32F28335总线挂载外设W5300以太网协议芯片实现TCP/IP网络数据传输,并重点对硬件连接和软件可靠性设计进行研究和优化。
W5300是韩国WIZnet公司设计的一款0.18μm CMOS专用网络协议芯片器件,内部已经集成了TCP/IP协议栈、10/10OM以太网控制器、MAC和PHY。W5300与主机采用总线连接,支持8位/16位的数据总线。它支持8路独立的Socket通信,内部含128KB的发送/接收缓冲区进行快速数据交换,最大有效通信速率可达70Mbps[1]。使用W5300不需要主机干预,内部自己处理所有以太网底层通信协议,只需要对端口(Socket)进行配置和编程。W5300内部设置了三种寄存器,包括模式寄存器(MR)、通用寄存器(COMMON)和端口寄存器(SOCKET)。模式寄存器可设置接口模式和总线宽度;配置寄存器设置中断寄存器、硬件地址、网关地址、本机IP地址和传输存储器大小;端口寄存器可实现数据的接收和发送及访问端口的发送/接收缓冲寄存器。该芯片集成了各种通信协议进行硬件逻辑化处理,可实现简单、快捷、稳定的Internet连接,大大提高了网络传输开发效率,广泛应用于高性能、低成本工业以太网网络传输领域。
DSP TMS320F28335为主处理器CPU,通过地址线和数据线与W5300相连。在直接地址模式下,主处理器F28335将W5300内模式寄存器(MR)、通用寄存器(COMMON)和端口寄存器(SOCKET)映射到存储空间,直接访问W5300的上述寄存器。这些寄存器从主机系统的基地址开始以2字节递增方式连续映射在主机存储器空间。使用映射地址,只需0x400字节的存储器空间。
本设计W5300片选信号接F28335的ZONE6区,W5300映射地址占用F28335从0x100000到0x1003FF共2K的地址空间。W5300 10位地址线和16位数据线以及读写信号线直接与F28335连接,不需要电平转换。F28335的GPIO连接W5300的复位信号进行硬件强制复位, W5300的中断信号线接入F28335的外部中断XINTl。W5300的BIT16EN引脚决定数据总线模式:BIT16EN拉高时为16位宽数据总线模式,BIT16EN拉低时为8位宽数据总线模式[2]。本设计采用W5300其他引脚如BIT16EN拉高到3.3V,定义为16位宽数据总线模式;TEST_MODE[3∶0]4个引脚接低电平,定义为使用内部PHY模式(正常运行模式);OP_MODE[2∶0]3个引脚均接低电平,定义为全功能自动握手模式。该系统结构图如图1所示。
图1 系统硬件接线Fig.1 System hardware wiring
由系统硬件连接图可看出,该方案硬件电路简单,形式类似于DSP芯片总线挂载外设SRAM,只额外增加了复位和中断两条控制线。
第一步设置W5300初始化。由于W5300不支持上电复位,初始化之前须硬件复位,DSP GPIO引脚/RESET产生一个低电平脉冲,脉冲宽度持续大于2us。复位完成后设置W5300的MR=0x0000,W5300与主机的接口模式为直接总线模式MR(IND)为0;设置IR=0x0000,清所有中断标志;IMR=0x00FF允许8个SOCKETn中断。第二步网络设备初始化。通过SHAR、SIPR、SUBR、GAR、RTR和RCR等寄存器配置本机硬件地址、本机IP地址、子网掩码、网关地址、超时重发及重发次数。第三步分配SOCKETn内部TX/RX存储器空间。通过设置MTYPER=0x00FF,使第1到第8个存储单元为TX,其他8个存储单元为RX。设TMSR=0x0808,RMSR=0x0808,使每个SOCKETn的TX/RX存储器都为8KB。
W5300初始化之后,在TCP模式下,首先根据IP地址和端口号与对端建立连接。建立SOCKETn连接有两种方式:一种是“TCP服务器”模式,等待对端的连接请求当收到连接请求时建立连接(被动打开);另一种是“TCP客户端”模式,主动发出连接请求,与对端建立连接(主动打开)。
一般DSP主控制系统是作为服务器使用,本设计W5300配置为TCP服务器模式,完成主要步骤为:设置侦听端口号,执行端口打开、侦听对端连接请求、连接建立后数据的接收和发送以及主动或被动断开连接请求等。具体步骤如下:
第一步初始化SOCKETn。在TCP服务器模式为实现SOCTKETn的TCP通信:
(1)首先设置Sn_CR为CLOSE,使Sn关闭,Sn_SSR变为SOCK_CLOSED;
(2)设置Sn_MR=0x0001,使SOCTKETn采用TCP协议;
(3)通过Sn_PORTR寄存器设置本机侦听端口号;
(4)设置Sn_CR=OPEN,打开端口。经过延时,若Sn_SSR变为SnCK_INIT,则SOCKETn端口打开初始化完成,否则重复执行(1)~(4)步。
第二步侦听对端连接并建立连接。设置Sn_CR为LISTEN,一直扫描Sn_SSR直至变为ESTABLISHED,否则关闭SOCKET重新进行端口打开并重复侦听过程。直至连接已建立,可以进行数据传输。
第三步接收数据。以中断的方式实现接收数据。
(1)W5300设置允许接收中断,在中断服务程序中扫描Sn_IR为RECV接收数据中断,调用W5300数据接收函数;
(2)执行数据接收函数;首先通过读取Sn_MR寄存器ALIGN标志位计算接收数据的长度。S0_CR执行RECV指令,然后从RX存储器中移出相应长度接收的数据,最后通过解析接收数据执行回复发送命令。
第四步发送数据。执行W5300发送函数。
(1)读取发送缓冲存储器的剩余空间是否够用。首先读取Sn_TX_FSR寄存器大小,判断是否可以发送数据。如果发送的字节数小于等于Sn_TX_FSR,则可以向W5300发送缓冲寄存器中写入数据。
(2)若非首次发送操作,在运行SEND指令前,需查询Sn_IR状态是否为SENDOK,Sn_IR=SENDOK证明上一次数据发送已成功完成,可执行发送SEND指令。如果上一次的发送指令还没有执行完而又开始下一次的发送指令,将会产生错误和故障。
第五步主动或被动断开连接。
当Sn_IR=DISCON接收到对端发来的断开连接中断,则被动执行断开连接的处理,可执行CLOSE或DISCON指令来断开与客户端的连接。若连接请求、数据传输、ARP请求或其响应等数据包超时发送,将产生TIMEOUT中断,W5300主动执行CLOSED或DISCON指令来断开与客户端的连接。在TCP服务器模式下关闭端口后W5300再次打开端口均回到LISTEN状态等待下次连接。
从软件实际测试情况来看,在非正常断网下,有可能出现网络连接一直建立,SOCKET处于OPEN状态没有执行CLOSED的情况,此种情况反复多次出现后,8个端口(Socket)被全部打开,则后续无法建立新的SOCKET连接,出现网络故障。在软件优化上采用定时检测数据交换情况,一旦某个SOCKET连接长时间无数据交换,W5300可以主动执行CLOSED关闭该端口。释放SOCKET端口,然后重新打开执行LISTEN,建立新的连接,从而避免上述网络故障情况出现。软件经过优化后未出现断网情况,极端情况下也可自己恢复通信功能。
TMS320F28335访问W5300的速率直接决定了W5300通信传输速度。通过对TMS320F28335软件进行优化可以减小对W5300访问时间,提升程序代码执行速率。TMS 320F28335程序代码一般存放在片内FLASH中,如果代码直接在FLASH中执行则程序读写等待周期长,代码执行效率低。但如果代码在片内SARAM中执行,程序读写周期可相对提高5倍速率,大大提高了代码执行效率。因此程序在TMS320F28335上电初始化后立即将代码从FLASH寄存器的搬移至SARAM中执行,采用FLASH流水线功能,这样可以减小访问等待周期,大大这样提升DSP执行代码的效率,提高W5300的通信传输速度[3]。将FLASH程序搬移至SARAM代码如下:
memcpy( &RamAppFuncsRunStart,
&RamAppFuncsLoadStart,
&RamAppFuncsLoadEnd - &RamAppFuncsLoad Start);
本文详细介绍了DSP TMS320F28335挂载W5300以太网协议芯片的软硬件设计及优化方案。该设计方案可实现高性能、低成本工业以太网网络数据传输。经工程验证,系统在TCP/IP协议的数据通信方面具有稳定可靠表现。