本文主要以SST89E564RD型51单片机和RTL8019AS 网络接口芯片为例,研究了如何将51单片机与网络接口芯片进行硬件的电路连接,并通过将ARP协议进行简化和重新定义,实现了将51单片机接入TCP/IP进行网络通信,对该领域的研究具有一定的借鉴意义。
1 51单片机与网络控制器的连接
RTL8019AS 网络接口芯片是台湾 Realtek 公司的代表性产品之一,该芯片基于 ISA 总线结构,性能稳定且价格低廉,在工业企业领域有非常广泛的应用[ 1 ]。
1.1 RTL8019AS接口芯片的主要特性
RTL8019AS芯片主要优点有:
一是支持热插拔(即插即用)的动态检测;
二是完全兼容当前主流的NE2000 模式并可在8 位与 16 位两种模式下工作;
三是有跳线与非跳线两种模式可供选择;
四是支持全双工通信模式,双工通信时信道的传输速率可达到10Mbps;
五是内置数据预取功能;
六是内置 16K 字节的闪存;
七是支持 8/16两种前端总线工作模式,内置8 个中断申请线,同时有16 个I/O地址可供选择。
1.2 51单片机与RTL8019AS连接实现网络通信的电路设计
1.2.1 RTL8019AS 与 93C46 接口电路
93C46接口电路内部存储容量为1Kbits,是四线串行接口EEPROM。RTL 8019 AS芯片在上电或者初始化复位时,首先要从该芯片中读取预设的配置信息才能完成初始化。 93C46 内部存储器的前三个地址空间用于存放 RTL8019AS芯片的上电初始化信息;后5个地址空间用于记录本机地址;0AH-11H 的地址空间分配给制造商存储产品的信息;
12H~7FH 的地址空间用于记录即插即用信息。RTL 8019 AS 的EECS引脚连接93C46的CS引脚,EESK引脚连接SK引脚,EEDI引脚连接DI,EEDO引脚连接DO引脚,即由EECS 提供片选信号,EESK 提供时钟信号,EEDI 与 EEDO 定义为串行数据I/O通道。
1.2.2 RTL8019AS 与 SST89E564RD 接口电路的硬件连接
SST 系列单片机是美国 SST公司生产的一种中高端51系列单片机,SST89 E564RD 单片机是其SST系列单片机中的一个型号。将RTL8019AS 的SD0-SD7 引脚与SST89E564RD 的P0.0-P0.7引脚相连,相连后的引脚通过锁存器与A0-A7引脚相接,同时将74HC573的A0-A5引脚与 RTL 8019AS 的SA0-SA5引脚相接,将SST89E564RD的P0口用作D/A端口。
此外,SST89E564RD的 P2.0-P2.6 引脚与 静态存储芯片TMS62256 的高7位地址线引脚相接,组合成访问 TMS的15位地址总线。将SST 89E564 RD的SMEMRB 引脚接+5V,同时将IOCHDRY引脚悬空,JP 引脚为跳线模式,IOCS 16B引脚接地,使 RTL8019AS 工作在 8 位模式[ 2 ]。
1.3 网络接口电路的地址定义
RTL8019AS中 SA0-SA19 的连接方式如下:SA5-SA7以及SA10-SA19 接 GND,SA8-SA9 接+5V电压,SA0-SA4 接74HC573的A0-A5引脚。SST 单片机可以通过 P0.0-P0.4来选中RTL8019AS 的 32 个I/O端口并相应地对其进行R / W操作。此外,将RTL8019AS 的IORB 和 IOWB 引脚分别与SST89E564RD单片机的 RD 和 WR 相连作为R/W选通信号。
然后在 93C46 接口电路的低位00H 单元中写入 00H,将IOS0-IOS3 赋值为 0,这样就可将RTL8019AS 选择 I/O 端口的基本寻址地址定义为 300H,地 址 空 间 就为 00300H-0031FH。
2 51单片机系统网络通信中 ARP 协议设计与实现
2.1 ARP协议工作流程
根据TCPIP协议的定义,任何的需要远程通信和访问的主机在进行任何形式的通信前必须获得用于传输的本地地址。如果通信发起的源主机和通信目的端主机在同一个子网网段,那么这种通信形式不需要进行网关的数据交换,本地地址就是目的主机的硬件地址。否则通信发起者就要通过本地路由器(网关)的地址向目的主机进行IP地址和物理地址的沟通。 本文只考虑不需要使用路由器的情况。
在不使用路由器的前提下,ARP 进行地址解析的步骤如下:通信发起端在网络中广播接收端的 IP 地址,然后与广播地址一致的计算机在收到广播后会相应地发送一个应答,该应答中包含了该应答计算机的IP 地址和实际物理地址的相关信息,接着发送端用接收到的地址信息进行数据分组和传输,最后发送端将获取到 MAC 地址信息存入本地缓存,作为下次通信数据传输的地址配置信息,这个本地缓存就是ARP 缓存。
如果数据传输的地址相同,那么发送端就可以通过读取 ARP 缓存来获取 MAC 地址,如果数据传输的地址与以往不同,则重复上文的步骤直到获取物理地址。
2.2 51单片机网络通信时ARP 协议中缓存机制分析与实现
ARP 缓存条目可以使用静态或者动态两种方式生成。使用静态的方式生成 ARP 缓存条目时占用系统的资源较多,运行效率不高,所以通常采用动态方式生成 ARP 缓存。ARP 条目的定时刷新主要通过定时器来实现,缓存的生存期由单片机定时器初始值和刷新定时器的时间间隔的乘积确定,ARP 条目的查询操作定义可考虑直接对缓存中的IP 地址进行逐个比较来完成查询操作,具体的定义为:发送方先在 ARP 缓存中查询目的方主机的地址,如果在缓存中能够查找到,说明此前进行过该路由的通信过程,则可以在获得目的主机的MAC 地址后开始进行数据传输;否则就需要进行上文提到的获取ARP缓存的步骤,发送ARP请求报文直至对方的进行应答。
2.3 ARP报文格式
一个完整的 ARP 头部包含 28个字节的数据,在硬件类型部分选用 DIX 型以太网帧(值为 1);协议类型部分选用 IP 协议(注册值为0x0800);硬件地址长度部分为 6字节;PLEN 为 IP 地址长度部分值为4字节;操作代码部分,当请求操作时值为 1,应答操作时值为 2。