3. 屏幕显示

Hi3403有两个视频输出接口,分别是HDMI接口和MIPI-DSI接口。 其中HDMI接口支持HDMI2.0标准。MIPI-DSI支持4-Lane输出,最高2.5Gbps/lane。

Hi3403可以同时支持两路独立的高清视频输出,最大输出能力为4096x2160@60fps + 1920x1080@60fps, 可与视频输出接口任意组合,按需使用。

LubanCat-Hi3403板卡引出一个标准HDMI2.0接口和一个MIPI-DSI接口,支持HDMI显示屏和MIPI屏幕显示。

3.1. 屏幕支持列表

3.1.1. MIPI屏幕

LubanCat-Hi3403板卡支持 符合海思MIPI-DSI接口30Pin规范 的MIPI屏幕。

已适配参数和时序的MIPI屏幕列表如下:

MIPI屏幕

名称

型号

类型

分辨率

色彩

接口

野火7寸MIPI屏

LCD

EBF410655

1024x600

RGB888

四通道MIPI-DSI

3.1.2. HDMI屏幕

所有符合HDMI接口协议标准的屏幕,理论上都支持。

3.2. 屏幕连接说明

3.2.1. MIPI-DSI接口

LubanCat-Hi3403板卡的MIPI-DSI接口满足HiSpark社区《海思开放硬件规范 V1.00.pdf》中30Pin接口要求,板卡接口线序如下:

Pin

功能

说明

1

GND

2

D0_N

Data0负

3

D0_P

Data0正

4

GND

5

D1_N

Data1负信号

6

D1_P

Data1正信号

7

GND

8

CK_N

时钟负信号

9

CK_P

时钟正信号

10

GND

11

D2_N

Data2负信号

12

D2_P

Data2正信号

13

GND

14

D3_N

Data3负信号

15

D3_P

Data3正信号

16

GND

17

NA

保留(未连接引脚)

18

NA

保留(未连接引脚)

19

GND

20

SCL

I2C时钟

21

SDA

I2C数据

22

VCC

+3.3V电源

23

VCC

+3.3V电源

24

NC

保留(未连接引脚)

25

VCC5

+5V电源

26

VCC5

+5V电源

27

TP_INT

触摸中断

28

TP_RST

触摸复位

29

LCD_RST

屏幕复位

30

BL_PWM

背光PWM控制

警告

上表中除电源引脚外,其他信号引脚都只支持1.8V电平,需要搭配1.8V电平的MIPI-DSI屏幕,在使用时请注意区分。

错误

如果使用非野火配套屏幕,请在连接屏幕前确认引脚顺序及信号电平标准。如果连接了不适配的屏幕并上电,可能会导致板卡和屏幕损坏。

../../../_images/mipi-dsi-connect.png

板卡上的接口如图所示,1脚处使用白色圆点标注,30脚处标注数字30。

../../../_images/mipi-dsi-connect2.png

与MIPI屏幕的连接如下图所示

注意

MIPI-DSI接口不支持热插拔,请勿在上电的时候安装或者卸载屏幕, 上电时安装和卸载可能会导致板卡短路,轻则板卡保护关机,重则损坏芯片的接口或者烧坏芯片

3.2.2. HDMI接口

HDMI接口支持热插拔,并且有多种接口形态,其中常用的是标准HDMI(Type A)、Mini-HDMI(Type C)和Micro-HDMI(Type D), 这三种类型的HDMI接口引出的信号线规格相同,但接口物理尺寸从大到小,用于适配在不同设备和场景下使用。

../../../_images/hdmi-compare.png

LubanCat-Hi3403使用的HDMI接口为标准HDMI,与市面上大部分显示器规格一致。 直接使用对应接口的HDMI线连接板卡和显示器即可使用。

如果使用的屏幕为VGA接口或DP接口,也可选购对应的HDMI转换器连接屏幕。

3.3. 屏幕使用

3.3.1. HDMI

所有适配好的MPP示例程序,都保存在根文件系统的/hi_mpp目录下,进入目录调用示例程序。

1
2
3
4
5
# 进入示例程序目录
cd /hi_mpp

# 运行HDMI示例
./sample_hdmi

运行示例后会播放source_file/3840x2160_8bit.h265这个文件,还可以输入命令修改hdmi的配置参数

 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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
# 输入h查看命令说明
hdmi_cmd >help

# 帮助信息
input parameter num:1 argv[0]:h,
    help                 list all command we provide        # 列出所有命令
    q                    quit sample test                   # 退出示例程序
    hdmi_hdmi_force      force to hdmi output               # HDMI强制输出
    hdmi_dvi_force       force to enter dvi output mode     # DVI强制输出
    hdmi_deepcolor       set video deepcolor mode           # 设置颜色深度
    hdmi_video_timing    set video output timing format     # 设置接口时序
    hdmi_color_mode      set video color output(RGB/ycbcr)  # 设置颜色格式
    hdmi_aspectratio     set video aspectratio              # 设置横纵比
    hdmi_a_freq          set audio output frequence         # 设置音频输出频率
    hdmi_authmode        authmode enable or disable         # 开启或关闭HDCP认证

# 输入对应的选项进行配置,会打印可供配置的参数值
# 设置色深
hdmi_cmd >hdmi_deepcolor

usage:hdmi_deepcolor deep_colorflag
deep_colorflag: 0:24bit色深
deep_colorflag: 1:30bit色深
deep_colorflag: 2:36bit色深

# 设置分辨率和帧率
hdmi_cmd >hdmi_video_timing

usage:hdmi_video_timing timeingmode
timemode:00   1080P_24
timemode:01   1080P_25
timemode:02   1080P_30
timemode:03   720P_50
timemode:04   720P_60
timemode:05   1080i_50
timemode:06   1080i_60
timemode:07   1080P_50
timemode:08   1080P_60
timemode:09   576P_50
timemode:10   480P_60
timemode:11   640x480p_60
timemode:12   800x600
timemode:13   1024X768
timemode:14   1280X1024
timemode:15   1366X768
timemode:16   1440X900
timemode:17   1280X800
timemode:18   1680X1050
timemode:19   1920X2160
timemode:20   1600X1200
timemode:21   1920X1200_60
timemode:22   2560X1440_30
timemode:23   2560X1440_60
timemode:24   2560X1600
timemode:25   3840X2160_24
timemode:26   3840X2160_25
timemode:27   3840X2160_30
timemode:28   3840X2160_50
timemode:29   3840X2160_60

# 设置颜色格式
hdmi_cmd >hdmi_color_mode

usage:hdmi_color_mode colormode
colormode:00   RGB
colormode:01   YUV422
colormode:02   YUV444
colormode:03   YUV420

# 设置横纵比
hdmi_cmd >hdmi_aspectratio

usage:hdmi_aspectratio aspectratio
apectratio_index:00   4:3
apectratio_index:01   16:9

# 设置音频输出频率
hdmi_cmd >hdmi_a_freq

audio freq:00   32000
audio freq:01   44100
audio freq:02   48000

# 设置开启或关闭HDCP认证
hdmi_cmd >hdmi_authmode

usage:hdmi_authmode mode
hdmi_authmode: 0  disable authmode
hdmi_authmode: 1  enable authmode

3.3.2. MIPI-DSI

所有适配好的MPP示例程序,都保存在根文件系统的/hi_mpp目录下,进入目录调用示例程序。

1
2
3
4
5
# 进入示例程序目录
cd /hi_mpp

# 运行HDMI示例
./sample_mipi_tx

直接运行示例程序,缺少参数,会提示下面的信息

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
Usage:
    # 需要添加参数,媒体文件的路径<file_path>
    ./sample_mipi_tx <file_path>
Example:
    # 示例命令
    ./sample_mipi_tx ./source_file/3840x2160_8bit.h265

# 运行程序以后,可以输入命令执行,可输入的命令如下
# 输入数字0-3,单独显示通道0-3
0-3: single channel

# 输入字母r,同时显示通道1-3
r  : 4 channel

# 输入q,打印各通道信息
q  : print status

# 输入字母e,退出示例程序
e  : exit

# 输入选项后按Enter键执行

此示例程序目前支持解码的文件格式为H264,H265,JPEG,MJPEG,对应的文件在source_file目录下,通过文件后缀名区分。

3.3.3. Farmbuffer显示

除了使用前面通过MPP直接在屏幕上显示解码后的视频文件外,还可以通过Farmbuffer来输出显示内容。

在Hi3403上,需要通过MPP的GFBG模块实现(管理图像叠加层),它基于Linux Framebuffer, 在提供Linux Framebuffer基本功能的基础上,还扩展了一些图形层控制功能,如层间Alpha、设置原点等。

首先使用Farmbuffer绑定工具,将Farmbuffer绑定到指定的视频输出接口,绑定工具的说明如下:

1
2
3
4
5
6
7
8
./fb_bind [mode]

# mode:
# 绑定farmbuffer到HDMI接口,分辨率为1920x1080
1 : bind farmbuffer to HDMI 1920x1080

# 绑定farmbuffer到MIPI接口,分辨率为1024x600
2 : bind farmbuffer to MIPI 1024x600(7inch-EBF410655)

此处以绑定到hdmi接口为例,绑定完成后向/dev/fb0写入数据即可显示在屏幕上。

1
2
3
4
5
# 绑定farmbuffer到HDMI接口,并在后台运行
./fb_bind 1 &

# 使用随机值刷新屏幕,验证绑定是否成功
cat /dev/urandom > /dev/fb0

farmbuffer和屏幕绑定完成后,跑一些GUI框架来更方便的显示内容了,以下是LVGL示例的操作过程:

lvgl程序默认打包到根文件系统中,运行 lvgl -h 查看说明

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
# lvgl示例程序说明
lvgl [-v] [-h] [-m mode] [-s size]:
-v print LVGL version   # 打印LVGL的版本号
-h print this help      # 打印帮助信息
-m mode:                # 选择具体的demo
    1: widgets
    2: music
    3: benchmark
    4: stress
-s size:                # 设置输出分辨率,需与farmbuffer绑定的分辨率对应
    0: 3840x2160
    1: 1920x1080
    2: 1024x600

运行lvgl示例

1
2
3
4
5
# 运行widgets,分辨率设置为1024x600
lvgl -m 1 -s 2

# 运行benchmark,分辨率设置为1920x1080
lvgl -m 3 -s 1

3.4. MIPI屏幕适配

3.5. 示例程序源码

示例程序保存在SDK的smp/a55_linux/mpp/sample目录下

  • hdmi

  • mipi_tx

  • fb_bind