海思HI3516 MIPI屏幕调试笔记

1:参考资料-《HIMPP媒体处理软件开发参考》-《屏幕对接指南》-《屏幕时钟时序计算器》-《京东方屏幕驱动》;

2:采用sample中的vdec例程进行改写,实现的主要功能为将JPG图像进行解码并通过MIPI屏幕显示;

3:PLL:倍频-Framebuff:帧缓冲设备,会生成一个/dev/fbx的设备,通过这个即可访问LCD-Alpha:透明度;

4:通过操作显存来实现LCD上显示字符或者图片;

5:mmap函数:将文件映射进内存,使得文件中的一个字节与内存对应;

6:memset函数:将内存中的一块设置为指定的内容;

7:lane:链接接收与发送设备的差分线,使用的京东方屏幕有4组lane;

8:MIPI是物理层的传输规范,包含了DSI(显示串行接口)和CSI(显示命令接口);

9:显示包含了图形层,视频层,设备层,三层通过VGS进行叠加,可以设置Alpha;

10:GPIO口设置为通用输入/输出,使能GPIO管脚>>配置GPIO_DIR,选择输入输出>>配置GPIO_DATA,设置读写信号值;

11:在将光信号转换为电信号的扫描过程中,扫描总是从图像的左上角开始,水平向前行进,同时扫描点也以较慢的速率向下移动。当扫描点到达图像右侧边缘时,扫描点快速返回左侧,重新开始在第1行的起点下面进行第2行扫描,行与行之间的返回过程称为水平消隐。一幅完整的图像扫描信号,由水平消隐间隔分开的行信号序列构成,称为一帧。扫描点扫描完一帧后,要从图像的右下角返回到图像的左上角,开始新一帧的扫描,这一时间间隔,叫做垂直消隐,也称场消隐(VBlank)

12:

海思HI3516 MIPI屏幕调试笔记_第1张图片

13:HBP HFP VBP VFP比较重要

海思HI3516 MIPI屏幕调试笔记_第2张图片

 14:显示一行所需要的时间就是:HSPW (hsync)+ HBP + HOZVAL + HFP

   显示一帧所需要的时间就是:VSPW(vsync)+VBP+LINE+VFP 个行时间,

Htatal=hpw+hdisp+hfp+hbp
Vtatal=vpw+vdisp+vfp+vbp

pixel_clk = Htatal*Vtatal*fps (单位HZ,程序中采用KHZ)

Mipiclock = Htatal*Vtatal*fps*bus_hpw/lane_num/2

海思HI3516 MIPI屏幕调试笔记_第3张图片

15:


源码分析:

1:首先是功能展示,由此可知该例程实现了将H264/H265/JPG格式的图像进行输出,这里我们选用JPG格式;

海思HI3516 MIPI屏幕调试笔记_第4张图片

2:进入该函数,屏幕的分辨率是1080*1920(注意宽是1080高是1920!),按步骤进行;

海思HI3516 MIPI屏幕调试笔记_第5张图片

海思HI3516 MIPI屏幕调试笔记_第6张图片

3:到第五步时开始需要自己设置参数,这里需要注意,画布的大小应介于32,32到1080,1920之间,否则会报错误

4:此处开始配置屏幕,将屏幕的参数输入到屏幕时序计算器中,得到各个参数并填入,根据学长经验了解到需要将帧数减小为50,

且频率在100-110之间,

海思HI3516 MIPI屏幕调试笔记_第7张图片

海思HI3516 MIPI屏幕调试笔记_第8张图片

5:再配置用户,也可由计算器中得知,具体均注释出,不再赘述

海思HI3516 MIPI屏幕调试笔记_第9张图片

海思HI3516 MIPI屏幕调试笔记_第10张图片

6:此处:设置视频层的属性,具体可以参考HIMPP手册中的VO_VIDEO_LAYER_ATTR_S结构体的具体含义以及配置;

海思HI3516 MIPI屏幕调试笔记_第11张图片

7:接着开始初始化屏幕,添加一条case,并设置设备属性,具体参数也可由计算器中获得

海思HI3516 MIPI屏幕调试笔记_第12张图片

 海思HI3516 MIPI屏幕调试笔记_第13张图片

8:开启屏幕,根据驱动程序的初始化序列向屏幕发送初始化命令,这里涉及到三种传输方式,具体可以参考《屏幕对接指南》;

  由于设备已开启就已经点亮了屏幕并已经初始化好屏幕的参数,因此我们需要将屏幕先下电再重新初始化序列,具体代码如下;

海思HI3516 MIPI屏幕调试笔记_第14张图片

海思HI3516 MIPI屏幕调试笔记_第15张图片

海思HI3516 MIPI屏幕调试笔记_第16张图片

初始化之前先给屏幕上电和reset

海思HI3516 MIPI屏幕调试笔记_第17张图片

海思HI3516 MIPI屏幕调试笔记_第18张图片

海思HI3516 MIPI屏幕调试笔记_第19张图片

9:调试过程,调试可以用到两个方法,一种是“cat /dev/logmpp”这是海思的官方日志,串口中的只显示大概的错误,而日志中可以显 示的更为详细,其中的line值并不准确,具体看后面的错误内容。另一个方法是“cat /proc/umap/mipi_tx”通过此命令可以显示你所 配置的各个时序,如下图所示:

海思HI3516 MIPI屏幕调试笔记_第20张图片

10:效果展示:

海思HI3516 MIPI屏幕调试笔记_第21张图片

-----------------------------------------------------------------------------------------------------------------------

踩坑点:

1:初始化序列中0x51寄存器控制的是背光,之前写了0导致屏幕不亮;

2:初始化画布是范围应是(32,32,1080,1920),仅提示未验证原因;

3:更改屏幕参数要HI_MPI_VO_Disable一下;

4:

你可能感兴趣的:(海思学习笔记,c语言,linux)