第十八章:Android LCD(四):LCD驱动调试篇

发布者:Aningmeng最新更新时间:2022-01-12 来源: eefocus关键字:Android  LCD  驱动调试 手机看文章 扫描二维码
随时随地手机看文章

关键词:android LCD TFTSN75LVDS83B  TTL-LVDS LCD电压背光电压
平台信息:
内核:linux2.6/linux3.0
系统:android/android4.0 
平台:samsung exynos 4210、exynos 4412 、exynos 5250


这篇我们以一个实例来说明,Samsung Exynos4412搭配TTL转LVDS芯片SN75LVDS83B、LVDS接口LCD为例说明。从硬件接口、驱动配置、背光PWM调节三部分说明。


一、LCD接口原理以及硬件电路
Samsung Exynos4412、SN75LVDS83B、LVDS接口LCD(24bit)为例说明,三者的关系如下:



如上图所示,我们在应用中我,主控(Exynos4412)输出RGB信号到TFT-LCD大体经过三部分:
(1)、标号1部分,主控(Exynos4412)输出TTL信号;
(2)、标号2部分,TTL(RGB)-LVDS转换芯片SN75LVDS83B,把TTL信号转换成LVDS信号,传输到显示器的LVDS接收端;这部分有SN75LVDS83B编码芯片自动完成,所以我们不需要程序控制;
(3)、标号3部分,分两个小部分,LVDS转换成TTL,TFT-LCD显示部分;我们前面说过,TFT-LCD其实只识别TTL信号,所以要有一个转换的过程,先把LVDS信号转换、解码成TTL信号,在TFT-LCD上显示。


有上面的过程,其实我们关心调试的部分只有标号1部分到标号2部分,后面标号2到标号3的部分是自动完成的,不需要我们程序上控制,把标号2部分、标号3部分合并:



标号二部分可以理解为一个TTL(RGB)接口的LCD,如下图所示,标号一部分就是主控信号输出端,简化图如下所示:



其实最简单的做法就是找个TTL接口的TFT-LCD,这样直接接上就可以。下面我们看下硬件上的电路连接:这个和我们上篇用的相同。



有上面图可以看出:硬件连接

网络标号

说明

管脚

XvVD[0:23]

XvVDEN

XvVSYNC

XvHSYNC

XvVCLK

RGB数据、使能、行场同步、时钟信号

 这是TTL信号输出

LCD_PWM

调节背光

XpwmTOUT1/LCD_PWM/GPD0_1

LCD_LED_EN

LCD电压(TFT电压)使能

GPC1_2

LED_BL_EN

LED背光使能

GPL2_4

上面可分为几部分,电路连接部分分析:

(1)、TTL数据部分
这张图有木有烂掉呀,哈哈,就是这些数据了。还有有木有想起来摄像头的数据(ITU接口)也是这样的??其实视频这种信号的原理是通用的,所以LCD通了,摄像头也就知道怎么回事了。



(2)、PWM背光调节
 PWM其实也是芯片的一个功能模块,看到他的管脚就是一个复用脚XpwmTOUT1/LCD_PWM/GPD0_1。上一篇我们粗略的了解了PWM,就是用到这里。但是有一个疑问,PWM是调节背光电压的,背光电压一般都是12V以上的,我们PWM只有0-3V的样子,Exynos4412的IO只有1.8V。怎么调节电压???



其实这个PWM只是给LCD上PWM控制部分,真正的电压还是通过LCD控制板上的电路实现。


( 3 )、 LED 背光、 LCD 电压控制a 、背光:LED+
我们可以看到这个升压电路,通过 SY7208 把 VBATT 升压到 18V ,供给 LED 背光。 SY7208 最大升压 26V 。这个电压是提供给我们前面讲的背光的,也就是 CCFL 灯管或者 LED 背光组的电压。




b、LCD电压
这个电压也就是给你我们TFT阵列组用的,控制LCD液晶元素。
这部分电路分析完成,我们就有比较清晰的思路出,要一个LCD工作,要完成两部分内容:LCD上电控制,背光、LCD电压;信号输出。

二、LCD 驱动部分调试
 LCD这部分,像上篇我们说的frambuffer这些部分一般平台都是可以用的,除非你是芯片厂的要写这部分。一般公司拿到的demo板子这部分都是通的,只是针对自己的lCD换一些参数。


下面我们针对三星平台我们调试LCD的时时候程序方面的改动:
1、屏参数的配置
/kernel/drivers/video/Samsung/s3cfb_wa101s.c


  1. static struct s3cfb_lcd wa101 = {  

  2.       

  3.     .width  = 1280,//LCD 分辨率宽1280  

  4.     .height = 800, //LCD 分辨率高 800  

  5.     .bpp    = 24,//CLD 数据位 24bit  

  6.     .freq   = 60,//LCD 像素时钟 60MHz  

  7.     .timing = {//LCD porch无效值  

  8.         .h_fp   = 70,  

  9.         .h_bp   = 70,  

  10.         .h_sw   = 20,  

  11.       

  12.         .v_fp   = 10,  

  13.         .v_fpe  = 0,  

  14.         .v_bp   = 10,  

  15.         .v_bpe  = 0,  

  16.         .v_sw   = 3,  

  17.     },  

  18.   

  19.     .polarity = {//时钟、行场的极性;  

  20.         .rise_vclk  = 1,  

  21.         .inv_hsync  = 1,  

  22.         .inv_vsync  = 1,  

  23.         .inv_vden   = 0,  

  24.     },  

  25. };  

  26. /* name should be fixed as 's3cfb_set_lcd_info' */  

  27. void s3cfb_set_lcd_info(struct s3cfb_global *ctrl)//初始化结构体  

  28. {  

  29.     wa101.init_ldi = NULL;  

  30.     ctrl->lcd = &wa101;  

  31. #endif  

  32. }  

还能想起上一篇的如何阅读规格书中的那些参数不,把这些填入就可以。


2、数据管脚初始化



kernel/arch/arm/mach-exynos/setup-fb-s5p.c


  1. void s3cfb_cfg_gpio(struct platform_device *pdev)  

  2. {  

  3.     s3cfb_gpio_setup_24bpp(EXYNOS4_GPF0(0), 8, S3C_GPIO_SFN(2), S5P_GPIO_DRVSTR_LV4);  

  4.     s3cfb_gpio_setup_24bpp(EXYNOS4_GPF1(0), 8, S3C_GPIO_SFN(2), S5P_GPIO_DRVSTR_LV4);  

  5.     s3cfb_gpio_setup_24bpp(EXYNOS4_GPF2(0), 8, S3C_GPIO_SFN(2), S5P_GPIO_DRVSTR_LV4);  

  6.     s3cfb_gpio_setup_24bpp(EXYNOS4_GPF3(0), 4, S3C_GPIO_SFN(2), S5P_GPIO_DRVSTR_LV4);  

  7. }  

LCD  数据脚初始化,驱动能力设为最高 S5P_GPIO_DRVSTR_LV4 ;管脚驱动能力, S5P_GPIO_DRVSTR_LV1-4 四个等级选择。3、 时钟控制部分
kernel/arch/arm/mach-exynos/setup-fb-s5p.c


  1. int s3cfb_clk_on(struct platform_device *pdev, struct clk **s3cfb_clk)  

  2. {  

  3.     struct clk *sclk = NULL;  

  4.     struct clk *mout_mpll = NULL;  

  5.     struct clk *lcd_clk = NULL;  

  6.   

  7.     u32 rate = 0;  

  8.     int ret = 0;  

  9.   

  10.     lcd_clk = clk_get(&pdev->dev, "lcd");  

  11.     if (IS_ERR(lcd_clk)) {  

  12.         dev_err(&pdev->dev, "failed to get operation clk for fimdn");  

  13.         goto err_clk0;  

  14.     }  

  15.   

  16.     ret = clk_enable(lcd_clk);  

  17.     if (ret < 0) {  

  18.         dev_err(&pdev->dev, "failed to clk_enable of lcd clk for fimdn");  

  19.         goto err_clk0;  

  20.     }  

  21.     clk_put(lcd_clk);  

  22.   

  23.     sclk = clk_get(&pdev->dev, "sclk_fimd");  

  24.     if (IS_ERR(sclk)) {  

  25.         dev_err(&pdev->dev, "failed to get sclk for fimdn");  

  26.         goto err_clk1;  

  27.     }  

  28.   

  29.     if (soc_is_exynos4210())  

  30.         mout_mpll = clk_get(&pdev->dev, "mout_mpll");  

  31.     else  

  32.         mout_mpll = clk_get(&pdev->dev, "mout_mpll_user");  

  33.   

  34.     if (IS_ERR(mout_mpll)) {  

  35.         dev_err(&pdev->dev, "failed to get mout_mpll for fimdn");  

  36.         goto err_clk2;  

  37.     }  

  38.   

  39.     ret = clk_set_parent(sclk, mout_mpll);  

  40.     if (ret < 0) {  

  41.         dev_err(&pdev->dev, "failed to clk_set_parent for fimdn");  

  42.         goto err_clk2;  

  43.     }  

  44.   

  45.     if ((soc_is_exynos4412()) && (samsung_rev() >= EXYNOS4412_REV_2_0))  

  46.         ret = clk_set_rate(sclk, 880000000);  

  47.     else  

  48.         ret = clk_set_rate(sclk, 800000000);  

  49.     if (ret < 0) {  

  50.         dev_err(&pdev->dev, "failed to clk_set_rate of sclk for fimdn");  

  51.         goto err_clk2;  

  52.     }  

  53.     dev_dbg(&pdev->dev, "set fimd sclk rate to %dn", rate);  

  54.   

  55.     clk_put(mout_mpll);  

  56.   

  57.     ret = clk_enable(sclk);  

  58.     if (ret < 0) {  

  59.         dev_err(&pdev->dev, "failed to clk_enable of sclk for fimdn");  

  60.         goto err_clk2;  

  61.     }  

  62.   

  63.     *s3cfb_clk = sclk;  

  64.   

  65.     return 0;  

  66.   

  67. err_clk2:  

  68.     clk_put(mout_mpll);  

  69. err_clk1:  

  70.     clk_put(sclk);  

  71. err_clk0:  

  72.     clk_put(lcd_clk);  

  73.   

[1] [2] [3] [4]
关键字:Android  LCD  驱动调试 引用地址:第十八章:Android LCD(四):LCD驱动调试篇

上一篇:第十七章:Android LCD(三):Samsung LCD接口篇
下一篇:第十九章、TIny4412 U-BOOT移植十九 LCD移植

推荐阅读最新更新时间:2024-11-20 11:22

三星显示计划于6月退出LCD业务
微软中国消息,微软发布了《2021年度环境可持续发展报告》,全面介绍了2021年,微软为实现碳负排放、水资源正效益、零废弃的“2030目标”所取得的进展。回首2020年1月,当微软首次对外公布应对气候危机的承诺时,也表示将公开透明地分享在这一过程中获得的经验。 三星显示计划6月退出LCD业务 据韩媒报道称,根据三星电子提交给韩国金融监督局的资料,2021年旗下消费性电子产品业务部的前三大面板供应商,分别为中国京东方、华星光电及中国台湾友达光电,其中京东方为首次加入主要供应商行列。据韩媒报道指出,三星显示已将停产计划从2022年底提前到6月,与三星电子协商定案后,就会全面退出LCD业务。 宝马集团收购阿尔宾娜品牌 近
[手机便携]
三星显示计划于6月退出<font color='red'>LCD</font>业务
利用DS18B20测温,并通过LCD1602 显示 proteus仿真 +DS1302时钟模块
main.c #include reg52.h #include onewire.h #include LCD.h #include ds1302.h #define uchar unsigned char #define uint unsigned int uchar code Write_addr ={0x80,0x82,0x84,0x86,0x88,0x8a,0x8c};//写地址 uchar code Read_addr = {0x81,0x83,0x85,0x87,0x89,0x8b,0x8d};//读地址 uchar Time = {0x50,0x59,0x23,0x07,0x06,0x02,
[单片机]
利用DS18B20测温,并通过<font color='red'>LCD</font>1602 显示 proteus仿真 +DS1302时钟模块
荣耀Magic4 Lite渲染图与规格揭秘:6.81英寸LCD
采用了高通骁龙 8 Gen 1 芯片组和强大摄像头模组的荣耀 Magic4 / Magic4 Pro 智能机,已经给不少人留下深刻的印象。但是对于预算有限的消费者来说,900 / 1100 欧元的定价还是让人望而生畏。好消息是,你对外形设计和硬件配置的要求不高,那传说中的 Magic4 Lite 新机,或许会是一个更加合理的选择。   由分享的消息可知,Magic4 Lite 将沿用 6.81 英寸的屏幕,面板从 OLED(LTPO)换成 LCD、分辨率也稍低一些(1080×2388 像素),但仍支持 120Hz 高刷新率。   此外由 @Sudhanshu1414 分享的推测渲染图可知,Magic4 Lite 也可能沿
[手机便携]
时代的风吹散诺基亚的蒲公英,却为华为埋下了鸿蒙的种子
“有这么一个人,在北海油田钻井平台工作。有天晚上,他被响亮的爆炸声惊醒,发现所处的平台已经四处燃烧起来,火焰包围了他。他奋力奔跑,穿过浓烟和烈火,跑到平台边缘,但却只看到四周黑暗、冰冷的海水。” 2011年,诺基亚手机帝国将倾。时任CEO埃洛普在致员工的邮件中,以这样一个故事来比喻诺基亚当时的处境。 那一年,苹果的市场份额已迅速攀升至61%,完全垄断了高端手机市场;而另一边,Android手机阵营也刚刚超过诺基亚,成为智能手机销量的榜首,在中端市场所向披靡。 至于低端手机领域,中国沿海地区的代加工厂商推出新手机的速度令人惊叹,一名诺基亚的员工开玩笑道:“他们推出一款新手机的时间比我们修改一份PPT的时间还要快。”
[嵌入式]
时代的风吹散诺基亚的蒲公英,却为华为埋下了鸿蒙的种子
谷歌称明年底增强现实将会出现在数亿台安卓设备上
腾讯科技讯 据外媒报道,谷歌(微博)预计,到明年底,将会有“数亿台”安卓设备支持增强现实,从而出现大量变现的机会。 周二在葡萄牙里斯本举行的Web Summit科技大会上,谷歌虚拟现实业务副总裁阿米特-辛格(Amit Singh)谈到了该公司对于增强现实技术的投资以及ARCore平台的推出。ARCore平台可以让开发者开发针对安卓设备的AR应用程序。 他预计,AR的使用将会成为人们的日常活动。 “数亿部手机将支持AR。在现阶段,我们会帮助开发者打造AR体验,从而让它成为人们日常生活中的一部分。”辛格说。 “一旦AR成为人们的日常体验活动,那么变现的机会自然就会来临。”他说。 辛格谈到了从游戏或购物等方面赚钱的可
[手机便携]
高通CEO:Windows传统程序需走向触摸屏平台
近日,高通CEO雅各布(Paul Jacobs)在纽约参加2012年度电子消费品展会时表示,“触摸”现在已成为电子市场一个重要词汇,Windows的传统程序必须升级以支持在平板等设备中的触摸功能。 雅各布认为,传统的Windows程序应旨在向触摸化的方向发展,支持现在很多设备的触摸功能,从而促进新系统的发展。 就在今日雅各布称,当Windows RT发布,会随其传统应用而来的是“恐惧、不确定性和怀疑”,但新系统中提供的功能最终会赢得消费者的心。 雅各布表示,为了利用微软最新版本系统的新功能,传统程序必须升级。就像是Windows RT最先推出时,就同时有了专为触摸屏设计的微软Word、Excel、PowerP
[网络通信]
高通CEO:Windows传统程序需走向触摸屏平台
基于GSM电流保护系统设计方案
监测系统工作原理 剩余电流动作保护器作为系统前端,安装在各个低压电网控制箱内,自动监测用电线路的状态数据(包括负载电压/负载电流/漏电电流等)。当用电线路发生过载、短路、缺相、过压、欠压或剩余电流故障跳闸情况时,剩余电流动作保护器就会通过核心单片机控制系统和GSM短信收发模块向移动终端或监控计算机发送短信,主要内容包括告警地点、告警线路、告警原因、告警数值等状态数据。管理人员就可以据此及时掌握故障信息,迅速采取措施,保证正常供电。 监测系统硬件设计 监测系统采用有比较优势的功能模块化设计,主要可分为单片机控制系统与通信模块设计;其中单片机控制系统与通信部分设计包括硬件电路设计、软件设计。控制系统与通信模块主要由核心单片机、电
[电源管理]
基于GSM电流保护系统设计方案
S3C2410之LCD
1、打开LCD背光 将LCD背光对应的GPIO设置为禁止上拉(GPxUP相应位写入1),选择output类型(GPxCON相应位写入01),输出为高电平(GPxDAT相应位写入1)。 2、打开LCD电源 可以将GPG4选择为LCD_PWREN(GPGCON:9-8写入11),这时候LCD电源的打开/关闭可以通过LCDCON5:3来控制。 也可以自定义其他GPIO用作LCD电源开关,只需将此GPIO设置为禁止上拉(GPxUP相应位写入1),选择output类型(GPxCON相应位写入01),输出为高电平(GPxDAT相应位写入1)打开LCD电源。 3、设置其他信号线 其他信号线包括VD0-VD23和VFRAME、VLINE、VCL
[单片机]

推荐帖子

# if OS_CRITICAL_METHOD==3
#ifOS_CRITICAL_METHOD==3OS_CPU_SRCPU_sr;这句的OS_CPU_SRCPU_sr是什么意思?#ifOS_CRITICAL_METHOD==3条件编译,定义了变量,不需要管OS_CPU_SRCPU_sr一般是被#define预定了,比如:#defineOS_CPU_SRCPU_srfunc()那么条件成立,他就会运行func函数#defineOS_CPU_SRCPU_sr(赋值语句)那么条件成立,他就会运行赋值
laidawang 嵌入式系统
TTL 和CMOS 区别的基础
1,TTL电平:输出高电平2.4V,输出低电平0.4V。在室温下,一般输出高电平是3.5V,输出低电平是0.2V。最小输入高电平和低电平:输入高电平=2.0V,输入低电平=0.8V,噪声容限是0.4V。2,CMOS电平:1逻辑电平电压接近于电源电压,0逻辑电平接近于0V。而且具有很宽的噪声容限。3,电平转换电路:因为TTL和COMS的高低电平的值不一样(ttl5v==cmos3.3v),所以互相连接时需要电平的转换:就是用两个电阻
Jacktang 模拟与混合信号
帮忙啊
有哪位好心人把windowsliveid号码借我用一下啊,我要下载个wdk,最近注册了好几次都没有成功,是不是不开放注册了?帮忙啊这个也能借啊。。
adingx 嵌入式系统
[寻求] 飞思卡尔HCS08系列单片机高手
飞思卡尔HCS08系列单片机,需要在CodeWarrior的环境下用C语言编程,单片机需要通过SPI送8位指令给一个IC,然后接受16位数据.3次操作后对所接受的数据进行计算,把得到的结果送到RS232IC.已有部分源程序.并要把初始化数据写到EEPROM或FLASH.如感兴趣并有以上技术和经验,请发邮件联系.fayaw11@gmail.com谢谢.飞思卡尔HCS08系列单片机高手
vwvw00 单片机
【MSP430共享】中英文数据手册全集
F14XF16XF5XXX的中文数据手册,不喜欢看E文的朋友可以下来看看,另外请大家跟帖补充完善,谢谢 【MSP430共享】中英文数据手册全集请大家把数据手册都发到一个帖子里面,方便后面的朋友查找下载谢了,我下来看看今天回复一下昨晚下载了支持~markmark恩挺好的,mark太好了,很有帮助先看看学习学习谢谢了呵呵大财主就是大财主,不错不错,谢了谢了,我下来看看挺好的,mark谢谢,非常有用我也来一个支持一下回复楼主feng
fengzhang2002 微控制器 MCU
邀您参加:ST高压功率MOSFET研讨会(杭州站、深圳站)
诚邀您参加意法半导体高压功率(HV)MOSFET研讨会!了解更多STHVMOSFET技术及产品,助力增强产品,潜力和市场优势。研讨会亮点: 技术深度解析将详细介绍HVMOSFET产品的先进封装技术、宽泛的击穿电压范围(250到1700V)、低电感电感和低导通电阻等特性。同时,应答显示MDmesh高压MOSFET技术如何增强算力处理能力,实现高效解决方案。 应用实例分享将分享HVMOSFET在工业及汽车应用中的成功案例,
eric_wang 电源技术
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved