TCC8900 调试(四) --LCD

 TCC8900 BSP V2.0 跟V1.91的LCD 驱动有些变化,致使我碰到了一个问题:不加后视LCD显示正常,加上后视LCD显示不正常?

对于这个问题我曾一度以为是后视的原因造成的,后面经过我仔细查看代码,发现原来我犯了个错误了,引起这个问题的根源在LCD初始化上面,

LCD的初始化一般是在BOOTLOAD里面完成的,TCC8900 V1.91里面是通过BOOT\LCD.H里面的如下配置实现的。

static lcd_cfg_t lcd_cfg[3] = {

////// W  H  DIV  VPW  VBP  VFP  HPW  HBP  HFP  PWDX FREQ//

// [TCCXXXX_LCD_4.8WVGA&24B_SV0.1]
 { 800, 480, 3,  3,  5,  5,  3,  13,  8,  0xC, 60 },

// [CLAA104XA01CW 10"4 Color TFT LCD (LVDS)]
 { 1024, 768, 1,  1,  1,  36,  1,  1,  318, 0xC, 60 },

// [HT121WX2-103 12"1 Color TFT LCD (LVDS)]
 { 1280, 800, 1,  1,  3,  20,  1,  10,  150, 0xC, 60 },
};

但BSP V2.0里面因为后视被加到驱动里面了,是通过Magellan.bat中的宏开关:set REAR_CAM_VIQE=1或0来实现开启与关闭后视功能。

当set REAR_CAM_VIQE=0时表示关闭后视。

IF not "%REAR_CAM_VIQE%" == "1" goto NORMAL_ENV_SETTINGS
@ECHO ENTER REAR_CAM_VIQE_ENV
set LCD_NEWDRIVER=1
set BSP_CAMERA_MODULE=1
set BSP_VIDEO_DECODER=1
set P2_SDMMC_SLOT=0
set P5_SDMMC_SLOT=1
goto END_REAR_CAM_ENVSETTING

这段不被执行,宏TCA_LINK没有被定义,LCD初始化还是按V1.91来方式来实现。

当set REAR_CAM_VIQE=1时表示开启后视。

IF not "%REAR_CAM_VIQE%" == "1" goto NORMAL_ENV_SETTINGS
@ECHO ENTER REAR_CAM_VIQE_ENV
set LCD_NEWDRIVER=1
set BSP_CAMERA_MODULE=1
set BSP_VIDEO_DECODER=1
set P2_SDMMC_SLOT=0
set P5_SDMMC_SLOT=1
goto END_REAR_CAM_ENVSETTING

上面这段代码被使用。

set LCD_NEWDRIVER=1 被设置

我们可以通过查看BOOT与DISP里面的SOURCE文件。可以看出TCA_LINK.宏被定义了。再接合BOOT\LCD.C--》init_disp()

{

.....

LMODE.LCDCTRL = LCDCTRL[dispdev];
  LMODE.LCDCTIMING = lcd_timing[dispdev];

  tca_lcdc_initialization(ARG_LCDCGUICTRL, dispdev,&LMODE, ARG_LCDCGUICH, DISP_WIDTH, DISP_HEIGHT, DISP_MEM_PHYBASE, imgfmt);
  lcd_disp_on(dispdev);

.....

}

可以看出初始化是调用tcc_lcdc_bl.lib里面的函数,由\magellan\Src\LIB\SOC\LCDC编译面来。

lcd 初始配置是由下面这个表实现(TCA_LCDC.H)

static stLTIMING    lcd_timing[4] = {

//hpw lpc hfp hbp vdb vdf ,vpw flc vfp vhp
//    {3,800,8,13,0,0,3,480,5,5,3,480,5,5 },
{  2, 800, 13, 8,0,0,2, 480,  4,4,2, 480,  4,4 },  

  {  1,1024, 168, 1,0,0,1, 768,318,1,1, 768,318,5 },
    { 43,1919,148,88,0,0,4,1079, 35,3,4,1079, 35,3 },
    {211, 720, 32,32,0,0,5, 486, 27,4,5, 485, 28,3 },

};

当然在DISP驱动里面也做了一些修改。

1、将放到gpBOOTARGS里面的一些显示参数,放到了注册表里面。
2、切换图层、图层基地址设置、图层大小设置等功能实现,都是调用\tcc_lcdc_bl.lib里面的函数。

暂时了解了这些。谢谢!

欢迎你加入:149818111  一起学习TCC8900.

 

你可能感兴趣的:(TCC8900 调试(四) --LCD)