RK3588 CPHY camera调试(LT7911UXC)

CPHY也是MIPI物理层的接口一种,相比于DPHY,CPHY没有单独的时钟信号线,时钟信号内嵌到data信号线中,3组信号线,每组有ABC 3跟组成,相比于DPHY,CPHY可以具有更高的带宽。更多有关于CPHY的介绍,后面单独介绍。目前DPHY的应用明显比CPHY更多,但是随着应用场景对画质越来越高,数据带宽也必然会增加,那么CPHY的应用也会逐渐普及。RK3588 的DC PHY支持作为CPHY使用,这篇文章介绍一下RK3588 CPHY的sensor的调试。

(1)RK3588 MIPI CPHY规格介绍

RK3588 有4个MIPI PHY,其中两个是MIPI D/C comb PHY,顾名思义,就是既可以作为DPHY使用,又可以作为CPHY使用。RK3588的CPHY是V1.1的版本,最大速率支持到2.5Gsps,这里说明一下sps符号速率与我们常认为的bps的换算关系:sps = 2.28 bps,所以RK3588 CPHY的总带宽就可以达到(2.5G * 2.28)* 3,达到17.1Gbps带宽。

(2)LT7911UXC:CPHY sensor

RK3588支持CPHY接收,需要搭配支持CPHY TX的sensor才能正常使用,这边介绍调试过的LT7911UXC为例,LT7911UXC支持CPHY的输出,支持CPHY V1.0的版本,1组数据线的速率是5.7Gbps,总带宽是17.1Gbps。

(3)驱动配置

基于v4l2的框架,介绍一下CPHY对应的驱动调试,以及与DPHY之间的差异。其实相比于DPHY,主要的不同就是在于接口g_mbus_config的配置,重点差异上的配置如下,其余可自行参考其余文章,这里不再赘述。

①g_mbus_config配置

lt7911uxc对应的实现如下:

static int lt7911uxc_g_mbus_config(struct v4l2_subdev *sd,
			unsigned int pad, struct v4l2_mbus_config *cfg)
{
	struct lt7911uxc *lt7911uxc = to_lt7911uxc(sd);
	u32 lane_num = lt7911uxc->bus_cfg.bus.mipi_csi2.num_data_lanes;
	u32 val = 0;

	val = 1 << (lane_num - 1) |
		V4L2_MBUS_CSI2_CHANNEL_0 |
		V4L2_MBUS_CSI2_CONTINUOUS_CLOCK;

	cfg->type = lt7911uxc->bus_cfg.bus_type;
	cfg->flags = val;

	return 0;
}

重点关注type的配置项,这里的驱动是根据dts配置来获取的,dts配置后面介绍。此处也可直接修改为:

cfg->type = V4L2_MBUS_CSI2_CPHY;

②dts配置

dts配置主要是lt7911uxc对应的port的配置,需要指定bus-type为1,如果缺省没有配置,就默认为DPHY接口,data-lane设置为3lane形式。

		port {
			lt7911_out0: endpoint {
				remote-endpoint = <&hdmi_mipi0_in>;
				bus-type = <1>;
				data-lanes = <1 2 3>;
			};
		};

③link-freq的配置

驱动调试过程中,需要注意的是link-freq的配置,在之前的文章中,有说过,link-freq指示的是MIPI时钟,在CPHY的模式下,也可以认为是速率的一半,可以参照如下进行计算:

4K60的分辨率,YUV422格式:

4400*2250*16*60 /3 /2 /2.28

(4)功能调试

①抓图抓数据流

参照之前文章,基本类似

②常见错误排查

如果抓不到数据流,建议先测量MIPI信号是否正常,测量9 line是否都正常,如果正常,就需要分析MIPI信号是否符合spec要求,常见的是prepare太小导致无法抓图。

相关推荐

  1. RK3588 CPHY camera调试LT7911UXC

    2023-12-23 12:30:01       117 阅读
  2. rk3568 Android UVC

    2023-12-23 12:30:01       72 阅读
  3. rk3568死机调试

    2023-12-23 12:30:01       38 阅读
  4. [RK3588-Android12] 关于HDMIN-IN视频调试命令

    2023-12-23 12:30:01       66 阅读
  5. RK3588 Linux5.10 GT9XX 调试

    2023-12-23 12:30:01       37 阅读
  6. RK3588开发笔记-ES8311音频芯片调试记录

    2023-12-23 12:30:01       26 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2023-12-23 12:30:01       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2023-12-23 12:30:01       100 阅读
  3. 在Django里面运行非项目文件

    2023-12-23 12:30:01       82 阅读
  4. Python语言-面向对象

    2023-12-23 12:30:01       91 阅读

热门阅读

  1. JWT 单点登录探析:原理、用途与安全实践

    2023-12-23 12:30:01       56 阅读
  2. B树和B+树的区别

    2023-12-23 12:30:01       57 阅读
  3. 11-Kafka

    11-Kafka

    2023-12-23 12:30:01      60 阅读
  4. qt ios 将图片和视频保存到手机相册里

    2023-12-23 12:30:01       56 阅读
  5. vue3项目快速创建

    2023-12-23 12:30:01       63 阅读
  6. 实现一个批量解压缩并去重的功能

    2023-12-23 12:30:01       71 阅读
  7. Redis小记(1)

    2023-12-23 12:30:01       65 阅读