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

网友投稿 284 2022-11-25

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

硬件设计与实现

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

系统的软件设计与实现

为适应上网的需求,系统软件设计主要包括两部分内容:一是要执行对RTL8019AS等的控制功能,二是要执行与连接Internet相关的功能,实现TCP/IP协议。本文着重介绍第二部分,主程序采用C51语言编写。

RTL8019AS初始化

TCP/IP模型

TCP/IP协议是一套把Internet上的各种系统互连起来的协议族,保证Internet上数据的准确快速传输。TCP/IP通常采用一种简化的四层模型:应用层、传输层、网络层、链路层。

本系统中,应用层传递来自以太网和数据终端的数据,并对数据报作打包拆包处理。传输层采用传输控制协议TCP或用户数据协议UDP。网络层实现IP协议,还要实现能报告数据传输差错等情况的ICMP协议。链路层部分由RTL8019AS完成,链路层由控制同一物理网络上的不同机器间数据传送的底层协议组成。

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协议是一个面向连接的协议,连接的双方无论是哪一方向另一方发送数据,都必须先通过“三次握手”过程在双方之间建立一条连接,和通过“四次握手”终止连接。

系统主应用程序的实现

图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的限制),同时参数传递的过程要浪费程序代码空间,也降低单片机执行速度。所以在单片机的实现里,一般不要做太多的参数传递,而多使用公共的全局变量来实现调用的过程。

结语

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

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:案例分享:如何通过数据分析进行活动效果评估
下一篇:SpringMVC @RequestBody的使用解析
相关文章

 发表评论

暂时没有评论,来抢沙发吧~