0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于RK3576开发板的MIPI-CSI摄像头使用

ljx2016 来源:ljx2016 作者:ljx2016 2025-05-06 14:58 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

1. MIPI摄像头简介

1.1 MIPI CSI2接口简介

MIPI (Mobile Industry Processor Interface):ARM, Nokia, ST ,TI等公司在2003年成立的一个联盟所定的接口。目的是把手机等移动设备内部的接口如:摄像头、显示屏接口、射频/基带接口等标准化,从而减少手机等移动设备设计的复杂程度和增加设计灵活性。

工作组(Work Group):MIPI联盟下有许多的工作组,不同的工作组负责定义对应设备的标准。其中包括有:Camera工作组、Display工作组、高速多端链接工作组等十几个工作组。

MIPI CSI-2接口是由MIPI联盟下的Camera工作组指定的CSI(Camera Serial Interface)的第2版接口标准。硬件层面:最大支持4个虚拟通道(Lane)传输数据,1个Lane在硬件上体现就是一对差分信号线(见下方原理图),每个Lane的最大通讯速率为2.0Gbps。软件层面:MIPI CSI-2协议栈主要由应用层、协议层、物理层组成,其中协议层又可以分为:像素/字节组包/解包层、底层协议层、通道管理层。

1.2 硬件接口资源介绍

EASY EAI Orin-Nano开发板具有2路MIPI CSI-2接口。每路引出了4个Lane。位置定义如下所示。

wKgZO2gZs4KAbr_RABw4ismG-rg053.png

EASY EAI Orin-Nano默认搭配IMX415单目摄像头。同时配有一根0.5mm间距的40pin FPC反向线

反向线:两端的蓝色标识不在同一侧面。

同向线:两端的蓝色标识处于同一侧面。

wKgZPGgZs4OAS_15AACcBKX2kqQ544.pngwKgZO2gZs4OAQpXjAA-oqUP_00o343.png

1.3 接线说明

wKgZPGgZs4OAdvlXAADdNgPRzl4118.png

* 接线必须在断电时进行操作。

* 采用反向线连接IMX415摄像头与Cmaera1接口。(注意:用错线会烧坏摄像头或者核心板,因此在接线时务必要小心。)

* 接线端子卡扣与FPC线的蓝色塑料标识必须位于同一侧。如下图所示。

wKgZO2gZs4SAMoUWAAshZ-QQ0GM270.png

1.4 查看设备情况

可以通过dmesg命令,检查MIPI-CSI2接口模块是否正常工作。

dmesg | grep "csi2-.phy"

摄像头正常挂载的情况如下所示。可以看到:

dcphy0接口上有一个sensor型号为:imx415的摄像头,MIPI-CSI2地址为:4-0036;

在dphy0接口上有一个sensor型号为:imx415的摄像头,MIPI-CSI2地址为:5-0036。

wKgZPGgZs4SACNOKAAFbT3nnLpE549.png

当没能出现目标camera节点时,就需要检查FPC排线是否正常连接,请检查排线的连接是否与“1.3接线说明”一致。

1.5 寻找可用的设备节点

rockchip平台,一个MIPI-CSI接口会对应20多个video节点(设备树定了就会生成这么多个),如下图所示。

wKgZO2gZs4WAb2egAADRX9WYbXI906.png

注意:但CSI0并不一定是对应着video0~24,这个要根据设备树的实际情况对应生成。

而且MIPI-CSI camera对应的节点,会在修改内核设备树的时候固定下来(即:内核配好了MIPI-CSI Camera个数,无论MIPI-CSI摄像头是否有接上,它的video节点情况都是不会根据MIPI-CSI Camera的接入情况而【动态】改变)。

因此,用户需要找到这些节点所对应的描述信息是什么。Linux的v4l2框架会把这些节点的描述信息统一放在/sys/class/video4linux/目录下,如下图所示。

wKgZPGgZs4WABa58AACvsPL6vQU346.png

随便进入一个描述,如video22。

wKgZO2gZs4WAM2KvAACOnXJH04Q405.png

通过cat命令,可以用查看这个name的内容是什么。rockchip芯片定义:如果这个name是mainpath或者selfpath。则这个“video22”就是可用节点。

在终端任意目录执行下面这条命令,可以快速扫描所有的节点的“name”描述。

grep "mainpath" /sys/class/video4linux/video*/name
wKgZPGgZs4WAd7ZaAADwIRpYk8Y430.png

因此,/dev/video22和/dev/video23都是MIPI-CSI0的可用节点。

2. 快速上手

2.1 例程源码下载

到【百度网盘】上下载相关的单例程序:

链接:https://pan.baidu.com/s/1RXHMGpmGSEfFy0rb1VkXSg?pwd=1234

提取码: 1234

比如在windows环境中,就把单例程序下载到:此电脑D:BaiduNetdisk (无规定,用户可自主选择),如下图所示。

wKgZO2gZs4aAQeu6AACHqgp0ox8886.png

然后把例程【复制粘贴】到nfs挂载目录中。(不清楚目录如何构建的,可以参考《入门指南/开发环境准备/nfs服务搭建与挂载》)

wKgZPGgZs4aADEWPAADwZgkWvLg880.png

2.2 例程编译&运行

通过adb shell进入开发板环境,执行下方命令定位到demo目录,并且执行编译操作。

cd /home/orin-nano/Desktop/nfs/02_camera/
./build.sh
wKgZO2gZs4aAYUnOAAPNJJfqlG4766.png

编译成功后,相关的demo会生成在Release目录下。

执行下方命令以运行demo,如下所示。

sudo ./Release/test-mipiCam 22  ##需要root权限

注:输入参数22为MIPI-CSI0所对应的video索引,本固件camera1~2默认对应video索引分别为:22、31(若用户按需对设备树进行过修改,这些索引将会有所变化)

执行效果如下所示。

wKgZPGgZs4aAIcGgAAERTWXUB9M801.png

然后把/tmp/photo拷贝到当前目录下的Release内

cp /tmp/photo ./Release/

再通过组合键【Ctrl+Shift+T】创建一个新窗口,定位到nfs服务器的对应位置。

wKgZO2gZs4eARuvHAACKiBD90sU711.png

最后使用mplayer工具播放图片,命令如下所示。

mplayer -demuxer rawvideo -rawvideo w=1920:h=1080:format=bgr24 ./Release/photo -loop 0
wKgZPGgZs4eALxs0ADK8R6YHANk004.png

例程默认分辨率为1920x1080,故w和h的参数对应填入1920和1080。当出现图片异常时,说明分辨率等不太对应于手头的摄像头,所以需要调整mipicamera_init()的分辨率,例如640x480。

3. MIPI摄像头测试案例

示例代码路径为:02_camera/test-mipiCam/main.c。MIPI Camera API的测试案例代码逻辑流程如下所示:

wKgZO2gZs4iAPOeVAABS0UzDR_g028.png

3.1 源码说明

int main()
{
	int ret = 0;
    if(1 == argc){
        printf("nerr: Missing parameter!n");
        printf("================= [usage] ==================n");
        printf("example:n");
        printf("t%s < 22/31 >n", argv[0]);
        printf("--------------------------------------------n");
        return 0;
    }
    
	char *pbuf = NULL;
	int ret = 0;
	int skip = 0;
	FILE *fp = NULL;

	ret = mipicamera_init(CAMERA_INDEX, CAMERA_WIDTH, CAMERA_HEIGHT, 0);
	if (ret) {
		printf("error: %s, %dn", __func__, __LINE__);
		goto exit3;
	}
	pbuf = (char *)malloc(IMAGE_SIZE);
	if (!pbuf) {
		printf("error: %s, %dn", __func__, __LINE__);
		ret = -1;
		goto exit2;
	}
	//跳过前10帧
	skip = 10;
	while(skip--) {
		ret = mipicamera_getframe(CAMERA_INDEX, pbuf);
		if (ret) {
			printf("error: %s, %dn", __func__, __LINE__);
			goto exit1;
		}
	}

	/* tips: 可以在Ubuntu下用mplayer播放录制图像
	*	adb pull /tmp/photo
	*	mplayer -demuxer rawvideo -rawvideo w=1920:h=1080:format=bgr24 photo -loop 0
	*/
	fp = fopen("/tmp/photo", "w");
	if (!fp) {
		printf("error: %s, %dn", __func__, __LINE__);
		ret = -1;
		goto exit2;
	}
	fwrite(pbuf, 1, IMAGE_SIZE, fp);
	fclose(fp);

exit1:
	free(pbuf);
	pbuf = NULL;
exit2:
	mipicamera_exit(CAMERA_INDEX);
exit3:
    return ret;
}

其中mipicamera_init(),mipicamera_getframe(),mipicamera_exit()是对v4l2接口调用的易用化封装。具体实现于02_camera/commonApi/mipi_camera.c。

审核编辑 黄宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 摄像头
    +关注

    关注

    61

    文章

    5115

    浏览量

    103482
  • 开发板
    +关注

    关注

    26

    文章

    6413

    浏览量

    120711
  • MIPI
    +关注

    关注

    11

    文章

    364

    浏览量

    51087
  • rk3576
    +关注

    关注

    1

    文章

    296

    浏览量

    1668
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    飞凌嵌入式RK3576开发板MIPI-CSI调试——通路解析

    本文介绍了RK3576处理器的Camera通路,以及如何配置MIPI-CSI摄像头的不同输出格式。
    的头像 发表于 07-19 13:43 3944次阅读
    飞凌嵌入式<b class='flag-5'>RK3576</b><b class='flag-5'>开发板</b>的<b class='flag-5'>MIPI-CSI</b>调试——通路解析

    如何通过RK3576配置MIPI-CSI摄像头的不同输出格式

    支持5路摄像头的输入。 本篇内容就通过OK3576-C开发板为大家介绍一下RK3576处理器的Camera通路,以及如何配置MIPI-CSI
    发表于 07-25 09:56

    【米尔RK3576开发板评测】带你初步了解米尔RK3576这块开发板

    这几天刚收到米尔邮寄过来的米尔RK3576开发板,收到板子的拆箱的第一感觉就是惊艳。巴掌大小的一块开发板上集成度非常高,布线很合理,元件布局也很整齐,黑色的板子也非常高端。 给大家看一下收到
    发表于 12-18 20:35

    【米尔RK3576开发板评测】+项目名称【米尔RK3576开发板评测】一个视频和你共同认识一下米尔RK3576开发板

    收到米尔RK3576开发板后,也对米尔RK3576开发板进行了了解,米尔这款开发板真的很不错,下面是官方的一些参数介绍: MYC-LR
    发表于 12-18 20:50

    米尔瑞芯微RK3576实测轻松搞定三屏八摄像头

    推出的MYD-LR3576开发板开发了一个三屏异显,8路摄像头输入的DEMO, 实测下来,RK3576轻松搞定了该任务。 MYD-LR
    发表于 01-17 11:33

    【作品合集】米尔RK3576开发板测评

    米尔RK3576开发板测评作品合集 产品介绍: RK3576 是瑞芯微一款面向AI市场推出的高性能处理器,它配备了四核Cortex-A72和四 核Cortex-A53 的 CPU,集成了6TOPS
    发表于 09-11 10:19

    360环视硬件平台为什么推荐使用米尔RK3576开发板

    。凭借先进的 SoC 架构与完善的多媒体引擎,它不仅具备 12路摄像头 的高清视频接入能力,还能将编码与 RTSP 低延迟推流 组合成体系化方案,为360环视提供稳定可靠的底座。 米尔RK3576开发板
    发表于 09-19 17:38

    RK3576机器人核心:三屏异显+八路摄像头,重塑机器人交互与感知

    开发板的实际演示证明,RK3576能够轻松处理三屏显示和八路摄像头输入的复杂任务,同时保持低功耗和低发热特性,为机器人应用提供了理想的性能基础。 实测见证:RK3576轻松驾驭三屏八
    发表于 10-29 16:41

    RK3576有多强?实测三屏八摄像头轻松搞定

    的MYD-LR3576开发板开发了一个三屏异显,8路摄像头输入的DEMO,实测下来,RK3576轻松搞定了该任务。MYD-LR
    的头像 发表于 01-16 08:06 1606次阅读
    <b class='flag-5'>RK3576</b>有多强?实测三屏八<b class='flag-5'>摄像头</b>轻松搞定

    基于RK3576开发板MIPI-DSI使用

    MIPI DSI接口是由MIPI联盟下的Display工作组指定的DSI(Display Serial Interface)的接口标准。rk3576开发板使用
    的头像 发表于 05-06 16:11 1636次阅读
    基于<b class='flag-5'>RK3576</b><b class='flag-5'>开发板</b>的<b class='flag-5'>MIPI</b>-DSI使用

    基于RK3576开发板的网络摄像头方案

    本地RTSP拉流的操作指南,并详细说明了代码组成、调用关系及开发指南,包括CMakeLists.txt文件解析和build.sh编译脚本的使用。整体方案旨在帮助用户快速上手并实现四路MIPI-CSI摄像头的流媒体输出。
    的头像 发表于 05-12 17:54 1206次阅读
    基于<b class='flag-5'>RK3576</b><b class='flag-5'>开发板</b>的网络<b class='flag-5'>摄像头</b>方案

    迅为RK3576开发板摄像头实时推理测试-ppseg 图像分割

    迅为RK3576开发板摄像头实时推理测试-ppseg 图像分割
    的头像 发表于 07-11 14:31 1032次阅读
    迅为<b class='flag-5'>RK3576</b><b class='flag-5'>开发板</b><b class='flag-5'>摄像头</b>实时推理测试-ppseg 图像分割

    迅为八核高算力RK3576开发板摄像头实时推理测试 ppyoloe目标检测

    迅为八核高算力RK3576开发板摄像头实时推理测试 ppyoloe目标检测
    的头像 发表于 07-14 15:18 1413次阅读
    迅为八核高算力<b class='flag-5'>RK3576</b><b class='flag-5'>开发板</b><b class='flag-5'>摄像头</b>实时推理测试 ppyoloe目标检测

    迅为八核高算力RK3576开发板摄像头实时推理测试 RetinaFace人脸检测

    迅为八核高算力RK3576开发板摄像头实时推理测试 RetinaFace人脸检测
    的头像 发表于 07-21 15:29 1249次阅读
    迅为八核高算力<b class='flag-5'>RK3576</b><b class='flag-5'>开发板</b><b class='flag-5'>摄像头</b>实时推理测试 RetinaFace人脸检测

    RK3576基于UVC协议USB摄像头配置指南,手把手教你搞定

    瑞芯微RK3576芯片平台基于UVC协议,配置USB摄像头实现即插即用的适配采集功能,基于触觉智能RK3576开发板PurplePiOH2演示。UVC协议UVC协议简介UVC
    的头像 发表于 01-16 17:11 1105次阅读
    <b class='flag-5'>RK3576</b>基于UVC协议USB<b class='flag-5'>摄像头</b>配置指南,手把手教你搞定