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