十九、更改LCD显示屏
一、裸机修改
之前测试用的屏幕是480*272的分辨率,现在要换成800*480的屏,因此要对软件代码进行修改。
对于裸机驱动而言,主要有两个点需要注意,一个是屏幕分辨率变了,因此初始化的时候与屏幕分辨率有关的寄存器需要改。但是改了分辨率之后显示出来的图像能明显看到闪烁,这是因为软件设置LCD的时钟来自HCLK,HCLK的频率是133MHz,在软件中又设置了VIDCON0寄存器的CLKVAL_F域的值,如下图:

在480*272的屏的软件中将该域的值设置为了14,如下图:

因此LCD的时钟频率为133/15=8.87MHz,8870000/480/272得到约每秒67帧(当然实际上把消影信号去掉后会更少一些),这个时候显示屏是不闪烁的,如果换成了800*480的屏却不改时钟频率的话,得到8870000/800/480约23帧,算上消影的话得到的帧率肯定达不到23帧,因此肉眼能明显看到屏幕闪烁。具体VIDCON0寄存器的CLKVAL_F域该设置为多少与使用的显示屏有关,我将该域设置为5,则刷新率约57Hz,算上消影的话真实刷新率会低一些,但是肉眼肯定是分辨不出来的。
二、内核修改
在内核代码中输入make menuconfig,在Device Drivers->Graphics supports->Support for frame buffer devices,这里面有对显示屏的设置,比如Select LCD Type可以选择屏幕分辨率,Select BPP可以选择每个像素包含的位数。选择好之后保存退出。make编译内核,编译完之后再arch/arm/boot目录下会出现zImage就是我们要的内核。
内核下载参考前章,但我在测试的时候,修改了这些之后屏幕显示有一个问题,就是显示出来的东西和显示屏上的实际坐标并没有对准,显示出来的图像往屏幕右下方移动了。
我这边是由于消影导致的,需要修改内核源码,drivers/video/samsung/s3cfb_UT_LCD7A.c,如下图几个消影信号的值需要修改:

我的图像往右下方移了,因此无论是行消影还是场消影都应该调小,具体要设置到多少是能算出来的,但是我不想算了就直接试出来的。我的方法是编写一个测试程序,在屏幕的最边缘绘制一个矩形,当调整程序到能够看见一个完整的矩形的时候就OK了。
十九、更改LCD显示屏的更多相关文章
- 【黑金原创教程】【FPGA那些事儿-驱动篇I 】原创教程连载导读【连载完成,共二十九章】
前言: 无数昼夜的来回轮替以后,这本<驱动篇I>终于编辑完毕了,笔者真的感动到连鼻涕也流下来.所谓驱动就是认识硬件,还有前期建模.虽然<驱动篇I>的硬件都是我们熟悉的老友记,例 ...
- NeHe OpenGL教程 第十九课:粒子系统
转自[翻译]NeHe OpenGL 教程 前言 声明,此 NeHe OpenGL教程系列文章由51博客yarin翻译(2010-08-19),本博客为转载并稍加整理与修改.对NeHe的OpenGL管线 ...
- Gradle 1.12翻译——第十九章. Gradle 守护进程
有关其他已翻译的章节请关注Github上的项目:https://github.com/msdx/gradledoc/tree/1.12,或访问:http://gradledoc.qiniudn.com ...
- Android进阶(十九)AndroidAPP开发问题汇总(三)
Android进阶(十九)AndroidAPP开发问题汇总(三) Java解析XML的几种方式: http://inotgaoshou.iteye.com/blog/1012188 从线程返回数据的两 ...
- 【黑金原创教程】【FPGA那些事儿-驱动篇I 】实验十九:SDRAM模块② — 多字读写
实验十九:SDRAM模块② — 多字读写 表示19.1 Mode Register的内容. Mode Register A12 A11 A10 A9 A8 A7 A6 A5 A4 A3 A2 A1 A ...
- centos MySQL主从配置 ntsysv chkconfig setup命令 配置MySQL 主从 子shell MySQL备份 kill命令 pid文件 discuz!论坛数据库读写分离 双主搭建 mysql.history 第二十九节课
centos MySQL主从配置 ntsysv chkconfig setup命令 配置MySQL 主从 子shell MySQL备份 kill命令 pid文件 discuz!论坛数 ...
- centos LAMP第一部分-环境搭建 Linux软件删除方式,mysql安装,apache,PHP,apache和php结合,phpinfo页面,ldd命令 第十九节课
centos LAMP第一部分-环境搭建 Linux软件删除方式,mysql安装,apache,PHP,apache和php结合,phpinfo页面,ldd命令 第十九节课 打命令之后可以输入: e ...
- Flask 教程 第十九章:Docker容器上的部署
本文翻译自The Flask Mega-Tutorial Part XIX: Deployment on Docker Containers 这是Flask Mega-Tutorial系列的第十九部分 ...
- 无废话ExtJs 入门教程十九[API的使用]
无废话ExtJs 入门教程十九[API的使用] extjs技术交流,欢迎加群(201926085) 首先解释什么是 API 来自百度百科的官方解释:API(Application Programmin ...
随机推荐
- burp中获取token进行暴力破解
选中线程设成1
- Core3.0发布到IIS的流程
前言 参考链接 https://www.cnblogs.com/wutongjun/p/11981798.html 在IIS上部署 .Net Core 3.0 项目的主要流程有: 安装并启用IIS 安 ...
- 使用Ubuntu手动安装NextCloud
p.p1 { margin: 0; font: 11px Menlo; color: rgba(0, 0, 0, 1) } span.s1 { font-variant-ligatures: no-c ...
- python初学者-商品折扣问题
x = int(input("x=")) if x < 1600 : #如果x小于1600,y等于0 y = 0 #没有折扣 print("应付款:",x ...
- 安装Yii2框架
一.Windows安装Yii2 1.安装Composer Composer 需要 PHP 5.3.2+ 以上版本,且需要开启 openssl,打开 php 目录下的 php.ini,将 extensi ...
- SpringBoot全局时间转换器
SpringBoot全局时间转换器 日常开发中,接收时间类型参数处处可见,但是针对不同的接口.往往需要的时间类型不一致 @DateTimeFormat(pattern = "yyyy-MM- ...
- 企业集群架构-02-Rsync
Rsync 目录 Rsync Rsync基本概述 Rsync应用场景 Rsync传输模式 Rsync服务使用 (1)服务端安装Rsync (2)服务端配置Rsync (3)服务端创建用户 (4)服务端 ...
- JVM参数调优总结
一.前言 要想成为一名高级Java开发具备JVM调优的能力必不可少,能够根据项目实际情况进行JVM调优的前提是理解JVM原理和常用JVM参数的含义及作用,虽然<深入理解Java虚拟机>这本 ...
- 【并发编程】- 内存模型(针对JSR-133内存模型)篇
并发编程模型 1.两个关键问题 1)线程之间如何通信 共享内存 程之间共享程序的公共状态,通过写-读内存中的公共状态进行隐式通信 消息传递 程之间没有公共状态,线程之间必须通过发送消息来显式进行通信 ...
- python之 logging 模块(上篇)
一.日志关概念 日志是一种可以追踪某些软件运行时所发生事件的方法.软件开发人员可以向他们的代码中调用日志记录相关的方法来表明发生了某些事情.一个事件可以用一个可包含可选变量数据的消息来描述.此外,事件 ...