如何用51单片机来控制网卡芯片实现网络接入设计方案

2019-06-22 05:54:00 来源:互联网
标签:
在网络技术应用日益广泛的今天,网络传输是最经济有效的数据传输方式。如何利用廉价的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协议,并支持主动和被动连接、跨越网关,实现互联网接入,在被控设备与上位控制机之间提供了一条透明的传输通道,用户不需对原有串口设备或其他数字设备做任何修改,就可享受到网络的好处。目前,本文的系统已被成功使用在网络化的数据采集器中。
 
关注与非网微信 ( ee-focus )
限量版产业观察、行业动态、技术大餐每日推荐
享受快时代的精品慢阅读
 

 

继续阅读
电源滤波器使用的三大误区,你都知道吗?
电源滤波器使用的三大误区,你都知道吗?

在实验测试过程中,我们常遇到这样的情况:虽然设计工程师在设备电源线上接了电源滤波器,但是该设备还是不能通过"传导骚扰电压发射"测试,工程师怀疑滤波器的滤波效果不好,不断更换滤波器,仍不能得到理想的效果。

日本电装与BlackBerry联合推出集成式汽车HMI平台

日本电装与BlackBerry(纽约证券交易所股票代码:BB;多伦多证券交易所股票代码:BB)今日宣布,首款采用BlackBerry QNX技术的集成式HMI(人机界面)数字驾驶舱系统已在日本领先的汽车制造商斯巴鲁的首批车型上得以应用。

恩智浦宣布推出全球首款基于微控制器的离线人脸和表情识别解决方案

恩智浦半导体(NXP Semiconductors N.V.)(纳斯达克代码:NXPI)今日宣布推出全球首款基于微控制器(MCU)的离线人脸和表情识别解决方案,意在为智能家居、商用和工业设备提供人脸识别处理能力。

如何解决毫米波滤波器尺寸和偏差带来的挑战?

在主流 5G 无线通信的竞赛中,焦点已转移到毫米波 (mmWave) ,使用频谱中超过 20 GHz 的频率来增加带宽容量。由于高频的已知范围和路径损耗限制,毫米波信号需要更小的天线,这些天线可以紧密地封装在一起,以创建单个窄距聚焦波束,以实现具有更大覆盖范围的点对点通信。

详解 SAW 和 BAW 滤波器的结构、原理、使用考虑因素
详解 SAW 和 BAW 滤波器的结构、原理、使用考虑因素

滤波器会评估信号并去除不需要的频率,同时保留所需频率。滤声器是移动设备中最常用的滤波器。一款高端智能手机必须要对多达15个频段的2G、3G和4G无线接入方式的发送和接收路径进行滤波,同时要滤波的还包括:蓝牙、Wi-Fi和其他无线通讯路径。

更多资讯
兼容性差、无法跑ARM 64位程序成 Windows on ARM 的致命缺陷?

在IFA上,Intel以运行Dropbox、Logitech、Plantronics等程序的兼容性问题,和无法顺利跑ARM64游戏为例,来梦里抨击Windows on ARM设备。

谷歌又涉嫌垄断?美国 50 名总检察官正在调查

与非网 9 月 10 日讯,谷歌最近又摊上事了,美国的50名总检察官正在参与对谷歌涉嫌从事反垄断行为的调查。

Microchip大中华区技术精英年会2019报名注册现已开放

Microchip Technology Inc.(美国微芯科技公司)今日宣布,2019年大中华区技术精英年会现已开始接受报名。技术精英年会是Microchip为嵌入式控制工程师举办的技术培训盛宴。

IEE2019第八届嵌入式系统展将于12月19-21日在深圳举办

首先是平头哥正式发布RISC-V处理器玄铁910、并开放IP Core。仅仅半个月后,华为也推出基于微内核的全场景分布式操作系统 -- Harmony OS鸿蒙。

8421编码器、4线-2线编码器、优先编码器等,这些编码器的原理你都懂吗?
8421编码器、4线-2线编码器、优先编码器等,这些编码器的原理你都懂吗?

在数字系统里,常常需要将某一信息(输入)变换为某一特定的代码(输出)。把二进制码按一定的规律编排,例如8421码、格雷码等,使每组代码具有一特定的含义(代表某个数字或控制信号)称为编码。