主题 : 1506底板+s702屏裸机程序lcd点不亮问题 复制链接 | 浏览器收藏 | 打印
级别: 新手上路
UID: 98270
精华: 0
发帖: 15
金钱: 75 两
威望: 15 点
贡献值: 0 点
综合积分: 30 分
注册时间: 2013-11-21
最后登录: 2016-05-31
楼主  发表于: 2015-11-10 13:10

 1506底板+s702屏裸机程序lcd点不亮问题


有人写过s702屏的裸机程序吗?
参考下面链接的lcd_init, lcd点不亮, 他应该用的以前的底部和s701
请问1506底部+s702在lcd这部分有哪些不同啊? 谁能帮忙看看下面的代码有什么需要改的
谢谢

http://www.aiothome.net/read.php?tid-83132.html

void lcd_init(void)
{
    /*
     *<Exyons 4412 datasheet pg138 pg141 pg144 pg147>
     *
     * GPF0CON : [31:0] : 0x2
     * GPF1CON : [31:0] : 0x2
     * GPF2CON : [31:0] : 0x2
     * GPF3CON : [31:0] : 0x2
     * */
    GPF0CON = 0x22222222;
    GPF1CON = 0x22222222;
    GPF2CON = 0x22222222;
    GPF3CON &= ~(0xffff);
    GPF3CON |= 0x2222;
    
    /*
     *<Exyons 4412 datasheet pg526>
     *CLK_DIV_LCD:
     *          [3:0]:FIMD0_RATIO   0
     *              SCLK_FIMD0 = MOUTFIMD0/(FIMD0_RATIO + 1)
     *                         = MOUTFIMD0/1 = 800MHz
     *              MOUTFIMD0 == SCLKmpll_user_t == 800MHz      <Exyons 4412 datasheet pg453> LCD0_BLK
     * */
    CLK_DIV_LCD &= ~0xf;
    /*
     *<Exyons 4412 datasheet pg501>
     *CLK_SRC_LCD0:
     *          [3:0]:FIMD0_SEL 0110 ===> SCLKmpll_user_t 选择时钟源为SCLKmpll_user_t
     *
     * */
    CLK_SRC_LCD0 &= ~0xf;
    CLK_SRC_LCD0 |= 6;
    //LCD0_SYS_PWR_REG == 7 Don't use
    
    
    /*<Exyons 4412 datasheet pg1799>
     *Using the display controller data, you can select one of the above data paths by setting LCDBLK_CFG Register
     *(0x1001_0210). For more information, refer to the "System Others" manual.
     *
     *
     * <Exyons 4412 datasheet pg880>
     * LCDBLK_CFG:
     *          [1] : FIMD of LBLK0 Bypass Selection    1 : FIMD Bypass   使用FIMD接口
     *
     * LCDBLK_CFG :
     *          [0]:MIE0_DISPON     1 :  PWM outpupt enable
     *
     *
     * */
    LCDBLK_CFG |= 1 << 1;
    LCDBLK_CFG2 |= 1;

    /*
     *<Exyons 4412 datasheet pg1869>
     *VIDCON0:
     *     [13:6]: CLKVAL_F     //设置lcd时钟分频系数
     *
     *  VCLK == 33.3Mhz         <S700-AT070TN92 pg14> DCLK  Frequency ===> Type : 33.3Mhz
     *  VCLK = FIMD * SCLK/(CLKVAL+1)
     *  VCLK =  800000000 / (CLKVAL + 1)  
     *  33300000 = 800000000 /(CLKVAL + 1)
     *  CLKVAL + 1 = 24.02
     *  CLKVAL = 23
     * */
    VIDCON0 = (23 << 6);

    /*
     *<Exyons 4412 datasheet pg1870 pg1848(时序)> <S700-AT070TN92 pg13(时序)>
     *VIDTCON1:
     *      [5]:IVSYNC  ===> 1 : Inverted(反转)
     *      [6]:IHSYNC  ===> 1 : Inverted(反转)
     *      [7]:IVCLK   ===> 1 : Fetches video data at VCLK rising edge (下降沿触发)
     *      [10:9]:FIXVCLK  ====> 01 : VCLK running
     * */
    VIDCON1 = (1 << 9) | (1 << 7) | (1 << 5) | (1 << 6);

    /*
     *<Exyons 4412 datasheet pg1874 pg1848(时序)> <S700-AT070TN92 pg13(时序)>
     *VIDTCON0:
     *       [23:16]:  VBPD + 1 <------> tvpw (1 - 20)  13
     *       [15:8]: VFPD + 1 <------> tvfp 22
     *       [7:0]: VSPW  + 1 <------> tvb - tvpw = 23 - 13 = 10
     * */
    VIDTCON0 = (12 << 16) | (21 << 8) | (9);
     /*<Exyons 4412 datasheet pg1874 pg1848(时序)> <S700-AT070TN92 pg13(时序)>
     *VIDTCON1:
     *       [23:16]:  HBPD + 1 <------> thpw (1 - 40)  36
     *       [15:8]:   HFPD + 1 <------> thfp 210
     *       [7:0]:    HSPW  + 1 <------> thb - thpw = 46 - 36 = 10
     */
    VIDTCON1 = (35 << 16) | (209 << 8) | (9);

    /*
     *<Exyons 4412 datasheet pg1875>
     *
     *HOZVAL = (Horizontal display size) – 1 and LINEVAL = (Vertical display size) – 1.
     * Horizontal(水平) display size : 800
     *Vertical(垂直) display size : 480
     * */
    VIDTCON2 = (479 << 11) | 799;

    //win0
#ifdef BPP565
    /*
     *<Exyons 4412 datasheet pg1877>
     *WINCON0:
     *  [16]:Specifies Half-Word swap control bit.  1 = Enables swap
     *  [5:2]: Selects Bits Per Pixel (BPP) mode for Window image : 0101 ===> 16BPP
     *  [1]:Enables/disables video output   1 = Enables
     *
     * */
    WINCON0 = (1 << 16) | (5 << 2) | 1;

    /*
     *<Exyons 4412 datasheet pg1895>
     *VIDOSD0C:Specifies the Window Size (窗口尺寸 单位为word)
     *          
     *
     * */
    VIDOSD0C = 480 * 800 >> 1;
#else
    /*
     *<Exyons 4412 datasheet pg1877>
     *WINCON0:
     *  [5:2]: Selects Bits Per Pixel (BPP) mode for Window image : 1011 ===> 24BPP
     *  [1]:Enables/disables video output   1 = Enables
     *
     * */
    WINCON0 = (11 << 2) | 1;

    /*
     *<Exyons 4412 datasheet pg1895>
     *VIDOSD0C:Specifies the Window Size (窗口尺寸 单位为word)
     *          
     *
     * */
    VIDOSD0C = 480 * 800;
#endif

    //SHADOWCON &= ~(1 << 5); Don't use

    /*
     *<Exyons 4412 datasheet pg1891 pg1801>
     *[0]: Enables Channel 0. 1 = Enables
     * */
    SHADOWCON |= 1;


    /*
     *<Exyons 4412 datasheet  pg1894 pg1801>
     *[18:16] Selects Channel 0's channel. ===> 001 = Window 0
     *[2:0] Selects Window 0's channel.  ===> 001 = Channel 0
     *
     *
     * */
    WINCHMAP2 &= ~(7 << 16);
    WINCHMAP2 |= 1 << 16;
    WINCHMAP2 &= ~7;
    WINCHMAP2 |= 1;

    /*
     *<Exyons 4412 datasheet  pg1895>
     *VIDOSD0A: LCD左上角坐标
     *VIDOSD0B: LCD右下角坐标
     */

    VIDOSD0A = 0;
    VIDOSD0B = (799 << 11) | 479;

    /*
     *<Exyons 4412 datasheet  pg1902>
     * VIDW00ADD0B0 : window0 frame buffer 起始地址
     *  VIDW00ADD1B0 : window0 frame buffer 结束地址
     * */
    VIDW00ADD0B0 = FRAMEBUFFER00;
    VIDW00ADD1B0 = FRAMEBUFFER00 + VIDOSD0C * 4;

    /*
     * <Exyons 4412 datasheet pg1869>
     * Display On: ENVID and ENVID_F are set to "1".
     *  [0]:ENVID ===> 1 = Enables
     *  [1]:ENVID_F ===> 1 = Enables
     * */
    VIDCON0 |= 3;    
}