随着互联网的出现和以太网的迅速发展,基于以太网的设备控制越来越多,发展也越来越快。目前,以太网(EtImmet)已经广泛地应用于各种计算机网络,通过以太网及TCP/IP协议栈可以使不同的网络设备实现互连、交换数据。
用以太网实现嵌入式系统的网络连接有多种方案。传统的多器件以太网连接方案是通过MCU扩展以太网控制器来实现的,必要时还需要扩展外部RAM和ROM。虽然这种方案应用起来不是很困难,但所用外部元件数量较多,系统开销较大。稳定性不高。为了解决传统方案的不足,本文讨论以集成以太网MAC层和物理层的16位单片机MC9S12NE64来实现单器件以太网连接。与多器件方案相比.单器件连接方案具有所用外部元件少、系统开销小、稳定性高、设计时间短等一系列优点。
2 MC9S12NE64简介
MC9S12NE64是Freescale公司生产的基于HCSl2 CPU内核的16位单片机,利用它可以方便地实现单器件以太网连接,构成一个完整的终端节点。MC9S12NE64的内部功能模块框图如图1所示,主要特性如下:
采用高性能16位HCSl2CPU内核,3.3V下工作频率可达25MHz或10MIPS,具有优化的C语言体系结构,可以生成十分简洁的代码。
带有片上调试接口,可以进行实时在线仿真和调试,而无需仿真器。
集成了64KB的nash内存和8KB的静态RAM,能够满足大多数的应用场合。如果需要还可进行外部扩展。
![](/UpLoadFiless/Article/gdpic/2008-08/20080819134458213.jpg)
集成了10/100Mbps以太网媒介访问控制器(EMAC),内置标准的媒介独立接口(MII),可以实现地址识别及过滤、以太类型过滤,支持半双工和全双工通信,具有和8KB RAM共用可配置的EMAC缓冲区,包括一个发送缓冲区和两个接收缓冲区,MC9S12NE64的RAM以2倍于CPU的速度运行,使得CPU和EMAC缓冲区可以交叉存取数据。
集成了10/100Mbps以太网物理层(EPHY),支持自动协商模式,支持半双工和全双工的通信。并具有自诊断功能。
带有8通道10位模数转换器fADC)、4通道16位定时器、2个串行通信接口(SCI),1个高速串行外设接口(SPI)、1个具有256种时钟速度选项的I2C接口,具备使用锁相回路的时钟及复位发生器(CRG)模块,有多达70个通用I/O口。具有80引脚TQFP-EP和112引脚LQFP两种封装。
![](/UpLoadFiless/Article/gdpic/2008-08/20080819134458133.jpg)
3 MC9S12NE64的简单应用
3.1 硬件设计
利用MC9S12NE64可以构成不同功能的网络终端节点,如网络服务器、带因特网功能的设备、远程监控(数据采集,诊断)、对现场设备的远程控制、远程设备通过电子邮件或文字寻呼机发送消息等。
基于MC9S12NE64最少外围器件的系统硬件电路原理图如图2所示。此最小系统由80引脚的MC9S12NE64与外围器件组成,电路中带有背景调试接头J1;5个LED状态指示灯(分别用来显示网络连接状态,包括EPHY是否冲突、连接是否建立、是否接收数据、连接速度、双工模式);必需的偏置电阻R5;高速局域网电磁隔离模块(即RJ45以太网接口)。其中PHY_TXP和PHY_TXN为发送线,PHY_RXP和PGY_RXN为接收线。设计时,MC9S12NE64的物理端口与隔离变压器连接时必须符合IEEE802.3对物理层规范的要求,如RJ45的插孔与隔离变压器的间隔应尽量小,输出和输入差分信号对的走线要很好的隔离,确保电源的额定负载电流不小于300mA。设计时还应注意系统时钟的要求,MC9S12NE64只支持皮尔斯型振荡电路,晶振的精度应高于25ppm。系统中MC9S12NE64工作在正常的单片模式,其内部稳压电源处于工作状态。
3.2 MC9S12NE64的初始化
MC9S12NE64单片机在工作之前。必须进行必要的初始化。主要包括时钟及复位发生器(CRG)模块、EMAC模块、EPHY模块等。虽然MC9S12NE64上的EMAC和EPHY被设计为两个独立的模块,但如果用到内部的EPHY,则EMAC和EPHY必须同时进行初始化。
MC9S12NE64的初始化过程如下:
(1)初始化时钟及复位发生器模块来产生25MHz的内部总线时钟,这一过程通过设置时钟及复位发生器(CRG)模块的寄存器表来完成。
(2)设置EPHYCTL0寄存器的DIS10和DIS100位为1,使EPHY时钟无效,直到EMAC和EPHY配置完毕。
(3)通过EPHYCTL1寄存器的:EPHYADD0、E-PHYADD1、EPHYADD2、EPHYADD3、EPHYADD4来配置MII请求的EPHY地址。
(4)配置自动协商模式。设置EPHYCTL0寄存器的ANDIS位为0.使用自动协商模式。
(5)设置EPHYCTL0寄存器的LEDEN位为1允许EPHY驱动LED信号。设置EPHYCTL0寄存器的EPHYIEN位为1使EPHY中断有效。设置
EPHYCTL0寄存器的EPHYEN位为1使EPHY有效工作,这样就可以实现EMAC和EPHY间的介质无关接口(MII)操作。
(6)设置MCMST寄存器的MDCSEL位为0xA,来配置EMAC管理数据时钟(EMACMDC)。
(7)设置BUFCFG寄存器的BUFMAP位来配置EMAC以太网缓冲区的大小。BUFMAP的值用来确定系统RAM中用户RAM和EMAC缓冲区的比例。BUFMAP最大为4,这时单个缓冲区的大小为1.5K字节,正好可以存放一个最大的以太网帧。大于缓冲区大小的数据包将被过滤掉,设计时应合理选择。设置BUFCFG寄存器的MAXFL位来指定接受的最大帧长度,使缓冲区起到了数据过滤的作用。
(8)通过MACAD寄存器来配置6字节的MAC地址。如果设备不连接到因特网,则MAC地址可自行定义。
(9)设置ETCTL寄存器为0x17来控制网络上传输的数据类型。
(10)通过