如何使用网络单片机W7100A实现TCP通信

发布者:本人在最新更新时间:2015-09-30 来源: eefocus关键字:网络单片机  W7100A  TCP通信 手机看文章 扫描二维码
随时随地手机看文章
今天给大家介绍的是以太网控制网络单片机W7100A的应用笔记之如何实现TCP通信。

TCP(传输控制协议)是用于控制网络间数据通信的协议。作为组成互联网的主要协议之一,更多的详细内容已经写入IETF(互联网工程任务组)的RFC 793中。TCP是运行于IP层上的协议,它保证了数据的有效传输并且可以按照数据的发送顺序依次进行接收。

因为W7100A单片机支持传输层的TCP协议,所以用户不需要做任何整合就可以直接使用TCP/IP协议。

下面一一给大家做阐述。

    TCP SOCKET

用户可以在W7100A提供的所有8个SOCKET中使用TCP协议,但是必须首先创建要使用的SOCKET。在创建SOCKET时,需要用到SOCKET号、协议、端口号以及标志位。这篇文档将会介绍什么是TCP协议,以及在使用TCP协议时如何将Sn_MR(TCPIP核心中的SOCKET n模式寄存器)设置为Sn_MR_TCP(0×01)。SOCKET号表示用户可以选择从0到7这8个SOCKET中的任意一个使用。端口号表示TCP协议下用户指定使用的端口。如果上面需要的这些都已经设定好,那么socket()函数就可以自行分配创建一个SOCKET。

 

由于W7100A单片机的TCP协议支持服务器模式和客户端模式,用户可以任意选择一个模式实现此应用。服务器模式和客户端模式的不同见下图:

<图1.1>    TCP 服务器和TCP 客户端

如图1.1所示,TCP服务器模式和客户端模式的过程大致相同。唯一的区别在于打开SOCKET之后,SOCKET状态是监听还是连接。当TCP协议在服务器模式下运行时,服务器处于监听状态等待来自客户端的连接请求。如果TCP协议运行于客户端模式下,客户端将会在连接状态下请求连接服务器。一旦成功建立连接,SOCKET的状态将会变成建立(SOCK_ESTABLISHED,0×17)。SOCKET在点对点建立连接之后仍然可以保持连接状态,从而进行数据交换直到SOCKET关闭。

服务器模式下的SOCKET循环周期是由打开、监听、发送、接收、断开和关闭组成。客户端模式的SOCKET循环周期则是由打开、连接、发送、接收、断开和关闭组成。

 

1.1         打开(OPEN)

  无论是在服务器模式或是客户端模式下,在创建SOCKET时第一步都是打开SOCKET。利用SOCKET()函数设置SOCKET号、协议、端口号以及标志位来创建一个SOCKETn(取第n-1个SOCKET值)。由于使用的是TCP协议,需要将协议设置为Sn_MR_TCP(0×01)。而端口号的设置则取决于是在服务器模式还是客户端模式下。如果是在服务器模式下,服务器会根据当前用户所使用的端口来设置源端口号。但是如果是在客户端模式下,因为目的端口号正在被使用,最好随机选择一个端口号,并每次增加一个数字,直到SOCKET被连接为止。TCP协议的标志位表示‘无延时确认标志位’,一般来说,将该位设置为0。更多关于协议类型、标志位等信息,将会在‘TCPIPCore.h’文件下的‘Sn_MR value’中介绍。

在所有的设置完成之后,通过检查Sn_SR(n)寄存器来查看SOCKETn的状态是否变成SOCK_INIT(0×13)。用户可以通过getSn_SR(SOCKETn)函数来完成Sn_SR(N)寄存器的检查过程。如果SOCKET的状态为SOCK_INIT(0×13),表示SOCKET创建成功;如果没有成功,用户需要重新创建SOCKET。

例1.1 打开SOCKET

 

1.2         监听(LISTEN)

  监听过程只能在服务器模式下使用。在SOCKETn创建完成后,为了能与客户端连接,需要将SOCKET的状态从SOCK_INIT(0×13)变成监听。用户可以直接将Sn_CR(n)寄存器设置为Sn_CR_LISTEN(0×02)或者可以直接使用’SOCKET.c’文件中的LISTEN()函数。在变成监听状态之后,SOCKET将会改变为SOCK_LISTEN(0×14)。然后,SOCKET等待客户端发出连接请求。一旦与客户端建立连接,SOCKET的状态将会重新变成SOCK_ESTABLISHED(0×17)。此时,便可以与客户端之间进行数据传输。

例 1.2 设置监听状态

1.3         连接(CONNECT)

  连接过程发生在客户端模式连接到服务器时。在连接SOCKET时需要用到SOCKET号、目的IP以及目的端口号这些参数。用户可以通过CONNECT()函数进行设置;一旦成功建立连接,SOCKET的状态将会变成SOCK_ESTABLISHED(0×17)。

例 1.3 设置连接状态

1.4         发送(SEND)

  在使用TCP协议时,与对端的连接在发送数据前就已经完成。用户可以通过SEND()函数查看设置的SOCKET号、将要发送数据的地址、数据的大小等参数。将要发送的数据的地址通常由选择的区域确定,输入数据,并且通过指针设定区域。

例1.4 发送数据

1.5         接收(RECEIVE)

  接收过程和发送过程基本相同,唯一不同的是接收(RECEIVE)过程需要检查的是Sn_RX_RSR(n)。接收过程是指将来自接收缓存器的数据移动到用户数据存储区。因此,用户必须在接收之前检查Sn_RX_RSR(n)的值是否大于0。如果大于0,表示数据已经保存在接收缓存器中。用户必须通过getSn_RX_RSR(n)函数在此过程之前确认数据是否被接收。

例1.5 接收数据

1.6        断开(DISCONNECT)

  关闭SOCKET的方法通常有两种:第一种方法是通过DISCONNECT(n)函数。DISCONNECT(n)函数不能用来直接关闭SOCKET。它先向对端发送断开连接请求(FIN数据包),然后等待回复信息(FIN/ACK数据包),之后才能将SOCKET的状态变成SOCK_CLOSED(0×00),最后关闭SOCKET。当收到断开连接请求时,W7100A发送一个FIN/ACK数据包表示允许对端关闭SOCKET。如果在发送断开连接请求之后没有收到对端的回复,将会发生TCP超时,SOCKET的状态将会变成SOCKET_CLOSED(0×00)。当用户需要断开连接时,通过DISCONNECT()函数,选择合适的SOCKET号,然后发送断开连接请求。[page]

例1.6 设置断开连接

1.7         关闭(CLOSE)

和断开的过程不同,关闭过程可以直接将SOCKET变成SOCK_CLOSED(0×00)。用户通过

CLOSE(n)函数选择合适的端口号,然后无论对端有没有做出响应都将关闭SOCKET。如果RST数据包来自对端,SOCKET将会无条件变成SOCK_CLOSED(0×00)。一旦SOCKET变成为SOCK_CLOSED(0X00), SOCKET将不再可用除非重新打开它。

例1.7 设置关闭

 

2     TCP回路测试(LOOPBACK)

2.1         服务器模式

  TCP回路测试可以通过回送来自于对端的数据从而检测TCP协议的性能。这一章节将会介绍服务器模式下回路测试的例子。程序范例如下:

例2.1 设置回路测试(LOOPBACK)服务器

如上面的例子所示,在SOCKET循环周期内除了connect()函数,其他所有函数都可以使用。首先利用getSn_SR(s)函数检测SOCKET状态,在W7100A复位后,所有的SOCKET全都变成SOCK_CLOSED(0×00)状态。然后利用close()函数完全关闭SOCKET,再通过socket(s,Sn_MR_TCP,port,0×00)函数来创建一个新的SOCKET。如果SOCKET创建成功,状态将会变成SOCK_INIT,再通过listen(s)函数将SOCKET的状态变成监听。一旦与对端建立连接,SOCKET的状态将变成SOCK_ESTABLISHED,并且等待数据。所有接收到的数据都保存在接收缓存器中,recv(s,data_buf,len)函数中的data_buf变量定义为接收到的数据的长度。最后再通过send(s,data,len)函数将数据回送到客户端。客户端会比较数据交换前后的差异来检测数据通信是否正常。

 

2.2         客户端模式

  本章节将会介绍客户端模式下回路测试的例子。程序范例如下:

例2.2 设置回路测试(LOOPBACK)客户端

TCP客户端的程序例子和TCP服务器的例子基本相同。唯一的区别在于SOCK_INIT状态下,是通过connect()函数而不是listen()函数与服务器连接。

3     回路测试服务器演示

这一章将会介绍TCP回路测试程序运行的例子。在下载完成TCP回路测试应用的二进制文件后,运行iMCUW7100单片机内的数据包实现回路测试的演示过程。更多的详细信息,请参阅文档‘如何在W7100A中创建工程’,‘WizISP程序指南’以及‘W7100A Debugger指南’。

对TCP串行回路,用户按照下面的步骤进行设定:

●  确认测试环境。请参考‘iMCU7100EVB用户指南’

直接利用UTP线连接PC机与iMCU7100EVB

直接利用串口线连接PC机与iMCU7100EVB

使能iMCU7100EVB的5V电源适配器

●  添加下面测试PC机的网络信息

- IP地址 : 192.168.1.xxx (‘xxx’ 为用户PC机的IP地址,在客户端模式下此IP地址          也是服务器的IP地址,即我们之前在TCP客户端代码中设置在destip[4]的IP地址)。         在本文档中,IP设置为192.168.1.69,但是用户可以进行修改。

- 网关IP地址 : 192.168.1.1

- 子网掩码 : 255.255.255.0

●  运行超级终端机程序以及AX1程序

3.1         超级终端机程序

<图3.1>    超级终端机程序选项

在超级终端机程序行完成之后,如图4.1设置串行通信的选项。超级终端机程序将会显示串行通信时iMCU7100EVB的运行状态。

 

3.2         AX1 设置

想了解更多关于AX1程序的信息,请参考AX1用户手册。

3.2.1    TCP服务器模式下的iMCU7100EVB

  当iMCU7100EVB运行于服务器模式时,PC作为TCP客户端利用AX1程序连接到iMCU7100EVB。在AX1程序中,选择TCP => CONNECT 菜单来实现与iMCU7100EVB的连接,此时对端的IP地址为192.168.1.2,端口号为5000。

一旦连接成功,如图4.2选择TCP => SEND 菜单发送数据。因为此时iMCU7100EVB作为服务器,AX1程序窗口将会显示客户端的状态。[page]

<图3.2> AX1 发送数据

3.2.2    TCP客户端模式下的iMCU7100EVB

  当iMCUW7100EVB运行于客户端模式下时,PC机作为TCP服务器使用AX1程序将iMCU7100EVB连接到服务器端口。如果在AX1程序中打开的服务器端口号是5000(监听状态),iMCU7100EVB将会连接到服务器IP地址以及服务器端口(192.168.1.xxx,5000)。需要注意的是IP地址必须是打开AX1程序的PC机上的IP地址。

一旦连接成功,选择TCP =>SEND菜单, 然后发送数据,如图4.2。因为iMCU7100EVB作为客户端,AX1程序窗口将会显示服务器的状态。

<图3.3> AX1监听

3.3         TCP回路测试结果

3.3.1    TCP服务器结果

  在设置完成TCP服务器之后,点击TCP发送。然后AX1程序将会显示PC机客户端的处理进程。如图4.4所示,图中显示了发送/接收的数据大小,而超级终端机程序将会显示iMCU7100EVB服务器的处理情况。

<图3.4> TCP服务器的结果

3.3.2    TCP客户端结果

  在TCP客户端所有的设置完成后,点击TCP发送。AX1将会显示PC机服务器的处理情况。如图4.5所示,图中显示了发送/接收数据的大小,而超级终端机程序将会显示iMCU7100EVB客户端的处理情况。

<图3.5> TCP客户端结果

关键字:网络单片机  W7100A  TCP通信 引用地址:如何使用网络单片机W7100A实现TCP通信

上一篇:单片机以太网嵌入式控制芯片--MCU-W7100A数据手册
下一篇:单片式以太网控制芯片W7100A / W7100 Debugger指南(一)

推荐阅读最新更新时间:2024-03-16 14:33

单片机以太网控制芯片W7100A数据手册(四)
昨天讲解了如何通过异步收发以及看门狗定时器&TCP/IP内核,今天继续给大家介绍TCP/IP内核的内容,以及功能描述。 8.3.2 SOCKET寄存器 Sn_MR(SOCKET n模式寄存器) 该寄存器配置SOCKET n的协议或其他选项. Sn_CR (SOCKET n 命令寄存器) 该寄存器用于设置SOCKET n的命令,诸如:打开、连接、监听、发送、接收等操作。当W7100A 确认该命令之后, Sn_CR寄存器自动清零。即使Sn_CR清零,指令仍然在处理中。为了验证命令是否执行完成,可以检查Sn_IR寄存器或Sn_SR寄存器。 下面的命令只用于SOCKET 0且S0_MR(P3:P
[单片机]
<font color='red'>单片机</font>以太网控制芯片<font color='red'>W7100A</font>数据手册(四)
基于单片机网络视频监控系统的设计
本文提出了一种网络化视频监控系统,将单片机控制技术、USB数据采集技术与基于TCP/IP协议栈的计算机网络结构有机结合起来,使人们能够通过监控现场的摄像机和麦克风等视频音频捕捉设备。 将监控现场的信号通过局域网传输,并送到监视器上以获得实时图像和声音,从而实现远程遥视现场。 随着嵌入式系统的飞速发展,在许多领域,以微控制器为中心的应用系统正逐步取代以计算机为中心的应用。因此,对于网络应用系统的研究,越来越多的研究人员将研究重点转移到嵌入式系统上来。基于此背景,本文提出了一种网络化视频监控系统方案,其目标是使人们能够通过监控现场的摄像机和麦克等视频音频捕捉设备,将监控现场的信号通过局域网传输,并送到监视器上以获得当地实时图像和声
[单片机]
基于<font color='red'>单片机</font>的<font color='red'>网络</font>视频监控系统的设计
单片机控制的网络交换机设计与实现
随着计算机性能的提高及通信量的聚增,传统局域网已经越来越超出了自身负荷,交换式以太网技术应运而生,大大提高了局域网的性能。网络交换机能显著的增加带宽,可以建立地理位置相对分散的网络。局域网交换机的每个端口可并行、安全、实时传输信息,而且性能稳定、结构灵活、易于安装、便于管理,能很好地满足企业网和电信运营商宽带接入的需求。 1 网络交换机的硬件设计 随着人们对网络应用中的安全性和高带宽的需求,网络交换机的用途越来越广。本交换机采用了AL101芯片的ROX总线,将3个8口交换芯片连接起来,组成了1个24端口交换机,满足了用户对多交换端口的需求。 1.1 电路性能要求 交换机的高速PCB电路板,在EMC和ESD上都有比
[单片机]
无线网络兴起 台湾MCU供应商掌握新商机
由于具有体积小、可置于仪表内部、内存容量小、输入输出接口简单等特点,微控制器(MCU)产品应用相当多元且范围广泛,通讯、汽车、消费电子与工业控制等领域皆可见其身影。据iSuppli预测,2012年全球微控制器市场将从2007年的24亿美元增长到36亿美元。 与国际微控制器大厂多提供全产品系列,以满足各种应用需求不同,台湾地区微控制器供应商多针对特定应用进行开发。整体而言,近年来随着消费电子市场的普及,台湾地区微控制器供应商多将重心放在消费性市场上,然而,相较于消费性市场需求的瞬息万变,较稳定的工业控制应用亦是供应商竞相追逐的商机。 工业控制应用要求严苛,供应商强化MCU性能 例如盛群半导体在工业应用方面的微控制器发展上便颇有
[单片机]
一个关于小程序与单片机通信实例(TCP/IP)
前言 这是一个18年初的创业项目的核心功能要求,我们当时打算做一个共享类的项目,项目的主题是共享图书,线下的形式租借图书,我们当时是考虑做一个借书柜的形式,然后线下生产投放借书柜,这些借书柜本身能存放24本书,大约24个柜子,且均有单片机控制。 用户通过扫码借书柜上的二维码,可以直接看到共享小程序里面的,针对这个借书柜的当前存在的图书,如果有用户喜欢的图书,那么用户可以直接点击小程序选择借书,那么这是小程序需要向后台发起API请求,由后台针对对应的借书柜的单片机进行通信,下发指令要求单片机打开对应该书的柜子。 大致步骤 后台构建 我选择用netty,当时使用的SSM的后台系统,不过最近一次整理我采用了SpringBoot
[单片机]
一个关于小程序与<font color='red'>单片机</font>的<font color='red'>通信</font>实例(<font color='red'>TCP</font>/IP)
基于TCP/IP的多线程通信及其在远程监控系统中的应用
      摘 要: 提出了一种在Windows NT下基于TCP/IP协议的多线程通信的设计与实现方法,在此基础上给出了多线程通信在蓄电池远程监控系统中的应用实例。       关键词: 多线程 实时性 TCP/IP协议 远程监控系统        传统的应用程序都是单线程的,即在程序运行期间,由单个线程独占CPU的控制权,负责执行所有任务。在这种情况下,程序在执行一些比较费时的任务时,就无法及时响应用户的操作,影响了应用程序的实时性能。在监控系统,特别是远程监控系统中,应用程序往往不但要及时把监控对象的最新信息反馈给监视客户(通过图形显示),还要处理本地机与远程机之间的通信以及对控制对象的实时控
[应用]
基于MSP430F1 49单片机网络控制系统温控系统设计
文中将嵌入式控制技术与网络控制技术相结合,实现了基于单片机通过因特网的控制实现温控系统的设计,文中所采用的是MSP430F1 49单片机作为控制核心,MSP430F149微控制器控制以太网控制器CS8900A实现本地局域网的功能,通过TCP协议提供与因特网进行连接,可以实现对温箱的温度进行实时有效地控制。系统体积小巧,具备温度采集和远程控制功能和良好的可扩展性。 网络控制系统(NCSs)已经成为学术和工业领域的主要研究中心之一,随着日益增加的研究趋势和研究需要,能够成功应用最新的知识和信息则显得格外的重要。随着社会发展的需求,人们对温箱的应用和需求越来越广泛,在工业生产和日常生活或科学实验中,我们随处都可以看到温箱的应用。本文
[单片机]
基于MSP430F1 49<font color='red'>单片机</font>的<font color='red'>网络</font>控制系统温控系统设计
基于单片机网络控制实现温控系统的设计
网络控制系统(NCSs)已经成为学术和工业领域的主要研究中心之一,随着日益增加的研究趋势和研究需要,能够成功应用最新的知识和信息则显得格外的重要。随着社会发展的需求,人们对温箱的应用和需求越来越广泛,在工业生产和日常生活或科学实验中,我们随处都可以看到温箱的应用。本文是将嵌入式技术和网络控制技术结合起来实现了基于网络控制系统的嵌入式温箱控制系统的设计。网络控制系统就是通过控制系统元件(传感器、控制器、执行器等),使用共享的网络而实现信息(标准输入和输出、控制输入等)的交换。通过TCP协议将嵌入式系统采集到的温度信息发送到网络化控制与协调系统和网络监测系统并进行计算和判断后控制和协调单片机的行为。网络化检测系统通过以太网发布对单片
[单片机]
基于<font color='red'>单片机</font>的<font color='red'>网络</font>控制实现温控系统的设计
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved