新闻中心

EEPW首页>模拟技术>设计应用> 基于S3C4480X的嵌入式以太网接口设计

基于S3C4480X的嵌入式以太网接口设计

作者:胡健生,夏靖波 时间:2008-05-15 来源:《电子工程师》 收藏

3设计思路

本文引用地址://m.amcfsurvey.com/article/82658.htm

  首先,S3C44B0X通过RTL8019AS的I/O口,对其相关寄存器进行配置。在通信时,S3C44B0X与RTL8019AS的收发缓存器的数据交换由远程DMA控制,而RTL81019AS收发缓存器与总线之间的数据交换由它的本地DMA控制。RTL8019AS通过中断的方式通知S3C44B0X数据收发的结果和状态,S3C44B0X通过查询中断状态寄存器的值,作出相应处理。

  系统结构如图2所示。

4电路设计

电路如图3所示。

  S3C 44B0X的nOE、nWE分别与RTL8019AS的IORB、IOWB相连,控制数据的读和写操作,低电平有效。RTL8019使用中断0,对应S3C4480的外部中断1。

  RTL8019AS RTL8019AS有3种工作方式:

  a)跳线方式:I/O和中断由跳线决定;
  b)即插即用方式(PNP):由软件进行自动配置,使用这种方法时,系统的启动程序必须包含支持PNP的函数;
  c)免跳线方式:I/O和中断由外接的EEPROM93C46中的内容决定。

  在本设计中,为了降低启动程序和电路的复杂性,选择跳线方式,故JP接高电平。

  X1、X2分别为20 MHz晶振的输入输出端。LED0~2分别连接3个发光二极管,指示网络连接、数据传输和发送的情况。 20F001为网卡滤波器,内部包含一对低通滤波器和一对隔离变压器,其输出TX+/-、RX+/-与RJ45的信号口相连。

  由于在本设计中RTL8019AS的AEN与S3C44B0X的nGCS2相连,所以对应S3C44B0X的存储器的起始地址0x0600-0000;并且,由于RTL8019AS的IOS0~IOS3接地,在跳线模式下,当IOS0~IOS1为0000时,RTL8019AS的基址为0300H。因此,在本设计中,S3C44B0X访问RTL8019AS的基址就是0x0600-0300。

 5驱动程序设计

  5.1程序设计思路

  在本设计方案中,驱动程序主要包含3个函数,即系统的初始化函数、接收数据包函数、发送数据包函数。 初始化部分完成RTL8019AS在使用之前的初始化工作,包括设置相关工作模式的寄存器、分配和初始化接收和发送缓冲区、初始化网卡接收地址等。

  MAR0-MAR7-多点地址寄存器:这8个寄存器的值是根据多播地址数组的值生成的,提供对多播地址的过滤,过滤掉一些不属于自己接收多播数据包。
这里均设为FFH,接所有多播地址的数据包:

  下面6条语句设置MAC地址,寄存器为PAR0~PAR5:实际地址寄存器,这些寄存用来对目标地址数据包进行比较,以确定接收或者拒绝接收。地址放在数组add[6]中。



  5.2数据的传输和发送

  数据的传输和发送由本地DMA传输和与远程DMA传输两部分完成,前者大部分工作由RTL8019AS自动完成,我们要做的是设置收发缓冲区的大小及指针变量,这些工作在RTL8019AS的初始化时已完成,因此只需要编写远程DMA读写函数。对远端DAM口的读写,不同的只是数据传输方向,这里,仅以读操作为例,即编写从RTL8019AS接收缓冲区取数据包到S3C4480X。(注意:远程DMA的写函数,即向RTL8019AS发送缓冲区写数据函数--send_data()省略。)



  5.3接口通信函数流程

  这里采用中断和查询相结合的方式来决定是否发送和接收数据。当RTL8019AS的ISR(中断状态寄存器)的任意一中断位置位时,S3C4B0X都要对其进行中断相应(在这里只关注第0中断位和第1中断位,即分别反映RTL8019AS已正确接收到数据和已成功发送数据包,因此在初始化函数中将其他位屏蔽)。这时要对ISR进行访问,来判断是何种中断,进而作出相应的响应,如图4所示。

 6结束语

  本设计经过软硬件的调试,并已成功地进行数据传输。由于S3C4480X出众的性价比及丰富的外围接口,通过扩展本设计可以应用到仪器仪表、工业数据采集网络、网络控制等许多领域。

linux操作系统文章专题:linux操作系统详解(linux不再难懂)

上一页 1 2 下一页

评论


相关推荐

技术专区

关闭