关键词: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
static struct s3cfb_lcd wa101 = {
.width = 1280,//LCD 分辨率宽1280
.height = 800, //LCD 分辨率高 800
.bpp = 24,//CLD 数据位 24bit
.freq = 60,//LCD 像素时钟 60MHz
.timing = {//LCD porch无效值
.h_fp = 70,
.h_bp = 70,
.h_sw = 20,
.v_fp = 10,
.v_fpe = 0,
.v_bp = 10,
.v_bpe = 0,
.v_sw = 3,
},
.polarity = {//时钟、行场的极性;
.rise_vclk = 1,
.inv_hsync = 1,
.inv_vsync = 1,
.inv_vden = 0,
},
};
/* name should be fixed as 's3cfb_set_lcd_info' */
void s3cfb_set_lcd_info(struct s3cfb_global *ctrl)//初始化结构体
{
wa101.init_ldi = NULL;
ctrl->lcd = &wa101;
#endif
}
还能想起上一篇的如何阅读规格书中的那些参数不,把这些填入就可以。
2、数据管脚初始化
kernel/arch/arm/mach-exynos/setup-fb-s5p.c
void s3cfb_cfg_gpio(struct platform_device *pdev)
{
s3cfb_gpio_setup_24bpp(EXYNOS4_GPF0(0), 8, S3C_GPIO_SFN(2), S5P_GPIO_DRVSTR_LV4);
s3cfb_gpio_setup_24bpp(EXYNOS4_GPF1(0), 8, S3C_GPIO_SFN(2), S5P_GPIO_DRVSTR_LV4);
s3cfb_gpio_setup_24bpp(EXYNOS4_GPF2(0), 8, S3C_GPIO_SFN(2), S5P_GPIO_DRVSTR_LV4);
s3cfb_gpio_setup_24bpp(EXYNOS4_GPF3(0), 4, S3C_GPIO_SFN(2), S5P_GPIO_DRVSTR_LV4);
}
LCD 数据脚初始化,驱动能力设为最高 S5P_GPIO_DRVSTR_LV4 ;管脚驱动能力, S5P_GPIO_DRVSTR_LV1-4 四个等级选择。3、 时钟控制部分
kernel/arch/arm/mach-exynos/setup-fb-s5p.c
int s3cfb_clk_on(struct platform_device *pdev, struct clk **s3cfb_clk)
{
struct clk *sclk = NULL;
struct clk *mout_mpll = NULL;
struct clk *lcd_clk = NULL;
u32 rate = 0;
int ret = 0;
lcd_clk = clk_get(&pdev->dev, "lcd");
if (IS_ERR(lcd_clk)) {
dev_err(&pdev->dev, "failed to get operation clk for fimdn");
goto err_clk0;
}
ret = clk_enable(lcd_clk);
if (ret < 0) {
dev_err(&pdev->dev, "failed to clk_enable of lcd clk for fimdn");
goto err_clk0;
}
clk_put(lcd_clk);
sclk = clk_get(&pdev->dev, "sclk_fimd");
if (IS_ERR(sclk)) {
dev_err(&pdev->dev, "failed to get sclk for fimdn");
goto err_clk1;
}
if (soc_is_exynos4210())
mout_mpll = clk_get(&pdev->dev, "mout_mpll");
else
mout_mpll = clk_get(&pdev->dev, "mout_mpll_user");
if (IS_ERR(mout_mpll)) {
dev_err(&pdev->dev, "failed to get mout_mpll for fimdn");
goto err_clk2;
}
ret = clk_set_parent(sclk, mout_mpll);
if (ret < 0) {
dev_err(&pdev->dev, "failed to clk_set_parent for fimdn");
goto err_clk2;
}
if ((soc_is_exynos4412()) && (samsung_rev() >= EXYNOS4412_REV_2_0))
ret = clk_set_rate(sclk, 880000000);
else
ret = clk_set_rate(sclk, 800000000);
if (ret < 0) {
dev_err(&pdev->dev, "failed to clk_set_rate of sclk for fimdn");
goto err_clk2;
}
dev_dbg(&pdev->dev, "set fimd sclk rate to %dn", rate);
clk_put(mout_mpll);
ret = clk_enable(sclk);
if (ret < 0) {
dev_err(&pdev->dev, "failed to clk_enable of sclk for fimdn");
goto err_clk2;
}
*s3cfb_clk = sclk;
return 0;
err_clk2:
clk_put(mout_mpll);
err_clk1:
clk_put(sclk);
err_clk0:
clk_put(lcd_clk);
上一篇:第十七章:Android LCD(三):Samsung LCD接口篇
下一篇:第十九章、TIny4412 U-BOOT移植十九 LCD移植
推荐阅读最新更新时间:2024-11-12 11:12
推荐帖子
- # 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 电源技术
设计资源 培训 开发板 精华推荐
- LT3692AEFE、具有 UVLO/OVLO 和电源良好状态的 3.3V/5A 单路输出的典型应用电路
- SRK1000A自适应同步整流控制器,配有STF80N10F7的反激式转换器演示板
- 基于 INA250A4 传感器板的 i.MX 应用案例研究中的电流测量
- 使用 LTC3704 的高效率正负电源
- MIC261201YJL EV,MIC261201 DC-DC 稳压器评估板在 4.5V 至 28V 的电源范围内运行
- 工业远程控制装置 (RTU)
- LTM4642IY 5V 输入、800kHz、2.5V 和 1.8V 输出(各为 4A)的典型应用电路
- EVAL-ADE7169EBZ-2,带有 8052 MCU、RTC 和 LCD 驱动器的 ADE7569 单相电能计量 IC 评估套件
- RT300-MKV 250W 数控升降压桌面可调电源
- 使用 Analog Devices 的 LT1173CN8 的参考设计