基于海思soc的智能产品开发(camera sensor的两种接口)

news/2025/1/7 18:10:19/

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】

        对于嵌入式开发设备来说,除了图像显示,图像输入也是很重要的一部分。说到图像输入,就不得不提到camera。目前camera这部分,除了之前说过的usb camera之外,还有一种方案就是soc和camera sensor进行直连处理,而不是通过usb预处理一下。

884349563ec94a99a79c87ee9f10e52c.png

1、usb camera的使用

        我们看到的usb camera,其实内部已经经过mipi、isp、uvc处理三个部分处理过了。mipi是连接sensor,isp是图像内部优化,uvc是usb输出。所以这个时候看到的图像,已经是处理过之后的图像。如果现场对sensor要求不高、或者没有特殊的要求、也没有特殊场景的调试需求,这种情况下是可以考虑usb camera的。但如果要求比较高,比如帧率、夜视、分辨率、大小、价格方面有自己的需求,最好是soc直接控制sensor。

2、sensor数据传输接口

        从数据传送的角度看,一般分成mipi接口和dvp接口。它们的控制接口都是i2c,这一点上没有区别。i2c主要就是给sensor进行参数设置,大小、数据格式、分辨率、帧率、曝光等等。真正数据传输还是要通过mipi或者dvp来进行。

3、mipi接口

        如果对sensor传输速度要求比较高,一般都是使用mipi传输。mipi本身采用低压、差分传输,很容易可以把速度提上去,这方面dvp是没有办法做到的。通常而言,以500万像素作为分水岭,500万以上只能用mipi,500万以下可以用mipi,也可以用dvp。

        当然mipi除了做camera数据传输,还可以做屏幕显示,这就是另外一个topic了。因此,比较通俗的说法,除了点sensor,还有点屏幕这个需求。

4、dvp接口

        dvp接口是另外一种常用的sensor接口。通常而言,camera sensor都会同时支持mipi接口和dvp接口。从pin脚来看,mipi引脚少一点,而dvp接口和vga接口特别像。两者都有行同步、场同步、数据时钟、数据信号。如果大家还是不太理解,可以找一些vga的资料对比着看,这样就会理解得更加深刻。

        很多fpga都喜欢自己写dvp接口,直接驱动sensor,也是这个道理。毕竟它和vga太像了。此时如果需要mipi驱动sensor的话,就需要调用厂商给出的mipi ip来进行处理了。

5、点sensor只是开始

        很多时候,我们所说把一颗sensor驱动起来,就是在linux上面配置好设备树,写好sensor的i2c驱动。这种驱动一般都会参考厂家的手册去进行处理。至于mipi、dvp,这些驱动soc厂家都会提前写好,我们会配置即可。因此,所谓的点sensor,主要还是编写i2c的驱动代码。

        当然写好驱动,配置好设备树,camera可以正常出图,这只是第一步,难的是isp调教(逆光、白平衡、宽动态等)、v4l2调试、uvc输出、视频编解码、ffmpeg整合、rtsp送出等等。所以说,点sensor只是第一步操作。

6、学习sensor的另外一种方法

        很多soc厂家对自己的camera驱动都讳莫如深,常常让人不知道该怎么学。这个时候,其实可以学学mcu怎么点sensor驱动的、怎么实时显示到lcd屏幕的。比如stm32 mcu,里面就集成了dcmi接口,专门可以处理sensor dvp信号。此时加上对应的iic代码、dcmi代码、dma代码和lcd代码,很快就知道是怎么回事了。

        至于isp,这部分一般的mcu是没有做的,倒是可以看看一些自带isp的sensor,上面的寄存器是如何配置的。


http://www.ppmy.cn/news/1561018.html

相关文章

Android授权USB使用权限示例

使用效果&#xff1a; 授权实现过程&#xff1a; 1.在AndroidManifest.xml中增加android.hardware.usb.action.USB_DEVICE_ATTACHED的action及meta-data action: <action android:name"android.hardware.usb.action.USB_DEVICE_ATTACHED"/> meta-data: &l…

Spring Boot AOP日志打印实现

在 Spring Boot 3.1.12 中使用 AOP 实现日志打印&#xff0c;记录前端传入的参数和后端返回的数据&#xff0c;可以按照以下步骤进行&#xff1a; 添加依赖 首先&#xff0c;确保你的 pom.xml 文件中包含了 Spring AOP 的依赖&#xff1a; <dependency><groupId>…

k8s基础(4)—Kubernetes-Service

Service概述 抽象层 ‌k8s的Service是一种抽象层&#xff0c;用于为一组具有相同功能的Pod提供一个统一的入口地址&#xff0c;并通过负载均衡将网络流量分发到这些Pod上。‌ Service解决了Pod动态变化的问题&#xff0c;例如Pod的IP地址和端口可能会发生变化&#xff0c;通过…

跨云迁移数据仓库中数据的方法

在两个云数据仓库&#xff08;例如 Amazon Redshift、Google BigQuery、Snowflake 或 Azure Synapse Analytics&#xff09;之间迁移数据需要仔细规划&#xff0c;以确保流程安全、稳定和高效。 在两个云数据仓库之间迁移数据的最佳解决方案取决于多个因素&#xff0c;包括数据…

六十二:HTTP/3: QUIC 协议格式

随着互联网技术的不断进步&#xff0c;网络协议的革新成为提升传输效率和用户体验的关键。HTTP/3 是超文本传输协议的最新版本&#xff0c;其核心基于 QUIC 协议&#xff0c;带来了诸多革命性的变化。在本文中&#xff0c;我们将深入探讨 HTTP/3 的 QUIC 协议格式及其重要性。 …

下载ffmpeg执行文件

打开网址&#xff1a;Download FFmpeg 按下面步骤操作 解压文件就可以看到ffmpeg的执行文件了&#xff0c;需要通过命令行进行使用&#xff1a; ffmpeg命令行使用参考&#xff1a; ffmpeg 常用命令-CSDN博客

K8s集群平滑升级(Smooth Upgrade of K8S Cluster)

简介&#xff1a; Kubernetes ‌ &#xff08;简称K8s&#xff09;是一个开源的容器编排和管理平台&#xff0c;由Google开发并维护。它最初是为了解决谷歌内部大规模容器管理的问题而设计的&#xff0c;后来在2014年开源&#xff0c;成为云原生技术的核心组成部分。‌‌1 K8…

ROS2软件架构全面解析-rclpy软件框架

前言 本章是详细介绍ROS2通信中间件中rclpy模块软件框架。 不了解背景的同学请先看&#xff1a; ROS2软件架构全面解析-学习如何设计通信中间件框架: link rclpy软件框架 rclpy &#xff1a;ROS Client Library for the Python language. 上面这句话清楚的描述rclpy对于ROS…