单片机TCP/IP开发板(或称之为单片机TCP/IP学习板)是为提供用户学习单片机TCP/IP协定栈技术,从而设计自己的基于单片机TCP/IP项目而提供的一种开发板。51单片机、AVR单片机、PIC单片机上实现TCP/IP协定栈就比较複杂,因为TCP/IP协定栈对CPU 的速度、记忆体消耗要求比较高。
基本介绍
- 中文名:单片机TCP/IP开发板
- 别名:单片机TCP/IP学习板
- 类别:上网技术
- 注意事项:考虑价格、稳定性、 易用性等
用途
目前单片机上网技术是一个热门技术,很多高校学生选择与此相关的毕业设计,同时高校也有与此相关的项目。为了快速实现单片机TCP/IP,可以通过使用单片机TCP/IP开发板来实现。一般一个单片机TCP/IP开发板需要包含如下的内容:
1. 单片机TCP/IP协定栈:用户可以根据协定栈提供的用户接口来实现TCP的发起连线、接受连线、传送数据、接收数据、关闭连线等操作。最好是该协定栈能够兼容BSD socket接口。
2. 硬体电路板及其相关连线线:用此硬体可以建立嵌入式TCP/IP实验环境。
3. 硬体原理图:这可以方便用户将相关硬体集成到自己的电路板中。
4. 配套开发工具:在嵌入式TCP/IP实验环境中必须要有PC机端的软体,用以和开发板进行通信。
如何选择
2. 1 各类开发板
目前单片机TCP/IP一般有面向16位和32位的单片机的LWIP、面向8位单片机的uIP、面向51单片机的ZLIP等。目前51单片机上的TCP/IP协定栈以uIP和ZLIP为主,目前uIP的最高版本为V1.0,ZLIP的最高版本为ZLIP增值版V1.0。
2. 2 选择注意事项
作为单片机上网技术学习者,选择一款合适的开发板对于学习是事半功倍的,选择开发板时应该注意以下问题:
1. 价格考虑。TCP/IP开发板的最主要的东西在于TCP/IP协定栈本身,硬体的成本可以做得很低,所以不要因为低价而忽略了核心软体。对于TCP/IP协定栈可以从如下方面考虑:
a) 稳定性:商家提供的TCP/IP协定栈是否有全面的测试,是否在连续PING的情况下不断线,是否在传送接受大数据量(例如10M以上)时不丢失任何位元组?对于使用者来说如果协定栈不稳定,那幺对于项目的顺利开发将带来很大麻烦。
b) 易用性:使用单片机TCP/IP开发板的用户一般都对于嵌入式TCP/IP的使用不太了解,这就需要开发板提供更加完善的资料和使用手册。包括函式定义、更多的例子程式等。
c) 厂家的技术:某些厂家只是仿冒他人的开发板,用户在使用中遇到的问题根本无法给于解答。这就需要用户问清楚该协定栈是否是厂家自己设计的。
2. 外包装和质量保证:外包装不好可是使得用户收到时,开发板已经在运输过程中受损而无法使用。
使用
下面介绍如何使用TCP/IP开发板来进行项目开发。
3. 1 开发板套件
为了建立单片机TCP/IP开发环境,需要一套开发套件,一般包含有:①开发板。②开发板光碟。③USB线。④对连网线。⑤普通网线。⑥串口线。其中TCP/IP协定栈相关资料在②开发板光碟上,③USB线一般用于从PC机USB连线埠获得电。网线用于和PC机通信,⑥串口线用于和PC机串口通信。
3. 2 开发板部件
一个开发板本身是一个单片机系统,包含有CPU、RAM、电源模组、网路模组。网路模组有很多选择,这里以RTL8019AS为例来说明。对于外部接口,最主要的是:⑨网线接口和⑩串口,它们是开发板和PC连线的接口。
3. 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机的网路是否处于连通状态。
3. 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 开发基于新硬体的程式
通过“开发基于开发板的新程式”一节的介绍后,开发基于新硬体的程式就相对容易了。这只要根据相应的硬体调整通过单片机的控制连线埠例如P1进行控制或者数据採集即可。