tag 标签: mipi

相关博文
  • 热度 1
    2024-7-22 14:33
    228 次阅读|
    0 个评论
    MIPI-CSI是一种在嵌入式系统或移动设备中常见的摄像头接口,能够实现高速的图像数据传输。飞凌嵌入式最新推出的OK3576-C开发板拥有丰富的资源接口,其中支持5个CSI-2接口,意味着最多可同时支持5路摄像头的输入。 本篇内容就通过OK3576-C开发板为大家介绍一下RK3576处理器的Camera通路,以及如何配置MIPI-CSI摄像头的不同输出格式。 1 RK3576的camera通路 如果只有一个摄像头接入,则只开rkispx_vir0 。需要注意的是: vicap和isp并没有对应关系; 各个vir0/vir1这种关系本质是同一个硬件分时复用,效果等同。多个的时候尽量使用0,1,2 ... 去配置。 硬件通路框图如下: 有一个dcphy接口和两个dphy接口,接入路径如下: 单摄(接第一个dphy) rkisp_vir0 双摄(接两个dphy) rkisp_vir0 rkisp_vir1 三摄(接dcphy和2个dphy) rkisp_vir0 rkisp_vir1 rkisp_vir2 五摄(接dcphy,将2个dphy拆分) rkisp_vir0 rkisp_vir1 rkisp_vir2 rkisp_vir3 rkisp_vir4 下图是camera各个通路的连接情况: (注:如果是RGB数据输入后面还需要跟rkisp_virx) 2 不同平台的sensor链路情况 yuv422/rgb888输入 对于yuv422/rgb888输入的情况,常见的有三种情况: 1、自带isp的或者客户外接isp的摄像头。输入yuv422格式; 2、hdmi转mipi csi输入。一般如rk628d/f,lt6911xxx等芯片,常见的是转换成yuv422,也可以rgb888格式; 3、多路ahd,serdes。这种一个mipi口,最多可以支持4个虚拟通道,对于这几种情况,是不需要走isp的,只需要到cif即可,所以链路为 : rkcif_mipi_lvdsX rkcif_mipi_lvdsx_sditf 以及isp节点有可以disabled掉,里面的X根据不同平台不同硬件的接法而定。 抓图使用的节点为rkcif_mipi_lvdsX对应的第一个video节点,这个可以通过media-ctl看拓扑得到,比如OK3576-C开发板上的OV5645摄像头,挂载在media1节点。 root@ok3576-buildroot:/# media-ctl -p -d /dev/media1 Media controller API version 6.1.57 driver rkcif model rkcif-mipi-lvds1 serial bus info platform:rkcif-mipi-lvds1 hw revision 0x0 driver version 6.1.57 Device topology entity 1: stream_cif_mipi_id0 (1 pad, 11 links) type Node subtype V4L flags 0 device node name /dev/video11 pad0: Sink <- "rockchip-mipi-csi2" :1 <- "rockchip-mipi-csi2" :2 <- "rockchip-mipi-csi2" :4 <- "rockchip-mipi-csi2" :6 <- "rockchip-mipi-csi2" :8 <- "rockchip-mipi-csi2" :10 entity 5: stream_cif_mipi_id1 (1 pad, 11 links) type Node subtype V4L flags 0 device node name /dev/video12 pad0: Sink <- "rockchip-mipi-csi2" :1 <- "rockchip-mipi-csi2" :3 <- "rockchip-mipi-csi2" :5 <- "rockchip-mipi-csi2" :7 <- "rockchip-mipi-csi2" :9 <- "rockchip-mipi-csi2" :11 <- "rockchip-mipi-csi2" :2 <- "rockchip-mipi-csi2" :4 <- "rockchip-mipi-csi2" :6 <- "rockchip-mipi-csi2" :8 <- "rockchip-mipi-csi2" :10 entity 13: stream_cif_mipi_id3 (1 pad, 11 links) type Node subtype V4L flags 0 device node name /dev/video14 pad0: Sink <- "rockchip-mipi-csi2" :1 <- "rockchip-mipi-csi2" :3 <- "rockchip-mipi-csi2" :5 <- "rockchip-mipi-csi2" :7 <- "rockchip-mipi-csi2" :9 <- "rockchip-mipi-csi2" :11 <- "rockchip-mipi-csi2" :2 <- "rockchip-mipi-csi2" :4 <- "rockchip-mipi-csi2" :6 <- "rockchip-mipi-csi2" :8 <- "rockchip-mipi-csi2" :10 entity 21: rkcif_scale_ch1 (1 pad, 11 links) type Node subtype V4L flags 0 device node name /dev/video16 pad0: Sink <- "rockchip-mipi-csi2" :1 <- "rockchip-mipi-csi2" :3 <- "rockchip-mipi-csi2" :5 <- "rockchip-mipi-csi2" :7 <- "rockchip-mipi-csi2" :9 <- "rockchip-mipi-csi2" :11 <- "rockchip-mipi-csi2" :2 <- "rockchip-mipi-csi2" :4 <- "rockchip-mipi-csi2" :6 <- "rockchip-mipi-csi2" :8 <- "rockchip-mipi-csi2" :10 entity 29: rkcif_scale_ch3 (1 pad, 11 links) type Node subtype V4L flags 0 device node name /dev/video18 pad0: Sink <- "rockchip-mipi-csi2" :1 <- "rockchip-mipi-csi2" :3 <- "rockchip-mipi-csi2" :5 <- "rockchip-mipi-csi2" :7 <- "rockchip-mipi-csi2" :9 <- "rockchip-mipi-csi2" :11 <- "rockchip-mipi-csi2" :2 <- "rockchip-mipi-csi2" :4 <- "rockchip-mipi-csi2" :6 <- "rockchip-mipi-csi2" :8 <- "rockchip-mipi-csi2" :10 entity 37: rkcif_tools_id1 (1 pad, 11 links) type Node subtype V4L flags 0 device node name /dev/video20 pad0: Sink <- "rockchip-mipi-csi2" :1 <- "rockchip-mipi-csi2" :3 <- "rockchip-mipi-csi2" :5 <- "rockchip-mipi-csi2" :7 <- "rockchip-mipi-csi2" :9 <- "rockchip-mipi-csi2" :11 <- "rockchip-mipi-csi2" :2 <- "rockchip-mipi-csi2" :4 <- "rockchip-mipi-csi2" :6 <- "rockchip-mipi-csi2" :8 <- "rockchip-mipi-csi2" :10 entity 45: rockchip-mipi-csi2 (12 pads, 122 links) type V4L2 subdev subtype Unknown flags 0 device node name /dev/v4l-subdev1 pad0: Sink <- "rockchip-csi2-dphy0": 1 pad1: Source "stream_cif_mipi_id0" : 0 "stream_cif_mipi_id1" : 0 "stream_cif_mipi_id3" : 0 "rkcif_scale_ch1" : 0 "rkcif_scale_ch3" : 0 "rkcif_tools_id1" : 0 pad2: Source "stream_cif_mipi_id0" : 0 "stream_cif_mipi_id2" : 0 "rkcif_scale_ch0" : 0 "rkcif_scale_ch2" : 0 "rkcif_tools_id0" : 0 "rkcif_tools_id2" : 0 "stream_cif_mipi_id1" : 0 "stream_cif_mipi_id3" : 0 "rkcif_scale_ch1" : 0 "rkcif_scale_ch3" : 0 "rkcif_tools_id1" : 0 pad4: Source "stream_cif_mipi_id0" : 0 "stream_cif_mipi_id2" : 0 "rkcif_scale_ch0" : 0 "rkcif_scale_ch2" : 0 "rkcif_tools_id0" : 0 "rkcif_tools_id2" : 0 "stream_cif_mipi_id1" : 0 "stream_cif_mipi_id3" : 0 "rkcif_scale_ch1" : 0 "rkcif_scale_ch3" : 0 "rkcif_tools_id1" : 0 pad6: Source "stream_cif_mipi_id0" : 0 "stream_cif_mipi_id2" : 0 "rkcif_scale_ch0" : 0 "rkcif_scale_ch2" : 0 "rkcif_tools_id0" : 0 "rkcif_tools_id2" : 0 "stream_cif_mipi_id1" : 0 "stream_cif_mipi_id3" : 0 "rkcif_scale_ch1" : 0 "rkcif_scale_ch3" : 0 "rkcif_tools_id1" : 0 pad8: Source "stream_cif_mipi_id0" : 0 "stream_cif_mipi_id2" : 0 "rkcif_scale_ch0" : 0 "rkcif_scale_ch2" : 0 "rkcif_tools_id0" : 0 "rkcif_tools_id2" : 0 "stream_cif_mipi_id1" : 0 "stream_cif_mipi_id3" : 0 "rkcif_scale_ch1" : 0 "rkcif_scale_ch3" : 0 "rkcif_tools_id1" : 0 pad10: Source "stream_cif_mipi_id0" : 0 "stream_cif_mipi_id2" : 0 "rkcif_scale_ch0" : 0 "rkcif_scale_ch2" : 0 "rkcif_tools_id0" : 0 "rkcif_tools_id2" : 0 "stream_cif_mipi_id1" : 0 "stream_cif_mipi_id3" : 0 "rkcif_scale_ch1" : 0 "rkcif_scale_ch3" : 0 "rkcif_tools_id1" : 0 entity 58: rockchip-csi2-dphy0 (2 pads, 2 links) type V4L2 subdev subtype Unknown flags 0 device node name /dev/v4l-subdev2 pad0: Sink <- "m01_f_ov5645 3-003c" : 0 pad1: Source "rockchip-mipi-csi2" : 0 entity 63: m01_f_ov5645 3-003c (1 pad, 1 link) type V4L2 subdev subtype Sensor flags 0 device node name /dev/v4l-subdev3 pad0: Source -> "rockchip-csi2-dphy0" : 0 如果是多路输入,就对应前4个,即video11-video14。 RAW格式输入 从RK3588开始,也就是isp3.0起,瑞芯微处理器的isp便不再有采集功能,而只做图像处理,所以整个通路为: rkispx_virX 这里需要说明一下: 1、在不跑aiq的时候,rkcif_mipi_lvdsX是可以拿RAW图的; 2、如果我们只打开isp节点的vir0即rkispx_vir0,不打开后面的rkispx_vir1/vir2...,这种就是直通的,不跑aiq,也能拿到nv12图,但是是未经过效果处理,一般是淡绿色; 3、打开其他vir节点,说明isp需要分时复用,isp节点就必须要开启aiq才能拿图(aiq会分时复用isp) ,所以如果只有一个camera,其他isp节点建议disabled掉。 3 总结 在配置摄像头时,首先要确定摄像头走的通路,并确定摄像头输出的格式,如果是RAW图则需要走rkisp,如果是yuv422/rgb888,则只需要配置到rkcif_mipi_lvdsx。 本文介绍了RK3576处理器的Camera通路,以及如何配置MIPI-CSI摄像头的不同输出格式。在后续的文章中,将会继续为大家带来RK3576处理器的摄像头参数配置和设备树配置方法。
  • 热度 1
    2024-7-19 14:07
    400 次阅读|
    0 个评论
    MIPI-CSI是一种在嵌入式系统或移动设备中常见的摄像头接口,能够实现高速的图像数据传输。飞凌嵌入式最新推出的OK3576-C开发板拥有丰富的资源接口,其中支持5个CSI-2接口,意味着最多可同时支持5路摄像头的输入。 本篇内容就通过OK3576-C开发板为大家介绍一下RK3576处理器的Camera通路,以及如何配置MIPI-CSI摄像头的不同输出格式。 一、RK3576的camera通路 如果只有一个摄像头接入,则只开rkispx_vir0 。需要注意的是: 1. vicap和isp并没有对应关系; 2. 各个vir0/vir1这种关系本质是同一个硬件分时复用,效果等同。多个的时候尽量使用0,1,2 ... 去配置。 硬件通路框图如下: 有一个dcphy接口和两个dphy接口,接入路径如下: 单摄(接第一个dphy) sensor0 csi2_dphy0 mipi1_csi2 rkcif_mipi_lvds1 (sditf) rkisp_vir0 双摄(接两个dphy) sensor0 csi2_dphy0 mipi1_csi2 rkcif_mipi_lvds1 (sditf) rkisp_vir0 sensor1 csi2_dphy3 mipi3_csi2 rkcif_mipi_lvds3 (sditf) rkisp_vir1 三摄(接dcphy和2个dphy) sensor0 csi2_dcphy0 mipi0_csi2 rkcif_mipi_lvds (sditf) rkisp_vir0 sensor1 csi2_dphy0 mipi1_csi2 rkcif_mipi_lvds1 (sditf) rkisp_vir1 sensor2 csi2_dphy3 mipi3_csi2 rkcif_mipi_lvds3 (sditf) rkisp_vir2 五摄(接dcphy,将2个dphy拆分) sensor0 csi2_dcphy0 mipi0_csi2 rkcif_mipi_lvds (sditf) rkisp_vir0 sensor1 csi2_dphy1 mipi1_csi2 rkcif_mipi_lvds1 (sditf) rkisp_vir1 sensor2 csi2_dphy2 mipi2_csi2 rkcif_mipi_lvds2 (sditf) rkisp_vir2 sensor3 csi2_dphy4 mipi3_csi2 rkcif_mipi_lvds3 (sditf) rkisp_vir3 sensor4 csi2_dphy5 mipi4_csi2 rkcif_mipi_lvds4 (sditf) rkisp_vir4 下图是camera各个通路的连接情况: (注:如果是RGB数据输入后面还需要跟rkisp_virx) 二、不同平台的sensor链路情况 yuv422/rgb888输入 对于yuv422/rgb888输入的情况,常见的有三种情况: 1、自带isp的或者客户外接isp的摄像头。输入yuv422格式; 2、hdmi转mipi csi输入。一般如rk628d/f,lt6911xxx等芯片,常见的是转换成yuv422,也可以rgb888格式; 3、多路ahd,serdes。这种一个mipi口,最多可以支持4个虚拟通道,对于这几种情况,是不需要走isp的,只需要到cif即可,所以链路为 : rkcif_mipi_lvdsX rkcif_mipi_lvdsx_sditf 以及isp节点有可以disabled掉,里面的X根据不同平台不同硬件的接法而定。 抓图使用的节点为rkcif_mipi_lvdsX对应的第一个video节点,这个可以通过media-ctl看拓扑得到,比如OK3576-C开发板上的OV5645摄像头,挂载在media1节点。 root@ok3576-buildroot:/# media-ctl -p -d /dev/media1 Media controller API version 6.1 . 57 driver rkcif model rkcif-mipi-lvds1 serial bus info platform:rkcif-mipi-lvds1 hw revision 0x0 driver version 6.1 . 57 Device topology - entity 1 : stream_cif_mipi_id0 ( 1 pad, 11 links) type Node sub type V4L flags 0 device node name /dev/video11 pad0: Sink <- "rockchip-mipi-csi2" : 1 <- "rockchip-mipi-csi2" : 2 <- "rockchip-mipi-csi2" : 4 <- "rockchip-mipi-csi2" : 6 <- "rockchip-mipi-csi2" : 8 <- "rockchip-mipi-csi2" : 10 - entity 5 : stream_cif_mipi_id1 ( 1 pad, 11 links) type Node sub type V4L flags 0 device node name /dev/video12 pad0: Sink <- "rockchip-mipi-csi2" : 1 <- "rockchip-mipi-csi2" : 3 <- "rockchip-mipi-csi2" : 5 <- "rockchip-mipi-csi2" : 7 <- "rockchip-mipi-csi2" : 9 <- "rockchip-mipi-csi2" : 11 <- "rockchip-mipi-csi2" : 2 <- "rockchip-mipi-csi2" : 4 <- "rockchip-mipi-csi2" : 6 <- "rockchip-mipi-csi2" : 8 <- "rockchip-mipi-csi2" : 10 - entity 13 : stream_cif_mipi_id3 ( 1 pad, 11 links) type Node sub type V4L flags 0 device node name /dev/video14 pad0: Sink <- "rockchip-mipi-csi2" : 1 <- "rockchip-mipi-csi2" : 3 <- "rockchip-mipi-csi2" : 5 <- "rockchip-mipi-csi2" : 7 <- "rockchip-mipi-csi2" : 9 <- "rockchip-mipi-csi2" : 11 <- "rockchip-mipi-csi2" : 2 <- "rockchip-mipi-csi2" : 4 <- "rockchip-mipi-csi2" : 6 <- "rockchip-mipi-csi2" : 8 <- "rockchip-mipi-csi2" : 10 - entity 21 : rkcif_scale_ch1 ( 1 pad, 11 links) type Node sub type V4L flags 0 device node name /dev/video16 pad0: Sink <- "rockchip-mipi-csi2" : 1 <- "rockchip-mipi-csi2" : 3 <- "rockchip-mipi-csi2" : 5 <- "rockchip-mipi-csi2" : 7 <- "rockchip-mipi-csi2" : 9 <- "rockchip-mipi-csi2" : 11 <- "rockchip-mipi-csi2" : 2 <- "rockchip-mipi-csi2" : 4 <- "rockchip-mipi-csi2" : 6 <- "rockchip-mipi-csi2" : 8 <- "rockchip-mipi-csi2" : 10 - entity 29 : rkcif_scale_ch3 ( 1 pad, 11 links) type Node sub type V4L flags 0 device node name /dev/video18 pad0: Sink <- "rockchip-mipi-csi2" : 1 <- "rockchip-mipi-csi2" : 3 <- "rockchip-mipi-csi2" : 5 <- "rockchip-mipi-csi2" : 7 <- "rockchip-mipi-csi2" : 9 <- "rockchip-mipi-csi2" : 11 <- "rockchip-mipi-csi2" : 2 <- "rockchip-mipi-csi2" : 4 <- "rockchip-mipi-csi2" : 6 <- "rockchip-mipi-csi2" : 8 <- "rockchip-mipi-csi2" : 10 - entity 37 : rkcif_tools_id1 ( 1 pad, 11 links) type Node sub type V4L flags 0 device node name /dev/video20 pad0: Sink <- "rockchip-mipi-csi2" : 1 <- "rockchip-mipi-csi2" : 3 <- "rockchip-mipi-csi2" : 5 <- "rockchip-mipi-csi2" : 7 <- "rockchip-mipi-csi2" : 9 <- "rockchip-mipi-csi2" : 11 <- "rockchip-mipi-csi2" : 2 <- "rockchip-mipi-csi2" : 4 <- "rockchip-mipi-csi2" : 6 <- "rockchip-mipi-csi2" : 8 <- "rockchip-mipi-csi2" : 10 - entity 45 : rockchip-mipi- csi2 ( 12 pads, 122 links) type V4L2 subdev sub type Unknown flags 0 device node name /dev/v4l-subdev1 pad0: Sink <- "rockchip-csi2-dphy0" : 1 pad1: Source "stream_cif_mipi_id0" : 0 "stream_cif_mipi_id1" : 0 "stream_cif_mipi_id3" : 0 "rkcif_scale_ch1" : 0 "rkcif_scale_ch3" : 0 "rkcif_tools_id1" : 0 pad2: Source "stream_cif_mipi_id0" : 0 "stream_cif_mipi_id2" : 0 "rkcif_scale_ch0" : 0 "rkcif_scale_ch2" : 0 "rkcif_tools_id0" : 0 "rkcif_tools_id2" : 0 "stream_cif_mipi_id1" : 0 "stream_cif_mipi_id3" : 0 "rkcif_scale_ch1" : 0 "rkcif_scale_ch3" : 0 "rkcif_tools_id1" : 0 pad4: Source "stream_cif_mipi_id0" : 0 "stream_cif_mipi_id2" : 0 "rkcif_scale_ch0" : 0 "rkcif_scale_ch2" : 0 "rkcif_tools_id0" : 0 "rkcif_tools_id2" : 0 "stream_cif_mipi_id1" : 0 "stream_cif_mipi_id3" : 0 "rkcif_scale_ch1" : 0 "rkcif_scale_ch3" : 0 "rkcif_tools_id1" : 0 pad6: Source "stream_cif_mipi_id0" : 0 "stream_cif_mipi_id2" : 0 "rkcif_scale_ch0" : 0 "rkcif_scale_ch2" : 0 "rkcif_tools_id0" : 0 "rkcif_tools_id2" : 0 "stream_cif_mipi_id1" : 0 "stream_cif_mipi_id3" : 0 "rkcif_scale_ch1" : 0 "rkcif_scale_ch3" : 0 "rkcif_tools_id1" : 0 pad8: Source "stream_cif_mipi_id0" : 0 "stream_cif_mipi_id2" : 0 "rkcif_scale_ch0" : 0 "rkcif_scale_ch2" : 0 "rkcif_tools_id0" : 0 "rkcif_tools_id2" : 0 "stream_cif_mipi_id1" : 0 "stream_cif_mipi_id3" : 0 "rkcif_scale_ch1" : 0 "rkcif_scale_ch3" : 0 "rkcif_tools_id1" : 0 pad10: Source "stream_cif_mipi_id0" : 0 "stream_cif_mipi_id2" : 0 "rkcif_scale_ch0" : 0 "rkcif_scale_ch2" : 0 "rkcif_tools_id0" : 0 "rkcif_tools_id2" : 0 "stream_cif_mipi_id1" : 0 "stream_cif_mipi_id3" : 0 "rkcif_scale_ch1" : 0 "rkcif_scale_ch3" : 0 "rkcif_tools_id1" : 0 - entity 58 : rockchip-csi2- dphy0 ( 2 pads, 2 links) type V4L2 subdev sub type Unknown flags 0 device node name /dev/v4l-subdev2 pad0: Sink <- "m01_f_ov5645 3-003c" : 0 pad1: Source "rockchip-mipi-csi2" : 0 - entity 63 : m01_f_ov5645 3 - 003 c ( 1 pad, 1 link) type V4L2 subdev sub type Sensor flags 0 device node name /dev/v4l-subdev3 pad0: Source "rockchip-csi2-dphy0" : 0 如果是多路输入,就对应前4个,即video11-video14。 RAW格式输入 从RK3588开始,也就是isp3.0起,瑞芯微处理器的isp便不再有采集功能,而只做图像处理,所以整个通路为: sensor csi2_dphyX mipiX_csi2 rkcif_mipi_lvdsX rkcif_mipi_lvdsX_sditf rkispx_virX 这里需要说明一下: 1、在不跑aiq的时候,rkcif_mipi_lvdsX是可以拿RAW图的; 2、如果我们只打开isp节点的vir0即rkispx_vir0,不打开后面的rkispx_vir1/vir2...,这种就是直通的,不跑aiq,也能拿到nv12图,但是是未经过效果处理,一般是淡绿色; 3、打开其他vir节点,说明isp需要分时复用,isp节点就必须要开启aiq才能拿图(aiq会分时复用isp) ,所以如果只有一个camera,其他isp节点建议disabled掉。 三、总结 在配置摄像头时,首先要确定摄像头走的通路,并确定摄像头输出的格式,如果是RAW图则需要走rkisp,如果是yuv422/rgb888,则只需要配置到rkcif_mipi_lvdsx。 本文介绍了RK3576处理器的Camera通路,以及如何配置MIPI-CSI摄像头的不同输出格式。在后续的文章中,将会继续为大家带来RK3576处理器的摄像头参数配置和设备树配置方法。
  • 热度 10
    2022-11-25 13:50
    973 次阅读|
    0 个评论
    MIPI移动产业处理器接口 (英文全名为Mobile Industry Processor Interface,简称MIPI), 是由MIPI联盟针对 移动设备 (如:智能型手机、平板电脑、笔记本电脑和混合装置等各种移动装置)的处理器设计所定义的规范,随着5G、人工智能、物联网等技术日渐成熟,相关处理器及装置需求也越来越高,MIPI规范成为重要角色。 MIPI规范共有六种类型的接口,其中MIPI规范中的多媒体(Multimedia)类别,如下图所示,主要分为三个层面: ◆ 应用层(Application Layer) ◆ 协定层(Protocol Layer) ◆ 物理层(PHY Layer) 来源:MIPI Alliance 而MIPI主要应用类型可分为Camera(CSI)、Display(DSI)、Storage(UFS)。 如同多数的技术接口,MIPI联盟也有制定一份标准测试文件来明确定义测试条件、方法与项目,MIPI的测试文件称为 规格一致性测试(CTS/Conformance Test Suit)文件,通过一致性测试可以有效减少影像摄影画面噪声/模糊/失真、影像延迟等问题 。 和一般认证测试不同的是厂商可参照测试文件指引自行执行一致性测试,可不用透过协会认可的第三方认证实验室执行测试。若要执行此测试,必须先备齐相关测试设备及环境,然而根据百佳泰多年测试经验,多数厂商碰到最大的问题是并不是在这部分,而是没有足够的测试经验。由于MIPI多用于移动设备内部,必须透过焊接或是探针直接连接方式进行量测,相较于一般常见的USB、HDMI等外接接口,量测困难度增加许多。 百佳泰将以常见的D-PHY/C-PHY为例分享产品在测试时常遇到的问题。 认识MIPI D-PHY MIPI D-PHY是一种结合高速、低功耗的讯号传输模式,主要应用于 Camera(CSI)、Display (DSI) 。 讯号组合1对Clock差分讯号以及1~4对Data差分讯号,支持 HS mode (High Speed)和 LP mode (Low Power)模式之间切换。 HS mode: 低电压传输,最高数据传输速度为每Lane 1Gpbs~9Gbps 【01】Transmitter(TX)测试的要求与方法: 由于智能型手机、平板电脑、车机上的镜头接口跟影像显示接口都已是成品的阶段,如同前面所提到的,若要进行讯号测试就只能透过焊接或是探针直接连接方式进行量测。 下图是测试环境的连接示意图: 测试设备是使用Keysight D9020DPHC及相符性测试软件,针对MIPI D-PHY v2.1第9节以下及C-PHY CTS V2.1第1节以下的规格进行完整测试。 【02】主要测项如下: ◈ High Speed Data/Clock TX ◈ Low Power Data/Clock TX ◈ Data/Clock Transmitter(HS Entry、HS Exit) ◈ High Speed Data-Clock Timing 认识MIPI C-PHY 与D-PHY相同,结合高速、低功耗的讯号传输模式,应用于 (CSI、DSI) 。 两者主要差异点如下: 【01】Transmitter(TX)测试的要求与方法: 测试设备是使用Keysight D9010CPHC MIPI C-PHY Compliance Test Software,可针对MIPI C-PHY v1.2第9节和C-PHY CTS v1.1第1节的规格进行完整测试。 【02】主要测项如下: ◈ High-Speed Transmitter(HS-TX)Electrical Tests ◈ Global Timing Tests(T3-Prepare、HS Exit) 上图撷取不同模式,进行讯号的示意图 案例分享 【01】量测位置影响测试质量 MIPI D-PHY/C-PHY TX主要规范是 量测芯片输出端 。 如测试点位位置过远,那么就会影响讯号的衰减,且当driver能力不够时会造成rise/fall爬升能力不够,导致over spec、质量讯号较差。 D-PHY C-PHY 【02】芯片timing参数设定调整有误导致测试Fail 因芯片timing参数设定问题,导致Data/Clock Transmitter(HS Entry、HS Exit)timing fail。百佳泰建议Timing skew fail可透过芯片商提供修改参数来调整。 如下图可见当数值低于50,则会导致over spec;反之,如数值高于50,数据结果会出现Pass。
  • 热度 31
    2020-10-3 22:31
    7188 次阅读|
    0 个评论
    基于MT9M114+CYUSB3014的UVC摄像头开发4(亮度控制)
    1、 本文简单描述一下UVC的亮度控制机制,实际上就是测试AN75779的亮度功能。测试工具有两个,一个是关于位机出图像的E-CAM软件,另一个是监测USB3 是关于 e-CAM 软件更改亮度的截图,如下图: 弹出的控制页面中只有亮度是可以操作的,其它是灰色的。当然,后面的文章会介绍使能对比度、色调等其它控制功能,不过是收费的。 2、 这里用 BUS HOUND 软件监听 USB 总线上的控制传输指令,数据如下: 上图是软件 e-CAM 发出的两条指令,第一条指令是 8 个字节, 21 01 00 02 00 02 02 00 ,控制传输指令 CTL 是 USB 协议定义的指令,具体 8 个字节的含义用户可以自行查阅 UVC 标准协议。第二条指令 2 个字节, 31 00 。这个简单的控制传输指令,也可以用 BUS HOUND 软件完成,具体如下 : 图中 1 是选择 USB 传输; 图中 2 是选择控制传输; 图中 3 是输出实际的 8 字节控制传输指令; 图中 4 是输入要发送的 2 字节数据; 3、 结合上图中的8字节控制传输指令,请直接对照UVC协议具体分析一下(UVC协议第4章,或者第86页)。 第1字节21; 第2字节01,对应bRequest;常数定义操作的类型,具体见UVC协议的第87页,常数定义如下: 第3、4字节00 02;对应wValue; 第5、6字节00 02;对应wIndex; 第7、8字节02 00;对应wLength; 4 、亮度控制部分代码分析 打开文件uvc.c文件,我们看下程序是如何处理这8个字节的控制传输指令上的,定位在第323行上,如下: 函数CyFxUVCApplnUSBSetupCB ( )的输入参数有两个,如上图标记A,两个32位变量setupdat0和setupdat1正好是8个单字节,即是8个字节的控制传输指令;上图标记B的则是从这8个字节中按UVC协议提取的5个变量,分别是bmReqType,bRequest,wValue,wIndex,和wLength。 上位机发送的CTL指令为:21 01 00 02 00 02 02 00。注意到setupdat0=0x0200_0121;setupdat1=0x0002_0200,因为CYUSB3014内核的存储器组织是小端对齐的,所以4个字节的顺序是正好相反的。经过函数CyFxUVCApplnUSBSetupCB()的处理,如上图中标记B的处理,控制传输的5个变量的值如下: bmReqType=0x21; bRequest =0x01; wValue =0x0200; wIndex =0x0200; wLength=0x0002; 上图中标记C的代码,是识别出UVC的控制指令后,通过事件设置函数CyU3PEventSet()设置事件CY_FX_UVC_VIDEO_CONTROL_REQUEST_EVENT。 接收事件CY_FX_UVC_VIDEO_CONTROL_REQUEST_EVENT是在函数UVCAppEP0Thread_Entry()中完成的。此函数在文件uvc.c中的第1667行,如下图: 通过获取事件函数CyU3PEventGet(),上图中标记A的,获取事件CY_FX_UVC_VIDEO_CONTROL_REQUEST_EVENT。再通过上图标记B的代码,识别出 8==CY_FX_UVC_PROCESSING_UNIT_ID=0x02,执行函数UVCHandleProcessingUnitRqts()。 函数UVCHandleProcessingUnitRqts()在第1215行,如下图: 上图红框中代码是设置亮度的代码,先通过函数CyU3PUsbGetEP0Data()读出OUT传输的两个字节,存入变量glEp0Buffer中,再经过变量值范围检查后执行设置亮度的函数SensorSetBrightness()。 5、亮度设置相关的还包括描述符部分,以AN75779的USB2描述符为例,如下: 上面的处理单元共有3个字节的位控制字节,最低字节的D0位代表亮度控制,这是UVC协议定义好的。 如果将上面的D0位设置为0,再编绎程序,下载到电路板中,图像正常,但亮度控制功能所属的视频属性控制页都不显示了,仅剩下照相机控制页了。 作为上面的对比,将图像属性控制的3个字节的最低字节8位全部设置为1,即FF, * D0: Brightness;//亮度 * D1: Contrast;//对比度 * D2: Hue;//色调 * D3: Saturation;//饱合度 * D4: Sharpness;//清晰度 * D5: Gamma;//伽玛 * D6: White Balance Temperature;//白平衡 * D7: White Balance Component;//白平衡 未完,接下一章。 良子USB,20200912 专注USB3.0、FPGA、PCIE、UVC摄像头开发 QQ:1345482533
  • 热度 18
    2018-3-18 09:45
    8016 次阅读|
    0 个评论
    CYPRESS EZ- U SB CX3是业界最灵活的USB 3.0摄像机控制器,凡是支持移动工业处理器界面(MIPI)2类相机串口(CSI-2)1.01版标准的任何图像处理器,均可采用这款产品,添加USB 3.0连接性。 CX3理想适用于高分辨率(HD)、高速图像捕获应用。CX3能够在无需压缩的情况下传输帧频为每秒30帧的1080p或帧频为60fps的720p视频。 日前,Raytrix GmbH在其全新3-D摄像机中选用了赛普拉斯的EZ-USB· CX3· USB 3.0 摄像机控制器。EZ-USB CX3为创新性的R42 3-D光场摄像机提供5-Gbps的性能。R42可拍摄4000张4000万像素的图片,利用CX3解决方案的吞吐能力可以提供扩展景深的3-D图像。 Ratrix GmbH 的创始人Lennart Wietzke博士说:“EZ-USB CX3 USB 3.0控制器提供了R42摄像机急需的性能。CX3的 SuperSpeed USB 3.0性能使R42拍摄的图像具有无与伦比的3-D景深。其独特的EZ-USB灵活性缩短了我们的设计周期。” EZ-USB CX3可编程USB 3.0摄像机控制器支持MIPI CSI-2 1.01版,具有最多4条数据通道,每条通道的速率可达1 Gbps,总带宽为4 Gbps。CX3支持多种图像格式,包括RAW8/10/12/14, YUV422 (CCIR/ITU 8/10-bit),以及 RGB888/666/565。CX3基于已广为市场接受的EZ-USB FX3?外设控制器平台, 拥有 ARM 9 CPU和512KB SRAM,能为片上图像数据处理提供200 MIPS 的计算能力。CX3支持多种外设接口,例如I2C, SPI和 UART, 可通过编程实现转动、俯仰、变焦以及其他相机控制功能。 CYUSB3065开发板已经上架,具体如下: 良子,QQ:1345482533 https://liangziusb.taobao.com
相关资源