屏幕配置
RGB
RGB 屏的调试相对简单,只需要把规格书中所描述的时序和规格参数加入相应的配置文件即可,不需要额外的驱动程序。
在 Luban-Lite 根目录下执行 me,进入 menuconfig 的功能配置界面。
显示接口配置
Board options --->
[*] Using Display Engine (DE)
Display Parameter --->
select Display interface (Display RGB interface) --->
RGB interface options --->
2
3
4
5
接口参数配置
Board options --->
Graphics Support --->
Graphics support
[*] Display Support
select Display interface (Display RGB interface) --->
RGB interface options --->
rgb mode (PRGB) --->
interface format (PRGB 16 BIT LD) --->
data order (RGB) --->
clock phase select (0 degree) --->
2
3
4
5
6
7
8
9
10
屏参数配置
Board options --->
Graphics Support --->
Graphics support
[*] Display Support
select Display interface (Display RGB interface) --->
RGB interface options --->
Display Panels --->
ArtInChip Panel Drivers (ArtInChip simple panel) --->
display timing of simple panel --->
2
3
4
5
6
7
8
9
引脚配置
以 demo128-nand 工程为例,文件为 target/d21x/demo128-nand/pinmux.c 中。
#ifdef AIC_PRGB_16BIT_LD
{2, PIN_PULL_DIS, 3, "PD.8"},
{2, PIN_PULL_DIS, 3, "PD.9"},
{2, PIN_PULL_DIS, 3, "PD.10"},
{2, PIN_PULL_DIS, 3, "PD.11"},
{2, PIN_PULL_DIS, 3, "PD.12"},
{2, PIN_PULL_DIS, 3, "PD.13"},
{2, PIN_PULL_DIS, 3, "PD.14"},
{2, PIN_PULL_DIS, 3, "PD.15"},
{2, PIN_PULL_DIS, 3, "PD.16"},
{2, PIN_PULL_DIS, 3, "PD.17"},
{2, PIN_PULL_DIS, 3, "PD.18"},
{2, PIN_PULL_DIS, 3, "PD.19"},
{2, PIN_PULL_DIS, 3, "PD.20"},
{2, PIN_PULL_DIS, 3, "PD.21"},
{2, PIN_PULL_DIS, 3, "PD.22"},
{2, PIN_PULL_DIS, 3, "PD.23"},
{2, PIN_PULL_DIS, 3, "PD.24"},
{2, PIN_PULL_DIS, 3, "PD.25"},
{2, PIN_PULL_DIS, 3, "PD.26"},
{2, PIN_PULL_DIS, 3, "PD.27"},
#endif
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
LVDS
LVDS 屏的调试和 RGB 类似,只需要把规格书中所描述的时序和规格参数加入相应的配置文件即可,也不需要额外的驱动程序。
在 Luban-Lite 根目录下执行 me,进入 menuconfig 的功能配置界面。
显示接口配置
Board options --->
[*] Using Display Engine (DE)
Display Parameter --->
select Display interface (Display LVDS interface) --->
LVDS interface options --->
2
3
4
5
接口参数配置
Board options --->
Graphics Support --->
Graphics support
[*] Display Support
select Display interface (Display LVDS interface) --->
LVDS interface options --->
lvds mode (vesa-24) --->
lvds link mode (single link 1) --->
2
3
4
5
6
7
8
屏参数配置
Board options --->
Graphics Support --->
Graphics support
[*] Display Support
select Display interface (Display LVDS interface) --->
LVDS interface options --->
Display Panels --->
ArtInChip Panel Drivers (ArtInChip simple panel) --->
display timing of simple panel --->
2
3
4
5
6
7
8
9
引脚配置
以 demo128-nand 工程为例,文件为 target/d21x/demo128-nand/pinmux.c 中。
#ifdef AIC_LVDS_LINK_1
{3, PIN_PULL_DIS, 3, "PD.8"},
{3, PIN_PULL_DIS, 3, "PD.9"},
{3, PIN_PULL_DIS, 3, "PD.10"},
{3, PIN_PULL_DIS, 3, "PD.11"},
{3, PIN_PULL_DIS, 3, "PD.12"},
{3, PIN_PULL_DIS, 3, "PD.13"},
{3, PIN_PULL_DIS, 3, "PD.14"},
{3, PIN_PULL_DIS, 3, "PD.15"},
{3, PIN_PULL_DIS, 3, "PD.16"},
{3, PIN_PULL_DIS, 3, "PD.17"},
#endif
2
3
4
5
6
7
8
9
10
11
12
MIPI
相比 RGB 和 LVDS 屏的调试,MIPI 屏的调试相对稍微繁琐。
在 Luban-Lite 根目录下执行 me,进入 menuconfig 的功能配置界面。
显示接口配置
Board options --->
[*] Using Display Engine (DE)
Display Parameter --->
select Display interface (Display MIPI-DSI interface) --->
2
3
4
接口参数配置
ArtInChip 平台不支持 menuconfig 配置 MIPI 屏幕参数,因为每一款 MIPI 屏幕的参数都不尽相同,推荐在 panel 驱动中使用 hardcode 的形式进行配置。
新增一款屏驱动,可以在 panel 源码目录下,根据屏接口选择一个模板,在模版的基础上进行修改。
MIPI-DSI 接口可参考 panel_dsi_xm91080.c。
MIPI-DBI 接口可参考 panel_dbi_ili9486l.c。
MIPI-DSI
- 拷贝一份模板文件,命名为 panel_dsi_xxx.c,将新文件添加进 Kconfig 和 SConscript 文件中,添加方式如下:
// bsp/artinchip/drv/display/panel/Kconfig
config AIC_PANEL_DSI_XXX
bool "ArtInChip MIPI DSI xxx panel"
depends on AIC_DISP_MIPI_DSI
// bsp/artinchip/SConscript
if GetDepend('AIC_PANEL_DSI_XXX'):
src += Glob('drv/display/panel/panel_dsi_xxx.c')
2
3
4
5
6
7
8
- 修改 struct aic_panel 的命名,并将其注册。
a. 将 struct aic_panel 添加到 panel_com.c 文件的 panels[] 指针数组中。
b. 在 panel_com.h 文件中 extern struct aic_panel。
// panel_com.c
static struct aic_panel *panels[] = {
...
#ifdef AIC_PANEL_DSI_XXX
&dsi_xxx,
#endif
};
// panel_com.h
extern struct aic_panel dsi_xxx;
2
3
4
5
6
7
8
9
10
- 修改 struct display_timing 结构体,根据 LCD 屏幕规格书修改时序参数。
static struct display_timing xm91080_timing = {
.pixelclock = 130000000,
.hactive = 1080,
.hfront_porch = 160,
.hback_porch = 160,
.hsync_len = 40,
.vactive = 1920,
.vfront_porch = 10,
.vback_porch = 20,
.vsync_len = 8,
};
2
3
4
5
6
7
8
9
10
11
重新实现 aic_panel_funcs 结构体中的 prepare 或者 enable 接口,添加初始化操作。
在 menuconfig 的功能配置界面选择此屏,以 xm91080 为例:
Board options --->
Graphics Support --->
Graphics support
[*] Display Support
select Display interface (Display MIPI-DSI interface) --->
Display Panels --->
ArtInChip Panel Drivers (ArtInChip MIPI DSI xm91080 panel) --->
2
3
4
5
6
7
MIPI引脚配置
以 demo128-nand 工程为例,文件为 target/d21x/demo128-nand/pinmux.c 中。
#ifdef AIC_DISP_MIPI_DSI
{4, PIN_PULL_DIS, 3, "PD.18"},
{4, PIN_PULL_DIS, 3, "PD.19"},
{4, PIN_PULL_DIS, 3, "PD.20"},
{4, PIN_PULL_DIS, 3, "PD.21"},
{4, PIN_PULL_DIS, 3, "PD.22"},
{4, PIN_PULL_DIS, 3, "PD.23"},
{4, PIN_PULL_DIS, 3, "PD.24"},
{4, PIN_PULL_DIS, 3, "PD.25"},
{4, PIN_PULL_DIS, 3, "PD.26"},
{4, PIN_PULL_DIS, 3, "PD.27"},
#endif
2
3
4
5
6
7
8
9
10
11
12
背光配置
GPIO控制背光
如果没有调节背光亮度需求,仅仅是亮或黑屏,则用 GPIO 控制较为简单。
打开 menuconfig 配置界面,选择 GPIO 方式控制背光,以字符串的形式指定 GPIO 引脚,背光 GPIO 引脚默认高电平有效。
Board options --->
[*] Using Display Engine (DE)
Display Parameter --->
panel backlight control (gpio) --->
(PE.19) panel backlight enable pin
[ ] panel backlight enable pin low active
2
3
4
5
6
PWM控制背光
如果有调节背光亮度的需求,则需要使用 PWM 来控制背光。
打开 menuconfig 配置界面,使能 PWM,选择 PWM 方式控制背光,配置 PWM 的通道和默认占空比 [0, 100]。
使能 PWM
Board options --->
[*] Using PWM3
2
配置 PWM-BACKLIGHT
Board options --->
[*] Using Display Engine (DE)
Display Parameter --->
panel backlight control (pwm) --->
(3) pwm backlight channel
(80) default brightness level
2
3
4
5
6
小技巧
屏幕的调试尽量在 RT-Thread 中完成,然后再移植到 Bootloader 中。