Linux camera驱动开发(mipi、d/cphy、dsi和csi2)

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

说到camera,除了i2c之外,还有一个概念有必要了解下,那就是mipi。当然不仅是mipi,还有d/cphy、dsi、csi。这些概念也有必要了解清楚,这样在后续的开发中才会游刃有余。

1、mipi bus

mipi是一个总线的概念,它和485、usb、pcie这些总线其实是一回事。只不过像485总线,它只有一对差分线,而mipi差分线的数量要多一点。而且,为了实现数据的高速传输,mipi差分线的电压也要低不少。

2、dphy和cphy

dphy和cphy,都是实现mipi的物理协议。**两者最大的区别,就是dphy比cphy多一份clk差分,cphy没有独立的时钟总线,因为它把时钟编码到了数据里面去了。**实际应用中,我们遇到的大多数mipi接口都是使用dphy协议。如果想记得简单一点,可以直接记住dphy,忽视cphy。

本身dphy类似于tcp/ip里面的数据传输层,为上面的应用协议提供数据传输的方法。所以,它不光支持数据的输出,也支持数据的输入。

3、csi2

csi,也就是camera serial interface的意思。csi早期有版本csi1,不过现在几乎不使用了。目前用的最多的这个版本是csi2。大部分camera sensor支持的csi版本,也是csi2。所以,从传输方向上说,csi主要负责的是数据输入,整体结构就是csi2 over dphy。

4、dsi

dsi,全称为display serial interface。它一般用作是数据的输出。前面我们说过,目前使用的dsi协议,底层依赖的物理层都是dphy,也就是说大部分mipi屏幕底层支持的物理层都是dphy。所以就显示这一部分来说,dsi over dphy就是事实上的标准。

5、mipi-d/cphy0-dsi0 & mipi-dcphy0-csi0

很多soc芯片上面,都可以看到类似标题这样的描述。对于我们使用者来说,要学会理解里面的意思。首先,mipi代表mipi协议栈,这点可以pass。接下来是d/cphy,这说明对应接口本身同时支持dphy和cphy,虽然我们不怎么用cphy,但soc自身是支持这个协议的。最后就是dsi0、csi0,很多时候phy只有一套,但是它是用来做屏幕输出,还是camera输入,这个取决于我们自己。也就是说,dsi0和csi0是互斥使用的,你用了dsi0,就不能用csi0,反之亦然。

实际使用的时候,接口做dsi用,还是csi用很容易看出来的,csi通常都是接camera sensor,基本上都会多一个i2c接口。

6、mipi-dphy0-dsi0

除了上面说的第5种,还有一种就是mipi-dphy0-dsi0这种。相对而言,这就比较简单了,意思就是说,当前接口只支持dhpy,不支持cphy,很多cost down的soc都会这么干。

7、mipi驱动部分

mipi驱动和平台相关,大部分都是平台写好的,我们会改、会配置即可,一般不需要自己独立写驱动代码。这一点和camera sensor驱动不太一样。

相关推荐
cynicism??10 小时前
Linux 与 ZXISOS 驱动开发架构对比
linux·驱动开发·架构
女神下凡11 小时前
芯参谋(83):AliOS Things_驱动开发指南
arm开发·驱动开发·单片机·嵌入式硬件·设计规范·1024程序员节
万物智能信息科技11 小时前
指纹识别传感器驱动开发—【万物智能之开源鸿蒙OpenHarmony系统实战开发系列教程】
驱动开发·华为·开源·harmonyos·鸿蒙
女神下凡11 小时前
芯参谋(84):Linux eMMC 驱动开发指南
linux·运维·arm开发·驱动开发·单片机·嵌入式硬件
硅基手札1 天前
CAN 技术系列 08 · CAN 控制器寄存器与 IP 架构
驱动开发·架构·嵌入式开发·通信协议·can总线
硅基手札1 天前
CAN 技术系列 09 · CAN 传输模式:轮询 / 中断 / DMA
驱动开发·bsp·嵌入式开发·通信协议·can总线
ccbw161 天前
CH9444X多芯片组合的通道扩展架构与损耗叠加分析
驱动开发·架构·带宽·采集
AI模型调用笔记3 天前
Copilot Fusion:用 Python 跑通模型级联
人工智能·驱动开发·语言模型·copilot
mounter6254 天前
深入理解 gccrs:GCC 如何实现 Rust 编译器,以及编译 Linux 内核面临的挑战
linux·驱动开发·rust
硅基手札4 天前
CAN 技术系列 04 · CAN 帧格式
驱动开发·嵌入式开发·通信协议·can总线