APP下载

基于ARM的上片机与上位机通讯的实现

2018-11-05周亮冯晟曾赤良

电子技术与软件工程 2018年18期

周亮 冯晟 曾赤良

摘要: 随着经济的发展和科技的提高,ARM的应用越来越广泛。我公司研制的显微镜载玻片自动上片机就运用了自行开发的以ARM作为主控芯片的控制器,它是我公司研制的一种用于医学检测上的设备,它的应用实现了分析仪上片操作自动化,大大节省时间,提高工作效率。本文着重介绍了基于ARM的上片机与上位机之间的串口通讯,通过串口通讯的实现,使得自动上片机能更好地、更有效地完成所需功能。

【关键词】自动上片机 ARM 通讯协议 串口通讯

1 引言

随着现代化水平的不断发展进步,越来越多的设备向着高性能、高效率、高自动化和高可靠性的方向发展,其中在医学上也更多的用到了这类微型化、智能化的现代化设备,它给医学研究与发展提供了更高效、更可靠的保障。

现在越来越多的医疗机构需要这类智能化设备。本文介绍一下这类设备中的一种,即显微镜载玻片自动上片机。它是我院研制的一种用于医学检测上的设备,其主要功能是能够由机械手将载有细胞样本的玻片从玻片库内取出,放置在显微镜的载物台上进行检测,分析仪检测完毕后自动上片机接受到分析仪的指令后,自动地将玻片放回到玻片库内。真正实现分析仪上片操作自动化,这样能大大节省时间,提高工作效率。

自动上片机由玻片库、玻片抓取装置、玻片移动装置、条码识别装置、电控系统等部分组成。玻片库一次可容纳50片,由以步进电机为驱动源的机构驱动上下运动。玻片抓取装置通过电动夹紧方式和定制夹具来抓取玻片;玻片移动装置实现XY坐标上的二维运动,实现玻片在玻片库和平台之间来回转运;条码识别装置安装有条码识别器,通过自动识别条形码的方式来分辨出不同病人的玻片。

本文首先简单介绍了自动上片机。它的电控部分采用了自行开发的定制控制器,该控制器运行稳定可靠,能应用于各种工业控制场合。然后介绍了专门为自动上片机与PC机之间制定的通讯协议,具有传输时间短,受干扰概率低,通信实时性好等优点。通过对ARM微控制器模块的选择、通讯协议的制定以及相关程序的编写,使我们能更好地实现自动上片机与上位机之间的串口通讯,更好地实现设备的功能。

2 ARM微控制器模块的选择

自动上片机的控制系统运用ARM芯片作为主控芯片。现有的控制系统一般采用单片机或DSP作为主控芯片,而ARM芯片以其高效的处理性能和丰富的处理器资源,较单片机和DSP更能满足医疗设备的控制系统要求,并且ARM芯片已经被越来越广泛地应用于工业控制和移动计算领域,其应用已趋于成熟。

自动上片机的電控系统采用了自行开发的控制器,该控制器是基于TI公司的EASYARM1138微控制器的基础上开发出来的。它选用TI公司的ARM CortexTM-M3处理器,该处理器提供出色的计算性能和对事件的卓越系统响应,同时可以应对低动态和静态功率限制的挑战。定位精度能达到30μ。控制器提供了高性能的32位运算能力,包含了PWM输出,此特点特别适合控制步进电机等驱动器件,内置的ADC和DAC避免外接单独的转换芯片的麻烦。I2C、SPI、UART、USB等丰富的外设端口,使得控制器能应用于各种工业控制场合。软件方面,直接采用“C语言+驱动库”的新概念开发模式。图1为控制器的功能示意图。

3 上片机与上位机之间的通讯协议

上片机与上位机之间的通信(即控制器与上位机之间的通信)用的是串行通信,采用RS232标准。“串行”是指外设与接口电路之间的信息传送方式,CPU与接口之间却是按照并行方式工作的。串行通信包括四个重要参数:波特率、奇偶校验位、数据位和停止位,我方设计的通讯协议用到的参数具体为波特率9600bps,无校验,8个数据位,1个停止位。

我们为了满足客户要求自定义了6条通信指令。简单介绍如下:

(1)抓拨片传参数状态。其功能码为21H。

询问帧:

询问帧由10个字节组成,其格式如表1。

应答帧:

应答帧由9个字节组成,其格式如表2,(状态码为OOH/OIH)。

(2)通知上位机玻片条码。其功能码为22H。

发送帧如表3。

(3)上位机传递完成信号状态(检测结束指令)。其功能码为30H,命令码为OOH。

(4)上位机发送机器回零指令。其功能码为30H,命令码为OIH。

(5)复位完成指令。其功能码为30H,命令码为02H。

(6)所有玻片已经抓完指令。其功能码为30H,命令码为03H。

(3)~(6)4条通信指令其格式均为:

询问帧:

询问帧由6个字节组成,其格式如表4。

应答帧:

应答帧由6个字节组成,其格式如表5。

4 上片机部分串口通讯的实现

上片机部分实际上主要是其控制器部分,它直接采用了“C语言+驱动库”的新概念开发模式。由于Luninary Micro官方免费提供驱动库软件包,这样我们就能更方便的实现其串口通讯。这里,我方要用到UART,UART是一种通用串行数据总线,用于异步通信,该总线双向通信,可以实现全双工传输和接收。其初始化如下:

SysCtlPeriEnable(SYSCTL_PERIPHUART2);

//使能UART模块

SysCtlPeriEnable(SYSCTL_PERIPHGPIOG);

//使能RX/TX所在的GPIO端口

GPIOPinTypeUART(GPIO_PORTGBASE,

//配置RX/TX所在管脚为

GPIO_ PIN O GPIO PIN_ 1);//UART收发功能

UARTConfigSet(UART2_BASE,//配置UART端口

9600.波特率:9600

UART CONFIG WLEN 8//数据位:8

UART__ CONFIG STOP_ ONE//停止位:1

UART_CONFIG_PAR_NONE);//校验位:无

UARTEnable(UART2_BASE);//使能UART端口

我们编写函数,通过功能封装为函数的方式来实现自定义的6条通信指令,从而实现上片机部分的串口通讯。

fSend_2 l_GrabSlide_TransParameter()用于发送抓玻片传参数状态;fSend_22_Send_SlideBarcode()用于实现通知上位机玻片条码的功能;fSend_30_OO_PosirionMachineTransFinish()用于发送检测结束指令;fSend_ 30 01 Retum to_ zero()用于发送上位机发送机器回零指令;fSend_30_02ResetCompletion()用于发送复位完成指令;fSend_30_03_AlICompletion()用于发送所有玻片发送完毕指令。

通过对上位机发送的通信指令进行解码,并返回相应的应答帧,就可以实现上片机与上位机的实时通讯,使自动上片机完成相对应的功能。

5 上位机部分串口通讯的实现

上位机部分采用Visual C++6.0作为开发平台,具体串口通讯功能选择应用MSComm控件来编写实现。

将此控件拉至对话框中,在类视图中添加CMSComm类。MSComm6.0控件只有一个事件,即Oncomm事件。在通信时如果发生错误或者事件,将会引发Oncomm事件并且改变其属性值,通过GetConunEvent()可获得Oncomm产生事件或错误的代码。在与上片机控制器进行通信的过程中,使用MSC,omm6.0控件和自定义的通讯协议可以完成数据的发送與接收。

端口的主要设置如下:

if(m_Comm.GetPortOpen(》

m_Comm.SetPortOpen(FALSE);

m_Comm.SetCommPort(l);//设置串口

if(Im_Comm.GetPortOpen(》//打开串口

m_Comm.SetPortOpen(TRUE);

else

{

AfxMessageBox(”cannot open serialport”);

return false;

}

m_Comm.SetSettings(”9600,n,8,1”);

m_Comm.SetInputMode(l);

m_Comm.SetRThreshold(l);

m_Comm.SetInputLen(0);

m_Comm.Getlnput();

我们通过在上位机界面上设置起始地址和抓取数量,来发送和接收数据,从而达到上位机串口通讯的目的。的图2、图3为起始地址为10,抓取数量为5,所得到的抓取命令、检测结束命令的上位机界面。

通过上位机发送相应的指令进行与上片机控制器的通讯,使我们能够实现抓取、检测等一系列设备工艺设定,并能更好的完成自动上片机的所需功能。

6 结束语

近年来,随着自动化及信息技术的迅速发展,各种设备己逐步向高质量、多功能、集成化、自动化、系统化、智能化的方向发展,ARM也被越来越多的运用其中。通过基于ARM的上片机与上位机串口通讯的实现,使得自动上片机能更好地、更有效地完成所需功能。目前,我院研制的自动上片机已经在某医疗公司投入运用,并且运行情况良好,为他们大大节省时间,提高工作效率。

参考文献

[1]周立功.ARM微控制器基础与实战[M].北 京:北京航天航空大学出版社,2005.

[2] LM3S1138微控制器数据手册[z].广州周立功单片机发展有限公司,2008: 20-24.

[3]何钦铭.C语言程序设计[M].北京:科学出版社,2010.

[4]李现勇,精通Visual C++串口通信技术与工程实践(第三版)[M].北京:人民邮电出版社,2008.

[5]张筠莉,刘书智.Visual C++实践与提高(串口通信与工程应用篇)(第二版)[M].北京:中国铁道出版社,2009.