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抓图,抓到图像正常但是高度减少一半
色度和亮度都正常的。高减半所以有锯齿状。现在更换芯片了。ADV7280M,但是还没调试,硬件有问题。相关资料文档会上传,之后发下载链接