摘 要: 随着芯片制造工艺的迅速发展,电子产品开发对环境要求越来越高,对除尘的要求也更加严格。传统的除尘控制是通过人工进行的,随意性大,除尘效果得不到保障。本文在对除尘控制流程调研分析的基础上,利用Freescale公司生产的功能强大的微控制器作为主控制芯片,设计并完成了一套全自动除尘间控制系统。 该系统硬件部分包含MC68HC908GP32最小系统模块、键盘数据录入模块、开关量输入输出模块、数码管显示模块、加热管模块和时钟模块等,软件部分由MCU方低端软件与PC机方的控制软件组成。 文章给出了除尘间控制系统的操作面板和控制面板的硬件设计、通用硬件驱动模块和除尘间控制系统功能性模块的软件设计,阐述了除尘间控制系统的软件设计要点、难点和细节。同时,对除尘间控制系统自动除尘的流程进行了较深入的讨论。
关键词:除尘系统;MC68HC908GP32;控制系统;在线编程;SPI通信
1.引言
精密电子产品在生产过程中,为保证产品质量,需要建立一个符合生产工艺要求的无尘工作环境。经过调研发现目前一些生产企业仍然采用传统的除尘方法,除尘效率达不到生产工艺要求的洁净度,除尘成本高,从而影响了产品成品率,提高了产品的成本,严重影响了企业的竞争力,本文分析了采用嵌入式技术设计一个高效智能的除尘间控制系统,实现对工作场所高准确度,高自动化处理,达到产品生产工艺要求的洁净度。
2. 除尘间控制系统框架
除尘间控制系统框图如图1:
在对系统工作模式,系统应具备的功能要求分析的基础上,参考国外同类除尘净化系统的优缺点,设计了具有功能齐全、控制灵活、智能化程度高的除尘控制系统。控制系统以GP32芯片为控制处理核心,分别对外围接口及信号进行处理和控制[1]。由SPI模块的复用引脚通过串转并芯片74HC164把除尘时间以倒计时的方式传输到三位八段数码管上;根据键盘输入数据信号和红外传感器输出信号,决定对外围相关器件的开关控制;根据当前的信号,可以通过GP32 MCU的相应引脚对指示灯、语音模块及加热管的控制,以实现辅助或警示的作用,并通过开通加热管改善除尘的效果。
系统原理框图见图1,系统布局图见图2。
图1 除尘间控制系统框图
图2 除尘间自动控制系统布局图
除尘间控制系统硬件采用模块化设计方式,系统的主芯片采用MC68HC908GP32[2] [3],并由电源转换模块、串行通信模块、键盘录入模块,系统抗干扰等模块组成。
3.系统软件设计
除尘间控制系统的软件采用模块化设计方法,一方面可提高软件的移植性和升级性,另一方面增强软件的易测试性。整个软件系统由MCU方软件、PC端软件两部分组成。软件基本上用08C编写,其中对时序要求较高的部分采用了汇编
MCU软件设计包括主程序、通用模块程序和除尘间控制系统在线编程三部分组成。
PC方软件的总体架构包括两部分:校正时钟芯片的时间模块、设定工人工作起始时间和结束时间,实现在线编程功能。
3.1 MCU软件设计
主程序为系统的软件入口,通过函数调用和全局变量与子模块程序进行参数传递,以完成整个系统的功能。主程序是一个循环结构,每一次控制过程的衔接通过定时器中断、键盘中断和接收中断来完成。
3.2 通用模块程序主要子程序及功能如下
(1) 除尘间控制系统初始化子程序
除尘间控制系统初始化子程序完成开关量I/O初始化、串行口初始化、键盘初始化、中断控制和状态寄存器初始化、定时器初始化的工作。
(2)键盘模块子程序
键盘模块的主要功能是提供输入信号,以作为控制外围器件的接口。键值的获取、键值的转换、键盘的初始化由键盘模块子程序完成。由于本系统需要7个按键,因此这里使用3×3的键盘,对应PTA0~PTA2和PTD4~PTD6 I/O口地址。其中PTA0~PTA2与键盘的列线相连,作为中断输入脚;其中PTD4~PTD6与键盘的行线相连,编程时将PTD4~PTD6定义为输出。
(3)时钟模块子程序
时钟模块采用PCF8563时钟芯片,它是一种低功耗的CMOS实时时钟/日历芯片。在本系统中用其提供一个可编程时钟输出,一个中断输出和掉电检测器。采用读取时钟芯片来判断当前工作状态是自动除尘还是手动除尘。MCU与时钟芯片的通信是通过I2C实现的。
(4)加热管模块子程序
加热管控制子程序进行PWM初始化并设置PWM周期和占空比。程序包含两个函数:函数PWMInit和函数PWM。其中函数PWMInit的主要功能是将定时器1设置为PWM模式;函数PWM的主要功能是设置PWM的周期和占空比。
(5)串行通信子程序设计
串行通信实现数据的发送与接收。发送和接收数据均使用SCI数据寄存器SCDR。通过判断状态寄存器SCS1的第7位(SCTE)确定是否需要发送数据,而是通过判断状态寄存器SCS1的第5位(SCRF)确定是否需要接收数据。
串行通信子程序完成SCI初始化,波特率设置、通信格式设置、发送接收数据方式的设置等工作。
(6)开关量输入输出模块子程序设计
本模块主要包括开关量输入子程序和开关量输出子程序。开关量输入子程序定义除尘间前后门、红外输入状态;开关量输出子程序定义除尘间控制门锁、后门锁、风机、按键灯、语音开关等信号输出。
3.3 除尘间控制系统在线编程
在线编程技术是目前嵌入式应用系统中的一种热门技术,所谓在线编程ISP(In-System Programming)是指嵌入式系统中主控芯片通过一定的接口和上位机相连,能接收上位机的程序代码,并写入到存储器中,实现程序升级或功能重构。在本系统中,需要完成4个程序的在线编程。
(1)上位机通信子程序
在系统中GP32采用串行接口与上位机通信,对SCI模块进行初始化,配置相关信息。
(2)Flash擦写子程序
完成对Flash存储器的页擦除、整体擦除、写入操作3项。
(3)在线编程流程
在线编程流程程序是嵌入式应用系统中在线编程的核心内容,需要调用相关子程序,编写与上位机进行通信的协议代码,合理分配RAM资源。同时还要考虑在线编程代码的安全性,需要采用一定的加密机制等措施。
上位机发送的在线擦写控制流程如图3所示。它首先执行Flash整体擦除,然后
执行上位机发送的命令字。在某次写入后校验出错时,上位机会发送重新写入命令,重新整体擦除,并从开始处重新写入程序;当写入所有的程序代码后,上位机发送写入结束命令,低端程序可以从复位矢量处开始执行程序或者等待复位;如果上位机发送写入命令,则低端等待接收需要写入数据的Flash起始和结束地址、写入的数据,然后调用写入子程序,一次写入结束后,产生异或校验码,并将校验码发送给上位机,由上位机进行校验,校验正确,继续写入后续程序,校验出错,则重新写入。
4. 配套的上位机程序
在线编程的过程中,RAM分配是至关重要的一个环节。实质上对于MCU端的程序设计,RAM合理分配尤为重要,因为低端MCU的RAM资源相对比较少,通常只有几百个字节到几千个字节,GP32也仅有512个字节的RAM空间。在线编程的程序中内存需要存储写Flash时的地址信息、数据信息、上位机发送的Flash擦写子程序(约120字节)、上位机发送的在线擦写控制流程代码(约170字节)、堆栈。除尘间控制系统中在线编程时内存分配如图4所示. 仪器仪表标准化与计量,2008,(4):8-17.