下面介绍如何使用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进行控制或者数据采集即可。