




已阅读5页,还剩9页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
How to implement Serial to Ethernet communication using W7100A如何用W7100A实现串口转以太网版本1.0 2011 WIZnet Co., Inc. All Rights Reserved.更多信息,请登录我们的官方网站 http:/www.wiznet.co.kr目录1简介32串口转以太网的基本结构33串口转以太网演示34串口转以太网代码64.1TCP服务器模式74.1.1打开(OPEN)74.1.2监听(LISTEN)74.1.3RS232 参数初始化84.1.4串行中断处理84.1.5TCP转串口94.1.6串口转TCP94.1.7断开连接(DISCONNECT)104.1.8关闭(CLOSE)104.2TCP客户端模式114.2.1连接(CONNECT)114.3UDP模式114.3.1打开(OPEN)114.3.2UDP转串口114.3.3串口转UDP121 简介很长时间以来,RS232在通信领域一直用来作为DTE(Data Terminal Equipment)和DCE(Data Circuit-terminating Equipment)之间的连接器。自从PC机问世,RS232就成为串行通信的标准。串行通信现在仍然被广泛使用。随着因特网的迅速发展,TCP/IP协议成为应用最多的通信协议。近来由于因特网环境的不断成长,人们对于因特网和串行通信设备之间的通信连接也有了更高要求。如果以太网和RS232连接成功,人们就能够通过以太网控制串行设备。与此同时,各种串行设备可以有效的与以太网通信.在这篇文档中,我们将使用iMCU7100EVB来实现串口转以太网的功能,同时介绍了一些工具的简单应用方法。2 串口转以太网的基本结构W7100A图Error! No text of specified style in document.1利用W7100A实现的串口转以太网转换器iMCU7100EVB可以不需要额外的设备就能实现串口转以太网转换器,这是因为iMCU7100EVB中分别含有一个RJ45、RS232以及一个W7100A芯片。这篇文档中,使用串口转以太网函数在串行设备和以太网设备之间发送/接收信息更多关于串口的相关信息,请参阅如何使用W7100A的UART。同时,关于以太网的详细信息,请参阅如何实现W7100A的TCP和如何实现W7100A的UDP。3 串口转以太网演示本章节将演示具有TCP服务器功能的 串口转以太网。iMCU7100EVB在演示中作为一个具有串行接口的TCP服务器。设备终端机(device terminal) 为串口转以太网 演示程序;设备终端机(device terminal)程序具有串行接口和以太网接口,并且两者可以被同时测试到。用户可以通过WIZnet的主页下载设备终端机(device terminal)程序,点击 Library =Download Center。首先,使用以太网网线和串口线连接iMCU7100EVB与PC机,PC机作为以太网设备又作为串行设备来进行工作。如果想了解更多的详细信息,请参考iMCUW7100EVB用户指南。在iMCUW7100EVB连接到PC之后,开启iMCUW7100EVB的电源。利用W7100 debugger程序或者WizISP程序下载附件serial to Ethernet.HEX file到iMCUW7100EVB。请参照iMCU7100A Debugger指南和W7100A的WizISP程序用户指南中的说明。如图3.1,(a)是iMCU7100A Debugger程序,(b)是WizISP程序。 (a) W7100A 调试器程序 (b) WizISP串口配置串行端口COM2波特率230400数据位8 bit停止位1奇偶校验None流量控制None网络配置服务器模式UncheckedIP地址端口5000图Error! No text of specified style in document.2 W7100A Debugger程序和WizISP程序图Error! No text of specified style in document.3设备终端机(device terminal)设置在iMCU7100EVB板上烧录HEX文件后,打开设备终端机(device terminal)程序,(复位开发板)。如图3.3所示,配置设备终端机(device terminal)的参数。需要注意的是,串口号需要根据用户PC机的实际串口号来配置。在该演示中iMCU7100EVB串行波特率的值为230400,所以这里也应该将Device Terminal的波特率设定为230400。如果用户修改过与波特率相关的程序代码,请使用修改之后的波特率。具体关于波特率的信息请参照如何使用W7100A的串行接口文档。下面进行网络配置。首先,将Server Mode未选定状态,但是当iMCU7100EVB作为TCP客户端,PC机作为TCP服务器工作时,选定该选项。根据iMCU7100EVB的所配置IP地址,其为。IP地址的改变也可以通过代码来实现,在设备终端机(device terminal)程序中使用修改之后的IP地址。默认的端口号为5000。在设备终端机(device terminal)程序中所有的配置都完成之后,点击串行通信窗口中的OPEN以及网络通信窗口中的CONNECT,实现与开发板的连接过程。复位开发板,如果连接成功,将会在串行以及网络信息窗口中出现提示信息,之后点击 SEND,或者是利用回车键来检测串口转以太网是否能通信。图2.4指示了这一过程。在串行信息窗口中键入任意信息,点击SEND或者是回车。然后以太网对话窗口将会出现之前键入的信息。同样的过程也会在串行对话窗口中出现。图 Error! No text of specified style in document.4设备终端机(device terminal)下的串口转以太网聊天测试可以利用设备终端发送任意文档信息;点击File send,文档打开窗口将会出现。发送的文档将会保存在设备终端机(device terminal)的文件夹下。但是,如果文档是通过以太网发送的,文档的内容就会显示在串行对话窗口。这是因为TCP的传输速度要比串行传输速度快,而串行文档的传输速度由串行波特率决定。原始文件通过设备终端机接收的文件图Error! No text of specified style in document.5 利用设备终端机(device terminal)程序发送串口转以太网文档4 串口转以太网代码在这一节,我们将会检查串口转以太网中已载入的代码。代码的执行有三种方式:TCP服务器,TCP客户端,UDP。所有的代码按照下面章节中的讲述。想了解更多关于TCP和UDP的细节,请参考如何实现W7100A的TCP,如何实现W7100A的UDP,以及W7100A数据手册。4.1 TCP服务器模式TCP服务器中的监听(LISTEN)状态表示服务器等待客户端的连接请求。客户端将会请求在连接(CONNECT)状态下与TCP服务器进行连接。如果服务器和客户端建立连接,SOCKET就会进入建立(ESTABLISH)状态(SOCK_ESTABLISHED;由WIZnet定义的)。在此状态下,可以进行数据发送/接收直到SOCKET关闭为止。TCP服务器模式下SOCKET的循环周期由打开(OPEN)、监听(LISTEN)、发送(SEND)、接收(RECEIVE)、断开(DISCONNECT)、关闭(CLOSE)这六种状态组成。每一个状态下所对应的程序将会在后面的章节介绍。W7100A驱动支持socket()、listen()、recv()、send()、disconnect()、close()这些函数。想了解更多详细信息,请参考W7100ATCPIPCore驱动指南。4.1.1 打开(OPEN)s = 0; / 设置SOCKET 0 (由 0 to 7)socket(s, Sn_MR_TCP, port, mode); / 打开SOCKET 0 while(getSn_SR(s) != SOCK_INIT);程序Error! No text of specified style in document.1 打开SOCKET打开(OPEN)状态是表示SOCKET已创建了,而SOCKET由socket()函数创建。SOCKET号、协议、端口号以及标志位这些参数是需要在socket()函数中输入的;SOCKET号取07之间的值,而协议需要输入Sn_MR_TCP(0x01),端口号则取将要用来与客户端进行通信的端口号,标志位设置为0表示无延时Ack标志。在所有的设置完成后,调用socket()函数。检测Sn_SR()寄存器是否已经变成SOCK_INIT(0x13),该寄存器可以指示socket的状态。Sn_SR的值可以利用getSn_SR()函数直接读出。如果SOCKET “n”没有变成SOCK_INIT(0x13),则表示创建SOCKET失败。这种情况下,需要再次调用socket()函数重新创建SOCKET。4.1.2 监听(LISTEN)s = 0; / 设置SOCKET 0listen(s); / 将SOCKET 0的状态改成监听(LISTEN)状态程序Error! No text of specified style in document.2 监听(LISTEN)状态SOCKET被创建后,为了能够与客户端建立连接,SOCKET需要处于监听(LISTEN)状态下。通常有两种方法将SOCKET的状态从SOCK_INIT(0x13)变为SOCK_LISTEN(0x14):一种方法是对用户来说的,可以执行Sn_CR()寄存器中的Sn_CR_LISTEN(0x02);另一种方法是调用listen()函数。通过这两种方法都可以直接改变SOCKET的状态。在监听(LISTEN)状态下,TCP服务器等待客户端的连接请求。当服务器与客户端建立连接时,SOCKET的状态将变成SOCK_ESTABLISHED(0x17)。这时,TCP服务器就可以与客户端进行数据交换。4.1.3 RS232参数初始化/* 配置定时器(TIMER)来产生波待率 */ET1 = 0;/* 禁止TIMER1中断 */TMOD = 0x20; /* 选择TIMER2 */PCON |= 0x80;/* SMOD = 1 */TH1 = 0xFC;/*在88.4736MHZ频率下 X2 115200(SMOD=1) */TR1 = 1; /*启动TIMER1 */SCON = 0x52;/*串行模式1, REN=1, TI=1, RI=0 */* 中断设置 */RI = 0; /* 清除UART的接收中断标志位*/TI = 0; /* 清除UART的传输中断标志位*/ES = 1; /* 允许串行中断 */程序Error! No text of specified style in document.3 RS232初始化TCP服务器初始化完成后,用户应该将在W7100A串行通信中的定时器(TIMER)相关寄存器也进行初始化设置,如上4.3代码段中所示。想了解更多的相关信息,请参考如何在W7100A中使用UART。4.1.4 串行中断处理if(RI)/检测接收中断标志位 /s_buf :串行缓存器s_bufs_write_ptr = SBUF;/从串行缓存器向uart接收缓存器中写入数据s_write_ptr+;/写指针加1/检测写指针是否大于串行缓存器的最大存储空间if(s_write_ptr = MAX_SBUF_SIZE) s_write_ptr = 0;if(s_write_ptr = s_read_ptr) overflow = 1; /缓存器溢出检测elseif(s_write_ptr = s_read_ptr) overflow = 1; /缓存器溢出检测RI = 0; /禁止接收中断标志位程序Error! No text of specified style in document.4 串行中断处理在串行初始化代码中允许串行中断时,当发送或者接收信息时串行中断就会发生。因此,需要输入处理串行中断的代码程序。如代码段4.4所示保存串行缓存数据的一段程序。如果缓存器溢出,就需要对串行缓存器进行控制。4.1.5 TCP转串口if(e_len = getSn_RX_RSR(s) 0) /检测接收数据 / e_len 为接收到的以太网数据的长度, e_buf 为以太网接收缓存器if(e_len MAX_EBUF_SIZE) e_len = MAX_EBUF_SIZE; /检测以太网缓存器的大小s_len = recv(s, e_buf, e_len);/接收以太网数据for(i=0; i tmp_read)length = tmp_write - tmp_read; /计算要读取的数据长度send(s, &s_buftmp_read, length);elselength = (MAX_SBUF_SIZE - tmp_read) + tmp_write; /计算要读取的数据的长度send(s, &s_buftmp_read, MAX_SBUF_SIZE - tmp_read);send(s, &s_buf0, tmp_write);s_read_ptr += length; /更新读指针/检测读指针是否比串行缓存器的空间大if(s_read_ptr = MAX_SBUF_SIZE) s_read_ptr -= MAX_SBUF_SIZE;return length; /返回读数据的长度程序Error! No text of specified style in document.6串行中断处理RS232到TCP的转换的基本概念与上面提到的TCP到RS232 的概念大致相同。当串行数据接收时,根据中断服务路径将数据保存到临时缓存中,并且利用SEND()函数将数据发送到TCP服务器。在此过程中,需要注意中断服务路径缓存器溢出的时间。根据代码段2.2.3,当中断溢出发生时,将立即发送所有接收到的数据。一旦转换完成,即没有数据需要发送/接收,TCP连接就会被终止。可以利用disconnect()函数或者close()函数来结束连接过程。4.1.7 断开连接(DISCONNECT)s = 0; / 设置SOCKET 0disconnect(s); 程序Error! No text of specified style in document.7 断开连接(DISCONNECT)disconnect()函数发送断开请求(FIN 数据包),并且等待断开回复(FIN/ACK 数据包)。当使用disconnect()函数时,SOCKET的状态变成SOCK_CLOSED(0x00),然后关闭SOCKET。当断开请求到达时,W7100A创建FIN/ACK数据包,以便其他用户可以关闭SOCKET。如果发送断开请求后,在一段时间内没有回复,将会发生TCP超时,SOCKET的状态将会变为SOCK_CLOSED(0x00)。4.1.8 关闭(CLOSE)s = 0; / 设置SOCKET 0close(s); 程序Error! No text of specified style in document.8 关闭(CLOSE)和disconnect()函数不同,close()函数将socket的状态立即变成SOCK_CLOSED(0x00)。用户也能够马上断开和其他用户的连接。如果RST数据包被其他用户接收到,socket的状态将会变成SOCK_CLOSED(0x00)。想了解更多RST数据包的详细信息,请参考W7100A数据手册。一旦socket的状态已经改变为SOCK_CLOSED(0X00),如果要重新使用需要再次打开。4.2 TCP客户端模式4.2.1 连接(CONNECT)在TCP客户端模式下实现串口转以太网的程序和TCP服务器模式下基本相同,除了监听(LISTEN)这一步。因为客户端需要与服务器连接,将会使用socket号,目标IP,目的端口号是必须提供的。如果利用connect()函数完成设置,就能成功建立与服务器的连接,socket的状态将会变成SOCK_ESTABLISHED(0x17),此时允许数据的传输。s = 0; /设置SOCKET 0serverip4 = 192, 168, 1, 2; /设置服务器(目的) IPserverport = 5000; /设置服务器(目的)端口connect(s, serverip, serverport);程序Error! No text of specified style in document.9 连接(CONNECT)除了连接过程外所有的程序都与TCP客户端这一章节的程序相同,具体的程序请参照4.1节。4.3 UDP模式因为UDP不需要连接,所以监听,连接,断开连接,关闭这些过程就不再需要。当使用UDP执行串口转以太网时,只需要下面的过程:打开socket,UDP到RS232的转换,RS2323到UDP的转换。4.3.1 打开(OPEN)s = 0; /设置SOCKET 0 (从 0 到 7)socket(s, Sn_MR_UDP, port, mode); /打开SOCKET 0 while(getSn_SR(s) != SOCK_INIT);程序Error! No text of specified style in document.10打开SOCKET打开SOCKET的基本程序与程序4.1相同。唯一的区别就是在协议参数中要输入Sn_MR_UDP,而不再是Sn_MR_TCP。更多的信息,请参考4.1节。4.3.2 UDP转串口if(e_len = getSn_RX_RSR(s) 0) /检测接收数据 / e_len为接收到的以太网数据的长度; e_buf 为以太网接收缓存器if(e_len MAX_EBUF_SIZE) e_len = MAX_EBUF_SIZE; /检测最大以太网缓存器的空间大小s_len = recvfrom(s, e_buf, e_len, (uint8 *)destIP, &destport);/接收以太网数据for(i=0; i tmp_read)length = tmp_write - tmp_read; /计算要读取的数据的长度sendto(s, (uint8*)&s_buftmp_read, length, (uint8*)destIP, destpor
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 福建南平2024~2025学年高一下册期末数学试题学生卷
- 福建福州第十五中学2024~2025学年高一下册期末考试数学试题
- 2024~2025学年云南昆明寻甸回族彝族自治县七年级下册4月期中数学试题
- 2024~2025学年河北保定定州七年级下册4月期中数学试题【带答案】
- 云母在涂料中的耐温性考核试卷
- 中药材种植保险与农业保险创新考核试卷
- 危险化学品安全教育与培训制度考核试卷
- 大数据在保险产品中的应用考核试卷
- 光子雷达系统数据处理并行计算技术考核试卷
- 2025年中国PVA发泡辊轮数据监测报告
- 艾梅乙反歧视培训课件
- 在线网课学习课堂《人工智能(北理 )》单元测试考核答案
- 放射科入科教育-课件
- 2018年三年级数学下册期末试卷A3(附答题卡、答案)
- 山水林田湖试点铜川市耀州区沮河下游生态保护修复项目环评报告
- 电厂安全红线管理办法范本
- 一升二数学思维训练8 15
- GB/T 3323.1-2019焊缝无损检测射线检测第1部分:X和伽玛射线的胶片技术
- BD每月绩效考核表
- 大局意识方面存在的问题及整改措施范文三篇
- 围手术期呼吸道管理
评论
0/150
提交评论