!Jox+N)}'qK5E0 关键词:以太网 串行通讯 单片机 C51
2w3UF%Ap \0电子园51单片机学习网*]@ L.A.j P单片机或微控制器(MCU)(也称为嵌入式系统)已经在各个领域得到了广泛的应用。目前绝大多数系统都是以MCU为核心,与监测、伺服、指示设备配合实现一定的功能。以太网是当今最受欢迎的局域网之一,现已成为社会重要的基础信息设施,是信息流通的重要渠道。如果嵌入式系统能够连接到Internet,则可以方便、低廉地将信息传送到世界上的任何一个地方。电子园51单片机学习网1kC o!CsN
`Vae5T@,_ @0将嵌入式系统与Internet相连的主要困难在于:Internet的各种通信协议对存储器、运算速度等的要求比较高;而嵌入式系统中除部分32位处理器外,大量存在的8位和16位MCU,支持TCP/IP等Internet协议将占用大量系统资源,影响本来的功能或根本不可能实现。
!{M-s/EV,@0Zk M2~PS0本文用8031单片机和RTL8019AS网卡实现了RS485串口设备数据文件通过以太网传输到远端计算机的功能。电子园51单片机学习网3bQ |)e\
V"Zu7C0p01 串行通讯
串行通讯在通讯领域被广泛应用。RS232接口已成计算机、计算机外设、交换机和许多通讯设备的标准接口。在我国工业总线的应用中,RS485、RS422使用最为普遍。电子园51单片机学习网1}ebW2Nl| ui
@@"T+h5E-h0在串行接口连接中,按连接方式可分为:面向连接和无连接。无连接原理比较简单,通讯双方无握手过程。一方如有数据需要发送,则立即通过串行接口发送出去,另一方被动接收。该方式能够达到较高的通讯速率,但不能保证数据传输的可靠性,可用于对数据可靠性要求不高的场合,如语音、图像等。而面向连接方式则不同。甲方有数据发送请求时,向乙方发送“请求发送数据”命令;乙方收到后,如准备就绪,则回送确认信息;甲方得到乙方的确认后方可发送数据。大多数情况下,乙方要对收到的数据进行校验,校验正确发送“通讯终止”命令;否则发送“重发”命令。面向连接的串行通讯过程实现起来要复杂得多,通常用于数据文件的传输。
/og~,wr P#d{"I%BOu0{0电子园51单片机学习网@*Ok@:v(]6D2 以太网的物理传输帧电子园51单片机学习网~M*R,b%v!m#@X
Ue+F8E'`6x0标准IEEE802.3帧结构由七部分组成,如表1所示。除了数据域的长度不固定外,其他部分的长度都是固定不变的。在发送数据时,帧头、起始位和校验位都是网卡自动添加;在接收数据时,帧头和起始位将被网卡自动跳过,即网步一旦检测到有效帧头和帧超始位,就认为有有效数据开始,并将有效数据存入接收缓冲环。电子园51单片机学习网x VP t#}6?
电子园51单片机学习网y&jg!HJd R-v8b;| x
表1 标准IEEE802.3帧结构电子园51单片机学习网u*A1G {] jR5d
帧头 | 起始位 | 目的地址 | 源地址 | 数据长度 | 数据域 | 校验位 |
62位 | 2位 | 48位 | 48位 | 16位 | 不超过1500字节 | 32位 |
3 以太网卡电子园51单片机学习网/W'V A$H,T*pm+@:eU GI
m o!z'B B5MZ0RTL8019AS 网卡是8/16位ISA总线的网卡,遵循IEEE802.3协议。按功能可将其划分为:接收功能模块、CRC产生模块、发送功能模块、地址识别模块、 FIFO控制模块、协议逻辑阵列模块及DMA和缓冲控制模块。对网卡进行编程可以实现局址网内任意站点之间的通信而需要网络操作系统的支持。电子园51单片机学习网;g9{ttC l
电子园51单片机学习网 B+DG/?.b `熟悉网卡接口电路是对网理编程的首要条件。网卡接口电路可分为两部分:一是与计算机ISA总线相连,包括数据总线读写、地址总线驱动、中断控制信号的产生、存储器读写信号以及I/O端口读写信号的引入等;二是对网卡内部的操作,包括对缓冲RAM的读写、对RTL8019AS的控制、读站地址PROM以及读自举ROM等。ISA总线共有98个信号,通过对网卡工作原理的分析,可以将接口信号线减至最少。2表是驱动RTL8019AS网卡所需的信号线。
GT"E+`|'~)a0
](\*x)|*{4d.H A5d0表2 系统所使用的网卡ISA总线信号线
信号线 | 引 脚 |
数据信号线电子园51单片机学习网5{7W/r5o5{Q 地址信号线 '@ J+A[%w Y0地址允许线电子园51单片机学习网3G)@vgoPZG'Y I/O通道准备好信号线电子园51单片机学习网3?!hv3}P q5U!uG/X 复位信号线电子园51单片机学习网!A8{mZ1p J I/O读信号 }N}$oMg#`4x)^0I/O写信号电子园51单片机学习网u5BY E&R"F I/O片选16位信号 | SD0~SD15电子园51单片机学习网vpxZ,^| SA0~SA19 \,VqY2\L_;Z/S0AEN电子园51单片机学习网)dle4Az*d'U;d^ IOCHRDY电子园51单片机学习网2p2`H Oo RESETDRV k zf o cH'S0IOR电子园51单片机学习网 ]*J hf&j.a L)S3~W IOW电子园51单片机学习网X;CP;K` IOCS 16 |
8Nq2A,]b04 硬件框图
:g9[:vNOPH rEk0Nkq.|D{%`0系统采用8031为CPU主芯片,使用32K字节的外部存储器62256来存放以太网包(最大可以有1500字节)和串行数据,8K字节的2764存放程序,用75176与485总线通讯。系统的数据和地址总线分别与网卡的数据和地址总线相连。硬件框图如图1所示。电子园51单片机学习网 i'Bg)jH+P9hct'y6a
电子园51单片机学习网'J[jn)^d5 软件设计
rfP-^$T-J'a09d6K:j{E0对网卡编程就是对网络接口控制器(NIC)RTL8019AS中各种寄存器进行编程控制,从而完成数据分组的正确发送和接收。所有程序采用Franclin C51语言编制,具有可读性强、移植性好、开发周期短的特点。在代码的使用效率上,也完全可和汇编语言相比。
9`$n [Mu wz7w+_/^0电子园51单片机学习网IHp Qcu N(@5.1 主程序电子园51单片机学习网%}&zR.y~M eH vo0Z
+R8w-z]9kCv2H0主程序可分为网络通讯和串行通讯两部分。网络通讯过程又可分为网卡初始化、发送控制和接收控制三部分。主程序框图如图2所示。电子园51单片机学习网p NM&YS V7]
电子园51单片机学习网!b(D3d;MSt*u#](F5.2 网卡初始化过程
"U1p_R |"~:~0b oUV"F+r_0对网卡的初始化就是对相关寄存器进行初始化。这些寄存器包括CR、DCR、RBCR、PSTART、PSTOP、ISR、IMR、PAR0~PAR5、MAR0~MAR5、CURR、TCR和RCR等。初始化过程如下:电子园51单片机学习网KdH/cacE
x4m9w/og0m x.q0(1)CR=0x21:选择页0寄存器,将NIC处于离线状态;
eNF%u4P2T6CO05Y*C!w7u/[;\"B0(2)DCR=0x88:8位内存访问,正常工作方式;电子园51单片机学习网 IeBrm5r7A
XF&zM D[7gP0(3)RBCR0=0,RBCR1=0:远程DMA操作时传递字节数清零;
C oY _;^-WJb0电子园51单片机学习网Z-[L bX(4)RCR=0xc0:接收到的帧存入缓冲环;
L.w'c]{?+]%e0i0j)DDR5J0(5)TCR=0xe2:环路测试状态;
-F;?:[jK mq%e.[z,D,z0&XL^p;Xx$w0(6)PSTART=0x4c,PSTOP=0x80:构造缓冲环;电子园51单片机学习网{#@4Ml,?Rg'R
&k6z/Uz GH0(7)ISR=0xff:中断寄存器清零;
iu"Z%HC3Bp0Dm0S(c0]2O'E/|a0(8)IMR=0x00:屏蔽所有的中断;
4~:W T`{&gs\'M!`0fL{*[(Z+q0(9)CR=0x61:选择页1;电子园51单片机学习网 u6s-` j7V kgS
电子园51单片机学习网ZF$YX%p,Rto(10)设置网卡地址PAR0~PAR5;电子园51单片机学习网q8hPcq.t ^M\
0V8@NE+i]ED0(11)设置多址寄存器MAR0~MAR5;电子园51单片机学习网1N6]]"^EF yi FK7c
电子园51单片机学习网yWD9S P(12)CURR=0x4d:初始化当前页寄存器;电子园51单片机学习网!qC|u3N)|n#xy
电子园51单片机学习网;`:ZK;B*~G$f,Zq'])p7w(13)CR=0x22:选择页1,正常工作状态;
N Z%eh?3ka0B3C,X)H(D0(14)TCR=0XE0:发送器正常工作状态。
0K1xT iF S*B0电子园51单片机学习网 ZVDOl9m? d5.3 发送控制过程
pp&np-{O u0/zI JP%\4S0在网络中,帧传输的过程就是发送方将待发送的数据按帧格式要求封装成帧,然后通过网卡发送到网络的传输线上。发送程序框图如图3所示。电子园51单片机学习网e Lpu(cz#[ijq
电子园51单片机学习网BM6y w5i5.4 接收控制过程电子园51单片机学习网vOW$r$C
H%r7H xiZhN"xs0帧的接收过程分为两步:第一步由本地DMA将帧存入接收缓冲环中;第二步由远程DMA将接收缓冲环中的帧读入内存。即将网络上的数据帧接收并缓存在网卡的接收缓冲环中,然后由主机程序将缓存在缓冲环中的帧读走并存入内存中。
R?5Ek#a7@#Z'myVmP0iW/ggiG)o'}os0帧的接收工作由网卡自动完成,只需对相关的寄存器和PSTART、PSTOP、CURR和BNRY进行适当的初始化即可。
;K$mR5i)\#yS&\!P9v0电子园51单片机学习网&` P"K6P&g dI帧读入较帧接收要复杂一些。首先必须初始化相应的寄存器RSAR、RBCR,然后再启动远程DMA读操作和主机程序的读端口操作。
il[}{E/S!Y0电子园51单片机学习网&l N\k7W5X:|以下是接收数据帧的子程序。为了获得数据长度,先读入18个字节的数据,然后根据有交数据的长度将帧完整读入。为了启动远程DMA读操作,应该令CR= 0AH,远程DMA将从接收缓冲环的DMA地址处读入1字节并送往I/O数据端口,由主机程序读入内存。这一过程将一直持续到RBCR寄存器为0。电子园51单片机学习网;{3l"Phh;CT
c M:n/[,U_'wpf&\:_;a0Void Receive_Data()
$yli#j*U3M/q0电子园51单片机学习网N#u#o)huJU{
I$l_H ts'~0电子园51单片机学习网 x(|5t vJIunsigned char data value,temp;
PKI5v%G?)i P*[lP9P0电子园51单片机学习网OO)k$x P D Xunsigned int data datalength,i;电子园51单片机学习网'~fJ1Xq,v2e)q
kL-SI"d,PN0RSARI=Next_PKT;
DsPG Cw._.y0M4o7\&}r1HQ[6F0RSAR0=0;电子园51单片机学习网c?5@ _5i
2YK+Q9_:ol0RSAR0=18;
,K0q$ig-d}0电子园51单片机学习网1hS|$`il ^CMRBCR1=0;
8x{/l4Z9Gl0电子园51单片机学习网h/Uj;alQCR=0x0a;
^zhTSC0电子园51单片机学习网kB7S Xhr9r sfor(i=0;i<18;i++){电子园51单片机学习网;fm(md M2m2}@,s
电子园51单片机学习网@!P%PBjHtK5vvalue=Data_Port;电子园51单片机学习网_"UO/g6Qa#w
0if'k@YymuQ#s0recv_buf=value;
3p cZ9@y5R0电子园51单片机学习网8Zm6Yg'S3g}
fT9OE}*t?6[Z!uc0电子园51单片机学习网hg%@*pC~4b3A/Ddatalength=(recv_buf)[16]<<8)+recv_buf[17]+18;电子园51单片机学习网:UX/X$hMWuyTn:@
电子园51单片机学习网:S Y dYHvalue=datalength&0x00ff;电子园51单片机学习网/F&F.kf6Lj
电子园51单片机学习网-TK6vZ9w:S0OERBCR0=value;电子园51单片机学习网;}NB:x ~+WM
!p Q3P1or.Ua2`0value=(datalength&0xff00)>>8;电子园51单片机学习网s7L{&Zvi.k;P
z^^ i"K9J;K1EZ0RBCR1=value;电子园51单片机学习网lG_7Xw U8?
电子园51单片机学习网m@5}|Z+w*RRSAR1=Next_PKT;电子园51单片机学习网&P5v|)[T8CekvCC
MR k ~,A9P b0X0RSAR0=0;电子园51单片机学习网'z5vw4soZ%A
电子园51单片机学习网k5T h0a-rY$F:ECR=0x0a;电子园51单片机学习网9p8A&Tak
0bNJ"DCU Cp0For(I=0;I<datalength;i++){电子园51单片机学习网(Zx)v;L4L)aa[
电子园51单片机学习网 A s2YPp$c3BgaValue=Data_Port;
8b.bSjs Gf{0F9b&m/A/\f0Recv_buf=value;
%z6K&J[ l+bNC4a0电子园51单片机学习网Kako4D2D2H}
!cY[ A"Q)Tb0G\n2ON;Pq7e0}电子园51单片机学习网g;B`6Lj
电子园51单片机学习网$? l7H [ o#gg"q
电子园51单片机学习网8r7]3sjxW
为实现数据文件的串口传输编制了一个串口通讯协议。该协议由引导帧、长度帧、数据帧和确认帧等组成。其中引导帧用于同步每一包数据的引导头,长度帧是这一包数据的总长度,数据帧是其中的数据信息,确认帧是接收方对发送方的回应。每帧数据由16个字节组成,每帧的第14个字节为标志位,第15字节为校验位。标志位中有2位帧标志位,3位序号位。校验采用和校验,只计算0~13字节,溢出值舍去。在发送方有数据发送时,先检测线路是否空闲,如线路空闲则向收方发送“请求发送数据”命令帧。接收机收到后,如准备就绪,则回送“可以发送”的确认命令。发送方得到确认后开始发送数据。接收方对收到的每一帧数据进行和校验,校验正确发送“和校验正确”命令,发送方发送下一帧;否则发送“重发”命令,发送方重发此帧。协议中还具有等待超时处理、帧不同步处理和线路冲突检测功能。
wg$]@ HY0+d/OI*bcN3CB0利用8位单片机8031驱动ISA总线网卡,实现串口设备通过以太网进行通讯,可以方便、可靠、低廉地将数据传输到远端设备。而且,通过串口设备与以太网的相连,可以很好地解决多种工业总线的系统集成问题,同时也大大丰富了工业总线的体系,促使其向更高层次发展。可以预计,小型串口设备与以太网相连将带来一场新的技术浪潮
&x q7nF S9J A0
用户377235 2014-11-8 10:23