基于51单片机的网络通信接口设计

(整期优先)网络出版时间:2009-09-19
/ 2

基于51单片机的网络通信接口设计

冯杰李述良

冯杰,李述良(黄冈师范学院物理科学与技术学院,湖北黄州438000)

作者简介:冯杰(1966-),男,湖北黄冈人,副教授,黄冈师范学院省级电工电子实验教学中心主任。

基金项目:黄冈师范学院自然科学重点项目(05CA28)

黄冈师范学院教学改革重点项目(2008CE1)

摘要:本文将TCP/IP协议嵌入通用8位单片机中,通过单片机控制网络芯片RTL8019AS实现了低端单片机的Internet接入。文中给出系统硬件原理框图和有关实现TCP/IP协议的程序处理流程图,对系统的软硬件架构做了阐述,并详细的介绍了硬件电路的连接,分析了实现TCP/IP通信的硬件原理,使普通的8位单片机具有了互联网络的接入功能。

关键词:单片机;TCP/IP协议;通信协议;开放互联系统

中图分类号:TN915.04文献标识码:A

随着信息技术的飞速发展,特别是3C(计算机、通讯、消费电子)合一的加速发展和互联网的迅速普及,常常使用CAN总线、RS-232和RS-485串行通信、IIC和IIS等总线实现多个系统之间的数据传输与交换以及互联,通过这种总线互联的方式进行通信不仅受到信号传输距离限制,而且只有很少与之有关的通信协议,即使有也是孤立于Internet之外。若将系统接入Internet则可以实现远程数据采集、监控和诊断;并可以成为网络共享资源的一部分,而且还可以访问Internet上的资源。由于以太网进行通信一般都基于TCP/IP协议,整个网络只需要有底层通讯协议就能够满足系统要求,并且便于和Internet实现互联。

TCP/IP协议是一个庞大的协议簇,对系统资源消耗比较大,如何在RAM较小的单片机系统上实现TCP/IP协议成为以太网应用于单片机系统的难点。因为用在低端单片机系统中一方面要占用大量的内存,另一方面容易造成系统不能实时响应。因此我们可以使用由台湾Realtek公司生产的高度集成以太网控制器芯片RTL8019AS。

1系统硬件接口设计

实现Internet接入的方案很多,如:PC网关+专用网、EmWare的EMIT技术、集成了网络控制器的微处理器、低端单片机+网卡芯片相结合等。上述方案中以“低端单片机+网卡芯片”实现Internet接入最为经济、简单;其原理是用单片机加载TCP/IP协议控制以太网网卡进行数据传输,从而实现与以太网进行通信。该方案系统结构框图如图一所示,整个系统由四个部分组成:以单片机为核心的主控单元、以太网控制单元、以太网络、通信终端。

该系统硬件设计关键在主控芯片和以太网控制芯片的设计,在设计上考虑到TCP/IP协议栈程序比较大,本文MCU采用大容量Flash的8位单片机89C52,因其RAM比较小故需要扩展一片62256外部RAM存储器芯片,该RAM可存储32kB的数据。使用外部RAM的目的是为了存放网络数据,提高数据的传输速率,同时外部RAM还可以作为单片机向通信终端发送和接受数据的输入输出缓冲,这样单片机可以高速的吞吐数据。网络控制芯片本文选用的RTL8109AS是10Mb/s的全双工以太网控制器,由于其优良的性能和低廉的价格而被广泛应用。另外,RTL8019不直接连结RJ45以太网口,中间需要加一块网络隔离变压器,一方面用于耦合滤波以增强信号,另一方面是隔离网线连接的不同网络设备间的不同电平,以防止不同电压通过网线传输损坏设备。HD、LD负责发送信号,TPIN+、TPIN-负责接收信号。同时两个发光二极管分别用于反映通讯的状态:通讯有冲突或者接收到网上的数据包。

2以太网接口芯片RTL8109AS简介[1]

以太网控制器RTL8109AS能够方便地设计网络通信的系统,具备与通用单片机进行接口较简单,与NE2000兼容且软件移植性好,收发可同时达到10Mb/s的速率等优点。

3系统原理分析

单片机控制网卡芯片通信的硬件接口框图。RTL8019AS芯片引脚内部已经接了一个100kΩ的下拉电阻,当引脚悬空时的输入状态为低电平。AEN引脚为I/O端口操作允许使能脚,RTL8019的AEN引脚连结单片机的P1.0,当AEN=0(低电平)时,RTL8019可以被操作;RTL8019A的读写控制引脚IORB、IOWB分别与单片机的RD,WR引脚相连,当IOWB=0(低电平)时,RTL8019的寄存器写状态启动;P3.7(RD)连结RTL8019的IORB,当IORB=0(低电平)时,RTL8019的寄存器读状态启动;8位数据总线SD0~sD7接到单片机的P0口,用于读写RTL8019AS的数据;SA0~SA4为地址选择引脚,在系统中真正用到的地址线只有SA0~SA4,接到单片机的P2.4至P2.7引脚上;RTL8019的RSTDRV引脚连结单片机的P3.4(T0)引脚,当RSTDRV=1(高电平)时,RTL8019重启;RTL8019AS还需在X1、X2接入20MHz的晶振,用于产生以太网信号。

4系统软件设计

4.1单片机数据包处理流程

单片机在系统中主要负责系统初始化、RTL8019AS的初始化、检查网络连接情况和监听网络信号,以及控制RTL8019AS实现TCP/IP网络通信协议和接收、发送数据等通信任务,还负责将接收到的数据帧进行处理分类,把要发送的数据帧进行分类打包。

4.2初始化RTL8019AS

RTL8019AS的初始化首先要初始化page0与page1的相关寄存器,页2的寄存器是只读的,不可以设置,页3的寄存器不是NE2000兼容的,不用设置;然后对工作模式寄存器进行设置,分配接收、发送缓冲区大小并初始化缓冲区,最后初始化RTL8019AS接收地址。初始化前先要对RTL8019AS进行复位操作;然后在Page0中屏蔽所有中断,设置数据配置寄存器的模式(即选择8位还是16位),清除中断寄存器和远程DMA计数器,设置接收缓冲区区间以及接收和发送配置寄存器,设置寄存器BNRY和寄存器CURR;在Page1中初始化后开启RTL8019AS中Page0的所有中断。

4.3数据包的收发流程

RTL8019AS采用IEEE802.3协议对数据包进行收、发,在发送数据时单片机只要把按协议要求封装好的数据包写入RTL8019AS缓冲区,启动发送数据的指令,则RTL8019AS会自动将缓存区的数据发送到RJ45端口。以太网芯片在初始化就设置好了网络控制芯片的寄存器,网络芯片自己会完成数据的发送、校验以及总线数据包的碰撞检测与避免。单片机此时只需要设置好要发送的数据的各种地址、数据包类型以及要发送的数据并将数据封装成满足协议要求的数据包存入RTL8019AS的发送缓冲区就行了。

RTL8019AS自动将接收到的以太网数据包存放在接收缓冲区同时发出中断信号给单片机,收到中断信号后单片机在中断程序里通过DMA方式把RTL8019AS的RAM空间数据读回单片机中进行处理和分析。

5结语

本文实现了基于8位单片机的TCP/IP通信,使单片机控制的系统具有了网络访问功能,这样可以使用PC机通过因特网远程访问、控制单片机系统,也可以使用单片机系统将有用的信息通过因特网发送到远端的PC或其它终端上,为终端设备实现远程数据采集、远程监控、远程诊断、远程帮助、远程升级、远程重构等功能提供了可能,同时具有成本低、硬件少、使用方便等优点;另外,系统采用C语言开发平台,易于软件的移植和二次开发。

参考文献:

[1]彭少熙.家庭网络中的嵌入式Internet方案[J].电子技术应用,2001,(10):47-50.

[2]谢希仁.计算机网络[M].北京:电子工业出版社,2008.