STM32外设之LTDC/DMA2D—液晶显示(野火)

文章目录

  • 显示屏
  • [LTDC 液晶控制器](#LTDC 液晶控制器)
    • [LTDC 结构框图](#LTDC 结构框图)
      • [LTDC 初始化结构体 LTDC_InitTypeDef](#LTDC 初始化结构体 LTDC_InitTypeDef)
      • [LTDC 层级初始化结构体](#LTDC 层级初始化结构体)
  • [DMA2D 图形加速器](#DMA2D 图形加速器)
    • [DMA2D 初始化结构体](#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 结构体。

相关推荐
青牛科技-Allen6 分钟前
GC3910S:一款高性能双通道直流电机驱动芯片
stm32·单片机·嵌入式硬件·机器人·医疗器械·水泵、
森焱森2 小时前
无人机三轴稳定控制(2)____根据目标俯仰角,实现俯仰稳定化控制,计算出升降舵输出
c语言·单片机·算法·架构·无人机
白鱼不小白2 小时前
stm32 USART串口协议与外设(程序)——江协教程踩坑经验分享
stm32·单片机·嵌入式硬件
S,D3 小时前
MCU引脚的漏电流、灌电流、拉电流区别是什么
驱动开发·stm32·单片机·嵌入式硬件·mcu·物联网·硬件工程
芯岭技术5 小时前
PY32F002A单片机 低成本控制器解决方案,提供多种封装
单片机·嵌入式硬件
youmdt6 小时前
Arduino IDE ESP8266连接0.96寸SSD1306 IIC单色屏显示北京时间
单片机·嵌入式硬件
嘿·嘘6 小时前
第七章 STM32内部FLASH读写
stm32·单片机·嵌入式硬件
Meraki.Zhang6 小时前
【STM32实践篇】:I2C驱动编写
stm32·单片机·iic·驱动·i2c
几个几个n9 小时前
STM32-第二节-GPIO输入(按键,传感器)
单片机·嵌入式硬件
Despacito0o12 小时前
ESP32-s3摄像头驱动开发实战:从零搭建实时图像显示系统
人工智能·驱动开发·嵌入式硬件·音视频·嵌入式实时数据库