接收与发送过程类似。如果已经对LPC23xx控制器的接收通道进行了正确的配置,当4个缓冲单元(假定接收缓冲区也被划分为4个单元)满时,会产生中断。在中断服务程序中读取这4个缓冲单元,然后将RxConsumerIndex更新为4RxConsumerIndex,就完成了一次接收过程。需要指出的是,LPC23xx以太网控制器的接收和发送通道均需要先“产生”后“消耗”。对接收通道而言,以太网控制器是“产生者”,主机是“消耗者”;发送通道则恰好相反。
3 PHY设备的配置
LPC23xx控制器提供了 RMII和MMII与PHY设备进行数据通信。其中RMII负责网络数据的收发,MMII负责PHY设备的配置和当前状态的读取。本设计选取国家半导体公司DP83848I芯片作为以太网接口的PHY设备,其应用电路如图3所示。DP83848I可由硬件来配置,也可由软件来配置。本设计选择由硬件来配置,而通过MMII来读取DP83848I最新的状态。
以太网接口的自适应能力由DP83848I的自动协商功能体现出来。自动协商功能提供了一种在网络连接的两端之间交换配置信息的机制,在该机制下,这两端将自动选择最优的配置[34]。
DP83848I支持4种不同的以太网工作方式(10 Mbps半双工、10 Mbps全双工、100 Mbps半双工和100 Mbps全双工),自动协商功能在芯片配置的基础上自动选择性能最高的工作方式。DP83848I的AN_EN、AN1 和AN0 引脚的电平控制着自动协商功能。在, RESET_N引脚输入低脉冲(复位信号)期间,会采样AN_EN、AN1 和AN0的电平来决定芯片的工作方式,当AN_EN、AN1 和AN0全为“1”的时候,即图3中接入R1、R2和R3,4种工作方式均在协商的范围之内[5]。
LPC23xx对DP83848I的配置过程如下:
① 发送脉宽大于1 μs的复位信号,等待自动协商过程完成;
② 查询基本模式状态寄存器(BMSR)的第5位,当该位变高时,表明自动协商过程完成,结束等待;
③ 查询BMSR的15、14、13、12和11位,获取以太网接口的工作方式;
④ 配置LPC23xx以太网控制器的工作方式。
图3以太网接口的PHY设备的硬件电路
关于如何通过MMII读写DP83848I的内部寄存器,请查阅参考文献[2]的149150页,在此不再赘述。
本文介绍了以LPC23xx以太网控制器为依托、以DP83848I为PHY设备而设计的一种自适应以太网接口。应用了较新的电子器件和电子技术,为嵌入式系统中以太网底层的软硬件设计提供了参考,也为TCP/IP协议在嵌入式系统上实现提供了硬件平台。