自学bootload,在驱动液晶屏的时候遇到问题,期间请教了答疑老师,也搜索了很多相关内容。最后的结论是SMART 210配的S70不能简单使用背光控制引脚对LCD背光进行控制。究其原因,S70这块液晶模块内部有一块驱动板,与背光相关的所有电源控制和亮度控制都由内部的一个STC单片机控制(也有使用stm8控制,具体电路连接参考原理图)。所以如果要对背光进行控制必须对这个单片机进行控制,至于这部分的源码因该要查友善配的linux内核驱动的代码了吧,这我没有深入了解。不过也不用气馁,如果只是想让LCD显示内容,背光常亮也无所谓的话,我们可以对液晶模块内的这块驱动板进行简单的改造,粗略的说就是拆掉几个电阻,建议有电路基础和贴片焊接寄存的人士进行操作。
下面对原理进行简单解释:
图一
这个是S70液晶模块内部的驱动板,板子上的R30和R16就是我们要消灭掉的对象(两个0欧姆电阻)。至于原因,下面会解释:
图二
这个是驱动板上的STC单片机,他是整个驱动板的核心,控制着背光的开关、亮度调节和触摸屏数据的采集。关键引脚解释:
LEDDIM : 该引脚连接给背光LED供电的电源管理芯片(EUP2584)的FB引脚,通过输出不同占空比的PWM波对背光的亮度进行调节。
BL_EN : 该引脚连接给LCD供电的电源管理芯片(MP1541)和给背光LED供电的电源管理芯片(EUP2584)的EN引脚,对背光和LCD显示同时控制。上电后,该引脚点位为低,所以并不是简单的切断背光供电,连LCD的显示电源都断了,自然拿手电一类往液晶屏照,也看不出液晶片上任何显示内容。
TOUT : 这个是SDK(底板)上过来的对背光控制的引脚,(S5PV210的GPD0_1引脚)
图三
这个是LCD液晶屏的电源管理芯片。他的工作状态也由BL_EN控制。
图四
这个是LED背光的电源管理芯片。
BL_EN通过一个0欧姆电阻连接EUP2584的EN引脚,对LED背光进行控制。
LEDDIM 通过一个0欧姆电阻连接EUP2584的FB反馈引脚,调整EUP2584输出电压,进而背光进行亮度调节
可以看到 TOUT1引脚没有连接FB引脚, NC(not conne);
从上面三个图可以知道,如果我们要绕开这个单片机,直接对背光进行控制也是可以的。
改进方案:
一、保持常亮:
1. 拆除R30,不让STC单片机上电拉低EUP2584的EN引脚关闭背光,或者说不然STC单片机控制背光;
2. 拆除R16,不然STC单片机上电拉低MP1541的EN引脚关闭LCD显示,或者说不然STC单片机控制显示;
3. 拆除R32,拆除以上两个0欧姆电阻就可以让LCD正常显示,只是背光稍暗,因为我们还忽略了一个LEDDIM引脚,这个引脚控制亮度。STC单片机上电后也拉低了这个引脚的电平,导致背光较暗,如果不在乎的话完全可以不用理会。因为,如果以后要对背光进行亮度控制,就需要重新焊接回去,比较与0欧姆的位置直接短接而言,却是个麻烦事。
二、通过TOUT引脚控制背光的开启
在完成改进方案一的基础上(第三部可选)可以直接短接图四中R43或者将TOUT飞线到EUP2584的EN引脚。(本人并没有尝试过,猜测而已)
码字好辛苦,希望对大家有用!
#include "common.h"
#include "font_8x16.h"
// 初始化LCD
void lcd_init(void)
{
/*1.配置引脚用于LCD功能*/
GPF0CON = 0x22222222;
GPF1CON = 0x22222222;
GPF2CON = 0x22222222;
GPF3CON = 0x22222222;
/*2.打开背光*/
GPD0CON &= ~(0xf<<4);
GPD0CON |= (1<<4);
GPD0DAT |= (1<<1);
/*3. 10: RGB=FIMD I80=FIMD ITU=FIMD*/
DISPLAY_CONTROL = 2<<0;
/*4. 配置视频控制寄存器VIDCON0*/
// bit[26~28]:使用RGB接口
// bit[18]:RGB 并行
// bit[2]:选择时钟源为HCLK_DSYS=166MHz
VIDCON0 &= ~( (7<