十九、更改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了。

 

转载于:https://www.cnblogs.com/Suzkfly/p/11447237.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值