新闻中心

EEPW首页 > 网络与存储 > 设计应用 > LPC23xx的自适应以太网通信接口设计

LPC23xx的自适应以太网通信接口设计

作者:南京北方信息产业集团有限公司 扶文树 何军 陈国胜时间:2008-07-18来源:单片机与嵌入式系统应用收藏

  接口是嵌入式系统进行通信的硬件基础。随着微电子技术的进步,许多芯片集成了控制器,这使得嵌入式系统中以太网接口的开发更为便利[1]。LPC23xx是NXP半导体公司(由Philips公司创建)于2006年12月前后推出的基于ARM7TDMIS内核的微控制器,与LPC21xx和LPC22xx相比,最为突出的特点是片上集成了10Mbps/100 Mbps以太网控制器。

本文引用地址:http://www.eepw.com.cn/article/85905.htm

  1 LPC23xx以太网控制器的结构和配置

  如图1所示,LPC23xx以太网接口主要部分的功能如下[2]:

图1 LPC23xx以太网接口示意结构框图

  ① 控制寄存器,用于配置以太网控制器的工作方式、读取控制器的当前状态等;

  ② 总线接口,AHB总线与以太网控制器进行数据交换的接口;

  ③ 接收/发送DMA,实现接收/发送缓冲区到总线接口的批量数据传输;

  ④ 接收/发送缓冲区,与DMA协同工作,暂存接收/发送的数据;

  ⑤ 发送流量控制,在网络负载过大时插入以太网暂停帧以控制网络流量;

  ⑥ 接收过滤器,滤除以太网帧的控制部分,提取有效的数据;

  ⑦ MII(介质无关接口)/RMII(裁减的介质无关接口),与外部设备按规定的时序进行实时数据通信的接口;

  ⑧ MMII(MII管理接口),配置设备的工作方式,读取设备的当前状态信息。

  在使用LPC23xx的以太网控制器之前,用户须将正确的配置信息写入图1中的控制寄存器。其步骤如下:

  ① 清除LPC23xx以太网控制器的软件复位状态;

  ② 通过MMII对PHY设备进行正确的配置;

  ③ 选择与PHY设备的(RMII或MII),受芯片尺寸所限,NXP已推出的LPC 2364、LPC2366、LPC2368和LPC2378只有RMII的引脚;

  ④ 配置DMA引擎和收发缓冲区的首地址及长度;

  ⑤ 配置以太网接口的MAC(介质存取控制)地址,选择以太网速率(10 Mbps或100 Mbps);

  ⑥ 使能接收/发送通道。

  在以上6个步骤中,较为关键是对接收/发送缓冲区的配置(步骤④),以下为详细的配置过程。为不影响以太网接口数据传输的实时性,一般选取LPC23xx以太网控制器专用的16KB RAM作为收/发缓冲区的物理载体。按以太网帧的结构,可将收/发缓冲区分别划分为若干个相对独立的缓冲单元(也可以不划分),每个单元对应着一个或多个描述符和状态符。描述符用来设置对应部分的首地址和控制信息,状态符存储着对应单元最新的状态信息。这些描述符和状态符在逻辑上分别组成一个环形阵列:描述符环形阵列的首地址由RxDescriptor(接收描述符基址寄存器) /TxDescrip tor(发送描述符基址寄存器)指定,大小由RxDecriptorNumber(接收描述符寄存器数量) /TxDescriptorNumber(发送描述符寄存器数量)指定;状态符的阵列首地址由RxStatus(接收状态基址寄存器) / TxStatus(发送状态基址寄存器)指定,大小与描述符阵列相同。在描述符阵列和状态符阵列形成后,就可以通过RxProducerIndex(接收产生索引寄存器) /TxProducerIndex(发送产生索引寄存器)、RxConsumerIndex(接收消耗索引寄存器) /TxConsumerIndex(发送消耗索引寄存器)对描述状态符阵列进行操作而实现数据的收/发。

  2 网络数据接收和发送的控制

  NXP公司在LPC23xx的用户指南(参考文献[2])中对其以太网控制器中数据的接收和发送有较为详细的介绍;但没有涉及描述符和状态符的环形阵列的概念,接收和发送的控制过程较为机械,本文在实际工程应用的基础上对此做了改进。以发送为例,图2为一个连续发送过程,将发送缓冲区分为4个单元,0和4、1和5、2和6、3和7是与这4个单元对应的描述符。发送过程如下:

  ① 如果上次数据发送完毕,就得到图2(a)所示的状态,此时TxProducerIndex=TxConsumerIndex

  ② 将要发送的数据写入4个缓冲单元中,将TxProduceIndex更新为4TxProducerIndex,即为图2(b)所示的状态,此后数据开始发送;

  ③ 等待上次发送结束(用中断或查询均可以实现等待),得到图2(c)数据发送完毕的状态;

  ④ 若有后续的数据要发送,再将数据写入4个缓冲单元中,将TxProducerIndex更新为4TxProducerIndex,就得到图2(d)所示的状态,此后数据开始发送;

  ⑤ 重复以上过程,就得到了图2所示的连续发送过程。

图2 LPC23xx以太网控制器的连续发送过程


上一页 1 2 下一页

评论


相关推荐

技术专区

关闭