基于STM32的可变长度的医疗设备通信系统的设计与应用
2019-11-11赵莉
赵莉
摘要:采用STM32基于ucos系统的医疗器械通信系统的设计,实现了通信数据通过串口自上而下的传达,实现通信帧从接收、校验、处理、结果反馈等多层次可变长通信结构,经验证数据收发与处理通信稳定,可以广泛运用于设备通系统中。
关键词:通信;STM32;可变长
中图分类号:TP311 文献标识码:A
文章编号:1009-3044(2019)27-0013-02
Abstract: STM32 based on ucos system is used in the design of medical device communication system, which realizes the top-down communication of communication data through serial port, realizes multi-level variable-length communication structure of communication frame from receiving, checking, processing and result feedback, and proved that the communication of data receiving,processing is stable, and can be widely used in equipment communication system.
Key words: communication; STM32; variable length
科学技术的飞速发展推动着各种设备的快速更新与迭代,而医疗设备中各部件之间的通信至关重要,由于其特殊性对通信的稳定性要求非常高,随着近年来医疗器械行业的飞速发展,STM32由于其低廉的价格和强大的功能,在众多医疗器械中得到了广泛运用。本系统通过数据处理过程中的分层、转换与可变长设计,让通信系统更稳定,能够快速准确定位数据的收发来源,能够更快的排除故障,提高通信的质量。
1 系统的工作原理
本系统中STM32作为主控芯片,基于此硬件平台运行ucos系统,实现通信命令的接收,通信的校验、通信数据的存储、通信数据的处理执行、通信数据处理结果的反馈。系统的硬件构成如下图1所示。
2 串口通信协议的设计
变长通信协议格式见表1,由此协议可以看出,通信数据的长度是不定长的,可以根据用户的实际需要变换通信帧的长度与结构,减少了不必要的信息,增加了数据收发灵活性,提高了通信的效率。
3 系统软件设计
此软件系统总共用到了2路串口,可以支持两种不同的上位机系统同时与下位机进行通信。软件部分包括数据的接收、数据校验、数据的缓存,命令的处理,命令的反馈。
数据的接收:过程包含在系统启动开始初始化串口通信的收发端口,设置波特率57600,设置数据位为8位,停止位为1位,无奇偶校验位,并开启数据收发中断。完成端口的初始化之后,等待数据自串口到来,触发接收中断。当数据到来触发接收中断后,首先判断数据是否是所约定的帧头,如果不是抛弃此数据并上报错误,直到接收到正确的帧头。帧头接收完毕以后,开始接收数据的长度信息,数据长度信息共两个字节,因此数据长度的最大值为65535。接收完毕数据长度信息之后开始接收数据校验位,数据校验位长度为两字节。校验数据接收完毕之后开始接数据位,在接收数据位的同时需要边接收数据边计算校验值,当接收到的数据等于本帧数据长度时,停止数据接收,开始对本帧数据的正确性进行校验。
数据校验:根据数据接过程中计算出来的校验值与接收的校验数据进行对比,如果计算出来的校验值等于接收到的校验值,则本帧数据为正确数据,说明传输过程中未出现差错,此时将数据存入命令缓存队列中,并释放数据处理信号量通知数据处理任务可以开始处理数据,如果不相等,则抛弃本帧数据,并上报数据接收错误。
数据的缓存:数据缓存在数据队列中,队列中仅缓存校验正确的数据,数据缓存成功后,程序会抛出数据处理信号量,此信号量能够唤醒挂起的数据处理任务,从而开始命令处理。
命令处理:命令处理任务中一直等到数据处理信号量的抛出,当接收到数据处理信号量时,数据处理任务从缓存队列中取出一帧数据,根据通信协议对数据进行解析,解析出命令字和消息所携带的参数等,根据这些信息执行本条命令。
命令反馈:命令处理完毕后或者在命令执行过程中出现错误,根据命令处理的结果将本帧命令的执行结果、帧号、发起ID号、目标ID号等信息反馈给发起此命令的上位机。
通信流程图如下图2所示:
4 结束语
通信的更新与迭代是一项系统和长久的工程,本系统的可变长通信模式能够解决串口通信在下位机通信中的局限性,在提高通信效率的同时能够更好地解决传统的串口通信在一帧数据接受完毕后,才能检验数据的正确性的弊端。本系统能够通过帧头检验来拦截一开始就错误的一帧数据,从而减少仪器通信系统不必要的浪费。根据长度来实现数据接收长度的可变长功能,减少通信协议的复杂程度,从而减少软件的维护成本。同时可变长的通信系统架构能够更好地兼容复杂多变的应用场景,能够让软件通信协议定义起来更加简单,减少由于软件协议兼容性差的原因造成的对于软件开发者的束缚。数据校验与数据缓存结合,能够实现通信错误的及时上报,对于校验错误的数据将不再处理直接报错。系统中ucos系统开辟的命令处理任务,并结合信号量控制能够保证任务处理的高效及时。处理完毕后对于处理结果的上报,使通信双方联系紧密,实现了闭环控制,能够让发送方及时了解命令处理的情况。此系统可以适用于串口、USB、CAN通信中,经测试此系统的响应速度快,使用靈活,传输错误率低,可用于中小型医疗设备中。
参考文献:
[1] 张海超.基于STM32的多串口通信系统设计[J].研究与开发,2019(2):99-101.
[2] 赵静雅. 基于STM32的智能家居检测控制系统设计[J].电脑知识与技术,2019(12);170-171.
[3] 张宇. 基于STM32的家用点阵屏的设计基于STM32的家用点阵屏的设计[J].电脑知识与技术,2019(16):296.
[4] 刘火良.STM32库开发实战指南[M].北京:机械工业出版社,2017(2).
[5] 廖有为.STM32单片机多串口通信仿真测试技术探讨[J].移动信息,2016(3):77.
【通联编辑:梁书】