微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 硬件电路设计 > TI模拟硬件电路设计 > SN65DSI83 機率性 (黑/白)屏,且 IRQ Register 0xE5 大部分時間會顯示 0x81

SN65DSI83 機率性 (黑/白)屏,且 IRQ Register 0xE5 大部分時間會顯示 0x81

时间:10-02 整理:3721RD 点击:

您好, 

    於 OMAP5432 ES2 上使用 SN65DSI83 進行 MIPI DSI 轉 LVDS。

    目前可正常顯示,也可正常輸出 test pattern 畫面 (MIPI DSI clock 經示波器量測為 213MHz,LVDS輸出端則為 71MHz)

    但是 IRQ Register 0xE5 大部分時間會顯示 0x81 (CHA_SYNCH_ERR, PLL_UNLOCK),少部分機率性出現 0xB1, 0x01

    而且,開機時機率性會出現白屏或黑屏,此時 SN65DSI83 有輸出 clock,但是 data lines 都沒有輸出

   (有觀察到此時 IRQ Register 0xE5 是 0x81,不排除也有其他數據的可能性)

    請問:

    1. CHA_SYNCH_ERR 的成因為何? specification 上面寫的過於籠統

    2. CHA_SYNCH_ERR 該如何解決 ? 

    3.  IRQ Register 0xE5 回報 PLL_UNLOCK 是正常的嗎?

static struct omap_dss_device omap5_XXX_dsi_device = {
	.name                         = "lcd",
	.driver_name            = "sn65dsi83_i2c_d2l",
	.type                           = OMAP_DISPLAY_TYPE_DSI,
	.channel = OMAP_DSS_CHANNEL_LCD,
	.data	= &XXX_dsi_panel,
	.phy.dsi                = {
		.clk_lane       = 1,
		.clk_pol        = 0,
		.data1_lane     = 2,
		.data1_pol      = 0,
		.data2_lane     = 3,
		.data2_pol      = 0,
		.data3_lane     = 4,
		.data3_pol      = 0,
		.data4_lane     = 5,
		.data4_pol      = 0,
		.module         = 0,
		.ext_te = false,
		.ext_te_gpio = -1,
	},

	.clocks = {
		.dispc = { .channel = {	.lck_div        = 1,	.pck_div        = 2,	.lcd_clk_src    = OMAP_DSS_CLK_SRC_DSI_PLL_HSdiv_DISPC,},.dispc_fclk_src = OMAP_DSS_CLK_SRC_DSI_PLL_HSdiv_DISPC,
		},
		.dsi = {.regn                   = 16,.regm                 = 178,.regm_dispc     = 4,.regm_dsi       = 4,.lp_clk_div     = 18,.offset_ddr_clk = 0,.dsi_fclk_src   = OMAP_DSS_CLK_SRC_DSI_PLL_HSdiv_DSI,
		},		
	},

	.panel = {
		.width_in_um = 216960,
		.height_in_um = 135600,
		.fb_xres = 1280,
		.fb_yres = 800,
		.dsi_mode = OMAP_DSS_DSI_VIDEO_MODE,
		.dsi_pix_fmt = OMAP_DSS_DSI_FMT_RGB888,
	},
	.reset_gpio     = SN65DSI83_EN,
	.max_backlight_level = 255,
	.set_backlight		= omap5XXX_set_bl_intensity,
};
static struct omap_video_timings sn65dsi83_timings = {
	.x_res		= 1280,
	.y_res		= 800,
	.pixel_clock	= 71100,

	.hsw			= 16,
	.hfp			= 112,
	.hbp			= 32,

	.vsw			= 2,
	.vfp			= 11,
	.vbp			= 10,
};

static const struct omap_dss_dsi_videomode_data vm_data = {
	.hsa			= 16,
	.hfp			= 112,
	.hbp			= 32,

	.vsa			= 2,
	.vfp			= 11,
	.vbp			= 10,

	.vp_de_pol		= true,
	.vp_vsync_pol		= true,
	.vp_hsync_pol		= true,
	.vp_hsync_end		= true,
	.vp_vsync_end		= true,

	.blanking_mode		= 1,
	.hsa_blanking_mode	= 1,
	.hfp_blanking_mode	= 1,
	.hbp_blanking_mode	= 1,

	.ddr_clk_always_on	= true,

	.window_sync		= 4,
};
unsigned char SN65DSI83_REGS[][2] = 
{
	// Register Index, Set Value

	// Reset and Clock Registers
	{0x09, 0x00}, // SOFT_RESET
	{0x0A, 0x05}, // PLL_EN_STAT, LVDS_CLK_RANGE, HS_CLK_SRC
	{0x0B, 0x10}, // DSI_CLK_divIDER, REFCLK_MULTIPLIER
	{0x0D, 0x00}, // PLL_EN

	// DSI Registers
	{0x10, 0x26}, // LEFT_RIGHT_PIXELS, DSI_CHANNEL_MODE, CHA_DSI_LANES, SOT_ERR_TOL_DIS
	{0x11, 0x00}, // CHA_DSI_DATA_EQ, CHA_DSI_CLK_EQ
	{0x12, 0x2a}, // CHA_DSI_CLK_RANGE

	// LVDS Registers
	{0x18, 0x78}, // DE_NEG_POLARITY, HS_NEG_POLARITY, VS_NEG_POLARITY, LVDS_LINK_CFG, CHA_24BPP_MODE, CHA_2424BPP_FORMAT1
	{0x19, 0x00}, // CHA_LVDS_VOCM, CHA_LVDS_VOD_SWING
	{0x1A, 0x23}, // EVEN_ODD_SWAP, CHA_REVERSE_LVDS, CHA_LVDS_TERM
	{0x1B, 0x00}, // CHA_LVDS_CM_ADJUST

	// Video Registers
	{0x20, 0x00}, // CHA_ACTIVE_LINE_LINGTH_LOW     0x0500 (1280)
	{0x21, 0x05}, // CHA_ACTIVE_LINE_LINGTH_HIGH 

	{0x24, 0x20}, // CHA_VERTICAL_DISPLAY_SIZE_LOW  0x0320 ( 800) [TEST PATTERN GENERATION PURPOSE ONLY]
	{0x25, 0x03}, // CHA_VERTICAL_DISPLAY_SIZE_HIGH               [TEST PATTERN GENERATION PURPOSE ONLY]

	{0x28, 0x21}, // CHA_SYNC_DELAY_LOW             0x0021 (  33)
	{0x29, 0x00}, // CHA_SYNC_DELAY_HIGH

	{0x2C, 0x10}, // CHA_HSYNC_PULSE_WIDTH_LOW      0x0010 (  16)
	{0x2D, 0x00}, // CHA_HSYNC_PULSE_WIDTH_HIGH

	{0x30, 0x02}, // CHA_VSYNC_PULSE_WIDTH_LOW      0x0002 (   2)
	{0x31, 0x00}, // CHA_VSYNC_PULSE_WIDTH_HIGH

	{0x34, 0x20}, // CHA_HORIZONTAL_BACK_PORCH      0x20   (  32)
	{0x36, 0x0b}, // CHA_VIRTICAL_BACK_PORCH        0x0b   (  11) [TEST PATTERN GENERATION PURPOSE ONLY]

	{0x38, 0x70}, // CHA_HORIZONTAL_FRONT_PORCH     0x70   ( 112) [TEST PATTERN GENERATION PURPOSE ONLY]
	{0x3A, 0x0a}, // CHA_VIRTICAL_FRONT_PORCH       0x0a   (  10) [TEST PATTERN GENERATION PURPOSE ONLY]

	{0x3C, 0x00}, // CHA_TEST_PATTERN                             [TEST PATTERN GENERATION PURPOSE ONLY]

	// IRQ Registers
	{0xE1, 0xFD},
	{0xE5, 0xFD},
	{0xE0, 0x01},
};

可正常显示了, 那么设置方面应该是正确的.

但是间断性的出现黑白屏的情况, 是不是先排除一下硬件方面的问题引起的因素

Hi Hicker:

能否帮忙共享一下你的驱动代码,最近我也在调试这颗IC,我的邮箱lxx1988515@126.com,非常感谢!

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top