www.55dianzi.com
其中,电源部分使用了一片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 应用程序流程图
www.55dianzi.com
当系统上电完成各种初始化之后,就进入了循环等待中断的状态。此时当 以太网 的数据包发送到交互工具的时候,会触发一次以太网接收的中断,在中断程序中,系统首先存储远端地址,然后调用协议栈进行解包分析,把有用数据通过SCI发送给串口;同时当串口数据通过SCI中断接收进来的时候,系统调用协议栈,把数据发送到暂存的以太网远端地址。这样,系统不停的接收以太网上发来的数据,把它转换给串口,同时接收串口的数据,把它发送到以太网上。作为一个开发实例,这个系统的稳定性还是不错的,笔者把它接入所在局域网,网络环境不是很好,但在测试的48小时之内它的工作都是正常的。当然,如果要制作一个完备的产品,这样一个协议处理显得比较简陋了,还需要进一步完善。
协议栈运用
进行
网络应用的开发,最关键在于根据本身资源选择一个比较合适的协议栈。由于MC9S12NE64的资源比较丰富,足以支持大部分的嵌入式协议栈。