全志ARM926 Melis2.0系统的开发指引⑦

全志ARM926 Melis2.0系统的开发指引⑦

  • 编写目的
  • 11. 调屏
    • 11.1. 调屏步骤简介
      • 11.1.1. 判断屏接口。
      • 11.1.2. 确定硬件连接。
      • 11.1.3. 配置显示部分 sys_config.fex
        • 11.1.3.1. 配置屏相关 IO
      • 11.1.4. Lcd_panel_cfg.c 初始化文件中配置屏参数
        • 11.1.4.1. LCD_cfg_panel_info
        • 11.1.4.2. LCD_open_flow
    • 11.2. 软件配置说明
      • 11.2.1. 屏文件说明
      • 11.2.2. 开关屏流程
        • 11.2.2.1. 开关屏步骤函数说明
        • 11.2.2.2. 开关屏流程函数说明
      • 11.2.3. 对屏的初始化
        • 11.2.3.1. IO 模拟串行接口初始化
        • 11.2.3.2. CPU 屏 8080 总线初始化
      • 11.2.4. 其它函数
        • 11.2.4.1. GPIO 操作函数
        • 11.2.4.2. 延时函数
    • 11.3. TCON 参数说明
      • 11.3.1. 接口参数说明
        • 11.3.1.1. lcd_if
        • 11.3.1.2. lcd_hv_if
        • 11.3.1.3. lcd_hv_smode
        • 11.3.1.4. lcd_hv_s888_if
        • 11.3.1.5. lcd_hv_syuv_if
        • 11.3.1.6. lcd_cpu_if
        • 11.3.1.7. lcd_lvds_bitwidth
        • 11.3.1.8. lcd_lvds_mode
      • 11.3.2. 时序参数说明
        • 11.3.2.1. lcd_x
        • 11.3.2.2. lcd_y
        • 11.3.2.3. lcd_ht
        • 11.3.2.4. lcd_hbp
        • 11.3.2.5. lcd_vt
        • 11.3.2.6. lcd_vbp
        • 11.3.2.7. lcd_hv_hspw
        • 11.3.2.8. lcd_hv_vspw
        • 11.3.2.9. lcd_dclk_freq
        • 11.3.2.10. lcd_io_cfg0
      • 11.3.3. 其他参数说明
        • 11.3.3.1. lcd_pwm_freq
        • 11.3.3.2. lcd_gamma_correction_en
        • 11.3.3.3. lcd_gamma_tbl
    • 11.4. 屏文件实例
  • -. 全志相关工具和资源
    • -.1 全志固件镜像修改工具 ImageModify.exe 下载
    • -.2 全志固件USB刷机工具 PhoenixSuit 下载
    • -.3 全志Melis2.0 用户手册.pdf下载
    • -.4 全志melis2.0 sdk源码库下载

编写目的

本文档是全志 Melis2.0 系统的开发指引文档,旨在协助开发者了解和掌握 Melis 系统,快速搭建 Melis系统的开发环境,将 Melis2.0 系统应用到产品开发中。
在这里插入图片描述

11. 调屏

11.1. 调屏步骤简介

11.1.1. 判断屏接口。

首先要判断屏的接口,是 HV、CPU 还是 LVDS 接口的屏,不同的接口,硬件连线及调屏方法不一样。
1.询问客户、屏厂或则根据屏的规格书等确定。
2.通过硬件连线方式确定。

11.1.2. 确定硬件连接。

不同的接口屏,硬件连接不一样,同一接口的屏,连接方式有几种。

1.根据“屏硬件连接”确认。

2.根据原理图确认屏背光、电源、时钟、复位及扩展 IO 连接。

11.1.3. 配置显示部分 sys_config.fex

11.1.3.1. 配置屏相关 IO
;---------------------------------------------------------------------------------------------------------
; 说明: 脚本中的字符串区分大小写,用户可以修改"="后面的数值,但是不要修改前面的字符串
; 描述gpio的形式:Port:端口+组内序号<功能分配><内部电阻状态><驱动能力><输出电平状态>
; pinName = port:P[A-J]<CFG><PULL><DRV_LEVEL><DATA>
;---------------------------------------------------------------------------------------------------------
[lcd0_para]
lcd_power_used = 0
lcd_power = port:PA0<1><default><default><1>
lcd_bl_en_used = 0
;lcd_pwm_used = 0
;lcd_pwm = port:PE12<4><0><default><default>
;lcdd0 = port:PE0<3><default><default><default>
....
lcdvsync = port:PD21<2><default><default><default>

11.1.4. Lcd_panel_cfg.c 初始化文件中配置屏参数

11.1.4.1. LCD_cfg_panel_info

lcd_panel_para_info(__s32 sel, disp_panel_para *info) 函数中设置相关屏参,包括像素、刷新
率、前后肩、RGB 格式等。

11.1.4.2. LCD_open_flow

根据屏的开屏流程函数 LCD_open_flow(__u32 sel) 修改相关函数:
1.static void LCD_power_on(__u32 sel)使能屏,设置复位时序。
2.自定义 LCD_panel_init(__u32 sel) 函数根据屏写数据的不同接口,调用相关接口,写入初始化代
码。该函数接在 LCD_power_on 函数之后即可。
比如 hv 屏可能需要 spi 或 iic 初始化,用 LP_TX 模式初始化。无需设置初始化代码的屏,不用设置。

11.2. 软件配置说明

11.2.1. 屏文件说明

lcd_panel_cfg.c 文件,定义了 TCON 的参数,开关屏的流程,还有对屏的初始化操作。
对 IO 位置的定义,包括电源控制,配屏使用的 GPIO,以及 LCD 控制器 IO 的定义在 sys_config.fex 中。
函数:LCD_cfg_panel_info
功能:配置 C200S 的 TCON 基本参数
原型:static void LCD_cfg_panel_info(__panel_para_t * info)
参数的定义见“3 TCON 参数说明”。

函数:LCD_open_flow
功能:定义开屏的流程
原型:static __s32 LCD_open_flow(__u32 sel)
具体说明见“2.2 开关屏流程”。

函数:LCD_close_flow
功能:定义关屏的流程
原型:static __s32 LCD_close_flow(__u32 sel)
该函数与 LCD_open_flow 对应

函数:LCD_get_panel_funs_0/ LCD_get_panel_funs_1
功能:
原型:void LCD_get_panel_funs_0(__lcd_panel_fun_t * fun)
初始化注册屏的相关操作。

11.2.2. 开关屏流程

开关屏的常见操作流程如图 2-2 所示。
其中,LCD_open_flow 和 LCD_close_flow 称为开关屏流程函数,方框中的函数,如 LCD_power_on,

TCON_open 等函数,称为开关屏步骤函数。
部分屏不需要写入屏初始化参数,LCD_panel_init 及 LCD_panel_exit 这两个步骤函数(图中紫色框部分)可以省去。

在这里插入图片描述

11.2.2.1. 开关屏步骤函数说明

开屏的步骤函数有 LCD_panel_init,TCON_open, LCD_power_on,LCD_bl_open。

函数:LCD_panel_init
功能:对屏初始化
原型:static void LCD_panel_init(__u32 sel)
可参考“2.3 对屏的初始化”。部分屏不需要进行初始化操作,LCD_panel_init 及 LCD_panel_exit 这两个步骤函数可以省去。

函数:TCON_open
功能:打开 F20 TCON
原型:__s32 TCON0_open(__u32 sel)
该函数由显示驱动提供,用户无需实现。

函数:LCD_power_on
功能:打开 LCD 电源
原型:static void LCD_power_on(__u32 sel)
显示驱动提供 LCD_POWER_EN 函数可供调用,用户也可自由实现函数内容。

函数:LCD_bl_open
功能:打开 LCD 背光
原型:static void LCD_bl_open(__u32 sel)
显示驱动提供 LCD_PWM_EN 和 LCD_BL_EN 函数可供调用,用户也可自由实现函数内容。
LCD_PWM_EN,LCD_BL_EN,LCD_POWER_EN 这三个函数是通过 GPIO 控制实现电源和背光的开启关闭,IO 的位置及属性定义在 sys_config.fex 文件中。

函数:LCD_PWM_EN
功能:打开或关闭 LCD 背光调节的 PWM 信号
原型:void LCD_PWM_EN (__u32 sel, __bool b_en)
参数说明:
b_en=0:将 PWM pin 设为输入,并把 PWM 模块关闭
b_en=1:将 PWM pin 设为 PWM,并把 PWM 模块打开
对应于 sys_config.fex 文件的 lcd_pwm。

函数:LCD_BL_EN
功能:打开或关闭 LCD 背光
原型:void LCD_BL_EN (__u32 sel, __bool b_en)
参数说明:
b_en=0:设置 LCD 背光控制 IO 为对应电平,关闭背光
b_en=1:设置 LCD 背光控制 IO 为对应电平,打开背光
对应于 sys_config.fex 文件的 lcd_bl_en;

函数: LCD_POWER_EN
功能:打开或关闭 LCD 电源
原型:void LCD_POWER_EN (__u32 sel, __bool b_en)
参数说明:
b_en=0:设置 LCD 电源控制 IO 为对应电平,关闭 LCD 电源
b_en=1:设置 LCD 电源控制 IO 为对应电平,打开 LCD 电源
对应于 sys_config.fex 文件的 lcd_power。
关屏的步骤函数与开屏的步骤函数相对应。

11.2.2.2. 开关屏流程函数说明

函数:LCD_open_flow
功能:初始化开关屏的步骤流程
原型:static __s32 LCD_open_flow(__u32 sel)

函数常用内容为:

static __s32 LCD_open_flow(__u32 sel)
{LCD_OPEN_FUNC(sel, LCD_power_on,10);LCD_OPEN_FUNC(sel, LCD_panel_init, 50);LCD_OPEN_FUNC(sel, TCON_open, 100);LCD_OPEN_FUNC(sel, LCD_bl_open, 0);return 0;
}

如上,初始化整个开屏的流程步骤为四个:
1、打开 LCD 电源,再延迟 10ms;
2、初始化屏,再延迟 50ms;
3、打开 C200S TCON,再延迟 200ms;
4、打开背光,再延迟 0ms。
LCD_open_flow 函数只会系统初始化的时候调用一次,执行每个 LCD_OPEN_FUNC 即是把对应的开屏步骤函数进行注册,并没有执行该开屏步骤函数。LCD_open_flow 函数的内容必须统一用 LCD_OPEN_FUNC(sel, function, delay_time)进行函数注册的形式,确保正常注册到开屏步骤中。

函数:LCD_OPEN_FUNC
功能:注册开屏步骤函数到开屏流程中
原型:void LCD_OPEN_FUNC(__u32 sel, LCD_FUNC func, __u32 delay)
参数说明:
func 是一个函数指针,其类型是:void (*LCD_FUNC) (__u32 sel),用户自己定义的函数必须也要用统一的形式。比如:

void user_defined_func(__u32 sel)
{//do something}

delay 是执行该步骤后,再延迟的时间,时间单位是毫秒。

11.2.3. 对屏的初始化

一部分屏需要进行初始化操作,在开屏步骤函数中,对应于 LCD_panel_init 函数。在 C200S 中,提供了两种方式对屏的初始化。
一种是通过 8080 总线的方式,使用的是 LCDIO(PD,PH)。这种初始化方式,用于 CPU 屏中,其总线的引脚位置定义与 CPU 屏一致。
一种是 SPI 或 IIC 等串行的方式,使用的是 C200S 的 GPIO 引脚模拟实现。模拟 GPIO 的引脚位置定义见于sys_config.fex 中。

11.2.3.1. IO 模拟串行接口初始化

IO 模拟串行接口初始化可以参考附录中的实例。
IO 的位置(PIN 脚)定义,默认属性(输入输出)定义及默认输出值在 sys_config.fex,具体请参考 2.5.2。
显示驱动提供 3 个接口函数可供使用。说明如下:
函数:LCD_GPIO_read
功能:读取 LCD_GPIO PIN 脚上的电平
原型:__s32 LCD_GPIO_read(__u32 sel,__u32 io_index);
参数说明:
io_index = 0:对应于 sys_config.fex 中的 lcd_gpio_0
io_index = 1:对应于 sys_config.fex 中的 lcd_gpio_1
io_index = 2:对应于 sys_config.fex 中的 lcd_gpio_2
io_index = 3:对应于 sys_config.fex 中的 lcd_gpio_3
函数返回值为对应 IO 的输入电平,只用于该 GPIO 定义为输入的情形。

函数:LCD_GPIO_write
功能:LCD_GPIO PIN 脚上输出高电平或低电平
原型:__s32 LCD_GPIO_write(__u32 sel,__u32 io_index, __u32 data);
参数说明:
io_index = 0:对应于 sys_config.fex 中的 lcd_gpio_0
io_index = 1:对应于 sys_config.fex 中的 lcd_gpio_1
io_index = 2:对应于 sys_config.fex 中的 lcd_gpio_2
io_index = 3:对应于 sys_config.fex 中的 lcd_gpio_3
data = 0:对应 IO 输出低电平
data = 1:对应 IO 输出高电平
只用于该 GPIO 定义为输出的情形。

函数:LCD_GPIO_set_attr
功能:设置 LCD_GPIO PIN 脚为输入或输出模式
原型:__s32 LCD_GPIO_set_attr(__u32 sel,__u32 io_index, __bool b_output);
参数说明:
io_index = 0:对应于 sys_config.fex 中的 lcd_gpio_0
io_index = 1:对应于 sys_config.fex 中的 lcd_gpio_1
io_index = 2:对应于 sys_config.fex 中的 lcd_gpio_2
io_index = 3:对应于 sys_config.fex 中的 lcd_gpio_3
b_output = 0:对应 IO 设置为输入
b_output = 1:对应 IO 设置为输出

11.2.3.2. CPU 屏 8080 总线初始化

CPU 屏的初始化可以参考“附录”的实例。
显示驱动提供 5 个接口函数可供使用。如下:

函数:LCD_CPU_WR
功能:设定 CPU 屏的指定寄存器为指定的值
原型:void LCD_CPU_WR(__u32 sel, __u32 index, __u32 data)
函数内容为

void LCD_CPU_WR(__u32 sel, __u32 index, __u32 data)
{LCD_CPU_WR_INDEX(sel, index);LCD_CPU_WR_DATA(sel, data);
}

实现了 8080 总线上的两个写操作。
LCD_CPU_WR_INDEX 实现第一个写操作,这时 PIN 脚 RS(A1)为低电平,总线数据上的数据内容为参数index 的值。
LCD_CPU_WR_DATA 实现第二个写操作,这时 PIN 脚 RS(A1)为高电平,总线数据上的数据内容为参数data 的值。

函数:LCD_CPU_WR_INDEX
功能:设定 CPU 屏为指定寄存器
原型:void LCD_CPU_WR(__u32 sel, __u32 index, __u32 data)
void LCD_CPU_WR_INDEX(__u32 sel,__u32 index);
具体说明见 LCD_CPU_WR。

函数:LCD_CPU_WR_DATA
功能:设定 CPU 屏寄存器的值为指定的值
原型:void LCD_CPU_WR_DATA(__u32 sel, __u32 data);
具体说明见 LCD_CPU_WR。

函数:LCD_CPU_AUTO_FLUSH
功能:开启 CPU 屏的刷新
原型:void LCD_CPU_AUTO_FLUSH(__u32 sel, __bool en);
参数说明:
en = 1:8080 总线上开始传送显示 BUFFER 的数据,实现 CPU 屏的刷新

函数:LCD_cpu_register_irq
功能:设置 LCD_GPIO PIN 脚为输入或输出模式
原型:void LCD_CPU_register_irq(__u32 sel, void (*Lcd_cpuisr_proc) (void))
注册 cpu 屏的中断处理函数,驱动会在每个 vblanking 中断里调用一下用户注册的中断处理函数
Lcd_cpuisr_proc。
CPU 屏的初始化对应于开屏步骤函数的 LCD_panel_init。在 CPU 屏 LCD_panel_init 函数的最后,需要进行两个操作步骤:
1、使用 LCD_CPU_register_irq 注册 CPU 屏的中断处理函数 Lcd_cpuisr_proc,该函数的内容,可以是CPU 屏 GRAM 的 X 和 Y 坐标设置为零的操作,以保证异步屏每帧进行一次同步。
2、调用 LCD_CPU_AUTO_FLUSH(sel,1)打开显示数据传送。
示例如下:

static void LCD_panel_init(__u32 sel)
{kgm281i0_init(sel); //initial lcd panelkgm281i0_write_gram_origin(sel); //set gram originLCD_CPU_register_irq(sel,Lcd_cpuisr_proc); //resgister cpu irq funcLCD_CPU_AUTO_FLUSH(sel,1); //start sent gram data}

区别于模拟串行接口的初始化,LCD_open_flow 中,CPU 屏的初始化 LCD_panel_init 放在 TCON_open之后,示例如下:

static __s32 LCD_open_flow(__u32 sel)
{LCD_OPEN_FUNC(sel, LCD_power_on,10);LCD_OPEN_FUNC(sel, TCON_open, 100);LCD_OPEN_FUNC(sel, LCD_panel_init, 50);LCD_OPEN_FUNC(sel, LCD_bl_open, 0);return 0;
}

11.2.4. 其它函数

11.2.4.1. GPIO 操作函数

用户有可能有需要自己对某些 GPIO 进行操作,显示驱动封装了几个函数提供给用户,它们屏避了操作系统间的差异,也就是说在不同的操作系统中都可以使用。

函数:OSAL_GPIO_Request
功能:申请 GPIO;
原型:__hdle OSAL_GPIO_Request(user_gpio_set_t *gpio_list, __u32 group_count_max);
参数说明:
gpio_list 为 GPIO 的设置,该结构体如下:

typedef struct
{char gpio_name[32];int port;int port_num;int mul_sel;int pull;int drv_level;int data;
}	user_gpio_set_t;

group_count_max: 要设置 GPIO 的个数. 函数返回: 成功返回 GIPO 的句柄, 失败返回 0.

函数:OSAL_GPIO_Release
功能:释放 GPIO. 原型:__s32 OSAL_GPIO_Release(__hdle p_handler, __s32 if_release_to_default_status);
参数说明:
p_handler: GPIO 的句柄.
if_release_to_default_status: 0/1: 表示释放后的GPIO处于输入状态;2: 表示释放后的 GPIO状态不变. 函数返回:成功返回 0, 失败返回错误号
将 GIPO PH6 输出高电平,示例如下:

static void LCD_vcc_on(__u32 sel)
{user_gpio_set_t gpio_list;int hdl;gpio_list.port = 8;// 1:A; 2:B; 3:C; 4:D;5:E;6:F;7:G;8:H.....gpio_list.port_num = 6;gpio_list.mul_sel = 1;gpio_list.pull = 0;gpio_list.drv_level = 0;gpio_list.data = 1;hdl = OSAL_GPIO_Request(&gpio_list, 1);OSAL_GPIO_Release(hdl, 2);
};
11.2.4.2. 延时函数

驱动提供了毫秒和微秒级的延时给用户使用, 不过建议如果延时时间比较长的话可以在开关屏流程里
新添新的函数. 因为在 boot 系统里延时是死等的,效率会比较低;如果放在开关屏流程里的话会启用 timmer去做延时,在延时期间 CPU 可以做其它的工作.

函数:LCD_delay_ms
功能:延时 ms 毫秒
原型:void LCD_delay_ms(__u32 ms)

函数:LCD_delay_us
功能:延时 us 微秒
原型:void LCD_delay_us(__u32 us)

11.3. TCON 参数说明

11.3.1. 接口参数说明

11.3.1.1. lcd_if

设置相应值的对应含义为:
0:HV(RGB 同步屏)接口
1:CPU(8080)接口
2:TTL
3:LVDS 接口

11.3.1.2. lcd_hv_if

Lcd HV panel Interface
这个参数只有在 lcd_if=0 时才有效。定义 RGB 同步屏下的几种接口类型。
设置相应值的对应含义为:
0:Parallel RGB
1:Serial RGB/ Serial YUV
该参数结合 3.1.3 的 lcd_hv_smode 定义了屏的接口类型。

11.3.1.3. lcd_hv_smode

Lcd HV panel Serial Mode
这个参数只有在 lcd_if=0 且 lcd_hv_if=1 时才有效。定义 RGB 同步串行接口屏的类型。
设置相应值的对应含义为:
0:Serial RGB
1:Serial YUV(CCIR656)
RGB 同步屏的接口类型可参考“附录 5.1.1 HV RGB 同步屏接口”。

11.3.1.4. lcd_hv_s888_if

Lcd HV panel Serial RGB output Interface
这个参数只有在 lcd_if=0 且 lcd_hv_if=1 且 lcd_hv_smode=0(Serial RGB)时才有效。
(lcd_hv_s888_if & 0xC)>>2 得到的值,定义了奇数行 RGB 输出的顺序
0: R→G→B
1: B→R→G
2: G→B→R
(lcd_hv_s888_if & 0x3)得到的值,定义了偶数行 RGB 输出的顺序
0: R→G→B
1: B→R→G
2: G→B→R

11.3.1.5. lcd_hv_syuv_if

Lcd HV panel Serial YUV output Interface

这个参数只有在 lcd_if=0 且 lcd_hv_if=2 且 lcd_hv_smode=1(Serial YUV)时才有效。

(lcd_hv_syuv_if & 0xC)>>2 得到的值,定义了 YUV 输出格式
0:YUYV
1:YVYU
2:UYVY
3:VYUY
(lcd_hv_syuv_if & 0x3) 得到的值,定义 CCIR656 编码时 F 相对有效行延迟的行数

0:F toggle right after active video line
1:Delay 2 lines (CCIR NTSC)
2:Delay 3 lines (CCIR PAL)

11.3.1.6. lcd_cpu_if

Lcd CPU panel Interface
这个参数只有在 lcd_if=1 时才有效。
设置相应值的对应含义为:
0:18bit×1cycle parallel (RGB666)
4:16bit×1cycle parallel (RGB565)
5:9bit×2cycle serial (RGB666)
7:8bit×2cycle serial (RGB565)
在这里插入图片描述

11.3.1.7. lcd_lvds_bitwidth

Lcd LVDS panel Bit Width
设置相应值对应含义为:
0:24bit
1:18bit
相关说明可参见“附录 5.1.3 LVDS 屏接口”

11.3.1.8. lcd_lvds_mode

Lcd LVDS Mode
这个参数只有在 lcd_lvds_bitwidth=0 时才有效
设置相应值对应含义为:
0:NS mode
1:JEIDA mode
NS mode 和 JEIDA mode 的说明可参见“附录 5.1.3 LVDS 屏接口”。

11.3.2. 时序参数说明

11.3.2.1. lcd_x

显示屏宽的像素个数

11.3.2.2. lcd_y

显示屏高的像素个数

11.3.2.3. lcd_ht

Horizontal Total time
指一行总的 dclk 的 cycle 个数。见图 3-1。
在这里插入图片描述

11.3.2.4. lcd_hbp

Horizontal Back Porch
指有效行间,行同步信号(hsync)开始,到有效数据开始之间的 dclk 的 cycle 个数。见图 3-1。

11.3.2.5. lcd_vt

Vertical Total time
指两场的总行数。见图 3-2。
在这里插入图片描述

11.3.2.6. lcd_vbp

Vertical Back Porch
指场同步信号(vsync)开始,到有效数据行开始之间的行数。见图 3-2。

11.3.2.7. lcd_hv_hspw

Horizontal Sync Pulse Width
指行同步信号的宽度。单位为 1 个 dclk 的时间(即是 1 个 data cycle 的时间)。
见图 3-1。

11.3.2.8. lcd_hv_vspw

Vertical Sync Pulse Width
指场同步信号的宽度。单位为行。见图 3-2

11.3.2.9. lcd_dclk_freq

Data Clock Frequency
指 PIN 总线上数据的传送频率。单位为 MHz。
屏幕刷新帧数 = (dclk_freq) / (ht×vt/2)

11.3.2.10. lcd_io_cfg0

Lcd IO Configuration0
这个参数提供 RGB 同步屏的相位调节。
lcd_dclk_freq < 40 时,该参数可设置为 0x00000000,0x04000000,0x10000000,0x14000000,
0x20000000,0x24000000,对应 LCD DCLK 的六个不同相位。
lcd_dclk_freq > 40 时,该参数可设置为 0x00000000,0x04000000 对应 LCD DCLK 的两个不同相位。
补充说明 1:hbp 在部分屏规格书的定义里并不包括 hspw。这种情况下,要正确配置 AW 的 TCON,
hbp(aw)=hbp(panel)+hspw(panel)。vbp 的定义同 hbp。
补充说明 2:F20 的 TCON 中,图 3-1 中的 hfp,图 3-2 中的 vfp 不能为 0。

11.3.3. 其他参数说明

11.3.3.1. lcd_pwm_freq

Lcd backlight PWM Frequency
这个参数配置 lcd_pwm 信号的频率,单位为 KHz。 F20 中可以输出的 PWM 频率为 1KHz-100KHz。

11.3.3.2. lcd_gamma_correction_en

Lcd Gamma Correction Enable
设置相应值的对应含义为:
0:TCON 的 Gamma 校正关闭
1:TCON 的 Gamma 校正打开
设置为 1 时,需要对 lcd_gamma_tbl [256]进行赋值。

11.3.3.3. lcd_gamma_tbl

Lcd Gamma Table
该参数为一个数组__u32 lcd_gamma_tbl[256];
lcd_gamma_tbl[n] = rout<<16 | gout<<8 | bout<<0 表示:输入 r=n 时,输出 r=rout;输入 g=n 时,
输出 g=gout;输入 b=n 时,输出 b=bout。
用户使用 Gamma 校正功能时,可以使用函数 lcd_gamma_gen(__panel_para_t * info)对其赋值,函数
内容可自由实现。具体可参考附录中的实例。

11.4. 屏文件实例

路径:\eMod\drv_display\lcd\lcd_bak

-. 全志相关工具和资源

-.1 全志固件镜像修改工具 ImageModify.exe 下载

在这里插入图片描述
下载地址:
固件镜像修改工具 ImageModify.exe下载 ImageModify_20230906.rar

-.2 全志固件USB刷机工具 PhoenixSuit 下载

在这里插入图片描述
下载地址:
USB刷机工具 PhoenixSuit下载 PhoenixSuit_CN_V1.1.1_20230906.rar

-.3 全志Melis2.0 用户手册.pdf下载

下载地址:
全志Melis2.0 用户手册.pdf下载 documents_20230906_melis_v2.0.rar

-.4 全志melis2.0 sdk源码库下载

下载地址:
全志melis2.0 sdk源码库下载 melis2.0-sdk-release_20230906V2.0.rar

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/149148.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

存在负权边的单源最短路径的原理和C++实现

负权图 此图用朴素迪氏或堆优化迪氏都会出错&#xff0c;floyd可以处理。 负环图 但floyd无法处理负权环&#xff0c;最短距离是无穷小。在环上不断循环。 经过k条边的最短距离&#xff08;可能有负权变&#xff09; 贝尔曼福特算法(bellman_ford)就是解决此问题的。 原理 …

(详解)Linux常见基本指令(1)

目录 目录&#xff1a; 1:有关路径文件下的操作(查看&#xff0c;进入) 1.1 ls 1.2 pwd 1.3 cd 2:创建文件或目录 2.1 touch 2.2 mkdir 3:删除文件或目录 3.1 rm与rmdir 4:复制剪切文件 4.1 cp 4.2 mv 1:有关路径的操作 1 ls 指令 语法&#xff1a;ls [选项] [目录或文…

DevicData-D-XXXXXXXX勒索病毒数据恢复|金蝶、用友、管家婆、OA、速达、ERP等软件数据库恢复

引言&#xff1a; 在数字时代&#xff0c;数据安全成为一项至关重要的挑战。DevicData-D-XXXXXXXX勒索病毒&#xff08;以下简称DevicData病毒&#xff09;是这场战斗中的新敌人&#xff0c;它能够以毁灭性的方式加密您的数据&#xff0c;迫使您在数据和时间之间做出艰难的选择…

XC5013 马达驱动和充电集成一体的控制芯片 一档输出芯片

XC5013 是一款应用于马达驱动或 LED 驱动的控制芯片&#xff0c;集成了锂电池充电管理系统&#xff0c;设定一档高电平输 出&#xff0c;并带有对不同状态的 LED 指示功能。 XC5013 集成了涓流充电、恒流充电和恒压充电全过程的充电方式&#xff0c;浮充电压精度在全温度范…

网课搜题 小猿题库多接口微信小程序源码 自带流量主

多接口小猿题库等综合网课搜题微信小程序源码带流量主&#xff0c;网课搜题小程序, 可以开通流量主赚钱 搭建教程1, 微信公众平台注册自己的小程序2, 下载微信开发者工具和小程序的源码3, 上传代码到自己的小程序 源码下载&#xff1a;https://download.csdn.net/download/m0_…

[GXYCTF2019]禁止套娃 无回显 RCE 过滤__FILE__ dirname等

扫除git 通过githack 获取index.php <?php include "flag.php"; echo "flag在哪里呢&#xff1f;<br>"; if(isset($_GET[exp])){if (!preg_match(/data:\/\/|filter:\/\/|php:\/\/|phar:\/\//i, $_GET[exp])) {if(; preg_replace(/[a-z,_]\(…

[极客大挑战 2019]FinalSQL - 异或盲注

1、这题的关键是找注入点&#xff0c;如果选择用户名、密码作为输入点就麻烦了 2、注入点&#xff1a;按钮&#xff0c;点击就传id&#xff1b;当id1时&#xff0c;提示Click others   可以利用id的特性&#xff0c;构造异或匹配   payload: f"1^(ord(substr((select…

【C语言经典100例题-70】求一个字符串的长度(指针)

代码 使用指针来遍历字符串&#xff0c;直到遇到字符串结尾的空字符\0为止&#xff0c;统计字符数量即为字符串长度。 #include<stdio.h> #define n 20 int getlength(char *a) {int len 0;while(*a!\0){len;a;}return len; } int main() {char *arr[n] { 0 };int l…

windows server 2012 服务器打开系统远程功能

服务器上开启远程功能 进入服务器&#xff0c;选择“添加角色和功能” 需要选择安装的服务器类型&#xff0c;如图所示 然后在服务器池中选择你需要使用的服务器。 选择完成后&#xff0c;在图示列表下勾选“远程桌面服务” 再选择需要安装的功能和角色服务。 选择完成确认内容…

JUC第十五讲:JUC集合-ConcurrentHashMap详解(面试的重点)

JUC第十五讲&#xff1a;JUC集合-ConcurrentHashMap详解 本文是JUC第十五讲&#xff1a;JUC集合-ConcurrentHashMap详解。JDK1.7之前的ConcurrentHashMap使用分段锁机制实现&#xff0c;JDK1.8则使用数组链表红黑树数据结构和CAS原子操作实现ConcurrentHashMap&#xff1b;本文…

AUTOSAR RTE介绍(更新版230925)

RTE是什么 AUTOSAR RTE(Run Time Environment)实现了AUTOSAR系统中的虚拟功能总线(VFB),提供了SWC(Software Component)之间的访问接口和SWC对于BSW资源的访问接口。RTE为SWC中的Runnable提供与其他SWC或者BSW模块通信的接口,RTE将Runnable映射到OS Task中,并且管理Runna…

2023(2024届)计算机保研经验分享,圆梦山东大学

前言&#xff1a; Hello大家好&#xff0c;我是Dream&#xff0c;好久不见啦&#xff01;在这不见的半年多时间里我一直在全身心的投入保研之中&#xff0c;在写下这份面经时&#xff0c;真的是感慨颇多&#xff0c;思绪万千。站在这个时间点上&#xff0c;回首过去的几个月&am…

基于SpringBoot的车辆管理系统

目录 前言 一、技术栈 二、系统功能介绍 员工信息管理 证件信息管理 车辆信息管理 事故登记管理 事故登记 保养登记 违章登记 三、核心代码 1、登录模块 2、文件上传模块 3、代码封装 前言 随着信息技术在管理上越来越深入而广泛的应用&#xff0c;管理信息系统的实…

华为云云耀云服务器L实例评测|部署个人音乐流媒体服务器 navidrome

华为云云耀云服务器L实例评测&#xff5c;部署个人音乐流媒体服务器 navidrome 一、云耀云服务器L实例介绍1.1 云服务器介绍1.2 产品规格1.3 产品优势1.4 支持镜像 二、云耀云服务器L实例配置2.1 重置密码2.2 服务器连接2.3 安全组配置 三、部署 navidrome3.1 navidrome 介绍3.…

redis的持久化消息队列

Redis Stream Redis Stream 是 Redis 5.0 版本新增加的数据结构。 Redis Stream 主要用于消息队列&#xff08;MQ&#xff0c;Message Queue&#xff09;&#xff0c;Redis 本身是有一个 Redis 发布订阅 (pub/sub) 来实现消息队列的功能&#xff0c;但它有个缺点就是消息无法…

C++设计模式-生成器(Builder)

目录 C设计模式-生成器&#xff08;Builder&#xff09; 一、意图 二、适用性 三、结构 四、参与者 五、代码 C设计模式-生成器&#xff08;Builder&#xff09; 一、意图 将一个复杂对象的构建与它的表示分离&#xff0c;使得同样的构建过程可以创建不同的表示。 二、…

三分钟学习一个python小知识8-----------我的对python中pandas的理解--补充,

文章目录 一、利用pandas读入excel表&#xff0c;包括csv,xlsx等格式二、利用pandas读取没有表头的表格1.引入库 三、利用pandas读取有表头的表格四、利用pandas读取表格中的第一列五、利用pandas导出为excel数据总结 一、利用pandas读入excel表&#xff0c;包括csv,xlsx等格式…

Django 模型层的操作(Django-05 )

一 模型层的解读 Django中内嵌了ORM框架&#xff0c;不需要直接编写SQL语句进行数据库操作&#xff0c;而是通过定义模型类&#xff0c;操作模型类来完成对数据库中表的增删改查和创建等操作。 O 是object&#xff0c;也就类对象的意思。R 是relation&#xff0c;翻译成中文是…

保险业SAP转型:奠定坚实的基础

保险业面临着许多新的挑战&#xff1a;从新的市场参与者到人工智能和物联网。如何在这种快节奏的现实中满足客户的需求&#xff0c;降低成本&#xff0c;加速增长&#xff1f;首先&#xff0c;让我们考虑一下数字化转型成功是什么样子的&#xff0c;以及如何实现它。在这篇文章…

基于微信小程序的付费自习室

博主介绍&#xff1a;✌程序员徐师兄、7年大厂程序员经历。全网粉丝30W、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 文章目录 1 简介2 技术栈3 需求分析3.1用户需求分析3.1.1 学生用户3.1.3 管理员用户 4 数据库设计4.4.1 E…