lcm 驱动分析

本文详细介绍了LCM驱动的结构,特别是针对MIPI DSI接口的设置。重点包括初始化设置表、睡眠模式配置、时序控制以及关键函数的作用。在调试过程中,关注VCOM寄存器、PLL_CLOCK频率和时序对水波纹的影响。同时,概述了lcm_util函数的使用和LCD ID的读取方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

struct LCM_setting_table {
unsigned char cmd; // 命令地址
unsigned char count; // 寄存器值的个数
unsigned char para_list[128]; //寄存器的值
};

static struct LCM_setting_table lcm_initialization_setting[] = {
{0xFF, 4, {0xAA,0x55,0xA5,0x80}}, //就是LCM_setting_table结构体的三个成员。

mipi屏的话,MTK平台的是不同的屏只要换这个初始化设置的代码就可以跑起来的,当然有些屏ic已经有程序,不需要再从初始化里下载这段代码。只要上电时序和配置对了就可以跑起来。

效果调试最多的是调试水波纹,可以调试vcom对应的寄存器。竖的波纹好像和pll_clk有关,可以调试试一下。

初始化里的这部分延时不能少。0x11和0x29是用来下载这段代码到lcd ic的,还有其它下载模式。比如:0x10和0x28.

{0x11,  1,  {0x00}},
{REGFLAG_DELAY, 120, {}},

{0x29,  1,  {0x00}},
{REGFLAG_DELAY, 20, {}},

{REGFLAG_END_OF_TABLE, 0x00, {}},

static struct LCM_setting_table lcm_deep_sleep_mode_in_setting[] = { }
这个是睡眠设置的寄存器

static struct LCM_setting_table lcm_deep_sleep_mode_in_setting[] = {}

这个是深度睡眠设置的寄存器

static void push_table(struct LCM_setting_table *table, unsigned int count, unsigned char force_update){}

这个是讲上面这些设置寄存器的数组push到ic里面去的函数。参数:结构体数组,个数,强制更新吧1次(我理解的)

重点内容

驱动实现部分

static void lcm_set_util_funcs(const LCM_UTIL_FUNCS *util)
{
memcpy(&lcm_util, util, sizeof(LCM_UTIL_FUNCS));
}

lcm 驱动框架提供给驱动开发者的接口函数,将util复制到lcm_util。

static void lcm_get_params(LCM_PARAMS *params)
{
memset(params, 0, sizeof(LCM_PARAMS));
params-&g

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值