问题描述
rtos下新增屏幕驱动 在mircopython镜像初始化显示屏幕 屏幕发光但是没有画面
---------官方给出的初始化序列代码------------
//lcm init code///////// /////////////
WriteCommand(0x11);
//WriteCommand(0x21);
//WriteCommand(0x36);SPI_WriteData(0x00);
Delay(200);
WriteCommand(0xff);
SPI_WriteData(0x77);
SPI_WriteData(0x01);
SPI_WriteData(0x00);
SPI_WriteData(0x00);
SPI_WriteData(0x10);
WriteCommand(0xC0);
SPI_WriteData(0xE9);
SPI_WriteData(0x03);
WriteCommand(0xC1);
SPI_WriteData(0x11);//0a
SPI_WriteData(0x02);
WriteCommand(0xC2);
SPI_WriteData(0x31);
SPI_WriteData(0x08);
WriteCommand(0xB0);
SPI_WriteData (0x00);
SPI_WriteData (0x06);
SPI_WriteData (0x11);
SPI_WriteData (0x12);
SPI_WriteData (0x18);
SPI_WriteData (0x0A);
SPI_WriteData (0x0A);
SPI_WriteData (0x09);
SPI_WriteData (0x09);
SPI_WriteData (0x1D);
SPI_WriteData (0x09);
SPI_WriteData (0x14);
SPI_WriteData (0x10);
SPI_WriteData (0x0E);
SPI_WriteData (0x11);
SPI_WriteData (0x19);
WriteCommand(0xB1);
SPI_WriteData (0x00);
SPI_WriteData (0x06);
SPI_WriteData (0x11);
SPI_WriteData (0x11);
SPI_WriteData (0x15);
SPI_WriteData (0x09);
SPI_WriteData (0x0B);
SPI_WriteData (0x09);
SPI_WriteData (0x09);
SPI_WriteData (0x23);
SPI_WriteData (0x09);
SPI_WriteData (0x17);
SPI_WriteData (0x14);
SPI_WriteData (0x18);
SPI_WriteData (0x1E);
SPI_WriteData (0x19);
WriteCommand(0xff);
SPI_WriteData(0x77);
SPI_WriteData(0x01);
SPI_WriteData(0x00);
SPI_WriteData(0x00);
SPI_WriteData(0x11);
WriteCommand(0xB0);
SPI_WriteData(0x4D);
//-------------------------------------------Vcom Setting----------------
WriteCommand(0xB1);
SPI_WriteData(0x3A);
//-----------------------------------------End Vcom Setting--------------
WriteCommand(0xB2);
SPI_WriteData(0x07);
WriteCommand(0xB3);
SPI_WriteData(0x80);
WriteCommand(0xB5);
SPI_WriteData(0x47);
WriteCommand(0xB7);
SPI_WriteData(0x8A);
WriteCommand(0xB8);
SPI_WriteData(0x21);
WriteCommand(0xC1);
SPI_WriteData(0x78);
WriteCommand(0xC2);
SPI_WriteData(0x78);
WriteCommand(0xD0);
SPI_WriteData(0x88);
//---------------------------------End Power Control Registers Initial --
Delay(100);
//---------------------------------------------GIP Setting---------------
WriteCommand(0xe0);
SPI_WriteData(0x00);
SPI_WriteData(0x00);
SPI_WriteData(0x02);
WriteCommand(0xe1);
SPI_WriteData(0x08);
SPI_WriteData(0x00);
SPI_WriteData(0x0A);
SPI_WriteData(0x00);
SPI_WriteData(0x07);
SPI_WriteData(0x00);
SPI_WriteData(0x09);
SPI_WriteData(0x00);
SPI_WriteData(0x00);
SPI_WriteData(0x33);
SPI_WriteData(0x33);
WriteCommand(0xe2);
SPI_WriteData(0x00);
SPI_WriteData(0x00);
SPI_WriteData(0x00);
SPI_WriteData(0x00);
SPI_WriteData(0x00);
SPI_WriteData(0x00);
SPI_WriteData(0x00);
SPI_WriteData(0x00);
SPI_WriteData(0x00);
SPI_WriteData(0x00);
SPI_WriteData(0x00);
SPI_WriteData(0x00);
SPI_WriteData(0x00);
WriteCommand(0xe3);
SPI_WriteData(0x00);
SPI_WriteData(0x00);
SPI_WriteData(0x33);
SPI_WriteData(0x33);
WriteCommand(0xe4);
SPI_WriteData(0x44);
SPI_WriteData(0x44);
WriteCommand(0xe5);
SPI_WriteData(0x0E);
SPI_WriteData(0x60);
SPI_WriteData(0xAf);
SPI_WriteData(0xAf);
SPI_WriteData(0x10);
SPI_WriteData(0x60);
SPI_WriteData(0xAf);
SPI_WriteData(0xAf);
SPI_WriteData(0x0A);
SPI_WriteData(0x60);
SPI_WriteData(0xAf);
SPI_WriteData(0xAf);
SPI_WriteData(0x0C);
SPI_WriteData(0x60);
SPI_WriteData(0xAf);
SPI_WriteData(0xAf);
WriteCommand(0xe6);
SPI_WriteData(0x00);
SPI_WriteData(0x00);
SPI_WriteData(0x33);
SPI_WriteData(0x33);
WriteCommand(0xe7);
SPI_WriteData(0x44);
SPI_WriteData(0x44);
WriteCommand(0xe8);
SPI_WriteData(0x0D);
SPI_WriteData(0x60);
SPI_WriteData(0xA0);
SPI_WriteData(0xA0);
SPI_WriteData(0x0F);
SPI_WriteData(0x60);
SPI_WriteData(0xAf);
SPI_WriteData(0xAf);
SPI_WriteData(0x09);
SPI_WriteData(0x60);
SPI_WriteData(0xAf);
SPI_WriteData(0xAf);
SPI_WriteData(0x0B);
SPI_WriteData(0x60);
SPI_WriteData(0xAf);
SPI_WriteData(0xAf);
WriteCommand(0xeb);
SPI_WriteData(0x02);
SPI_WriteData(0x01);
SPI_WriteData(0xE4);
SPI_WriteData(0xE4);
SPI_WriteData(0x44);
SPI_WriteData(0x00);
SPI_WriteData(0x40);
WriteCommand(0xec);
SPI_WriteData(0x02);
SPI_WriteData(0x01);
WriteCommand(0xed);
SPI_WriteData(0xAB);
SPI_WriteData(0x89);
SPI_WriteData(0x76);
SPI_WriteData(0x54);
SPI_WriteData(0x01);
SPI_WriteData(0xFF);
SPI_WriteData(0xFF);
SPI_WriteData(0xFF);
SPI_WriteData(0xFF);
SPI_WriteData(0xFF);
SPI_WriteData(0xFF);
SPI_WriteData(0x10);
SPI_WriteData(0x45);
SPI_WriteData(0x67);
SPI_WriteData(0x98);
SPI_WriteData(0xBA);
//---------------------------------------------End GIP
//------------------------------ Power Control Registers Initial End-----
Delay(10);
WriteCommand(0xFF);
SPI_WriteData(0x77);
SPI_WriteData(0x01);
SPI_WriteData(0x00);
SPI_WriteData(0x00);
SPI_WriteData(0x00);
WriteCommand(0x29);
//WriteCommand(0x2c);
//------------------------------------------------------------------------------------------
Delay_ms(200);
----------根据官方文档编写的rtos初始化序列代码-------
/* Copyright (c) 2026, Canaan Bright Sight Co., Ltd
*
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions are met:
-
- Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
- CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
- INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
- MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#include "rtthread.h"
#include "connector_panel.h"
#include "k_autoconf_comm.h"
static int tk050f90h6_init(const struct panel_desc* desc)
{
/* clang-format off */
const k_u8 init_sequence[] = {
// cmd type, delay, data length, data0 ... dataN
// From TL050FWV22-H1438A_ST7701s_2LMIPI_V0.txt
0x15, 200, 2, 0x11, 0x00, // Cmd=0x11(SleepOut), delay=200ms
0x39, 0, 6, 0xFF, 0x77, 0x01, 0x00, 0x00, 0x10, // Cmd=0xFF(BankSelect), params=[0x77,0x01,0x00,0x00,0x10] -> bank 10
0x39, 0, 3, 0xC0, 0xE9, 0x03, // Cmd=0xC0, params=[0xE9,0x03]
0x39, 0, 3, 0xC1, 0x11, 0x02, // Cmd=0xC1, params=[0x11,0x02]
0x39, 0, 3, 0xC2, 0x31, 0x08, // Cmd=0xC2, params=[0x31,0x08]
0x39, 0, 17, 0xB0, 0x00, 0x06, 0x11, 0x12, 0x18, 0x0A, 0x0A, 0x09, 0x09, 0x1D, 0x09, 0x14, 0x10, 0x0E, 0x11, 0x19, // Cmd=0xB0, 16 params
0x39, 0, 17, 0xB1, 0x00, 0x06, 0x11, 0x11, 0x15, 0x09, 0x0B, 0x09, 0x09, 0x23, 0x09, 0x17, 0x14, 0x18, 0x1E, 0x19, // Cmd=0xB1, 16 params
0x39, 0, 6, 0xFF, 0x77, 0x01, 0x00, 0x00, 0x11, // Cmd=0xFF(BankSelect), params=[0x77,0x01,0x00,0x00,0x11] -> bank 11
0x15, 0, 2, 0xB0, 0x4D, // Cmd=0xB0, params=[0x4D]
0x15, 0, 2, 0xB1, 0x3A, // Cmd=0xB1(VCOM), params=[0x3A]
0x15, 0, 2, 0xB2, 0x07, // Cmd=0xB2, params=[0x07]
0x15, 0, 2, 0xB3, 0x80, // Cmd=0xB3, params=[0x80]
0x15, 0, 2, 0xB5, 0x47, // Cmd=0xB5, params=[0x47]
0x15, 0, 2, 0xB7, 0x8A, // Cmd=0xB7, params=[0x8A]
0x15, 0, 2, 0xB8, 0x21, // Cmd=0xB8, params=[0x21]
0x15, 0, 2, 0xC1, 0x78, // Cmd=0xC1, params=[0x78]
0x15, 0, 2, 0xC2, 0x78, // Cmd=0xC2, params=[0x78]
0x15, 100, 2, 0xD0, 0x88, // Cmd=0xD0, params=[0x88], delay=100ms
0x39, 0, 4, 0xE0, 0x00, 0x00, 0x02, // Cmd=0xE0, params=[0x00,0x00,0x02], delay=10ms
0x39, 0, 12, 0xE1, 0x08, 0x00, 0x0A, 0x00, 0x07, 0x00, 0x09, 0x00, 0x00, 0x33, 0x33, // Cmd=0xE1, 11 params
0x39, 0, 14, 0xE2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Cmd=0xE2, 13 params
0x39, 0, 5, 0xE3, 0x00, 0x00, 0x33, 0x33, // Cmd=0xE3, 4 params
0x39, 0, 3, 0xE4, 0x44, 0x44, // Cmd=0xE4, params=[0x44,0x44]
0x39, 0, 17, 0xE5, 0x0E, 0x60, 0xAF, 0xAF, 0x10, 0x60, 0xAF, 0xAF, 0x0A, 0x60, 0xAF, 0xAF, 0x0C, 0x60, 0xAF, 0xAF, // Cmd=0xE5, 16 params
0x39, 0, 5, 0xE6, 0x00, 0x00, 0x33, 0x33, // Cmd=0xE6, 4 params
0x39, 0, 3, 0xE7, 0x44, 0x44, // Cmd=0xE7, params=[0x44,0x44]
0x39, 0, 17, 0xE8, 0x0D, 0x60, 0xA0, 0xA0, 0x0F, 0x60, 0xAF, 0xAF, 0x09, 0x60, 0xAF, 0xAF, 0x0B, 0x60, 0xAF, 0xAF, // Cmd=0xE8, 16 params
0x39, 0, 8, 0xEB, 0x02, 0x01, 0xE4, 0xE4, 0x44, 0x00, 0x40, // Cmd=0xEB, 7 params
0x39, 0, 3, 0xEC, 0x02, 0x01, // Cmd=0xEC, params=[0x02,0x01]
0x39, 10, 17, 0xED, 0xAB, 0x89, 0x76, 0x54, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x10, 0x45, 0x67, 0x98, 0xBA, // Cmd=0xED, 16 params
0x39, 0, 6, 0xFF, 0x77, 0x01, 0x00, 0x00, 0x00, // Cmd=0xFF(BankSelect), params=[0x77,0x01,0x00,0x00,0x00] -> bank 00
0x15, 200, 2, 0x29, 0x00, // Cmd=0x29(DisplayOn), delay=200ms
};
/* clang-format on */
return dsi_send_cmd_sequence(desc, init_sequence, sizeof(init_sequence), 0);
}
static int tk050f90h6_power_off(const struct panel_desc* desc)
{
(void)desc;
return 0;
}
/* ========== Panel Operations ========== */
static const struct panel_ops tk050f90h6_ops = {
.reset = panel_generic_reset,
.init = tk050f90h6_init,
.power_off = tk050f90h6_power_off,
.read_chip_id = NULL, // ST7701S does not support DCS reads
};
/* ========== Panel Descriptors ========== */
static const struct panel_desc tk050f90h6_480x854_panel_desc = {
.name = "tk050f90h6_480x854",
.connector_type = TK050F90H6_480_854_DSI_V1,
.bus_type = PANEL_BUS_DSI,
.timing = {
.pclk_khz = 49500,
.hactive = 480,
.hsync_len = 10,
.hback_porch = 20,
.hfront_porch = 150,
.vactive = 854,
.vsync_len = 10,
.vback_porch = 20,
.vfront_porch = 316,
},
.bg_color = PANEL_BG_COLOR_BLACK,
.gpio = {
.reset_pin = CONFIG_MPP_DSI_LCD_RESET_PIN,
.backlight_pin = CONFIG_MPP_DSI_LCD_BACKLIGHT_PIN,
.reset_delay_ms = 10,
.backlight_delay_ms = 200,
.reset_active_low = K_TRUE,
.backlight_active_low = K_FALSE,
},
.bus.dsi = {
.lanes = K_DSI_2LANE,
.cmd_mode = K_DSI_CMD_LP_MODE,
.video_mode = K_DSI_VIDEO_BURST_MODE,
.vc_id = 0,
},
.bus_ops = &dsi_bus_ops,
.ops = &tk050f90h6_ops,
};
/* ========== Driver Registration ========== */
static const struct panel_desc* tk050f90h6_panel_variants[] = {
&tk050f90h6_480x854_panel_desc,
NULL,
};
struct panel_drv mipi_tk050f90h6_drv = {
.connector_name = "tk050f90h6",
.panel_variants = tk050f90h6_panel_variants,
.active_panel = &tk050f90h6_480x854_panel_desc,
};
硬件板卡
01



