基于MC9S12XS128的嵌入式单元测试仪软件开发与实现

2015-01-17 05:46韩秋枫
电子设计工程 2015年1期
关键词:测试仪中断绝缘

李 祁,刘 瑜,韩秋枫

(海军航空工程学院 基础部 山东 烟台 264001)

为保证弹载计算机中数字芯片的可靠性、安全性,必须在地面对其进行单元测试。数字单元测试仪作为测试芯片性能最重要的技术设备,也迅速发展起来,本文提出一种采用MC9S12XS128单片机作为某型号数字单元测试仪核心的设计方案,通过控制继电器阵列实现不同测试电路或转换电路的连接,嵌入式编程实现对被测机构进行不同参数测试或状态转换,并管理测试结果。

MC9S12XS128是一款的高性能16位单片机,总线速度高达40 MHz;具有 128 KB程序Flash和 8 KB DataFlash,用于实现程序和数据存储[1],均带有错误校正码(ECC);16通道高达12位精度的A/D采集模块,支持8位、10位或12位多种精度,3μs的转换时间;内嵌MSCAN模块用于CAN节点应用,内嵌支持LIN协议的增强型SCI模块及SPI模块[2];8通道PWM,易于实现电机控制;出色的低功耗特性,带有中断唤醒功能的IO,实现唤醒休眠系统的功能[3]。

1 数字单元测试仪系统结构

整个数字测试仪包含了四大部分:电源模块、通信模块、参数测量单元和主控制单元。其中,参数测量单元是整个数字单元测试仪的核心部件,参数测量单元直接决定着测试仪的参数测量精度和应用范围。电源模块为测试仪配置CWY交流参数稳压电源(AC220 V,50 Hz),同时给测试仪和打印机供电,通信模块使用专用测试电缆与被测机构相连,测试电缆的41芯插头与测试仪“机构输入”插头相连,19芯插头端与被测机构相连。通过转接板与LED显示屏相连,输出测试结果,用户通过控制面板上的键盘控制该仪器完成各项性能测试。硬件系统结构如图1所示。

图1 数字单元测试系统结构图Fig.1 Structure diagram of digital unit tester system

2 基于MC9S12XS128的嵌入式数字单元测试仪软件设计

数字单元测试仪的软件需要完成的主要功能包括:1)绝缘预检。自动检查12项绝缘电阻;2)自动测试。预检合格后,自动检测两个通道下各个电阻阻值及工作循环中状态转换结果;3)手动测试。通过键盘操作,选取测试内容进行测试;4)数据管理。实现对测试数据显示、打印及清除。

2.1 软件设计流程

根据中断处理机制和多线程编程来控制整个软件的运行流程[4]。在整个程序启动之后,就一直处于循环等待的状态,等待中断发生。当测试者通过键盘按下按键,发生键盘中断,程序查询中断向量表,跳转到键盘中断响应服务子程序。在子程序中,判断所按键值,并根据当前状态和所按键值在程序的各个模块之间进行切换,完成相应操作。中断服务子程序执行完毕之后,退出中断,程序指针返回主程序的循环等待,等待下一次中断发生。如此循环往复,从而实现整个软件的测试功能,直至退出测试功能[5]。如图2为主程序流程图。

图2 主程序流程图Fig.2 Flow chart of main program

图3 手动测试流程图Fig.3 Flowchart of Manual testing

测试仪上电后初始化并进入控制主界面,利用向上向下键移动光标选择操作项,按“确认”键进入测试。其中,绝缘预检自动检查通道1、2的各项绝缘电阻,当作动源电压一定时,各项绝缘电阻是否在正常工作阻值范围内。绝缘预检必须先于其他测试,预检合格方可后续测试,否则禁止进行后续测试。

手动测试是各项测试中最复杂的,流程图见图3。分别测试通道1、2电阻以及电压选择与转换。进入手动测试菜单窗口后,选择“通道X(1或2)电阻测试”,按确认键进入测试窗口,同时测试仪自动读取指定通道当前状态,如果处于保险状态则进入“保险状态窗口”,如果处于工作状态则进入“工作状态窗口”,通过向上向下键选择窗口内测试项目,使用“确认”键进行测试,按一次测试一次,可重复多次测试,光标移到“转换”位置,按“确认”键后测试仪自动读取指定通道当前所处状态并进行转换。如果转换成功窗口显示5秒后自动关闭并进入另一状态电阻测试窗口,如果转换失败窗口停留,等待用户按键“返回”。当选择“通道X电压与转换”显示相应窗口,通过向上向下键选择窗口内三档电压及手动调压,按“确认”键显示转换结果,包含转换时间和转换电流。

2.2 程序实现

在CodeWarrior集成开发平台上实现测试仪软件的开发,通过BDM(单线背景调试模式)在单片机运行时对单片机动态调试。软件设计采用初始化+循环体的软件结构,首先进行全局变量和所用外设 (包括 IO、ADC、SPI、PWM、TIMER、SCI)的初始化[6],然后在循环体内依次进行绝缘预检、手动、自动检测以及数据管理。

初始化被定义在工程文件下init.c源文件内,包括设置晶振时钟、总线时钟及锁相环时钟均16 MHz,初始化I/O端口、串口 SCI0、SCI1,串口速率9 600,可以中断接收数据,并对PWM、ECT、ATD模块进行初始化,初始化函数如下:

voidInit_Dev(void){

SetBusCLK_16M();

Port_Init();

SCI0_Init();

SCI1_Init();

PWM_Init();

AD_Init();

Timer_Init();

ECT_Init();

}

其中对I/O端口子函数实现如下程序,实现对输入输出端口的定义。

static void Port_Init(void){

DDRA=0xff; //LCD A口设为输出口

PORTA=0x00;

DDRB=0xff;//LED B口设为输出口

PORTB=0xff;

DDRE=0x03;//E口输入口

PORTE=0x00;

DDRJ=0x00; //J.6 J.7口输入口

DDRJ_DDRJ7=0x00; //J.7=0

DDRH=0x00; //Port H input

PTIH=0X00; //KEY,PH0--5

PERH=0xff; //PORT H pull up

PPSH=0x00; //Port H Polarity Select Registerfalling edge

PIEH=0x00; //Port H interrupt disable but 1,

DDRP=0XFF;

DDRJ_DDRJ6=1;

}

在common.c文件内定义通用函数,主要是与芯片无关的功能性子函数,如显示格式定义、光标选择等函数,以下是Uart0_putchar函数用于串口发送单个字符,所有字符显示调用的Show_order函数都是基于此函数。

void Uart0_putchar(unsigned char ch){

if(ch== ‘ ’){

while(! (SCI0SR1&0x80)) ;

SCI0DRL=0x0d; //Enter

while(! (SCI0SR1&0x80)) ;

SCI0DRL=0x0a;

return;

}

while(! (SCI0SR1&0x80)); //keep waiting when not

empty

SCI0DRL=ch;

}

2.3 测试结果

启动开关,初始化进入主菜单,上下键选取测试项,选定绝缘检查后预检过程中各项测试结果如图4所示,共预检通道1、2分别在保险及工作状态下绝缘电阻共48项。

图4 通道1绝缘预检Fig.4 Channel 1 insulation preflight

图5 通道1自动测试Fig.5 Channel 1 automatic test

自动检测结果如图5所示,顺序检测通道1到2各状态电阻,工作状态与保险状态实现自动转换,并显示转换时间与转换电流。图6是通道1从工作状态转换到保险状态结果示意图。手动测试是人工测试两通道电阻测试和电压选择与转换,电阻测试功能如图7所示,选择光标所在行确认,即可显示测试数据,可重复测试。

3 结束语

图6 通道1转换状态界面Fig.6 Channel 1 conversion status interface

图7 通道1电阻测试Fig.7 Channel 1 resistance test

在MC9S12XS128平台下实现了数字单元测试仪的软件开发,该测试仪能够通过主控面板按键操作实现对被测机构的绝缘预检、电阻测试以及电压转换等,经实验验证能够达到测试目的,满足测试要求。

[1]王宜怀,曹金华.嵌入式系统设计实战——基于飞思卡尔S12X微处理器[M].北京:北京航空航天大学出版社,2011.

[2]孙同景.Freescale9S12十六位单片机原理及嵌入式开发技术[M].北京:机械工业出版社.2010.

[3]王军琴,李会武.基于MC9S12XS128的单片机开发板的设计[J].现代电子技术,2011,14:65-68.WANG Jun-qin,LI Hui-wu.Design of MCU development board based on MC9S12XS12AA[J].Modern Electronics Technique,2011(14):65-68.

[4]伍希,罗和平,阮爱武.数字测试仪下的参数测试单元的设计[J].今日电子,2009(4):68-70.WU Xi,LUO He-ping,RUAN Ai-wu.Design of parameters test unit of digital unit tester[J].Electronic Products,2009(4):68-70.

[5]王泉.基于Tornado的嵌入式软件单元测试[J].计算机工程与设计,2012(7):2683-2689.WANG Quan.Tornado based on unit test menthod of embedded software[J].Computer Engineering and Design,2012(7):2683-2689.

[6]薛涛,邵贝贝.S12单片机BDM调试器使用技巧[J].电子技术应用,2009(2):14-16.XUE Tao,SHAOBei-bei.Tips of S12 MCU BDM debugger[J].Application of Electronic Technique,2009(2):14-16.

猜你喜欢
测试仪中断绝缘
SDL Atlas推出第二代HydroPro耐静水压测试仪
使用快速水洗色牢度测试仪检测超细纤维脱落
便携式转辙机转换力测试仪
让我家与雾霾绝缘
基于FPGA的中断控制器设计*
侵限绝缘处的站联设计
跟踪导练(二)(5)
千里移防,卫勤保障不中断
OPLC光纤复合低压绝缘电力电缆
基于单片机的PM2.5测试仪设计与应用