LTDC_DMA2D驱动实验
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快速绘制直线及矩形
LTDC_DMA2D驱动实验的更多相关文章
- (三)内存 SDRAM 驱动实验 (杨铸 130 页)(勉强能懂个大概)
SDRAM 芯片讲解: 地址: 行地址 (A0-A12) 列地址 (A0-A8) 片选信号(BA0 BA1)(L-BANK)(因为SDRAM有 4片) 两片SDRAM 连线唯一区别在 UDQM ...
- 10-8位7段数码管驱动实验——小梅哥FPGA设计思想与验证方法视频教程配套文档
芯航线--普利斯队长精心奉献 实验目的: 1.实现FPGA驱动数码管动态显示: 2.使用In system sources and probes editor工具,输入需要显示在数码管上的的数据, ...
- IMX6ULL开发板Linux_WIFI驱动实验
1.在迅为i.MX6ULL开发板上使用的是 usb 接口的 RTL8723 wifi 模块,原理图如下所示:可以看到 RTL8723 模块的接口非常简单,只有 DP1 和 DM1 连接到 usb HU ...
- android驱动学习---led实验
======================== 驱动: 内核:android-kernel 2.6.36 (必须对应你的板子上内核,不然会出现insmod错误) 目的:通过android应用层用户 ...
- 信息安全系统设计基础实验四 20135210&20135218
北京电子科技学院(BESTI) 实 验 报 告 课程:信息安全系统设计基础 班级: 1352 姓名:程涵,姬梦馨 学号:20135210,20135218 ...
- 【转】S3C2440存储系统-SDRAM驱动
SDRAM(Synchronous Dynamic Random Access Memory,同步动态随机存储器)也就是通常所说的内存.内存的工作原理.控制时序.及相关控制器的配置方法一直是嵌入式系统 ...
- 25.Linux-Nor Flash驱动(详解)
1.nor硬件介绍: 从原理图中我们能看到NOR FLASH有地址线,有数据线,它和我们的SDRAM接口相似,能直接读取数据,但是不能像SDRAM直接写入数据,需要有命令才行 1.1其中我们2440的 ...
- 成都国嵌-嵌入式linux必修实验手册…
emouse收集整理,转载请注明: emouse的技术专栏 博客园:http://www.cnblogs.com/emouse/ CSDN:http://blog.csdn.net/haozi_198 ...
- 驱动程序分层分离概念_总线驱动设备模型_P
分层概念: 驱动程序向上注册的原理: 比如:输入子程序一个input.c作为一层,下层为Dev.c和Dir.c,分别编写Dev.c和Dir.c向上Input.c注册:如图所示 分离概念: 分离概念主要 ...
随机推荐
- Gentoo 后的几个细节的完善
Gentoo 后的几个细节的完善 目录 Gentoo 后的几个细节的完善 细节一:引导分区与 cdrom 开机正确挂载 细节二:可预见的命名规则的网络接口名称改为传统的 eth0 细节三:为管理员用户 ...
- v-bind的使用
v-bind v-bind的引入 内容的绑定可以通过mustache语法,而属性的绑定往往需要通过v-bind 如动态绑定img的src属性 如动态绑定div的class属性 如动态绑定li元素的 ...
- 3.下载CentOS镜像
下载CentOS镜像 引子: 镜像可以看成是类似ZIP的压缩文件,与rar ZIP压缩包类似,镜像文件是无法直接使用的,需要利用一些虚拟光驱工具 进行解压后才能使用 我们这里就是CentOS系统的镜像 ...
- 【CentOS_7】使用tcpdump抓明文包
tcpdump port 12345 -X -X:以十六进制与ASCII方式输出,用于抓取http等明文传输协议 tcpdump功能强大,更多参数可以参考 https://www.cnblogs.c ...
- tuple必须加上逗号
tuple支持 空 元组 不加逗号 >>> tup4 = () tuple非空的元组必须加上逗号>>> tup4 = (55,)>>> tup4 ...
- Linux软件安装管理之——dpkg与apt-*详解
Linux软件安装管理之--dpkg与apt-*详解 [Linux软件安装管理系列]- - 传送门: - -<Linux软件安装管理之--源码安装详解> - -<Linux软件安装管 ...
- named piped tcp proxy 下载
named piped tcp proxy 在某DN上面下载很麻烦,还要登录什么的,分享出来!希望大家支持 链接:https://pan.baidu.com/s/1fdJD6O0qb8_BkkrnMy ...
- LTP--linux稳定性测试 linux性能测试 ltp压力测试 内核更新 稳定性测试
LTP--linux稳定性测试 linux性能测试 ltp压力测试 zhangzj1030关注14人评论33721人阅读2011-12-09 12:07:45 说明:在写这篇文章之前,本人也不曾了 ...
- Java 中 volatile 关键字及其作用
引言 作为 Java 初学者,几乎从未使用过 volatile 关键字.但是,在面试过程中,volatile 关键字以及其作用还是经常被面试官问及.这里给各位童靴讲解一下 volatile 关键字的作 ...
- HDFS 的内存存储是什么?
引言 HDFS 的定位就是一个文件系统,用于存储文件,而 HDFS 对于文件的存储方式有两种: 内存存储 异构存储 内存存储 什么是内存存储? 首先,我们来了解一下到底什么是 "内存存储&q ...