基于MC9S12NE64单片机实现以太网服务应用器的开发设计

描述

引言

随着网络应用的推广,网络的概念逐渐由PC向工控模块上转移,如何充分利用网络协议,进行数据采集或者远程控制越来越受到了行业的关注。

进行以太网服务器的开发时,一般的做法是MCU或者DSP加上网卡芯片。这样做可以根据设计应用的领域,选择速度资源合适的控制芯片,和外扩芯片配合,达到功能和成本的最优化。如果控制芯片中能够集成以太网的MAC层和PHY层,以此开发的系统当然会在灵活性方面更胜一筹。Freescale公司在最近推出的网络芯片MC9S12NE64便是在集成度方面的一次开拓性尝试。

MC9S12NE64单片机特点

MC9S12NE64是Freescale公司在2004年推出的一款S12系列的网络单片机。它内部集成了以

太网控制模块和以太网物理层驱动模块,兼容IEEE 802.3标准。和常用的网卡芯片一样,NE64的工作模式能够设定为10Mbps / 100Mbps全双工/半双工,并且拥有自适应的功能,可以满足不同物理环境的要求。

NE64芯片与一般网卡芯片不同的是它的以太网缓冲区的设计,一般网卡芯片使用FIFO作为缓冲区,这种设计可以最大限度的发挥缓冲区的作用。NE64内部则是使用3块RAM作为缓冲区,两块用于接收,一块用于发送,而且RAM大小可以用户设定。因为用于控制,以太网数据包一般少用到1.5KB的最大传输,所以这种用户设定大小的缓冲RAM带来了应用上的灵活性,而节约下来的RAM也可以被用户程序使用。

NE64的CPU是速度为50MHz的明星内核(Star Core),总线时钟可以达到25MHz,此外它还有8KB的片内RAM和64KB的片内Flash,因此只是一块NE64芯片,就可以在众多中低端网络应用领域取代以往的外扩芯片设计模式。

除了以上资源以外,MC9S12NE64内部还集成8路10位ADC,各种串口(2个SCI、1个SPI、1个I2C),以及一些单片机常用模块,如定时器、振荡器等,功能足够强大。NE64的封装形式有112引脚LQFP和80引脚QFP两种,112引脚的封装形式引出了总线扩展用的几组I/O,便于总线的扩展。

在线开发方法

对于新型单片机,最重要的是要熟知它的特性,建立开发环境,然后着手开发。笔者制作了基于NE64的硬件开发平台,同时继承实验室以前的积累,编写了片上调试监控程序,用于软件调试。以此为开发环境,实现了一个以太网服务器,用于以太网数据和串口数据的转换,详细介绍如下。

硬件开发

开发平台

首先为NE64制作了一个开发平台,这是实现NE64最基本功能的核心子板,除了最基本的电源和时钟电路之外,子板上还有RS232和以太网的硬件驱动电路。开发平台的硬件示意图如图1所示。

芯片

图1 开发平台硬件示意图

其中,电源部分使用了一片LM1086,用来把供电变压器的5V电源转成3.3V给系统供电。RS232驱动部分使用MAX3232,用来转换RS232的电平。网口部分采用了一个内置隔离变压器的RJ45头。因为板子只是一个实现了基本功能的系统,所以单片机还有很多功能引脚暂且没有用到,这些引脚通过两个32引脚的欧式插座引了出来,用户可以根据引脚定义制作相应母板,完成更多功能的开发。

下载工具

在开发学习中,使用调试监控程序已经能够满足调试的要求了,但是在产品使用中,总是需要一个下载工具来把用户的程序下载到单片机内部,因此又需要一个具有下载功能的编程器。针对这个要求,我们自行制作了一个BDM下载工具,俗称BDM头。

下载工具的硬件电路基本和开发平台一样,只是去掉了不需要的以太网驱动和欧式插座部分,仅用NE64单片机的一个I/O引脚实现和目标机的通信。软件部分是根据芯片手册写的B

DM功能程序,使此下载工具可以完成最基本的擦除和下载功能。因为2个MCU具有速度相同的时钟,通信程序相当简单。

软件开发

开发方式

S12系列单片机的程序编译可以使用Metrowerks公司的CoderWarrior系列编译软件,它的各种限制版本可在Freescale的网站www.freescale.com下载。

BDM头的主要用途是首先将监控程序下载到单片机的Flash中,以及最终擦除监控程序并下载最终的应用程序,BDM头也可用于软件调试。BDM头可以自己制作,也可以买到第3方开发的各种商用BDM调试工具。继承实验室的积累,笔者针对NE64开发平台编写了相应监控程序,可以完成片内Flash擦除、用户程序下载、断点设置、寄存器显示、修改,存储区显示修改等,用来做程序开发,这些功能基本够用了。监控指令的详细说明,可以访问www.tsinghua-mot.net 网站。监控程序实际上也是一个用户程序,它通过串口与用户交互。监控程序它接收来自串口的命令,执行相应的操作,达到调试的目的。使用监控程序开发应用程序,完全是在线的,是用单片机自己调试自己,调试功能的强弱取决于监控命令的多少。缺点是监控程序本身要占用一些RAM、Flash资源。我们的NE64 监控程序占用了8K的Flash和32B RAM空间,相对于NE64所拥有的64KB Flash和8KB RAM,这些资源占用量是可以接受的。

应用实例

基于上面的开发平台,我们完成了一个以太网服务应用器的开发实例,它是一个RS232与以太网之间进行数据转换的模块。由于目前在工控领域,串行接口的应用还是很普遍的,不可能短时间内完成升级,想要把已有的串行接口设备接入以太网,就需要一个“黑盒子”接在串口和以太网之间,把以太网的数据转给串口,同时把串口的数据发送到以太网上。

此服务器主要的工作是使用UDP或者TCP来收发以太网数据包,对协议栈的齐备性要求不高,因此笔者使用一个uC/IP的精简版本作为以太网操作的协议栈。整体程序基于中断设计而成,这是考虑到NE64的MAC层可以产生接受中断,串口使用的SCI模块也可以产生中断,因此选择中断作为整个软件的基础,可以提高程序运行效率。详细的流程图图2所示。

芯片

图2 应用程序流程图

当系统上电完成各种初始化之后,就进入了循环等待中断的状态。此时当以太网的数据包发送到交互工具的时候,会触发一次以太网接收的中断,在中断程序中,系统首先存储远端地址,然后调用协议栈进行解包分析,把有用数据通过SCI发送给串口;同时当串口数据通过SCI中断接收进来的时候,系统调用协议栈,把数据发送到暂存的以太网远端地址。这样,系统不停的接收以太网上发来的数据,把它转换给串口,同时接收串口的数据,把它发送到以太网上。作为一个开发实例,这个系统的稳定性还是不错的,笔者把它接入所在局域网,网络环境不是很好,但在测试的48小时之内它的工作都是正常的。当然,如果要制作一个完备的产品,这样一个协议处理显得比较简陋了,还需要进一步完善。

协议栈运用

进行网络应用的开发,最关键在于根据本身资源选择一个比较合适的协议栈。由于MC9S12NE64的资源比较丰富,足以支持大部分的嵌入式协议栈。

目前商业化的协议栈一般比较昂贵,鉴于一般嵌入式的应用对协议栈的完备性要求不是很高,因此可以选择使用开放源代码的免费协议栈。Freescale为NE64选定了一个开放源代码的协议栈OpenTCP,他们与Viola Systems公司合作,已经把OpenTCP开放源码移植到了NE64。

结语

本文介绍了一款内部集成了以太网模块的单片机,以及其开发方式和网络设计应用,希望给读者带来以太网开发方面的新思路。MC9S12NE64内部集成以太网模块的尝试是对芯片集成化方向的一次开拓,或许NE64比起扩展式的网络模块设计方案有些欠缺,但面向中低端网络应用领域,其单片方式带来的灵活性与电磁兼容性还是颇具特色的。

责任编辑:gt

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分