-
1
、
配置时序
在
sample
中只需要设置为
User
时序即可,如下图:
用户时序的结构体:
typedef
struct tagVO_SYNC_INFO_S
{
HI_BOOL
bSynm;
/* sync mode(0:timing,as BT.656;
1:signal,as LCD) */
HI_BOOL
bIop;
/* interlaced or progressive
display(0:i; 1:p) */
HI_U8
u8Intfb;
/* interlace bit width while output */
HI_U16
u16Vact
/* vertical active area */
HI_U16
u16Vbb;
/* vertical back blank
porch */
HI_U16
u16Vfb;
/* vertical
front blank porch */
HI_U16
u16Hact;
/* herizontal active area */
HI_U16
u16Hbb;
/* herizontal back blank
porch */
HI_U16
u16Hfb;
/* herizontal front blank
porch */
HI_U16
u16Hmid;
/* bottom
herizontal active area */
HI_U16
u16Bvact;
/*
bottom vertical active area */
HI_U16
u16Bvbb;
/* bottom vertical back blank porch */
HI_U16
u16Bvfb;
/* bottom vertical front blank porch */
HI_U16
u16Hpw;
/* horizontal
pulse width */
HI_U16
u16Vpw;
/* vertical
pulse width */
HI_BOOL
bIdv;
/* inverse data valid of output */
HI_BOOL
bIhs;
/* inverse horizontal synch
signal */
HI_BOOL
bIvs;
/*
inverse vertical synch signal */
} VO_SYNC_INFO_S;
如
SDK
中默认的
PAL
时序:
p>
{0,0,0,
288,22,2
,720,132,12,
1,
288,23,2,
126,3,
0,0,0}
p>
上面部分属性,
与显示通道的总体控制寄存器
DHDCTRL
(
0x205ca000
)
是对应的。
常用到的属性是如下:
1
/
5
这里
u16Vbb
在隔行输出时是指顶场垂直消隐后肩,逐行输出时:垂直消隐后肩
加垂直脉冲的宽度,单位是行。
u16Vfb
与
u16Vbb
对应,指的是前肩,两者加在
一起的和应该一个定值的。
u16Hbb
是水平消隐后肩,
u16Hfb
是水平消隐前肩,
单位为
像素,
两者加起来的和也应该是为一定的值。
所以我们一般可以
通过修改
这两对值,
来实现画面在一定的范围内,
在显示器上的上下左右移动。
可以通过
接口配置,<
/p>
也可以直接修改寄存器
(
Vbb
和
Vfb
与
DHDVS
YNC
寄存器
0x205ca004
对
应,
Hbb
和
Hfb
< br>与
DHDHSYNC1
寄存器
0
x205ca008
和
DHDHSYNC2
寄存器
0x205ca00c
对应)
。
u16Bvbb
指隔行输出时,
底场垂直消隐后肩,
u16Bvfb
指隔行输出时,底场垂直<
/p>
消隐前肩,单位为行。这里注意,如果是隔行输出,修改了顶场图像的前后肩,
则应该对应修改底场图像的前后肩,否则可能出现图像抖动。
2
、配置时钟
我们以
3531
为例,在一些特殊分辨率,像
640x480@60
,在
vo
设备中没有支持
这个时序,但是
HDMI
有支持这个时序,所以可以用
vo
的用户时序来实现,只<
/p>
需要配置好上吗的
User
时序和
p>
HDMI
后,
配置相应的
< br>vo
的时钟。
就可以正常输
出。
表
3-3 Hi3531 PLL
与各功能模块对应关系
这里可以看到,
对于
VDP
模块,
是由
VPLL0
或
VPLL1
来分配时钟。
其中注意的是
VPLL1
会
2
分频后作
为
VDP HD/HDMI
源时钟
一、这里,首先需要确认的是,当前的芯片,
HDMI
时钟源选择。
例如,跑
./sample_vio 0
读取寄存器
0x20030038
,结果如下:
2
/
5
-
-
-
-
-
-
-
-
-
上一篇:爷爷作文之写爷爷去世的作文
下一篇:LCD三个时序信号