基于RA8876M的船舶机舱一体化显控模块设计
2020-05-08谢木森
谢木森, 徐 莹, 华 金
(上海船舶运输科学研究所 航运技术与安全国家重点实验室, 上海 200135)
0 引 言
随着信息科技的蓬勃发展,船舶对机舱监测和控制系统的智能化要求越来越高,当前以机舱自动化为核心的船舶综合信息系统已在船舶领域得到广泛应用。船用仪器、仪表实现智能化,能直接推动船舶机舱整体自动化程度的提高。液晶触摸屏是目前广泛应用的智能人机交互设备,具有坚固耐用、节省空间、操作灵敏和展示的内容丰富直观等优点[1-3]。
根据某型船对大屏幕监测报警显示模块的实际需求,结合船舶机舱内各类型显控模块的通用需求,上海船舶运输科学研究所研究开发了一款基于RA8876M显示控制器的船舶机舱一体化显控模块。该模块配备有船舶机舱内常用的多种通信接口,触控功能操作便捷,15吋(1吋=0.025 4 m)大小的液晶显示屏能以多种形式展示大量内容,适于主机遥控系统、能量管理系统、机舱监测报警系统、透平机控制系统和电喷柴油机的机旁操作系统等船舶智能显控系统采用。
1 模块整体结构设计
该一体化显控模块采用ST意法半导体公司的STM32F429型中央处理器(Cevtral Processing Unit, CPU)作为模块主控芯片微控制单元(Microcontroller Unit, MCU),采用瑞佑公司的RA8876M型TFT-LCD控制芯片作为显示控制器,搭配PenMount 6202B型触摸板控制器,实现15吋液晶显示触摸屏的主要功能。该模块提供有船舶机舱内广泛配置的通信接口,包括2路CAN(Controller Area Network)总线接口、2路以太网接口、1路RS485接口和1路通用串行总线(Universal Serial Bus, USB)接口。该模块的I/O接口自带12路开关量输入接口和6路继电器输出接口,既能外接按键或其他开关量输入,又能满足声光报警和继电器控制等输出要求。为提高易维护性,模块提供单独的一路USB接口支持ISP(In-System Progamming, ISP)程序在线烧写。此外,该模块支持大容量SD(Secare Digital)卡数据存储和屏幕亮度调节等辅助功能[4]。图1为机舱一体化显控模块整体结构。
图1 机舱一体化显控模块整体结构
1.1 主控芯片选择
STM32F429芯片是基于ARM CoretexM4的32位内核的低功耗嵌入式处理器,主频最高达到180 MHz,自带的256 KB SRAM加2 MB FLASH内存空间较为充裕,同时集成有丰富的外设资源,如高速定时器、中断引脚,以及常用的以太网、CAN、USB和RS485等通信接口。此外,该微控制器内部集成有可变存储控制器FMC(Flexible Memory Controller),方便直接驱动RA8876M显示驱动器。
该模块最终选用的LPQF(Low-Profile Quad Flat Package)封装176脚的STM32F429芯片的高速主频既能满足高速触摸坐标采集转换和指挥RA8876M显卡驱动的要求,又能保证其他采集和通信等任务正常开展。此外,双以太网和双CAN总线的芯片配置对于对通信质量有较高要求的船舶机舱系统来说尤为适用。整体来看,该STM32F429芯片是一款高性能、低成本、低功耗、实时应用、具有竞争性价格优势的通用型MCU。
1.2 显示驱动芯片选择
RA8876M显示驱动器是一款低功耗双图层液晶显示TFT-LCD控制器,最大可支持2 048×2 048分辨率,支持多种常用输入显示数据格式,自带64 MB显示缓存,无需外扩内存,支持8/16位的8080/6080并行总线和IIC/SPI串行总线连接到MCU主控芯片,同时可根据显示屏的需要设定24/18/16位TFT显示输出方式。由于RA8876M芯片内部均为8位寄存器且自带显示缓存,因此硬件设计环节采用16位FMC驱动方式连接到MCU,FMC的读写操作时序与RA8876M芯片的读写时序一致,将RA8876M芯片当作外部存储器SRAM使用,方便快捷。当MCU发送数据指令或从RA8876M芯片中读取数据时,直接往相应映射地址读写数据即可,FMC会在硬件的基础上自动完成时序上的控制[5]。
为增强画面显示的效果,RA8876M芯片支持2D图形的BTE(Block Transfer Engine)引擎,可完成大量图形数据转换和传送任务,芯片自带常用几何图形加速引擎GSE(Geometric Speed-up Engine)和强大的硬件加速功能,能保证MCU发出的更新显示和绘图等指令的执行效率。为保证多类型图片格式和文本格式的显示更新,芯片通过串行SPI-FLASH接口支持任意大小的图库芯片和多款集通字库芯片。采用自带字库的芯片和外置字库芯片,均可实现最大32×32 pixel的字形输出;外置的字库芯片可选用支持多国语言文字显示的类型,灵活配置,使该芯片的应用场景更加丰富。此外,通过配置芯片对应引脚的PWM(Pulse Width Modulation)功能和I/O引脚,可在线调节显示屏的背光亮度,完成亮屏、熄屏等辅助控制。
1.3 RA8876M软件开发
RAio公司提供的上位机辅助开发软件可实现对RA8876M芯片的可视化编程。该软件功能丰富,且每个功能界面都会根据当前操作生成相应的C语言代码;这些代码可直接移植到KEIL开发环境中使用。通过研究各界面涉及的API函数和参数,能降低开发软件的学习难度,节省大量软件开发时间。
图2为上位机辅助开发工具写入图片过程截图,其中:右侧的Status栏展示了当前显示屏的分辨率、画布内存位置和活动窗口的坐标位置等编程必要信息,方便开发人员读取配置信息;底部的C code栏展示了应用当前写入图片功能调用的功能函数,方便调整相关配置参数等信息;开发软件顶部的功能选择菜单主要分为5部分,具体如下。
图2 上位机辅助开发工具写入图片过程截图
1) SPI Flash Tool功能,可将图片转换之后的bin格式文件烧写到外扩图库芯片中。为保证图库芯片正确烧写,通过软件的DMA功能,可读取并显示图库内某具体地址范围内的图片。
2) MPU Write Tool功能,支持单张图片资料的在线烧写和预览,并灵活调整图像在界面中显示的区域。
3) Text Tool工具,提供对芯片自带字库和外置字库的文字显示和输出测试功能,可选择任意坐标位置进行文字显示,同时可配置字体格式、字体颜色、背景颜色和字体大小等选项,避免因频繁修改字体显示参数而花费大量时间更新MCU程序。
4) Draw Function,主要用来在线观测各种内建二维图形的显示效果,并灵活调整各二维图形的显示位置、图形大小、线条颜色和填充颜色等具体配置,匹配选择出恰当的API函数和参数,有效提升开发效率。
5) BTE(Block Transfer Engine)功能,将其与PIP功能相结合,能实现2层图像资料的重叠显示和拼接组合等功能,大大丰富界面显示效果。
1.4 触摸屏和触摸屏控制器的选择
触摸屏一般分为电容、电阻、矢量压力传感、表面声波和红外线扫描等类型,应用最多的是四线电阻式触摸屏和五线电阻式触摸屏。电阻式触摸屏由2个透明的电阻薄膜组成,当水平方向和垂直方向的电阻网有电压时,可通过A/D转换面板在触摸点测量出电压,从而求出对应的坐标值。该模块选用的五线制电阻式触摸屏适宜机舱的复杂环境,即使是在触摸板某些位置出现少数坏点的情况下,整体仍能正常使用,增强了模块的耐用性[6]。
PenMount 6202B型触摸屏控制器内置有A/D转换器,具有四线制电阻式触摸屏和五线制电阻式触摸屏的特点和功能,可通过USB和RS232接口导出坐标数据到MCU中,支持触摸屏的最大分辨率为2 048×2 048,刚好覆盖RA8876M芯片支持的最大分辨率,能满足该模块15吋液晶显示屏的触摸要求。
1.5 通信接口
考虑到船舶机舱内的复杂应用场景和大批量的数据交互,该模块提供有不同类型的标准通信接口,以满足不同设备和系统的连接需求,提高系统的可扩展性。以太网协议作为当前广泛应用的局域网通信协议,传输数据量大,传输速度快,防干扰能力强,适于在船舶机舱内的复杂环境中应用。此外,CAN总线和RS485总线等也在各种模块和系统中大量应用。因此,该模块设计有2路CAN总线接口、2路以太网接口、1路配合上位机软件使用的USB接口和1路RS485接口,能基本覆盖船舶机舱内常见的数据交互场景。
2 船舶机舱一体化显控模块的软件设计
该模块的软件设计是在Keil 5开发环境中进行的,没有使用操作系统,主要实现一体化显控模块的常用功能和各标准接口的正常工作,软件设计主要包括触摸显示功能、通信接口功能、数据存储功能和I/O采集输出功能等。下面主要介绍显示功能和触摸功能的软件设计过程。
图3 RA8876M芯片上电初始化过程
2.1 显示功能的软件设计
该模块采用W25Q128型图库芯片,16 MB的内存空间,最多可容纳10幅1 024×768分辨率的RGB565格式图像。由于SPI-Flash支持从任意地址连续读取任意长度的数据,尤其是RA8876M芯片支持DMA(Direct Memory Access)功能,可方便快捷地加载图像。借助配套上位机开发工具,可轻松地将显示所需图片资料转换成bin格式文件,打包烧写到外部图库芯片中,以便程序运行时RA8876M芯片读取。
RA8876M芯片通过MCU的FMC功能驱动,命令寄存器在MCU中的映射地址为0x60020000,数据寄存器的映射地址为0x60000000,因此与RA8876M相关的函数调用直接融合到MCU的执行代码中即可。RA8876M芯片上电初始化过程见图3,初始化SDRAM参数、LCD屏幕参数和字库图库参数,并默认在最高亮度下点亮屏幕。在后续循环过程中,根据触摸输入或按键采集结果,不断更新显示内容即可。
2.2 触摸功能的软件设计
STM32F429通过RS232接口采集触摸板控制器PenMount 6202B发出的A/D坐标信息,当任意一点被按下时,触发MCU的RS232接收中断,持续接收坐标数据。根据数据格式,每6个字节为1组,存入数组ucaRxBuf [5]中,其中:data[5]为校验位;ucaRxBuf [4] + ucaRxBuf [3]为X坐标值;ucaRxBuf [2] + ucaRxBuf [1]为Y坐标值,当ucaRxBuf [0]为0x70时表示“按下”,当ucaRxBuf [0]为0x70时表示“抬起”[7]。当触摸板感应到“按下”时,坐标判断功能代码如下,触摸逻辑判断见图4。
if(0x70 == ucaRxBuf[0])
{
cnt_70_1 = i;
if(0x70 == ucaRxBuf[cnt_70_1 + 6])//every 6 byte
{
if(0xff == ((ucaRxBuf[cnt_70_1+0]+ucaRxBuf[cnt_70_1+1]+
{
//if pass check sum
if((ucaRxBuf[cnt_70_1+2]<4)&&(ucaRxBuf[cnt_70_1+4]<4))
{
Y_cdt = ucaRxBuf[cnt_70_1+2];
Y_cdt = Y_cdt<<8 | ucaRxBuf[cnt_70_1+1];
X_cdt = ucaRxBuf[cnt_70_1+4];
X_cdt = X_cdt<<8 | ucaRxBuf[cnt_70_1+3];
/*映射到屏幕显示坐标,左上角(0,0),右下角(1024,768)*/
X_cdt_dis = ((X_cdt-0x60)*125)/100 ; //X coordinate
Y_cdt_dis = 768-(((Y_cdt-0x66)*100)/106); //Y coordinate
Draw_Circle_Fill(0xfff0,X_cdt_dis,Y_cdt_dis,10);
………
}
图4 触摸逻辑判断
此外,PenMount控制器可通过USB接口连接上位机校准软件,提供初始屏幕的多点坐标校准等功能。至此,模块可实现触摸板的触摸采集功能,配合RA8876M芯片的画图切图等操作,实现触摸板某个位置按下时,液晶显示屏快速响应。
3 模块实现与性能分析
该船舶机舱一体化显控模块控制板外观见图5,通过在某延伸报警系统中应用,验证该模块的性能优良,操作安全方便。在设计中,通过开关量输出引出的外部辅助按键可实现屏幕上下翻页、报警应答、熄屏休眠和系统重启等功能,面板外置的USB接口连接到模块的ISP接口,可根据需要更新MCU程序,128 MB的图库芯片容量充足,能满足大多数船舶机舱显控系统的图像存放需求。此外,通过MCU的DMA功能或RA8876M芯片的内存块搬运功能,均可实现整张屏幕的图像快速刷写,在15吋液晶显示屏上的显示效果良好,触摸板的触摸捕捉灵敏,刷新显示等响应迅速,能充分满足该船延伸报警系统对操作响应灵敏性的要求。
a) 正面
b) 背面
4 结 语
本文在充分了解和分析船舶机舱内各类常规显示控制系统之后,结合触摸显控装置在各种工业场景中的优良性能,设计实现了基于STM32F429+RA8876M的船舶机舱一体化显控模块。该模块15吋液晶显示屏展示的内容较为丰富,提供有强大的数据采集、处理和存储功能,加上良好的人机交互性能和多样化的通信功能,能大大提高船舶机舱内显示模块的操作便捷性。通过在某延伸报警系统中实际应用,验证了该模块具有优良的性能,能推广应用到其他船舶机舱显控系统中。