我使用的是DM365平台, 通过串口方式接的LCD屏, 现在color bar已经正常显示了,但是想在启动的时候加入LOGO, LOGO的图片显示却不正常。左右两边死活显示不了东西。 屏是320x240的, xsize寄存器的值也是按照320设置的。
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屏, 现在color bar已经正常显示了,但是想在启动的时候加入LOGO, LOGO的图片显示却不正常。左右两边死活显示不了东西。 屏是320x240的, xsize寄存器的值也是按照320设置的。
你好,
你使用的是VPFE的LCD接口接的LCD屏么?你能否提供你使用的屏的输入时序图和你的OSD/VENC的配置?
我怀疑是你使用的屏是320x240的,但由于是串行屏(LCD只有8根数据线,上面需要先出R,再出G,再出B),OSD需要配置大小是960x240.
你好, 谢谢你的回复, 现在才看到。
logicpd_encoder.c 文件中logicpd_encoder_configuration的配置如下
屏的分辨率是320x240的, 我写的也是 960x240。
VMOD寄存器也配成了串口模式的,
static void davinci_enc_set_srgb(struct vid_enc_mode_info *mode_info)
{
dispc_reg_out(VENC_VIDCTL, 0x141);
/* set VPSS clock */
davinci_writel(0x1a, SYS_VPSS_CLKCTL);
dispc_reg_out(VENC_DCLKCTL, 0);
dispc_reg_out(VENC_DCLKPTN0, 0);
/* Set the OSD Divisor to 1. */
dispc_reg_out(VENC_OSDCLK0, 1);
dispc_reg_out(VENC_OSDCLK1, 2);
/* Clear composite mode register */
dispc_reg_out(VENC_CVBS, 0);
/* DM365 pinmux */
//使能编码器和LCD的时钟
dispc_reg_out(VENC_CLKCTL, 0x11);
davinci_cfg_reg(DM365_VOUT_FIELD_G81, PINMUX_RESV);
davinci_cfg_reg(DM365_VOUT_COUTL_EN, PINMUX_RESV);
davinci_cfg_reg(DM365_VOUT_COUTH_EN, PINMUX_RESV);
//设置基地址
davinci_writel(mode_info->left_margin,
(DM365_OSD_REG_BASE + OSD_BASEPX));
davinci_writel(mode_info->upper_margin,
(DM365_OSD_REG_BASE + OSD_BASEPY));
//dispc_reg_merge(VENC_VIDCTL, 1 << 14,
// VENC_VIDCTL_VCLKP);
//VCLKE使能
dispc_reg_merge(VENC_VIDCTL, 1 << VENC_VIDCTL_VCLKE_SHIFT,
VENC_VIDCTL_VCLKE);
//VCLK输出
dispc_reg_merge(VENC_VIDCTL, 0 << VENC_VIDCTL_VCLKZ_SHIFT,
VENC_VIDCTL_VCLKZ);
//HSYNC
dispc_reg_merge(VENC_VIDCTL, 0 << VENC_VIDCTL_SYDIR_SHIFT,
VENC_VIDCTL_SYDIR);
//YOUT输出
dispc_reg_merge(VENC_VIDCTL, 0 << VENC_VIDCTL_YCDIR_SHIFT,
VENC_VIDCTL_YCDIR);
//使能ENC时钟
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));
dispc_reg_out(VENC_VMOD, 0x3011);
}
还有其他地方需要设置吗? 先谢谢了。