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屏幕列表如下:
名称 |
型号 |
类型 |
分辨率 |
色彩 |
接口 |
|---|---|---|---|---|---|
野火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屏幕,在使用时请注意区分。
错误
如果使用非野火配套屏幕,请在连接屏幕前确认引脚顺序及信号电平标准。如果连接了不适配的屏幕并上电,可能会导致板卡和屏幕损坏。
板卡上的接口如图所示,1脚处使用白色圆点标注,30脚处标注数字30。
与MIPI屏幕的连接如下图所示
注意
MIPI-DSI接口不支持热插拔,请勿在上电的时候安装或者卸载屏幕, 上电时安装和卸载可能会导致板卡短路,轻则板卡保护关机,重则损坏芯片的接口或者烧坏芯片
3.2.2. HDMI接口¶
HDMI接口支持热插拔,并且有多种接口形态,其中常用的是标准HDMI(Type A)、Mini-HDMI(Type C)和Micro-HDMI(Type D), 这三种类型的HDMI接口引出的信号线规格相同,但接口物理尺寸从大到小,用于适配在不同设备和场景下使用。
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
|
