STM32F429芯片使用LTDC、DMA2D、及RAM存储器,构成了一个完整的液晶控制器。LTDC负责不断刷新液晶屏(将数据从显存搬运到液晶屏),DMA2D用于图像数据搬运、混合及格式转换(将数据搬运到显存),RAM存储器作为显存。

一、LTDC初始化结构体

1)、设置行同步信号HSYNC的极性,即HSYNC有效时的电平。

2)、设置垂直同步信号CSYNC的极性

3)、设置数据使能信号DE的极性

4)、设置像素时钟信号CLK的极性,可设置为上升沿,或下降沿,表示RGB数据信号在CLK的哪个时刻被采集

5)、设置行同步信号的的宽度——HSW-1

6)、设置垂直同步信号的的宽度——VSW-1

7)、HSW+HBP-1的值

8)、VSW+VBP-1的值

9)、HSW+HBP+有效宽度-1的值

10)、VSW+VBP+有效高度-1的值

11)、HSW+HBP+有效宽度+HFP-1的值

12)、VSW+VBP+有效高度+VFP-1的值

13)、配置背景的红色值

14)、配置背景的绿色值

15)、配置背景的蓝色值

LTDC初始化结构体配置好了与液晶屏通信的基本时序,还有像素格式、显示地址等诸多参数需要使用LTDC层级初始化结构体完成。

二、LTDC层级初始化结构体

1)、确定该层显示窗口的边界

2)、设置该层数据的像素格式

3)、设置该层恒定的透明度常量Alpha(LTDC_ConstantAlpha)

4)、配置该层的默认颜色值,分别为蓝色、绿色、红色分量及透明度分量

5)、设置混合系数BF1和BF2。每一层实际显示的颜色都需要使用透明度参与运算,计算出不包含透明度的直接RGB颜色值,然后才传输给液晶屏(因为液晶屏本身没有透明度的概念)

计算公式为  BC=BF1*C + BF2*Cs

本结构成员可以设置BF1/BF2参数是使用CA配置还是PA*CA配置。配置成CA表示混合系数中只包含恒定的Alpha值,即像素本身的Alpha不会影响混合效果;若配置成PA*CA,则混合系数中包含像素本身的Alpha值,即把像素本身的Alpha加入混合运算中,其中的恒定Alpha值即透明度百分比(配置的Alpha值/0xFF)

BC=恒定Alpha*C + (1-恒定Alpha)*Cs

6)、设置该层的显存首地址

7)、设置当前层的行数据长度(行有效像素个数*每个像素的字节数 + 3)

8)、设置从某行的有效像素起始位置到下一行起始位置出的数据增量

9)、设置当前层的显示行数

将这些配置写入LTDC的层级控制寄存器中,完成初始化。初始化完成后,LTDC会不断把显存空间的数据传输到液晶屏进行显示,可以直接修改或使用DMA2D修改显存中的数据,从而改变显示的内容。

三、DMA2D初始化结构体

1)、配置DMA2D的传输模式

2)、配置输出PFC(像素格式转换器)的颜色格式,即它将要传输给显存的格式

3)、配置DMA2D的寄存器颜色值(蓝色、绿色、红色分量及透明度分量)

4)、配置输出FIFO的地址,DMA2D的数据会被搬运到该空间,一般把它设置为本次传输显示位置的起始地址

5)、配置行偏移量(以像素为单位),行偏移量会被添加到各行的结尾,用于确定下一行的 起始地址。

行偏移量的值=行宽度-线的宽度

6)、配置DMA2D一共要传输多少行数据

7)、配置每行有多少个像素点

配置完将这些参数写入DMA2D的控制寄存器,然后再调用DMA2D_StartTransfer函数开启数据传输及转换。

液晶显示实验编程要点

1)、初始化LCD驱动的引脚

2)、使用LTDC初始化结构体,配置液晶屏的控制参数

3)、使用LTDC的层级初始化结构体,配置各层的控制参数

4)、直接操控显存,控制液晶屏显示图形

5)、使用DMA2D快速绘制直线及矩形

最新文章

  1. js设置css样式.
  2. nginx 301 永久重定向
  3. table 排序 添加 删除 等操作
  4. rm: Argument list too long
  5. ArcGIS中的坐标系定义与转换 (转载)
  6. java用freemarker导出数据到word(含多图片)
  7. 【mysql】之MySQL导入sql脚本错误:2006 - MySQL server has gone away
  8. Linux下mysql的安装和使用(C语言)
  9. 【转】URL和URI的区别
  10. Mybatis3 框架理解
  11. String Stringbuilder Stringbuffer的区别
  12. centos7下git版本升级及gitlab安装
  13. input输入框提交输入的值的方式
  14. JavaScript 快速入门
  15. Oracle字符函数length substr concat实例
  16. 【js】手机浏览器端唤起app,没有app就去下载app 的方法
  17. conda创建虚拟环境
  18. 一个简单的PHP短信群发
  19. Centos 7 文件和目录管理
  20. root目录空间不够的问题

热门文章

  1. 远程连接mysql出现"Can't connect to MySQL server 'Ip' ()"的解决办法
  2. Redis6.x学习笔记(一)
  3. 『动善时』JMeter基础 — 18、JMeter配置元件【计数器】
  4. [bug] PowerDesigner的association按钮灰色不能使用
  5. 使用CSS样式的三种方法
  6. [Qt] 事件机制(一)
  7. 【转载】让KVM虚机能使用音箱与麦克风(vnc及ac97)
  8. 电脑无法开机,用一个U盘先备份C盘部分重要文件并重装Win10系统的教程?
  9. sed常用
  10. Ansible_处理失败的任务