用51单片机实现串口-以太网转换器

发布者:安静宁静最新更新时间:2011-12-09 关键字:单片机  串口-以太网转换器 手机看文章 扫描二维码
随时随地手机看文章
    单片机或微控制器(MCU)(也称为嵌入式系统)已经在各个领域得到了广泛的应用。目前绝大多数系统都是以MCU为核心,与一些监测、伺服、指示设备配合实现一定的功能。以太网是当今最受欢迎的局域网之一,现已成为社会重要的基础信息设施之一, 是信息流通的重要渠道,如果嵌入式系统能够连接到Internet上面,则可以方便、低廉地将信息传送到几乎世界上的任何一个地方。 

    将嵌入式系统与Internet相连的主要困难在于:Internet上面的各种通信协议对于存储器、运算速度等的要求比较高,而嵌入式系统中除部分32位处理器以外,大量存在的是8位和16位MCU,支持TCP/IP等Internet协议将占用大量系统资源,从而影响本来的功能或根本不可能实现。 

    本文根据所做项目需要,用8031单片机和RTL8019AS网卡实现了RS485串口设备数据文件通过以太网传输到远端计算机的功能。 

    1  串行通讯 

    串行通讯在通讯领域被广泛应用。标准的RS232接口已成为计算机、计算机外设、交换机和许多通讯设备的标准接口。在我国工业总线的应用中,RS-485、RS-422使用最为普遍。 

    在串行接口连接中,按连接方式可分为面向连接和无连接。无连接原理比较简单,通讯双方无握手过程。一方如有数据需要发送,则立即通过串行接口发送出去,另一方被动接受。该方式能够达到较高的通讯速率,但不能保证数据传输的可靠性,只用于一些对数据可靠性要求不高的场合,如语音、图像等。而面向通讯过程则不同,在甲方有数据发送请求时,则向乙方发送“请求发送数据”命令。乙方收到后,如准备就绪,则回送确认信息。甲方得到乙方的确认后方可发送数据。在大多数情况下,乙方要对收到的数据进行校验,校验正确发送“通讯终止”命令,否则可发送“重发”命令。面向连接的串行通讯过程实践起来通常要复杂得多,通常用于数据文件的传输。 

    2  以太网的物理传输帧 

    标准IEEE802.3帧结构有七部分组成,如表1所示。其中除了数据域的长度不固定外,其他的长度都是固定不变的。在发送数据时,帧头、起始位和校验位都是网卡自动添加的;在接收数据时,帧头和起始位将被网卡自动跳过,即网卡一旦检测到有效帧头和帧起始位,就认为有效数据开始,并将有效数据存入接收缓冲环。

标准IEEE802

    3  以太网卡 

    RTL8019AS网卡是8/16位ISA总线的网卡,遵循的标准与协议为IEEE802.3。按功能可将其划分为接收功能模块、CRC产生模块、发送功能模块、地址识别模块、FIFO控制模块、协议逻辑阵列模块以及DMA和缓冲控制模块等部分。对网卡进行编程就可以实现局域网内任意站点之间的通信而不需要网络操作系统的支持。 

    熟悉网卡接口电路是实现对网卡编程的首要条件。网卡接口电路可分为两部分,一是与计算机ISA总线相连,包括数据总线读写、地址总线驱动、中断控制信号的产生、存储器读写信号以及I/O端口读写信号的引入等;二是对网卡内部的操作,包括对缓冲RAM的读写、对RTL8019AS的控制、读站地址PROM以及读自举ROM等。ISA总线共有98个信号,但通过对网卡工作原理的分析,我们可以将接口信号线减至最少。表2是驱动RTL8019AS网卡所需的最少的信号线。

驱动RTL8019AS网卡所需的最少的信号线

    4  硬件框图 

    系统采用8031作为CPU主芯片,使用32K字节的外部存储器62256来存放以太网包(最大可以有1500字节)和串行数据, 8K字节的2764存放程序,用75176与485总线通讯。系统的数据与地址总线分别与网卡的数据与地址总线相连。硬件框图如图1所示。

硬件框图

    5  软件设计 

    对网卡的编程就是对网络接口控制器(NIC)RTL8019AS中各种寄存器进行编程控制,从而完成数据分组的正确发送和接收。所有程序采用Franclin C51语言编制,具有可读性强,移植性好,开发周期短的特点。即使在代码的使用效率上,也完全可以和汇编语言相比。 

    5.1  主程序 

    主程序可分为网络通讯和串行通讯两部分。网络通讯过程又可分为网卡初始化、发送控制和接收控制等三部分。主程序框图如图2所示。

主程序框图[page]

    5.2  网卡初始化过程 

    对网卡的初始化就是对相关寄存器进行初始化。这些寄存器包括CR、DCR、RBCR、PSTART、PSTOP、

ISR、IMR、PAR0-PAR5、MAR0-MAR5、CURR、TCR和RCR等。初始化过程如下: 

    (1)CR=0x21:选择页0寄存器,将NIC处于离线状态; 

    (2)DCR=0x88:8位内存访问,正常工作方式; 

    (3)RBCR0=0,RBCR1=0:远程DMA操作时传递字节数清零; 

    (4)RCR=0xc0:接收到的帧存入缓冲环; 

    (5)TCR=0xe2:环路测试状态; 

    (6)PSTART=0x4c,PSTOP=0x80:构造缓冲环; 

    (7)ISR=0xff:中断寄存器清零; 

    (8)IMR=0x00:屏蔽所有的中断; 

     (9)CR=0x61:选择页1; 

    (10)设置网卡地址PAR0-PAR5; 

     (11)设置多址寄存器MAR0-MAR5; 

     (12)CURR=0x4d:初始化当前页寄存器; 

    (13)CR=0x22:选择页1,正常工作状态; 

    (14)TCR=0XE0:发送器正常工作状态; 

    5.3  发送控制过程 

    在网络中,帧传输的过程就是发送方将待发送的数据按帧格式要求封装成帧,然后通过网卡发送到网络的传输线上。发送程序框图如图3所示。

发送程序框图

    5.4  接收控制过程 

    帧的接收过程分为两步:第一步由本地DMA将帧存入接收缓冲环中;第二步由远程DMA将接收缓冲环中的帧读入内存。即将网络上的数据帧接收并缓存在网卡的接收缓冲环中,然后由主机程序将缓存在缓冲环中的帧读走并存入内存中。 

    帧的接收工作由网卡自动完成,只需对与相关的寄存器如PSTART、PSTOP、CURR和BNRY进行适当的初始化即可。 

    帧读入较帧接收要复杂一些。首先必须初始化相应的寄存器RSAR、RBCR,然后再启动远程DMA读操作和主机程序的读端口操作。

    以下是接收数据帧的子程序,为了获得数据长度,我们先读入18个字节的数据,然后根据有效数据的长度将帧完整读入。为了启动远程DMA读操作,应该令CR=0AH,远程DMA将从接收缓冲环的DMA地址处读入1字节并送往I/O数据端口,由主机程序读入内存。这一过程将一直持续到RBCR寄存器为0。

程序


    5.5  串口通讯子程序 

    为实现数据文件的串口传输编制了一个串口通讯协议,该协议由引导帧、长度帧、数据帧和确认帧等组成。其中引导帧是用于同步每一包数据的引导头,长度帧是这一包数据的总长度,数据帧是其中的数据信息,确认帧是接收方对发送方的回应。每帧数据由16个字节组成,每帧的第14个字节为标志位,第15字节为校验位。标志位中有2位帧标志位,3位序号位;校验采用和校验,只计算0-13字节,溢出值舍去。在发送方有数据发送时,先检测线路是否空闲,如线路空闲则向接收方发送“请求发送数据”命令帧。接收机收到后,如准备就绪,则回送“可以发送”的确认

命令。发送方得到确认后开始发送数据。接收方对收到的每一帧数据进行和校验,校验正确发送“和校验正确”命令,发送方发送下一帧;否则发送“重发”命令,发送方重发此帧。协议中还具有等待超时处理、帧不同步处理和线路冲突检测功能。 

    6  结束语 

    利用8位单片机8031驱动ISA总线网卡,实现串口设备通过以太网进行通讯,可以方便、可靠、低廉地将数据传输到远端设备。而且,通过串口设备与以太网的相连,可以很好的解决多种工业总线的系统集成问题,同时也大大丰富了工业总线的体系,促使其向更高层次发展。可以预计,小型串口设备与以太网相连将带来一场新的技术浪潮。

 

关键字:单片机  串口-以太网转换器 引用地址:用51单片机实现串口-以太网转换器

上一篇:基于51单片机的无线心电监护系统设计
下一篇:单片机软件实现模拟串口方法介绍

推荐阅读最新更新时间:2024-03-16 12:48

51单片机bit数据类型
bit是C51编译器的一种扩充数据类型,利用它可定义一个位标量,但不能定义位指针,也不能定义位数组。它的值是一个二进制位,不是0就是1,类似一些高级语言中的Boolean类型中的True和False。事实上,bit和数据类型为int,char等具有许多相同特性。 1. 值域: 以char为例。Char为8位一个字节的数据类型,取值范围为 -128到+127。而bit只有1位,只能表示0和1两种值。通常bit定义的变量作为一个标志位用。 2.类型定义: 例如一个数据为25,那么它就可以定义为char型、int型等。因为他们都在自己的值域内。同样一个在自己值域的数0和1就可以定义为bit型。Bit可以指定函数返回值的类型,
[单片机]
基于单片机与TC787芯片的三相半控整流电路设计
整流电路广泛应用在直流电机调速,直流稳压电压等场合。而三相半控整流桥电路结构是一种常见的整流电路,其容易控制,成本较低。本文中介绍了一种基于 PIC690单片机与专用集成触发芯片TC787的三相半控整流电路,它结合专用集成触发芯片和数字触发器的优点 ,获得了高性能和高度对称的触发脉冲。它充分利用单片机内部资源 ,集相序自适应、系统参数在线调节和各种保护功能于一体,可用于对负载的恒电压控制。主电路采用了三相半控桥结构,直流侧采用LC滤波结构来提高输出的电压质量。 系统总体设计 本系统通过PIC690单片机作为主控制芯片,用晶闸管作为主要开关器件。设计的目标是保持输出的直流电压稳定,输出电压纹波小,交流输出测电流THD较低
[单片机]
80C51单片机定时计数器的功能详解
单片机结构是什么样的,由什么模块组成 单片机(Micro Control Unit)全称微型控制单元,简称单片机(MCU),从字面意思可以了解到它其实就是一个微型的计算机系统,51单片机包含CPU(8051内核),SRAM(内存)惨不忍睹的1K,闪存(硬盘)也只有可怜的几十K,然后外围的模块基本就是下载代码用的ISP,中断模块,基本输入输出I/O模块,复位模块,串口模块,EEPROM,看门狗。单片机种类比较多,51是我们常用的单片机型号,主要应用的场合有数码家电(洗衣机,电饭锅,电磁炉,微波炉),工业现场数据采集与传输等。 80C51定时计数器有两个功能,定时功能和计数功能,定时计数器实质是一个加一计数器,无论做定时还是做
[单片机]
80C51<font color='red'>单片机</font>定时计数器的功能详解
c51单片机中断详解
工程图 第一题 **每次亮一个灯的流水灯,定义P1为led1。 外部中断0允许中断:EX0=1;下降沿触发:IT0=1;总开关:EA=1; 中断要执行的是P0引脚的4个二极管闪六次。 其实这里还有个想说的是,IE在中断请求的时候,会置位为1,然后CPU同意并执行中断程序后,IE自动清零。为什么说这个,这个可以在以后的一些情况,作为中断条件。 第二题 每次亮一个灯的流水灯和第一题的一样; 中断0下降沿触发也和第二题一样; 中断0程序是:P1引脚每次亮两个二极管的流水灯 讨论一下:每次亮两个二极管,如果低电平亮,那就要11111100B→11110011B。 个人觉得在中断中使用while造成的后果是很致命的
[单片机]
c51<font color='red'>单片机</font>中断详解
单片机工程师需要掌握什么?单片机编程培训哪里有?
般知道单片机的,都是对单片机有兴趣的,想做一些很酷的智能控制产品。 或者觉得单片机的就业前景好,这个技术也不会过时的。 小孩子才做选择,成年人全部都要。 我就是兴趣入行,然后做了几年感觉这个行业前景越来越好。 原来我以为单片机开发是传统行业,后来结合了互联网,把硬件连上网,感觉能做的功能更加强大了。 一、一个合格的单片机工程师需要掌握什么知识? 1.C语言 。 C语言是单片机程序开发的工具,必须要掌握。 基本语法,指针,结构体,枚举,回调函数等 都是需要完全掌握,并可以灵活使用。 2.掌握单片机硬件接口的驱动 大家可以灵活的使用单片机的GPIO,串口,定时器,SPI,IIC等,这些都是基础。 大家还可以简单的分析一些
[单片机]
ROM与RAM 单片机上电后是如何一步步执行的
ROM:(Read Only Memory)程序存储器 在单片机中用来存储程序数据及常量数据或变量数据,凡是c文件及h文件中所有代码、全局变量、局部变量、 const 限定符定义的常量数据、startup.asm文件中的代码(类似ARM中的bootloader或者X86中的BIOS,一些低端的单片机是没有这个的)通通都存储在ROM中。 RAM:(Random Access Memory)随机访问存储器 用来存储程序中用到的变量。凡是整个程序中,所用到的需要被改写的量,都存储在RAM中, 被改变的量 包括全局变量、局部变量、堆栈段。 程序经过编译、汇编、链接后,生成hex文件。用专用的烧录软件,通过烧录器将hex文件烧录到ROM中(究
[单片机]
51单片机解码红外遥控器原理
电视遥控器使用的是专用集成发射芯片来实现遥控码的发射,如东芝TC9012,飞利浦SAA3010T等,通常彩电遥控信号的发射,就是将某个按键所对应的控制指令和系统码(由0和1组成的序列),调制在38KHz的载波上,然后经放大、驱动红外发射管将信号发射出去。不同公司的遥控芯片,采用的遥控码格式也不一样。较普遍的有两种,一种是NEC标准,一种是PHILIPS 标准。 NEC标准:遥控载波的频率为38KHz(占空比为1:3);当某个按键按下时,系统首先发射一个完整的全码,如果键按下超过108ms仍未松开,接下来发射的代码(连发代码)将仅由起始码(9ms)和结束码(2.5ms)组成。 一个完整的全码=引导码+用户码+用户码+数据码+数据反码。
[单片机]
51<font color='red'>单片机</font>解码红外遥控器原理
双核单片机之初体验
  在市面上的单片机,如果想找出一款支持PWM、ADC、UART中任意一种功能的型号,价格一般都超过人民币1块钱,而且一般都只支持其中的一到两种,除非是价格达到2~3元的型号。而如果选用前面列举参数的单片机,本身硬件已经直接支持ADC,而且还可以通过软件在不影响主程序的前提下实现高速PWM和UART功能。      上图为该双核单片机的内部构架示意图,从图可见该单片机内部有两个核,分别为FPP0和FPP1,每个核自己有独立的程序指针(PC)、堆栈指针(SP)、累加器(ACC)和状态寄存器(CF)。设计原理并不复杂,是让这两个核共享系统时钟,第一个系统时钟周期执行FPP0程序,第二个系统时钟周期执行FPP1程序,依次间隔
[单片机]
双核<font color='red'>单片机</font>之初体验
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved