基于STM32F4的多通道串口驱动TFT液晶屏显示系统设计

2020-05-06 13:46任克强王传强
液晶与显示 2020年5期
关键词:波特率液晶屏扇区

任克强,王传强

(江西理工大学 信息工程学院,江西 赣州 341000)

1 引 言

TFT液晶屏是嵌入式系统中重要的组成部分,但由于TFT液晶屏驱动较为复杂,对处理器有较高的要求,在大部分8位和16位机、部分32位机中较难实现驱动。文献[1]和文献[2]利用STM32处理器的FSMC功能实现了对TFT液晶屏的驱动,但此方法具有一定的局限性,只能在具有FSMC功能的处理器中实现TFT液晶屏的驱动,无法满足没有FSMC功能的处理器(如51单片机等处理器[3-4])驱动TFT液晶屏的需求。

针对上述问题,本文设计了一种多通道串口控制驱动MUC接口模式的TFT液晶屏的显示系统,该系统提供4个控制TFT液晶屏的串口通道,使用TFT液晶屏的外部处理器只需有串口或通过I/O口模拟串口就可以使用TFT液晶屏,简化了TFT液晶屏驱动和使用,降低了使用TFT液晶屏外部处理器的功能要求,拓展了TFT液晶屏的适应性和使用范围。

2 系统硬件设计

本文设计的TFT液晶屏显示系统由STM32F4处理器和TFT液晶屏两大部分组成,硬件框图如图1所示。

图1 系统硬件框图Fig.1 Hardware framework of system

利用STM32F4的FSMC功能驱动TFT液晶屏,并通过其串口向使用TFT液晶显示系统的外部处理器提供控制通道。STM32F4的时钟频率高达168 MHz,具有8个串行口和1个FSMC接口,可模拟8080时序驱动TFT液晶屏[5-7]。最大支持4个通道同时接入,外部处理器通过串口访问STM32F4内部预先烧录的接口程序,实现对TFT液晶屏的控制。STM32F4处理器主存储块具有1 M FLASH,分为11个扇区,主存储块FLASH扇区划分如表1所示。本设计将这1 M的FLASH划分为两个部分,其中:扇区0~8为程序存储区,扇区9~11为汉字字库存储区。

液晶驱动控制器是集成于TFT液晶屏的一个驱动芯片,每种控制器具有唯一的序列号,虽然控制器型号众多,但大部分的底层驱动方式是一样的,可以通过STM32F4模拟8080时序进行驱动,差别主要在于控制指令的不同。因此,为了可以兼容多种不同型号的MUC接口TFT液晶屏,本设计采用读取液晶驱动控制器的序列号进行液晶屏的识别,从而执行对应屏幕型号的控制指令,实现多种不同型号液晶屏的驱动。本文设计的TFT液晶显示系统可驱动60.1~177.8 mm(2.4~7 in)5种尺寸,包括ILI9341、IGDP453和SSD1936等15种不同驱动芯片的MUC接口TFT液晶屏。

表1 STM32F4主存储块Flash扇区划分

Tab.1 Sector division of FLASH in STM32F4 main memory

扇区号地址大小扇区00x08000000-0x08003FFF16 kB扇区10x08004000-0x08007FFF16 kB扇区20x08008000-0x0800BFFF16 kB扇区30x0800C000-0x0801FFFF16 kB扇区40x08020000-0x0803FFFF64 kB扇区50x08040000-0x0805FFFF128 kB︙︙︙扇区90x080C0000-0x080DFFFF128 kB︙︙︙扇区110x080E0000-0x080FFFFF128 kB

3 系统软件设计

图2 系统软件流程图Fig.2 Flow chart of system software

μC/OS-Ⅲ是一种可移植、可剪裁的实时多任务操作系统,专为嵌入式系统设计,可与应用程序一起固化到ROM中。μC/OS-Ⅲ以其优异的性能和较高的稳定性已经被移植到8位、16位、32位和64位等多种不同处理器中[8-11]。μC/OS-Ⅲ在处理器的RAM空间允许条件下,可创建无数任务。本文系统软件全部是在μC/OS-Ⅲ操作系统的基础上建立的。

系统软件流程图如图2所示。程序运行时首先调用OSInit()完成对整个操作系统所有变量和数据结构的初始化,自动创建空闲任务,完成操作系统运行前的准备工作。然后调用OSTaskCreate()创建一个起始任务,起始任务运行时将创建5个任务,分别是1个串口配置任务和4个控制串口通道任务,将串口配置任务设置为最高级,然后将起始任务删除,起始任务只在程序运行时执行一次。之后将创建的5个任务添加到就绪列表,调用OSStart()启动μC/OS-Ⅲ,开始多任务之间的调度。按照任务的优先级,串口配置任务将首先被执行,此时采用非阻塞延时的方式让系统延时5 s,在这5 s内若有更改配置操作则可进行人工修改配置,否则跳过,保留串口默认配置,随之将串口配置任务删除,将不会再被执行,最后操作系统将会在空闲任务和4个控制串口通道任务之间循环调度。

3.1 液晶显示驱动设计

本设计所支持的TFT液晶屏都是MUC接口的16位8080并口驱动方式,完全可以通过FSMC模拟8080时序进行驱动,只是初始化控制指令有所差别,只需根据读取TFT液晶屏的ID序列号判断屏幕型号,调用不同的初始化程序完成液晶屏驱动显示。TFT液晶屏的信号线包括:数据总线(D0~D15)、设置写入数据/命令(RS)、写使能(WR)、读使能(RD)、片选(CS)、复位(RST)和背光(BL),在控制时只需要用到D0~D15、RS、WR、RD和CS引脚。FSMC模式A读写时序如图3所示,TFT液晶屏16位并口8080接口时序如图4所示,对比图3和图4可知,TFT液晶屏没有地址线,具有一个设置写入数据/命令(RS)引脚,通过此引脚决定传输的是数据还是命令,可以将此信号线看作FSMC的其中一个地址线,将RS引脚连接到FSMC A0地址线。当FSMC写地址0时,对于TFT液晶屏即为写命令;当FSMC写地址1时,对于TFT液晶屏即为写数据。这样就可以通过FSMC模拟16位并口8080时序完成对TFT液晶屏的控制操作。

(a)读时序(a)Read timing

(b)写时序(b)Write timing图3 FSMC模式A读写时序Fig.3 FSMC mode A read and write timing

图4 16位并口8080接口时序Fig.4 16 bit parallel port 8080 interface timing

3.2 串口通信程序设计

串口是连接外部处理器和本文TFT液晶屏显示系统的桥梁,所有外部处理器传入的所有数据和指令都是通过串口进行发送。本设计采用STM32F4的4个串口作为传输通道,利用DMA方式进行传输。DMA传输数据的本质是将数据从一个地址空间复制到另一个地址空间,无需CPU参与,大大减轻了CPU的负担。

本设计的系统配置界面如图5所示。图5(a)界面显示当前4个串口的默认波特率都为9.6 kB/s,通过触摸屏幕可以选择是否配置串口波特率或者直接跳过配置;图5(b)为串口配置界面,可通过触摸屏幕完成4个串口的波特率配置。

(a) 设备信息及选择界面(a) Equipment information and selection interface

(b) 串口配置界面(b) Serial port configuration interface图5 系统配置界面Fig.5 System configuration interface

3.3 驱动控制接口设计

外部处理器在控制TFT液晶屏显示系统前,先发送一系列的设置数据,STM32F4处理器接收这些数据并进行数据解析,获取端口号,选择是显示图像还是显示字符、数字或者汉字。如果显示图像,首先会判断图像的显示坐标和大小,然后接受串口发来的图像数据,写入到液晶屏进行显示。如果显示字符、数字或者汉字,首先会判断显示字体的大小、长度和坐标,设置背景颜色和字体颜色,然后调取STM32F4内部FLASH存入的字模数据写入到液晶屏进行显示。驱动控制接口调用流程如图6所示。

图6 驱动控制接口调用流程图Fig.6 Flow chart of driver control interface calling

4 实验结果

首先测试在不同波特率下的数据传输速度,外部处理器通过串口通道发送数据控制TFT液晶屏显示系统,传输速度的理论值与实际值如表2所示。如果选择最为常用的9.6 kB/s波特率,每秒可以传输9 400字节,若传输长宽为16×16像素的汉字或者字符,每秒可以传输约29个汉字

表2 不同波特率的数据传输速度

Tab.2 Data transfer speeds with different baud rates (kB·s-1)

波特率理论值实际值 2.4 2.4 2.34.8 4.8 4.7 9.6 9.6 9.4 115.2 115.2 111.3 256 256 232.7 2 0002 000 1 969

或者字符。

采用11 cm(4.3 in)800×480分辨率的TFT液晶屏进行显示测试,在9.6 kB/s波特率下测试外部处理器通过串口控制TFT液晶屏显示汉字、字符和数字的效果,测试结果如图7所示。其中,图7(a)为1个外部处理器控制TFT液晶屏显示系统的全屏显示结果;图7(b)为2个外部处理器同时控制TFT液晶屏显示系统的2分屏显示结果;图7(c)为3个外部处理器同时控制TFT液晶屏显示系统的3分频显示结果;图7(d)为4个外部处理器同时控制TFT液晶屏显示系统的4分频显示结果。当多个处理器通过串口通道同时控制TFT液晶显示系统时,显示效果稳定流畅。

(a) 单通道控制显示(a) Single channel control display

(b) 双通道控制显示(b) Dual channel control display

(c) 三通道控制显示(c) Three channel control display

(d) 四通道控制显示(d) Four channel control display图7 液晶屏控制显示测试结果Fig.7 LCD control display test results

5 结 论

TFT液晶屏驱动是开发和设计嵌入式应用系统经常要面对和解决的问题。常规的MUC接口TFT液晶屏驱动方法较为复杂,对直接使用TFT液晶屏的外部处理器和开发设计人员均有一定的要求。本文采用串口方式控制MUC接口模式的TFT液晶屏的方法,降低了对外部处理器的功能要求,可以满足无法直接进行屏幕驱动的8位、16位和32位机使用TFT液晶屏的需求,仅需两根I/O线就能进行TFT液晶屏的控制,节约了外部处理器的资源。本文方法可同时提供4个控制TFT液晶屏的串口通道,既可以单个外部处理器控制TFT液晶屏,也可以多个外部处理器同时控制TFT液晶屏,拓展了TFT液晶屏的使用范围,可满足某些特定场合的应用需求。本文方法具有较好的兼容性,可适用5种不同尺寸、15种不同IC芯片的MUC接口TFT液晶屏。经测试,TFT液晶屏的驱动速度能较好地满足显示需要,在4个串口通道同时控制TFT液晶屏的情况下,显示效果清晰流畅,系统运行稳定可靠。

猜你喜欢
波特率液晶屏扇区
UART 波特率检测电路的FPGA 设计算法与实现
分阶段调整增加扇区通行能力策略
CAN 总线波特率自适应程序设计
空中交通管制扇区复杂网络建模与特性分析
可以同时应用于不同终端设备的波特率发生器
管制扇区复杂网络特性与抗毁性分析
U盘故障排除经验谈
波特率自适应的CAN驱动在嵌入式Linux下的实现①
基于FPGA的车内环境监测系统设计
一种消除液晶屏高温MURA的工艺研究