单片机TCP/IP开发板

ZLMCU网

摘要: 本文根据作者在使用单片机TCP/IP开发板过程中的经验介绍了单片机TCP/IP开发板的用途、如何选择单片机TCP/IP开发板、如何使用TCP/IP开发板进行新项目的开发。对于需要实现单片机TCP/IP技术的初学者来说有一定的借鉴意义。

关键词: 单片机;TCP/IP;开发板;学习板;单片机上网;

1 引 言

单片机TCP/IP开发板(或称之为单片机TCP/IP学习板)是为提供用户学习单片机TCP/IP协议栈技术,从而设计自己的基于单片机TCP/IP项目而提供的一种开发板。

在当今信息时代,计算机的联网已经慢慢的过渡到了嵌入式设备的联网,联网技术就不得不提到TCP/IP协议栈,这就需要在嵌入式设备上实现嵌入式TCP/IP协议栈。对于高端的嵌入式CPU,可以运行Linux等操作系统实现嵌入式TCP/IP协议栈相对比较容易。但是像51单片机、AVR单片机、PIC单片机上实现TCP/IP协议栈就比较复杂,因为TCP/IP协议栈对CPU 的速度、内存消耗要求比较高。

于是在单片机上实现TCP/IP协议栈,如果完全从头开始实现,则需要几个月到几年的实现,对于单片机上网项目的开发是一个重点和难点。于是就需要单片机TCP/IP开发板。本文主要以51单片机上的TCP/IP协议栈为例。

2 单片机TCP/IP开发板的用途

目前单片机上网技术是一个热门技术,很多高校学生选择与此相关的毕业设计,同时高校也有与此相关的项目。为了快速实现单片机TCP/IP,可以通过使用单片机TCP/IP开发板来实现。一般一个单片机TCP/IP开发板需要包含如下的内容:

1.              单片机TCP/IP协议栈:用户可以根据协议栈提供的用户接口来实现TCP的发起连接、接受连接、发送数据、接收数据、关闭连接等操作。最好是该协议栈能够兼容BSD socket接口。

2.              硬件电路板及其相关连接线:用此硬件可以建立嵌入式TCP/IP实验环境。

3.              硬件原理图:这可以方便用户将相关硬件集成到自己的电路板中。

4.              配套开发工具:在嵌入式TCP/IP实验环境中必须要有PC机端的软件,用以和开发板进行通信。

3 如何选择单片机TCP/IP开发板

3. 1 各类开发板

目前单片机TCP/IP一般有面向16位和32位的单片机的LWIP、面向8位单片机的uIP、面向51单片机的ZLIP等。目前51单片机上的TCP/IP协议栈以uIP和ZLIP为主,目前uIP的最高版本为V1.0,ZLIP的最高版本为ZLIP增值版V1.0。

市面上的开发板有老古开发网单片机TCP/IP开发板套件、北京电子无忧网的51单片机TCP/IP上网开发板、上海卓岚的51单片机TCP/IP开发板等。

3. 2 选择注意事项

作为单片机上网技术学习者,选择一款合适的开发板对于学习是事半功倍的,选择开发板时应该注意以下问题:

1.             价格考虑。TCP/IP开发板的最主要的东西在于TCP/IP协议栈本身,硬件的成本可以做得很低,所以不要因为低价而忽略了核心软件。对于TCP/IP协议栈可以从如下方面考虑:

a)         稳定性:商家提供的TCP/IP协议栈是否有全面的测试,是否在连续PING的情况下不断线,是否在发送接受大数据量(例如10M以上)时不丢失任何字节?对于使用者来说如果协议栈不稳定,那么对于项目的顺利开发将带来很大麻烦。

b)        易用性:使用单片机TCP/IP开发板的用户一般都对于嵌入式TCP/IP的使用不太了解,这就需要开发板提供更加完善的资料和使用手册。包括函数定义、更多的例子程序等。

c)        厂家的技术:某些厂家只是仿冒他人的开发板,用户在使用中遇到的问题根本无法给于解答。这就需要用户问清楚该协议栈是否是厂家自己设计的。

2.             外包装和质量保证:外包装不好可是使得用户收到时,开发板已经在运输过程中受损而无法使用。

4 使用TCP/IP开发板

下面介绍如何使用TCP/IP开发板来进行项目开发。

4. 1 开发板套件

为了建立单片机TCP/IP开发环境,需要一套开发套件,一般包含有:图中:①开发板。②开发板光盘。③USB线。④对连网线。⑤普通网线。⑥串口线。

其中TCP/IP协议栈相关资料在②开发板光盘上,③USB线一般用于从PC机USB端口获得电。网线用于和PC机通信,⑥串口线用于和PC机串口通信。

4. 2 开发板部件

单片机TCP/IP开发板

       一个开发板本身是一个单片机系统,包含有CPU、RAM、电源模块、网络模块。网络模块有很多选择,这里以RTL8019AS为例来说明。对于外部接口,最主要的是:⑨网线接口和⑩串口,它们是开发板和PC连接的接口。

4. 3 建立开发环境

      建立单片机TCP/IP开发环境的步骤有如下几步:

1.  连线:连线是将开发板与PC机的串口连接,给开发板上电,然后将开发板连接到和PC在同一个网段中。

2.  安装软件:需要安装开发板的编译环境。对于51单片机,一般选用 KeilC51作为编译器。设置IP地址,由于必须要求PC机和开发板处于同一个网段,所以需要将PC机的IP地址设置为开发板IP地址的同一个网段的IP地址(有时候也需要设置为特定的IP地址)。

3.  测试连接:一般可以通过PING命令,例如ping 192.168.0.2 –t来测试开发板和PC机的网络是否处于连通状态。

4. 3 开发基于开发板的新程序

       这里介绍如何在不修改开发板硬件的基础上,开发自己的单片机TCP/IP程序。开发新程序就是在开发板提供的TCP/IP协议栈的基础上开发应用层的协议。由于TCP层和IP层都已经提供,所以用户不用考虑其中的运行机制。TCP/IP协议栈一般为用户提供如下的接口:

1.  初始化协议栈和释放协议栈的函数接口,类似Init(), Release()之类的函数。

2.  提供类似BSD socket的socket, sendto, recvfro, connect, bind, listen, accept, send, recv, closesocket, shutdown, getpeername, getsockname, htonl, htons, ntohl, ntohs, inet_addr,inet_ntoa,ioctlsocket,setsockopt, getsockopt,select等API函数,用户调用此类函数进行发起连接、接受连接、发送数据、接收数据、关闭连接等操作。

3.  接受连接、接收数据、被动关闭的处理:由于此类操作是上位机发起的,所以TCP/IP协议栈必须提供一套机制来处理此类事件的发生。一般来说有两种方法:

a)         主动等待:例如使用BSD的recv()函数等待数据的到来。

b)        回调机制:采用类似MFC的OnReceive()函数的回调机制,也即是说在接收到数据的时候会自动调用OnReceive()函数。

那么用户如何使用以上的接口来实现远程控制、远程数据采集呢?方法很简单。

例如现在需要实现一个对LED灯的亮和灭的远程控制应用。首先PC机使用TCP/IP发送工具例如SocketDlgTest程序发送一个字节的“1”到开发板(根据开发板的IP地址发送)。开发板在OnReceive函数中发现收到的是“1”,那么就通过P1端口将灯打开;反之如果收到的是“0”则将灯熄灭。

如果是实现一个远程数据采集的应用,例如定时进行温度采集。首先PC机使用SocketDlgTest程序等待发来数据。开发板每隔一段时间采集一个数据,然后通过send()函数将数据发送给PC机(根据PC机的IP地址发送),这样PC就接收到了当前的远程温度数据。

4. 3 开发基于新硬件的程序

通过“开发基于开发板的新程序”一节的介绍后,开发基于新硬件的程序就相对容易了。这只要根据单片机TCP/IP开发板相应的硬件调整通过单片机的控制端口例如P1进行控制或者数据采集即可。