基于ARM+STemWin架构的机舱远程监控模块

2020-03-10 06:00于春鹏
关键词:时钟远程像素

张 宇,于春鹏

(上海船舶运输科学研究所 舰船自动化系统事业部, 上海 200135)

0 引 言

随着现代电气技术的快速发展,船上的电气自动化控制产品越来越多样化、智能化,对各设备的运行状态进行监测的要求越来越高。传统的远程监控主要采用点阵液晶显示器(Liquid Crystal Display, LCD)与单片机相结合的方式,其通信接口多采用串口通信,界面显示的内容单一且人机交互功能较少,而采用LCD屏不仅能显示丰富的设备模块,而且可通过按键进行人机交互,基于ARM(Advanced RISC Machines)芯片通信接口多样的特点,结合STemWin系统中的界面开发工具,易于实现丰富的界面显示。

传统的远程监控采用的是分布式现场总线监控系统,其分布式模块只负责数据的采集和上传,未实现数据共享和显示功能,本文研究设计的分布式远程监控设备不仅能实现分布式数据显示和数据共享,而且能通过以太网的通信方式上传、保存数据。

本文在对系统功能进行分析的基础上,基于STM32H753芯片和STemWin系统,在GUIBuilder图形化软件中生成显示界面程序,丰富界面显示,减少对设计界面的程序开发,提高监控设备的稳定性。通过ARM芯片屏幕驱动外设,可直接驱动显示屏幕;同时,通过按键实现人机交互。本文研究的监控模块在设计时结合FreeRTOS操作系统的时间任务管理机制,从而实现对船舶机舱系统设备的远程实时监控。

1 远程监控系统功能分析

船用远程监控系统是指在离开驾驶台或集控室时,对机舱设备重要的运行参数进行实时监测和故障诊断并加以显示的设备,是船舶自动化体系中的重要组成部分。轮机员可依靠远程监控系统实现机器处所集中控制站周期性无人值班,很大程度上改善轮机员的工作环境,减少其工作时间。远程监控系统可实现故障判断和声光报警功能,同时提高船舶设备的稳定性和船舶航行的安全性。某双主机推进的船舶远程监控系统网络原理图见图1,远程监控显示模块是系统的核心部件,能体现远程监控设备在系统中的关键作用。

图1 某双主机推进的船舶远程监控系统网络原理图

基于本文设计的远程监控显示模块,可实现关键设备数据采集和运行参数显示功能,以及设备故障逻辑判断、声光报警和消警功能。表1为远程监控显示模块的基本功能。

表1 远程监控显示模块的基本功能

2 硬件设计

为实现远程监控和显示功能,此次远程监控设备采用的处理器是基于ARM Cortex M7内核的处理器,采用6级流水线,运行频率高达400 MHz,具有快速可嵌套中断,同时芯片集成有各种高性能工业标准接口和外设(2个FDCAN接口、8个USART接口、6个SPI接口、1个LTDC接口和1个以太网接口等),处理器可直接通过LTDC驱动LCD屏,并实现ASCII字符和多模块显示等功能。远程监控设备由控制核心板、电源板和LCD屏组成,控制核心板通过并线接口与电源板相连。远程监控核心板硬件原理图见图2,该控制器可提供2路RS485总线通道、2路CAN总线通道、1路以太网通信通道和1路LTDC屏幕显示通道。

2.1 RGB-LCD显示器

RGB(Red Green Blue)-LCD是TFT(Thin Film Transistor)-LCD的一种,即薄膜晶体管LCD器。TFT-LCD与无源TN(Twisted Nematic)-LCD和STN(Super Twisted Nematic)-LCD的简单矩阵不同,其在LCD屏的每个像素上都设置有一个TFT,可有效克服非选通时的串扰,使LCD屏的静态特性与扫描线数无关,因此能大大提高图像的质量。RGB 屏外接信号线,其中有24根颜色数据线(RGB各占8根,即RGB888格式),这样可表示最多1 600万色,DE(Data Enable)、VS(Vertical Synchronization)、HS(Horizontal Synchronization)和DCLK(Data Clock)用于控制数据传输。

图2 远程监控核心板硬件原理图

RGB 屏一般有2种驱动模式,即DE模式和HV(Horizontal Vertical)模式,其中:DE模式采用DE信号确定有效数据(DE为高/低时,数据有效);HV模式通过行同步和场同步表示扫描的行和列。DE 模式和HV 模式的行扫描时序图见图3。

图3 DE模式和HV模式的行扫描时序图

图3中:HSD 即HS 信号,用于行同步,在DE 模式下不用HS 信号,LCD同样能正常工作;thpw为水平同步有效信号脉宽,表示一行数据的开始;thb为水平后廊,表示从水平有效信号开始,到有效数据输出的像素时钟个数;thfp为水平前廊,表示从一行数据结束,到下一个水平同步信号开始之前的像素时钟个数;扫描的1行数据共输出480个像素点数据,而液晶面板共有272行,这就需进行272次行数据扫描。从图3中可看出,DE 模式与HV 模式的时序基本一样,DE模式需提供DE 信号(DEN),而HV 模式无需DE 信号。

2.2 LTDC控制器

STM32H753系列芯片都带有LCD控制器,即LTDC,可直接通过LTDC外接RGB-LCD 屏,实现液晶驱动。LTDC控制器主要包含信号线、图像处理单元、AXI接口、配置和状态寄存器及时钟域,其框图见图4。

2.2.1 信号线

LTDC控制器包含RGBLCD驱动所需的所有信号线,这些信号线通过主板LCD接口引出,其信号线和IO连接关系说明见表2。

LTDC共有24 位数据线,支持RGB888格式。

2.2.2 图像处理单元

该单元由AHB接口获取显存中的图像数据,经过2层FIFO缓存之后,先经过像素格式转换器(Pixel Format Convertor, PFC)将从2层所选输入像素格式转换为ARGB888格式,再通过混合单元将2层数据合并,混合得到单层要显示的数据,最后经过抖动单元处理(可选)并输出给LCD屏显示。STM32H753的LTDC共有背景层、第一层和第二层等3层,其中,背景层只能是纯色(即单色),第一层和第二层都可用来显示信息,混合单元会将这3层混合起来显示。

图4 LTDC控制器框图

表2 LTDC信号线和IO连接关系说明

2.2.3 AXI接口

LTDC 驱动 RGB-LCD 时,需有很多内存做显存,比如1个 480×272像素的屏幕,按一般24位 RGB888模式,1个像素需要4个字节的内存,共需510 KB内存。STM32 内部没有这么大内存,因此必须借助外部 SDRAM,而 SDRAM 是挂在AXI 总线上的,LTDC的AXI接口就是用来将显存数据从SDRAM存储器传输到 FIFO中的。

2.2.4 配置和状态寄存器

LTDC 的各种配置寄存器和状态寄存器用于控制整个 LTDC 的工作参数,主要有各信号的有效电平、垂直/水平同步时间参数、像素格式和数据使能等。有效显示区域就是RGBLCD 面板的显示范围(即分辨率),有效宽度与有效高度的乘积就是 LCD 的分辨率。有效数据部分才是屏幕可显示区域。

2.2.5 时钟域

LTDC 有AXI 时钟域(Itdc_aclk)、APB3 时钟域(Itdc_plck)和像素时钟域(Itdc_ker_ck)等3个时钟域,用于驱动接口读取存储器的数据到FIFO中,其中:APB3 时钟域用于配置寄存器;像素时钟域用于生成LCD接口信号。像素时钟域的来源为外部晶振的频率(25 MHz),经过DIVM3分频,输入锁相环进行倍频(DIVN3)和分频(DIVR3),最终输出到LTDC中,产生LCD-CK,驱动液晶面板。通过STM32CubeMX配置时钟,设置屏幕时钟为9 MHz(见图5)。

图5 LCD-CK时序配置图

2.3 硬件接口设计

主板选用STM32H753作为处理器,通过LTDC接口引脚排线与LCD屏相连。该LCD屏采用的是上海天马TM043NDH02显示器,其背光每排有5个LED灯串联,每个灯的电压为3.2 V,工作电流为20 mA,工作电压为16 V。通过升压芯片LMR62421将5 V电压升至16 V点亮LCD背光。处理器通过PB3引脚PWM(Pulse Width Modulation)输出连接到背光负极线路,实现PWM调光功能。处理器通过FMC(Flexible Memory Controller)控制外部SDRAM芯片,通过地址线的映射将地址线上的数据传输到LCD屏上显示。处理器提供的2路USART串口通信接口可接收机舱设备的运行参数和状态参数,并通过分布现场总线CAN线的通信实现各监控设备之间的数据共享。机舱监测数据(接口-删除)通过串口隔离芯片ADM2682传输到处理器中。远程监控显示模块可通过ETH(Ethernet)以太网线路将监控设备的数据上传至计算机上进行储存和查询。处理器与各功能外设芯片的接线设计见图6。

图6 处理器与各功能外设芯片的接线设计

3 软件设计

软件设计主要分为3部分:

1) 在控制芯片STM32H753上根据功能需求实现外设驱动和参数配置;

2) 分析监控显示模块界面上的内容,利用移植的STemWin系统进行图形化界面设计;

3) 在嵌入式系统中对各任务功能进行组织划分设计,实现系统功能。

3.1 外设驱动和参数配置

本文设计的远程监控模块通过STM32CbueMX软件实现对处理器引脚的配置,处理器运行驱动时钟配置为外部输入时钟频率25 MHz,通过芯片内部变频使系统运行时钟频率为400 MHz。监控模块的各项功能是在FreeRTOS操作系统中新建的任务中实现的(见表3)。

表3 程序功能和参数配置对照

3.2 监控显示界面设计

机舱监控的设备包括主机、辅机、轴系、舵角、风机和不间断电源(Uninterruptible Power Supply, UPS)等。机舱设备的运行参数需明确体现设备的状态和属性,因此显示界面包括设备的状态测点名称、单位、实时数据和测点状态。为制作UI(User Interface)显示的界面,需移植STemWin,主要包含2部分:

1) 移植GUI(Graphical User Interface)函数库文件,主要实现GUI图形界面的底层驱动;

2) 移植GUI图形驱动文件,申请图形界面所需的内存,使GUI图形显示函数与LCD绘图函数相关联。

StemWin中包含GUIBuilder图形界面工具,可使用这款软件,根据实际显示尺寸和内容设计出所需的显示界面,将软件导出的C程序添加到工程中即可实现屏幕显示界面,减少对图形界面的程序开发。远程监控显示器模块实物图见图7。

图7 远程监控显示器模块实物图

3.3 主程序系统任务实现

主程序系统任务是控制器软件的核心,实现对各控制对象控制功能的逻辑运算。程序中主要包含串口通信数据采集任务、CAN通信数据交互任务、LCD图形界面显示任务、人机交互任务和以太网数据上传任务。传统的单片机采用裸机编程的方式,主函数在一个大循环中完成对所有任务的处理,通过中断进行故障处理。裸机编程的系统实时性较差,系统中各任务都是按顺序运行的,紧急任务也无法进行调度,只有在前面的任务完成之后才可进行。监控显示模块的功能需求是及时获取数据并显示,若因相关任务影响数据的获取,可能导致显示的数据滞后于实际值。

本文研究的远程监控模块主程序利用FreeRTOS的任务调度进行任务功能切换,通过定时切换任务的方式实现多任务交替运行,使主程序代码更简洁。不同功能在不同任务中实现,功能变更仅需通过更改各类功能的子函数即可实现,牵扯面小,易于维护。FreeRTOS多任务系统采用时间片轮询机制和优先级抢占机制,将主函数任务分解为多项小任务进行处理。主函数中的小任务是并发处理的,并不是同一时刻执行多项任务,只是因为每项任务执行的时间很短,导致外部表现为同一时刻执行多项任务。操作系统通过任务调度器的抢占式机制使优先级高的任务先得到处理,能解决多任务运行顺序的问题,实际主程序多任务运行过程见图8。

图8 主程序多任务运行过程

该远程监控显示模块已在某双主机推进的实船上得到应用。机舱设备运行参数显示刷新率频率为10 Hz,故障复位和人机交互的延时时间为100 ms,网络数据通信传输正常。实船监控模块运行状态稳定,对后期监测控制系统的开发有参考作用,能提高软件的复用性和可靠性。

4 结 语

本文详细阐述了远程监控模块的基本原理,通过采用StemWin系统中的图形界面开发工具,能大幅度缩短图形界面开发时间,快速实现丰富多样的显示界面,这对于开发设计个性化界面而言有很大优势。同时,结合FreeRTOS操作系统实现了显示器多任务管理功能,提高了控制器的利用率。为提高屏幕数据显示和人机交互的稳定性及多样性,仍需对控制软件进行优化和改良。

猜你喜欢
时钟远程像素
远程求助
像素前线之“幻影”2000
远程工作狂综合征
古代的时钟
“像素”仙人掌
这个时钟一根针
有趣的时钟
时钟会开“花”
高像素不是全部
您的像素,饱和吗?[上]