快捷搜索:  as  xxx  test

51单片机实现控制网卡芯片进行数据传输的设计

在收集技巧利用日益广泛的本日,收集传输是最经济有效的数据传输要领。若何使用廉价的51单片机来节制网卡芯片进行数据传输,加载TCP/IP协议连接到互联网,实现收集通信成了浩繁设计者的目标。但因为指令及资本的限定,实施历程会有许多艰苦。我们在设计规划中舍弃了消费资本的高档协议,采纳发送小数据包的要领以避免分段,来简化TCP协讲和UDP协议,实现互联接入。

硬件设计与实现

系统的硬件布局框图如图1所示。本系统的微节制器是Winbond公司的78E58,收集接口芯片是与NE2000系列兼容的ReaLTEk公司的RTL8019AS。RTL8019AS内置了10BASE-T收发器,外接一个隔离LPF滤波器,经RJ-45接口输出。外部RAM是62256,24C02是I2C总线的 EEPROM

图1 嵌入式协议转换硬件框图

系统的软件设计与实现

为适应上网的需求,系统软件设计主要包括两部分内容:一是要履行对RTL8019AS等的节制功能,二是要履行与连接Internet相关的功能,实现TCP/IP协议。本文着重先容第二部分,主法度榜样采纳C51说话编写。

RTL8019AS初始化

要将嵌入式系统接入以太网,首先要设置RTL8019AS的事情要领和事情状态,分配收发数据的缓冲区,经由过程对地址及数据口的读写来完成以太网帧的接管与发送。然后设置RTL8019AS的事情参数,亦即设置内部节制寄存器。对RTL8019AS的事情参数进行设置完毕后,进入正常事情状态,接下来就读写RTL8019AS的RAM以完成数据包的接管和发送。因为篇幅有限,这里就不再胪陈。

TCP/IP模型

TCP/IP协议是一套把Internet上的各类系统互连起来的协议族,包管Internet上数据的准确快速传输。TCP/IP平日采纳一种简化的四层模型:利用层、传输层、收集层、链路层。

本系统中,利用层通报来自以太网和数据终真个数据,并对数据报作打包拆包处置惩罚。传输层采纳传输节制协议TCP或用户数据协议UDP。收集层实现IP协议,还要实现能申报数据传输缺点等环境的ICMP协议。链路层部分由RTL8019AS完成,链路层由节制同一物理收集上的不合机械间数据传送的底层协议组成。

在单片机里只实现与必要有关的部分,而不应用的协议则一概不支持。单片机利用的TCP/IP协议大年夜多是为了完成数据采集和数据传输,而不必要网页浏览、文件传输这些功能。

ARP协议(地址解析协议)

以太网是TCP/IP协议主要采纳的局域网技巧,是系统接入Internet的根基。ARP本色是完成收集地址到以太网物理地址的动态映射。UNIX系统的ARP协议支持以太网、令牌环等收集,但我们的单片机系统里只支持以太网。

IP协议(网际协议)

IP是TCP/IP协议族中最为核心的协议。所有的TCP、UDP、ICMP及IGMP数据都以IP数据报款式传输。就对某些协议而言,IP包最大年夜可以为65K,可以分段传输,而在单片机里根本无法容纳如斯大年夜的数据包,是以一样平常是不支持分段的。我们的设计中采纳发送小数据包的要领,以避免分段。

TCP协议(传输节制协议)

TCP数据封装在一个IP数据报中,并具有自己的TCP首部, TCP协议定义十分繁杂,鉴于51单片机的片内资本十分有限,本系统对TCP协议进行了必然的简化处置惩罚。标准的TCP协议应用慢启动的滑动窗口机制,假如只应用单个窗口,就变成了一种简单确认的处置惩罚措施。即只需对单个数据报发送和确认,节约了系统资本,也使掩护加倍方便。

编程实现TCP协议的另一个难点在于TCP建立连接和终止连接的详细历程的实现。TCP协议是一个面向连接的协议,连接的双方无论是哪一偏向另一方发送数据,都必须先经由过程“三次握手”历程在双方之间建立一条连接,和经由过程“四次握手”终止连接。

连接建立后,TCP就可以发送数据块,称为数据段。当TCP发出一个段后,它启动一个准时器,等待目的端确认收到这个报文段。假如不能及时收到一个确认,将重发这个报文段。别的,TCP将维持它首部和数据的查验和。

系统主利用法度榜样的实现

系统初始化后,进入主法度榜样轮回的两部分:一是对接管到的以太网数据帧进行解包,供利用法度榜样应用,一是对发送的数据进行封装并发送,使采纳TCP/IP协议的以太网内的所有谋略机都能收到此数据帧。图2是系统的主利用法度榜样的流程图。

图3 系统的主利用法度榜样的流程图

单片机实现TCP/IP协议的难点

51单片机的法度榜样空间、可用的内存RAM、运算速率、指令集等缘故原由,在UNIX或Windows上实现的TCP/IP协议的源代码并不能够直接移植到8位的单片机上。在51单片机上编写代码会受许多限定,分外是实现TCP/IP协议这样关系繁杂的法度榜样,我们必须根据实际环境尽可能掘客51单片机的机能。综合来说,单片机实现与UNIX实现TCP/IP有如下差别:

(1)操作系统:Windows或UNIX都是多义务操作系统,这使得代码编写简单化,在单片机只能是单义务系统,代码布局为顺序履行+硬件中断的要领,无法并发履行。

(2)内存分配:Windows或UNIX的内存分配是动态的。而一样平常单片机只有外接的一块32K字节的RAM,并同时被各个协议应用。一个最大年夜的以太网数据包有1.5K字节,分配一包的缓冲区就要1.5K字节。为此,我们分配一个256×6=1536个字节的固定的RAM来寄放收到的以太网数据包。收到一包就处置惩罚一包。

(3)指针:在PC里所有法度榜样都必须先放在RAM里才能运行,以是它的指针都指向RAM。而单片机的布局和PC的布局有很大年夜区别,指针类型很多,各指针运算的速率也不一样,分外是“一样平常指针”运算很慢,还会占用很多法度榜样空间。UNIX实现TCP/IP的源代码中,用得最多的便是指针,而在单片机里一样平常要求少用指针,或应用特定类型的指针。对应用UNIX的源代码必要作很多的篡改。

(4)参数通报:在UNIX实现的TCP/IP源代码中,一样平常有很多的参数通报,而在单片机里容许通报的参数是有限的(由于受到内部RAM的限定),同时参数通报的历程要挥霍法度榜样代码空间,也低落单片机履行速率。以是在单片机的实现里,一样平常不要做太多的参数通报,而多应用公共的全局变量来实现调用的历程。

(5)硬件接口:在UNIX或Windows里,对网卡驱动无一例外都是采纳中断要领,由于PC的处置惩罚速率快,一次中断的处置惩罚光阴也很短,不会影响系统内的其它中断。而在单片机的利用中,大年夜部分的规划都是查询式的。PC的NE2000的网卡,一样平常都是用16位DMA的要领,而在单片机里却只能用8位DMA要领。这也使UNIX对网卡驱动的代码不能直接移植。

结语

本文设计的嵌入式收集接入规划,采纳廉价的8位51单片机实现了简化TCP协讲和UDP协议,并支持主动和被动连接、超过网关,实现互联网接入,在被控设备与上位节制机之间供给了一条透明的传输通道,用户不需对原有串口设备或其他数字设备做任何改动,就可享受到收集的好处。今朝,本文的系统已被成功应用在收集化的数据采集器中。

您可能还会对下面的文章感兴趣: