RN6752M转换视频信号接海思3519V101

RN6752M支持CVBS和AHD输入,隔行输出CSI、BT656和BT601。它的输出格式是YUV422,UYVY的。输出格式在数据手册上只说明是YUV422的,没有说是UYVY的,这个UYVY是问技术支持得到的回复。还有这个芯片的Y/C分量是分离的,所以在配置海思的时候要注意配置成分离的。

我用这颗芯片来做mipi转换。CVBS做输入,输出mipi 信号,然后接到3519V101上。需要注意,这颗芯片是隔行输出信号的,但是海思3519V101不支持隔行,这是我后来才知道的。出来的图像高会减少一半,例如我的720*576的分辨率,出来是720*288。另外我用双senseor的。sensor0走LVDS了,RN6752M接到link2上来。直接说代码吧

combo_dev_attr_t MIPI_pTG_ATTR = 
{
	.devno = 1,
	.input_mode = INPUT_MODE_MIPI,
	.phy_clk_share = PHY_CLK_SHARE_NONE,
	.img_rect = {0, 0, 720, 288},

	.mipi_attr = 
	{
	.raw_data_type = RAW_DATA_16BIT,
        .wdr_mode = HI_MIPI_WDR_MODE_NONE,
        .lane_id = {0, 1, 2, 3, -1, -1, -1, -1}
	}
};

 

首先mipi结构体配成mipi输入,分辨率的高要减半,我的是576,这里配成288.宽动态就不用配置了。lane的顺序和数量跟你的硬件是 有关系的。输入的像素位宽在这里可以随便写,但是好像不支持8-bits,其他的都支持。因为在后面需要配置寄存器使用用户自定义的位宽和数据类型。然后就可以直接配置VI属性了。

                stViDevAttrEx.enInputMode        = VI_INPUT_MODE_MIPI;

	
		stViDevAttrEx.enWorkMode         = VI_WORK_MODE_1Multiplex;
		stViDevAttrEx.enCombineMode      = VI_COMBINE_SEPARATE; 
		stViDevAttrEx.enCompMode         = VI_COMP_MODE_DOUBLE;

这里用扩展属性了,因为用普通属性好像没有分离属性,也没有双边组合的方式。接着要配置掩码。因为是YUV422,代表8bit的Y信息还有8bit的C 信息,要配双掩码。掩码0配置为0xff000000,掩码1配置成0x00ff0000。后面通道属性的像素格式enPixFormat记得选择sp422就可以了。

到这里基本配置已经完成,然后需要配置三个寄存器.我是在我的程序跑起来设置这三个寄存器的 

himm 0x11302100 0x4;himm 0x11302104 0x1036351E;himm 0x11302108 0x100;

第一个寄存器是设置像素位宽16bit,yuv422就是16bit。第二个寄存器只需要配置低8位就可以,配成1e代表这个图像的格式是yuv。最后一个寄存器是使能。这三个寄存器在海思SDK可以找到。然后用vi_dump抓图,抓到图像正常但是高度减少一半

RN6752M转换视频信号接海思3519V101_第1张图片

色度和亮度都正常的。高减半所以有锯齿状。现在更换芯片了。ADV7280A-M,但是还没调试,硬件有问题。相关资料文档会上传,之后发下载链接 

RN6752M的相关资料下载链接:https://download.csdn.net/download/tiramisu_l/11573594

换成ADV7280A-M来测试,自己做的电路不行,用他们的demo板来做是ok的(很绝望)。虽然他们有隔行转逐行的功能,但是据他们自己说576p(我是720*576分辨率)的隔行转逐行是不行的,出来的效果还是有锯齿状,但是576以下的分辨率是ok的。所以这个方案在我这里还是不行。至于海思的配置跟上面的还是一样。YC分离的。具体的就不说了。因为没有什么更新的地方。

你可能感兴趣的:(linux,海思)