This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

DM365 LCD Serial RGB



在DM365平台上调串口LCD屏, 出现屏只能点亮, 无法出现color bar的彩条出来, 之前调过并口的SSD2119的屏,是可以正常显示的, 但是现在使用的是HX8238D的串口屏,我只设置了dispc_reg_out(VENC_VMOD, 0x3011); 其他跟SDK内核里本来的davinci_enc_set_prgb操作方式都一样, 请问有关于串口屏的一些实例代码吗?

  • 请问,你用串口屏幕的解法,是用个并口转串口的桥片来实现的吧?

    那么这个桥片本身对于并口的输入的要求,和之前的并口屏幕有什么区别呢。你重点关注一下同步信号上的要求

  • 谢谢你的及时回复。

    这个屏的串口或者并口的方式, 是在屏端通过跳电阻的方式来实现的, 

    同步信号方面, 并口的时候, 大概需要7M左右的频率, 串口的时候,大概需要21M左右的频率。

    SDK的内核里有关于并口的寄存器的设置方法,如下

    static void davinci_enc_set_prgb(struct vid_enc_mode_info *mode_info)
    {
    enableDigitalOutput(1);

    dispc_reg_out(VENC_VIDCTL, 0x141);
    dispc_reg_out(VENC_DCLKCTL, 0);
    dispc_reg_out(VENC_DCLKPTN0, 0);

    /* Set the OSD Divisor to 1. */
    dispc_reg_out(VENC_OSDCLK0, 0);
    dispc_reg_out(VENC_OSDCLK1, 1);
    /* Clear composite mode register */
    dispc_reg_out(VENC_CVBS, 0);

    /* Set PINMUX1 to enable all outputs needed to support RGB666 */
    if (cpu_is_davinci_dm355()) {
    /* Enable the venc and dlcd clocks. */
    dispc_reg_out(VENC_CLKCTL, 0x11);
    davinci_cfg_reg(DM355_VOUT_FIELD_G70);
    davinci_cfg_reg(DM355_VOUT_COUTL_EN);
    davinci_cfg_reg(DM355_VOUT_COUTH_EN);
    } else if (cpu_is_davinci_dm365()) {
    /* DM365 pinmux */
    dispc_reg_out(VENC_CLKCTL, 0x11);
    davinci_cfg_reg(DM365_VOUT_FIELD_G81);
    davinci_cfg_reg(DM365_VOUT_COUTL_EN);
    davinci_cfg_reg(DM365_VOUT_COUTH_EN);
    } else {
    dispc_reg_out(VENC_CMPNT, 0x100);
    davinci_cfg_reg(DM644X_GPIO46_47);
    davinci_cfg_reg(DM644X_GPIO0);
    davinci_cfg_reg(DM644X_RGB666);
    davinci_cfg_reg(DM644X_LOEEN);
    davinci_cfg_reg(DM644X_GPIO3);
    }

    osd_write_left_margin(mode_info->left_margin);
    osd_write_upper_margin(mode_info->upper_margin);

    /* Set VIDCTL to select VCLKE = 1,
    VCLKZ =0, SYDIR = 0 (set o/p), DOMD = 0 */
    dispc_reg_merge(VENC_VIDCTL, 1 << VENC_VIDCTL_VCLKE_SHIFT,
    VENC_VIDCTL_VCLKE);
    dispc_reg_merge(VENC_VIDCTL, 0 << VENC_VIDCTL_VCLKZ_SHIFT,
    VENC_VIDCTL_VCLKZ);
    dispc_reg_merge(VENC_VIDCTL, 0 << VENC_VIDCTL_SYDIR_SHIFT,
    VENC_VIDCTL_SYDIR);
    dispc_reg_merge(VENC_VIDCTL, 0 << VENC_VIDCTL_YCDIR_SHIFT,
    VENC_VIDCTL_YCDIR);

    dispc_reg_merge(VENC_DCLKCTL,
    1 << VENC_DCLKCTL_DCKEC_SHIFT, VENC_DCLKCTL_DCKEC);

    dispc_reg_out(VENC_DCLKPTN0, 0x1);

    davinci_enc_set_display_timing(mode_info);
    dispc_reg_out(VENC_SYNCCTL,
    (VENC_SYNCCTL_SYEV |
    VENC_SYNCCTL_SYEH | VENC_SYNCCTL_HPL
    | VENC_SYNCCTL_VPL));

    /* Configure VMOD. No change in VENC bit */
    dispc_reg_out(VENC_VMOD, 0x2011);
    dispc_reg_out(VENC_LCDOUT, 0x1);

    if (cpu_is_davinci_dm368()) {
    /* Turn on LCD display */
    mdelay(200);
    gpio_set_value(82, 1);
    }
    }

    但是并没找到串口模式的设置方法, 我只是dispc_reg_out(VENC_VMOD, 0x2011);改为dispc_reg_out(VENC_VMOD, 0x3011); 但是这样没什么效果, 

    请问有关于串口屏的设置的实例代码或者文档说明吗?

  • 36x的LCD接口并不支持串行方式输出吧?你从哪里看到支持了?

  • 再次感谢你的及时回复。

    这是datasheet里vpbe.pdf截下来的。

    我现在把logicpd_encoder.c里面的logicpd_encoder_configuration改成如下的方式

    开启color bar模式后, 有如下效果出现

    这里说明应该是支持Serial RGB模式的, 但是我应该还是在某些地方没有设置正常。