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注册:如图所示 分离概念: 分离概念主要 ...
随机推荐
- spring mvc简单使用
spring mvc pom.xml依赖与插件 导入servlet.springmvc.Jackson的依赖,编译插件.tomcat <?xml version="1.0" ...
- IPC机制key值的各位组成
key_t ftok(const char *_pathname, int _proj_id) key值的第31~24位为ftok()第二个参数的低8位: key值的第23~16位为ftok()第一个 ...
- SaaS模式的CRM系统有哪些优势?
早在10年前(2010年),就出现了SaaS模式的CRM系统.SaaS CRM一经面世,便迅速受到广大企业的青睐. SaaS CRM是指CRM厂家把CRM软件部署在自己的服务器上,有需要的客户能够根据 ...
- MD5加密以及登录获取设置token
MD5简介 MD5是不可逆的加密算法,基本上是不可破解的,网上有些破解网站,其实是利用了穷举法,因为MD5生成的串是一样的,他们会将常规的密码生成MD5加密串,保存,然后破解的时候去穷举比对.(应对之 ...
- [bug] Linux下执行.sh命令出现-bash: ./bin/start.sh: /bin/bash^M: bad interpreter: No such file or directory
参考 https://www.cnblogs.com/aeolian/p/10614284.html
- curl: (35) SSL connect error
curl: (35) SSL connect error weixin_34212762 2018-02-23 20:16:23 230 收藏 文章标签: 运维 版权 阿里云的机器,昨晚githu ...
- 强哥MySQL学习笔记
数据库服务器:1.数据库2.数据表 数据表:1.表结构(字段)2.表数据(记录)3.表索引(加快检索) 表引擎:1.myisam2.innodb 查看表字段desc table;删除数据库:drop ...
- 高通 QC协议 谷歌 PD协议
高通 QC协议 谷歌 PD协议 上述协议是两款充电协议 现在已经应用于智能设备的充电中了 https://jingyan.baidu.com/article/7908e85cb04b1baf48 ...
- Python爬虫-Scrapy框架的工作原理
Scrapy框架工作原理 Scrapy框架架构图 Scrapy框架主要由六大组件组成,分别为: 调度器(Scheduler),下载器(Downler),爬虫(Spiders),中间件(Middwa ...
- deeplearning模型库
deeplearning模型库 1. 图像分类 数据集:ImageNet1000类 1.1 量化 分类模型Lite时延(ms) 设备 模型类型 压缩策略 armv7 Thread 1 armv7 T ...