STM32外设之LTDC/DMA2D—液晶显示(野火)
文章目录
要了解什么
屏幕是什么,有几种屏,有什么组成。
怎么控制,不同屏幕控制
显示屏
有几种?
液晶显示器:简称 LCD(Liquid Crystal Display)LCD 显示器具有功耗低、体积小、承载的信息量大及不伤眼的优点。
液晶本身是不发光的,所以需要有一个背光灯提供光源,光线经过一系列处理过程才到输出,所以输出的光线强度是要比光源的强度低很多的,比较浪费能源(当然,比CRT 显示器还是节能多了)
CRT: 显示器(阴极射线管显示器)
LED:LED 点阵彩色显示器的单个像素点内
包含红绿蓝三色 LED 灯,显示原理类似我们实验板上的 LED 彩灯,通过控制红绿蓝颜色的强度进行混色,实现全彩颜色输出,多个像素点构成一个屏幕。由于每个像素点都是LED 灯自发光的,所以在户外白天也显示得非常清晰
OLED:显示器不需要背光源、对比度高、轻薄、视角广及响应速度快等优点
基本参数
像素、分辨率、色彩深度、显示器尺寸、点距
色彩深度指显示器的每个像素点能表示多少种颜色,一般用“位”(bit)来表示。如单
色屏的每个像素点能表示亮或灭两种状态(即实际上能显示 2 种颜色),用 1 个数据位就可以表示像素点的所有状态,所以它的色彩深度为 1bit,其它常见的显示屏色深为16bit、24bit。
控制?
完整的显示屏由液晶显示面板、电容触摸面板以及 PCB 底板构成。触摸面板带有触摸控制芯片,芯片处理触摸信号并通过引出的信号线与外部器件通讯面板中间是透明的,它贴在液晶面板上面,一起构成屏幕的主体,触摸面板与液晶面板引出的排线连接到 PCB 底板上,根据实际需要,PCB 底板上可能会带有“液晶控制器芯片”。因为控制液晶面板需要比较多的资源,所以大部分低级微控制器都不能直接控制液晶面板,需要额外配套一个专用液晶控制器来处理显示过程,外部微控制器只要把它希望显示的数据直接交给液晶控制器即可。而不带液晶控制器的 PCB 底板 ,只有小部分的电源管理电路,液晶面板的信号线与外部微控制器相连,直接控制。STM32F429 系列的芯片不需要额外的液晶控制器,也就是说它把专用液晶控制器的功能集成到 STM32F429 芯片内部了,节约了额外的控制器成本。
显存
液晶屏中的每个像素点都是数据,在实际应用中需要把每个像素点的数据缓存起来,再传输给液晶屏,这种存储显示数据的存储器被称为显存。显存一般至少要能存储液晶屏的一帧显示数据,如分辨率为 800x480 的液晶屏,使用 RGB888 格式显示,它的一帧显示数据大小为:3x800x480=1152000 字节;若使用 RGB565 格式显示,一帧显示数据大小为:2x800x480=768000 字节。
LTDC 液晶控制器
STM32F429 系列芯片内部自带一个 LTDC 液晶控制器,使用 SDRAM 的部分空间作为显存,可直接控制液晶面板,无需额外增加液晶控制器芯片。STM32 的 LTDC 液晶控制器最高支持 800x600 分辨率的屏幕;可支持多种颜色格式,包括 RGB888、RGB565、ARGB8888 和 ARGB1555 等(其中的“A”是指透明像素);支持 2 层显示数据混合,利用这个特性,可高效地做出背景和前景分离的显示效果,如以视频为背景,在前景显示弹幕。
支持颜色格式
ARGB8888颜色格式:AAAAAAAARRRRRRRRGGGGGGGGBBBBBBBB
RGB888颜色格式:RRRRRRRRGGGGGGGGBBBBBBBB
RGB565颜色格式:RRRRRGGGGGGBBBBB
ARGB1555颜色格式:ARRRRRGGGGGBBBBB
ARGB4444颜色格式:ARRRRRGGGGGBBBBB
L8 (8-bit luminance or CLUT)8 位颜色格式,实际上仅仅是 8 位索引值,范围 0–255,而每个索引值的具体颜色值在查色表 CLUT里面存储。
AL44 (4-bit alpha + 4-bit luminance)8 位颜色格式,实际上是 4 位 Alpha 通道(0x0 表示完全透明,0xF 表示完全不透明)和 4 位的索引值,索引范围 0–15,而每个索引值的具体颜色值在查色表 CLUT 里面存储。
AL88 (8-bit alpha + 8-bit luminance)16 位颜色格式,实际上是 8 位 Alpha 通道(0x00 表示完全透明,0xFF 表示完全不透明)和 8位的索引值,索引范围 0–255,而每个索引值的具体颜色值在查色表 CLUT 里面存储。
LTDC 结构框图
主要包含信号线、图像处理单元、寄存器及时钟信号。
LTDC 初始化结构体 LTDC_InitTypeDef
LTDC 层级初始化结构体
LTDC 初始化结构体只是配置好了与液晶屏通讯的基本时序,还有像素格式、显存地址等诸多参数需要使用 LTDC 层级初始化结构体完成。
LTDC_CFBStartAdress本成员用于设置该层的显存首地址,该层的像素数据保存在从这个地址开始的存储空间内。
配置完 LTDC_Layer_InitTypeDef 层级初始化结构体后,调用库函数LTDC_LayerInit
可把这些配置写入到 LTDC 的层级控制寄存器中,完成初始化。初始化完成后 TDC 会不断把显存空间的数据传输到液晶屏进行显示,可以直接修改或使用 MA2D 修改显存中的数据,从而改变显示的内容。
配置
配置显存首地址
每一层都有独立的显存空间,向 LTDC_CFBStartAdress 参数赋值可设置该层的显存首地址,我们把第 1 层的显存首地址直接设置成宏 LCD_FRAME_BUFFER,该宏表
DMA2D 图形加速器
在实际使用 LTDC 控制器控制液晶屏时,使 LTDC 正常工作后,往配置好的显存地址写入要显示的像素数据,LTDC 就会把这些数据从显存搬运到液晶面板进行显示,而显示数据的容量非常大,所以我们希望能用 DMA 来操作,针对这个需求,STM32 专门定制了DMA2D 外设,它可用于快速绘制矩形、直线、分层数据混合、数据复制以及进行图像数据格式转换,可以把它理解为图形专用的 DMA。
DMA2D 初始化结构体
在实际显示时,常常采用 DMA2D 描绘直线和矩形,这个时候会用到 DMA2D 结构体。
原文地址:https://blog.csdn.net/c1063891514/article/details/142307466
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!