ST7102调屏

最近在调了ST7102的驱动,心得记录一下,一是记忆深刻,另外是分享让大家更快上手
主要步骤其实只有三步:
1.复位时序一定要正确
2.确认水平,垂直前后肩与水平同步消隐
3.确认发送的cmd指令

步骤一:


static void panel_dev_power_on(struct mipi_dsim_lcd_device *dsim_dev, int power)
{
	static int boot_flag  = 0;
	struct panel_dev *panel_st7701s_xiaomi = dev_get_drvdata(panel->dev);
	if (power == 1) {
		//reset
		dev_info(panel->dev, "Panel power on reset\n");
		if (gpio_is_valid(panel_st7701s_xiaomi->rst.gpio)) {
			gpio_direction_output(panel_st7701s_xiaomi->rst.gpio, !panel_st7701s_xiaomi->rst.active_level);
			msleep(50);
			gpio_direction_output(panel_st7701s_xiaomi->rst.gpio, panel_st7701s_xiaomi->rst.active_level);
			msleep(120);
			gpio_direction_output(panel_st7701s_xiaomi->rst.gpio, !panel_st7701s_xiaomi->rst.active_level);
			msleep(120);
			boot_flag = 1;
		}
		//open backlight
		if (gpio_is_valid(panel_st7701s_xiaomi->bl.gpio)) {
			gpio_direction_output(panel_st7701s_xiaomi->bl.gpio, panel_st7701s_xiaomi->bl.active_level);
		}
	} else {
		dev_info(panel->dev, "Panel power on open backlight\n");
		if (gpio_is_valid(panel_st7701s_xiaomi->bl.gpio)) {
			gpio_direction_output(panel_st7701s_xiaomi->bl.gpio, panel_st7701s_xiaomi->bl.active_level);
		}
	}

}

步骤二:

struct fb_videomode jzfb_st7701s_videomode[] = {
	//[0] 4lane 60fps
	{
		.name = "st7701s_xiaomi",
		.refresh = 30,
		.xres = 480,
		.yres = 960,
		.pixclock = KHZ2PICOS(56000),  //60
		.left_margin = 40,
		.right_margin = 80,
		.upper_margin = 10,
		.lower_margin = 215,
		.hsync_len = 2,
		.vsync_len = 2,
		.sync = FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT,
		.vmode = FB_VMODE_NONINTERLACED,
		.flag = 0
	},

	{
		.name = "st7701s_xiaomi",
		.refresh = 30,
		.xres = 480,
		.yres = 960,
		.pixclock = KHZ2PICOS(56000),  //60
		.left_margin = 40,
		.right_margin = 80,
		.upper_margin = 10,
		.lower_margin = 215,
		.hsync_len = 2,
		.vsync_len = 2,
		.sync = FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT,
		.vmode = FB_VMODE_NONINTERLACED,
		.flag = 0
	},

};

步骤三:


static struct dsi_cmd_packet st7701s_xiaomi_cmd_list[] = {


//{0x99, 50, 0x00, {0x00}},  //sleep 5ms

{0x05, 0x10, 0x00 },
{0x05, 0x28, 0x00 },

{0x29, 0x04, 0x00, { 0x99, 0x71, 0x02, 0xa2, } },
{0x29, 0x04, 0x00, { 0x99, 0x71, 0x02, 0xa3, } },
{0x29, 0x04, 0x00, { 0x99, 0x71, 0x02, 0xa4, } },

{0x39, 0x02, 0x00, { 0x78, 0x21, } },
{0x39, 0x02, 0x00, { 0x79, 0xCF, } },
//2lane
//{0x39, 0x02, 0x00, { 0xA4, 0x31, } },

{0x39, 0x08, 0x00, { 0xB0, 0x22, 0x57, 0x1E, 0x61, 0x2F, 0x57, 0x61, } },

{0x39, 0x03, 0x00, { 0xB7, 0x64, 0x64, } },

{0x39, 0x03, 0x00, { 0xBF, 0x6e, 0x6e, } },
{0x29, 0x26, 0x00, { 0xC8, 0x00, 0x00, 0x13, 0x23, 0x3E, 0x00, 0x6A, 0x03, 0xB0, 0x06, 0x11, 0x0F, 0x07, 0x85, 0x03, 0x21, 0xD5, 0x01, 0x18, 0x00, 0x22, 0x56, 0x0F, 0x98, 0x0A, 0x32, 0xF8, 0x0D, 0x48, 0x0F, 0xF3, 0x80, 0x0F, 0xAC, 0xC1, 0x03, 0xC4, } },

{0x29, 0x26, 0x00, { 0xC9, 0x00, 0x00, 0x13, 0x23, 0x3E, 0x00, 0x6A, 0x03, 0xB0, 0x06, 0x11, 0x0F, 0x07, 0x85, 0x03, 0x21, 0xD5, 0x01, 0x18, 0x00, 0x22, 0x56, 0x0F, 0x98, 0x0A, 0x32, 0xF8, 0x0D, 0x48, 0x0F, 0xF3, 0x80, 0x0F, 0xAC, 0xC1, 0x03, 0xC4, } },

{0x39, 0x07, 0x00, { 0xD7, 0x10, 0x0C, 0x77, 0x19, 0xE0, 0xE0, } },
{0x39, 0x21, 0x00, { 0xA3, 0x40, 0x03, 0x80, 0xCF, 0x44, 0x00, 0x00, 0x00, 0x00, 0x04, 0x6F, 0x6F, 0x00, 0x1A, 0x00, 0x45, 0x05, 0x00, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x02, 0x20, 0x52, 0x00, 0x05, 0x00, 0x00, 0xFF, } },
{0x39, 0x2D, 0x00, { 0xA6, 0x02, 0x00, 0x24, 0x55, 0x35, 0x00, 0x38, 0x00, 0x5E, 0x5E, 0x00, 0x24, 0x55,0x36, 0x00, 0x37, 0x00, 0x5E, 0x5E, 0x02, 0xAC, 0x51, 0x3A, 0x00, 0x00, 0x00, 0x5E, 0x5E, 0x00, 0xAC, 0x11, 0x00, 0x00, 0x00, 0x00, 0x5E, 0x5E, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, } },

{0x39, 0x31, 0x00, { 0xA7, 0x19, 0x19, 0x00, 0x64, 0x40, 0x07, 0x16, 0x40, 0x00, 0x04, 0x03, 0x5E, 0x5E, 0x00, 0x64, 0x40, 0x25, 0x34, 0x00, 0x00, 0x02, 0x01, 0x5E, 0x5E, 0x00, 0x64, 0x40, 0x4B, 0x5A, 0x00, 0x00, 0x02, 0x01, 0x5E, 0x5E, 0x00, 0x24, 0x40, 0x69, 0x78, 0x00, 0x00, 0x00, 0x00, 0x5E, 0x5E, 0x00, 0x44, } },

{0x39, 0x26, 0x00, { 0xAC, 0x08, 0x0A, 0x11, 0x00, 0x13, 0x03, 0x1B,0x18, 0x06, 0x1A, 0x19, 0x1B, 0x1B,0x1B, 0x18, 0x1B, 0x09,0x0B, 0x10, 0x02, 0x12, 0x01, 0x1B, 0x18, 0x06, 0x1A, 0x19, 0x1B, 0x1B, 0x1B, 0x18, 0x1B, 0xFF, 0x67, 0xFF, 0x67, 0x00, } },
{0x39, 0x08, 0x00, { 0xAD, 0xCC, 0x40, 0x46, 0x11, 0x04, 0x6F, 0x6F, } },
{0x39, 0x0F, 0x00, { 0xE8, 0x30, 0x07, 0x00, 0x7A, 0x7A, 0x9C, 0x00, 0xE2, 0x04, 0x00, 0x00, 0x00, 0x00, 0xEF, } },
{0x29, 0x03, 0x00, { 0x75, 0x03, 0x04, } },
{0x39, 0x22, 0x00, { 0xE7, 0x8B, 0x3C, 0x00, 0x0C, 0xF0, 0x5D, 0x00, 0x5D, 0x00, 0x5D, 0x00, 0x5D, 0x00, 0xFF, 0x00, 0x08, 0x7B, 0x00, 0x00, 0xC8, 0x6A, 0x5A, 0x08, 0x1A, 0x3C, 0x00, 0x91, 0x01, 0xCC, 0x01, 0x7F, 0xF0, 0x22, } },
{0x39, 0x0A, 0x00, { 0xE9, 0x4C, 0x7F, 0x08, 0x07, 0x1A, 0x7A, 0x22, 0x1A, 0x33, } },

{0x05, 0x11, 0x00 }, 	//Sleep out
{0x99, 120, 0x00, {0x00}},		//delay 250ms

{0x05, 0x29, 0x00 },  	// Display On

{0x29, 0x02, 0x00, { 0x35, 0x00, } },
//{0x39, 0x02, 0x00, { 0xB5, 0x85, } },

};

lcd ic厂提供的txt步骤:


#=== Power Off
power.off all

#=== Power-On Sequence
mipi.host.reset
delay 100

#=== output mode
#mipi.mode dual LR
mipi.mode 2ch

mipi.lane.enable
delay 100

#=== Setdata rate
#(burst)(nonburst)(nonburst-pulse)

mipi.dsi 4 500 burst #MDL
delay 100

mipi.video 960 480 60 10 215 40 40 2 2   #TP 3ms

#mipi.video 960 480 91 10 375 40 40 2 2  #TP 3ms

#===== Power setting VIO VDD VCC
power.on 5v 12v
delay 100
power.level 1.8 2.8
power.on vio vdd
delay 100
#power.vspn.level 5.5 -5.5
#power.on vsp vsn
#delay 100
#----------------------------------------------------------
#-- Set GPIO pin
#--    1. Direction register value: 0=input  1=output
#--    2. Pin Info.
#--             GPIO1 : Reset pin
#####--        GPIO2 : IOVCC pin
#--             GPIO3 : AVDD pin EN
#--        GPIO4 : AVEE pin EN
#--             GPIO Others : Not used
#----------------------------------------------------------
#=== Set Link Level
gpio.Level 1.8
gpio.output.enable

#===== Setting GPIO
gpio.write 0x00
gpio.dir   0x7F

#===== Init. GPIO : GPIO1(RESX):high->low->high
gpio.write 0x0F
delay 100
gpio.write 0x0E
delay 100
gpio.write 0x0F
delay 100

#=== HS Clock Disable
mipi.clock.disable
delay 20
mipi.video.disable
delay 20
mipi.write 0x05 0x10
mipi.write 0x05 0x28
#------------- KEY -----------------
mipi.write 0x29 0x99 0x71 0x02 0xa2
mipi.write 0x29 0x99 0x71 0x02 0xa3
mipi.write 0x29 0x99 0x71 0x02 0xa4
#-----------------------------------
mipi.write 0x39 0x78 0x21
mipi.write 0x39 0x79 0xCF
#------Power------------------------
#VGH_VGL
mipi.write 0x39 0xB0 0x22 0x57 0x1E 0x61 0x2F 0x57 0x61
#Source
mipi.write 0x39 0xB7 0x64 0x64
#VCOM
mipi.write 0x39 0xBF 0x6e 0x6e
#------Gamma------------------------
mipi.write 0x29 0xC8 0x00 0x00 0x13 0x23 0x3E 0x00 0x6A 0x03 0xB0 0x06 0x11 0x0F 0x07 0x85 0x03 0x21 0xD5 0x01 0x18 0x00 0x22 0x56 0x0F 0x98 0x0A 0x32 0xF8 0x0D 0x48 0x0F 0xF3 0x80 0x0F 0xAC 0xC1 0x03 0xC4
mipi.write 0x29 0xC9 0x00 0x00 0x13 0x23 0x3E 0x00 0x6A 0x03 0xB0 0x06 0x11 0x0F 0x07 0x85 0x03 0x21 0xD5 0x01 0x18 0x00 0x22 0x56 0x0F 0x98 0x0A 0x32 0xF8 0x0D 0x48 0x0F 0xF3 0x80 0x0F 0xAC 0xC1 0x03 0xC4
#TDDI_ATG_Tool_v1.1.2
#------GIP--------------------------
mipi.write 0x39 0xD7 0x10 0x0C 0x77 0x19 0xE0 0xE0

mipi.write 0x39 0xA3 0x40 0x03 0x80 0xCF 0x44 0x00 0x00 0x00 0x00 0x04 0x6F 0x6F 0x00 0x1A 0x00 0x45 0x05 0x00 0x00 0x00 0x00 0x46 0x00 0x00 0x02 0x20 0x52 0x00 0x05 0x00 0x00 0xFF

mipi.write 0x39 0xA6 0x02 0x00 0x24 0x55 0x35 0x00 0x38 0x00 0x5E 0x5E 0x00 0x24 0x55 0x36 0x00 0x37 0x00 0x5E 0x5E 0x02 0xAC 0x51 0x3A 0x00 0x00 0x00 0x5E 0x5E 0x00 0xAC 0x11 0x00 0x00 0x00 0x00 0x5E 0x5E 0x00 0x00 0x06 0x00 0x00 0x00 0x00

mipi.write 0x39 0xA7 0x19 0x19 0x00 0x64 0x40 0x07 0x16 0x40 0x00 0x04 0x03 0x5E 0x5E 0x00 0x64 0x40 0x25 0x34 0x00 0x00 0x02 0x01 0x5E 0x5E 0x00 0x64 0x40 0x4B 0x5A 0x00 0x00 0x02 0x01 0x5E 0x5E 0x00 0x24 0x40 0x69 0x78 0x00 0x00 0x00 0x00 0x5E 0x5E 0x00 0x44

mipi.write 0x39 0xAC 0x08 0x0A 0x11 0x00 0x13 0x03 0x1B 0x18 0x06 0x1A 0x19 0x1B 0x1B 0x1B 0x18 0x1B 0x09 0x0B 0x10 0x02 0x12 0x01 0x1B 0x18 0x06 0x1A 0x19 0x1B 0x1B 0x1B 0x18 0x1B 0xFF 0x67 0xFF 0x67 0x00

mipi.write 0x39 0xAD 0xCC 0x40 0x46 0x11 0x04 0x6F 0x6F

mipi.write 0x39 0xE8 0x30 0x07 0x00 0x7A 0x7A 0x9C 0x00 0xE2 0x04 0x00 0x00 0x00 0x00 0xEF

mipi.write 0x29 0x75 0x03 0x04
                     #1   2    3    4    5    6    7    8    9    10   11   12   13   14   15   16   17   18   19   20   21   22   23   24   25   26   27   28   29   30   31   32   33   34   35   36   37   38   39   40   41   42   43   44
mipi.write 0x39 0xE7 0x8B 0x3C 0x00 0x0C 0xF0 0x5D 0x00 0x5D 0x00 0x5D 0x00 0x5D 0x00 0xFF 0x00 0x08 0x7B 0x00 0x00 0xC8 0x6A 0x5A 0x08 0x1A 0x3C 0x00 0x91 0x01 0xCC 0x01 0x7F 0xF0 0x22

mipi.write 0x39 0xE9 0x4C 0x7F 0x08 0x07 0x1A 0x7A 0x22 0x1A 0x33

#-----------------------------------
#------------- Lock KEY -----------------
#mipi.write 0x29 0x99 0x71 0x02 0x00
#-----------------------------------
mipi.write 0x05 0x11
delay 120
mipi.write 0x05 0x29

mipi.write 0x29 0x35 0x00

#mipi.write 0x39 0xB5 0x85  #BIST MODE

mipi.clock.Enable
delay 20


mipi.video.Enable
delay 20

image.fill 255 255 255

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值