基于MC9S12XS128的嵌入式单元测试仪软件开发与实现
为保证弹载计算机中数字芯片的可靠性、安全性,必须在地面对其进行单元测试。数字单元测试仪作为测试芯片性能最重要的技术设备,也迅速发展起来,本文提出一种采用MC9S12XS128单片机作为某型号数字单元测试仪核心的设计方案,通过控制继电器阵列实现不同测试电路或转换电路的连接,嵌入式编程实现对被测机构进行不同参数测试或状态转换,并管理测试结果。
本文引用地址:http://www.amcfsurvey.com/article/201609/303787.htmMC9S12XS128是一款的高性能16位单片机,总线速度高达40 MHz;具有128 KB程序Flash和8 KB DataFlash,用于实现程序和数据存储,均带有错误校正码(ECC);16通道高达12位精度的A/D采集模块,支持8位、10位或12位多种精度,3μs的转换时间;内嵌MSCAN模块用于CAN节点应用,内嵌支持LIN协议的增强型SCI模块及SPI模块;8通道PWM,易于实现电机控制;出色的低功耗特性,带有中断唤醒功能的IO,实现唤醒休眠系统的功能。
1 数字单元测试仪系统结构
整个数字测试仪包含了四大部分:电源模块、通信模块、参数测量单元和主控制单元。其中,参数测量单元是整个数字单元测试仪的核心部件,参数测量单元直接决定着测试仪的参数测量精度和应用范围。电源模块为测试仪配置CWY交流参数稳压电源(AC220 V,50 Hz),同时给测试仪和打印机供电,通信模块使用专用测试电缆与被测机构相连,测试电缆的41芯插头与测试仪“机构输入”插头相连,19芯插头端与被测机构相连。通过转接板与LED显示屏相连,输出测试结果,用户通过控制面板上的键盘控制该仪器完成各项性能测试。硬件系统结构如图1所示。
2 基于MC9S12XS128的嵌入式数字单元测试仪软件设计
数字单元测试仪的软件需要完成的主要功能包括:1)绝缘预检。自动检查12项绝缘电阻;2)自动测试。预检合格后,自动检测两个通道下各个电阻阻值及工作循环中状态转换结果;3)手动测试。通过键盘操作,选取测试内容进行测试;4)数据管理。实现对测试数据显示、打印及清除。
2.1 软件设计流程
根据中断处理机制和多线程编程来控制整个软件的运行流程。在整个程序启动之后,就一直处于循环等待的状态,等待中断发生。当测试者通过键盘按下按键,发生键盘中断,程序查询中断向量表,跳转到键盘中断响应服务子程序。在子程序中,判断所按键值,并根据当前状态和所按键值在程序的各个模块之间进行切换,完成相应操作。中断服务子程序执行完毕之后,退出中断,程序指针返回主程序的循环等待,等待下一次中断发生。如此循环往复,从而实现整个软件的测试功能,直至退出测试功能。如图2为主程序流程图。
测试仪上电后初始化并进入控制主界面,利用向上向下键移动光标选择操作项,按“确认”键进入测试。其中,绝缘预检自动检查通道1、2的各项绝缘电阻,当作动源电压一定时,各项绝缘电阻是否在正常工作阻值范围内。绝缘预检必须先于其他测试,预检合格方可后续测试,否则禁止进行后续测试。
手动测试是各项测试中最复杂的,流程图见图3。分别测试通道1、2电阻以及电压选择与转换。进入手动测试菜单窗口后,选择“通道X(1或2)电阻测试”,按确认键进入测试窗口,同时测试仪自动读取指定通道当前状态,如果处于保险状态则进入“保险状态窗口”,如果处于工作状态则进入“工作状态窗口”,通过向上向下键选择窗口内测试项目,使用“确认”键进行测试,按一次测试一次,可重复多次测试,光标移到“转换”位置,按“确认”键后测试仪自动读取指定通道当前所处状态并进行转换。如果转换成功窗口显示5秒后自动关闭并进入另一状态电阻测试窗口,如果转换失败窗口停留,等待用户按键“返回”。当选择“通道X电压与转换”显示相应窗口,通过向上向下键选择窗口内三档电压及手动调压,按“确认”键显示转换结果,包含转换时间和转换电流。
2.2 程序实现
在CodeWarrior集成开发平台上实现测试仪软件的开发,通过BDM(单线背景调试模式)在单片机运行时对单片机动态调试。软件设计采用初始化+循环体的软件结构,首先进行全局变量和所用外设(包括IO、ADC、SPI、PWM、TLMER、SCI)的初始化,然后在循环体内依次进行绝缘预检、手动、自动检测以及数据管理。
初始化被定义在工程文件下init.c源文件内,包括设置晶振时钟、总线时钟及锁相环时钟均16 MHz,初始化I/O端口、串口SCIO、SCI1,串口速率9 600,可以中断接收数据,并对PWM、ECT、ATD模块进行初始化,初始化函数如下:
在common.c文件内定义通用函数,主要是与芯片无关的功能性子函数,如显示格式定义、光标选择等函数,以下是Uart0_putchar函数用于串口发送单个字符,所有字符显示调用的Show_order函数都是基于此函数。
2.3 测试结果
启动开关,初始化进入主菜单,上下键选取测试项,选定绝缘检查后预检过程中各项测试结果如图4所示,共预检通道1、2分别在保险及工作状态下绝缘电阻共48项。
自动检测结果如图5所示,顺序检测通道1到2各状态电阻,工作状态与保险状态实现自动转换,并显示转换时间与转换电流。图6是通道1从工作状态转换到保险状态结果示意图。手动测试是人工测试两通道电阻测试和电压选择与转换,电阻测试功能如图7所示,选择光标所在行确认,即可显示测试数据,可重复测试。
评论