基于ARM 与MCX314As 的嵌入式数控系统设计
摘 要:本文提出了一种新的基于ARM 与MCX314As 的嵌入式四轴数控系统的设计。该设计采用ARM 处理器S3C2410 为主CPU,运动控制芯片MCX314As 为从CPU,并采用实时的Linux 操作系统,使得系统很好地进行多任务处理,并保证了运动控制的实时性。
关键词:ARM;MCX314As;数控系统;Linux
1. 引言
在本方案中,以ARM 微处理器为核心主控板,配以运动控制芯片MCX314A 和实时操作系统Linux,构建数控系统的软硬件平台。ARM 嵌入式平台凭借其强大的功能与良好的设备支持受到了普遍的关注,它采用5 级流水线,具有指令和数据Cache,支持协处理器和片上调试。具有开发移植容易、体积小、功耗低、运算速度快、实时性好等优点。MCX314As是日本NOVA 公司推出的4 轴运动控制专用DSP(Digital Single Processing)集成电路,通过这个集成电路可以控制步进电机驱动器或由脉冲型伺服电机驱动的4 轴的位置、速度和插补。Linux 操作系统是一个免费的开放软件,源代码是公开的,它具有系统稳定、功能强大、应用软件多、简单易用、使用成本低等优点。该系统设计方案从底层实现数控系统的软件和硬件的开放,这样就使数控系统具有更高集成度、更高可靠性、更低成本、更友好的控制操作界面、更多系统资源和更大内存成为可能。设计方案对开发具有自主知识产权的数控系统有一定的积极意义。
2. 数控系统硬件结构
ARM 处理器选用Samsung 公司的S3C2410 处理芯片。S3C2410 是一款基于ARM920T内核的32 位RISC 架构的处理器。其体积小、低价格、低功耗、性能高,带有MMU(Memory Management Unit)功能,主频可达203MHz,还采用了AMBA(Advanced Microcontroller BusArchitecture)的新型总线结构,支持Thumb(16 位)/ARM(32 位)双指令集,能很好的兼容8 位/16 位器件。
运动控制芯片选用MCX314As。MCX314As 是一种功能十分强大的DSP 运动控制芯片。芯片能够控制4 轴(X 轴、Y 轴、Z 轴、U 轴),可在4 轴中选择任意的2 轴作圆弧插补、2/3轴作直线插补,插补精度是±0.5LSB。默认输入时钟为16MHz,脉冲输出速度最高可达4MPPS,输出脉冲范围为32 位。
MCX314As 还有伺服电机反馈输入(编码器信号、在位信号和报警信号)、加/减速驱动、软硬件限位、自动原点搜索、同步动作、输入信号滤波等功能。
MCX314As 能与8/16 位数据总线接口,其所有的功能都是通过读写内部命令寄存器、数据寄存器、状态寄存器和模式寄存器而实现。各轴都有32 位的逻辑位置计数器(对输出的驱动脉冲计数)、实际位置计数器(对外部编码器计数)和比较寄存器,实现位置的闭环控制。各轴都有4 个通用输入(可用于限位、原点信号输入)和4/8 个通用输出。
系统硬件采用主从式双CPU 结构模式。主CPU 为ARM 处理器,用于键盘、显示、网络通讯等管理工作,而从CPU 即为MCX314A 运动控制芯片,专门负责运动控制的处理工作。ARM 处理器S3C2410 通过16 位数据总线与MCX314As 相连,控制系统硬件结构,如图1 所示。
ARM 外部Flash 存储器可用于存储需要固化的运动控制参数(如轨迹坐标、运动参数)。Flash 存储器采用韩国三星半导体公司生产制造的K9F5608U0C(64M Nand Flash)和1MBAMD Nor Flash,SDRAM 采用韩国现代公司生产制造的HY57V561620BT(32M*2),液晶模块采用NEC 的3.5 寸TFT LCD 屏。为便于与上位系统和其他间通信,设计有RS232 和以太网通信功能以及键盘和USB 接口。以太网接口采用CS8900A。ARM可方便地向MCX314A 发送执行命令,产生控制脉冲给伺服驱动器,驱动机械部件形成期望的运动。
3. 软件系统
S3C2410 要完成通信、人机交互、运行控制算法产生控制指令、MCX314As 的读写操作等多任务。在中嵌入实时多任务Linux 操作系统给软件系统设计带来便利,移植的技术细节参见文献[1]、[3]。下面主要讨论S3C2410 对MCX314As 的控制。
操作MCX314As 对于程序设计来说就是按一定的时序读写其内部的寄存器。MCX314As可“写”的寄存器有:命令寄存器WR0,模式寄存器WR1~3,输出寄存器WR4,插补模式寄存器WR5,数据寄存器WR6~7;可“读”的寄存器有:主状态寄存器RR0,状态寄存器RR1~5,数据寄存器RR6~7。
ARM 处理器将I/O 端口和存储器统一编址,将MCX314As 接于S3C2410 的Bank2 存储器组,即将CS2 作为MCX314As 的片选信号,访问MCX314A 寄存器的基本地址为0x10000000,要注意0x10000000 是按照硬件原理图的设计得到的,是MCX314As 寄存器WR0 的物理地址。在Linux 操作系统中,运行在用户空间的应用程序所用的都是虚拟地址,编写驱动程序的时候,还需要利用ioremap()函数把物理地址转换成虚拟地址来使用。那么WR0 和RR0 的地址是0x10000000,记为Addr。那么,WR1 和RR1 的地址是Addr+2,依此类推,WR7 和RR7 的地址是Addr+0x0e。图2 是S3C2410 操作MCX314A 的流程图[4]。
4. 结论
MCX314As 是一款功能强大的运动控制芯片,具有优秀的四轴控制及插补功能,为数控系统的研制提供了一个可选的较为方便可靠的底层控制单元。它丰富的功能简化了数控系统多项运动控制的实现。而ARM 处理器具有强大的32 位RISC 性能,体积小、功耗低,是一款高性能的处理器。采用ARM 处理器及运动控制芯片,能大量地减轻研发任务,提高研发速度,能够在短时间内得到高速度、高精度、高效率、高可靠性、成本低的数控系统。而Linux 实时操作系统的加入,使得系统能够很好地进行多任务处理,并且保证了系统的实时性。
参考文献
[1]孙纪坤,张小全编著.嵌入式Linux系统开发技术详解--基于ARM[M].北京:人民邮电出版社,2006,8
[2]叶佩青,汪劲松编著.MCX314运动控制芯片与数控系统设计[M].北京:北京航空航天大学出版社,2002.11
[3]周立功. ARM嵌入式系统系列教程[M]. 北京:北京航空航天大学出版社,2005
[4]余张国,李众立,李磊民.基于ARM 和MCX314A 的嵌入式运动[J].微计算机息,2005.10