首页 > 其他分享 >Camera MIPI 协议理解

Camera MIPI 协议理解

时间:2024-08-19 15:16:43浏览次数:10  
标签:MIPI HS 理解 bytes 时序 Camera mode LP Data

D-PHY

1、传输模式

1.LP(Low-Power) 模式:用于传输控制信号,最高速率 10 MHz
HS(High-Speed)模式:用于高速传输数据,速率范围 [80 Mbps, 1Gbps] per Lane 传输的最小单元为 1 个字节,采用小端(低位字节放到内存的低地址端,高位字节放到内存的高地址端)的方式及 LSB first,MSB last(一个芯片的管脚中,对于一个多比特的信号,比如32根的地址线,从低开始按0到31编个号。MSB就是31,LSB就是0。那么如果标记为:ADDR[31:0]就是MSB first的方式,如果标记为ADDR[0:31]就是LSB first的方式)

2、Lane States

LP mode 有 4 种状态: LP00、LP01(0)、LP10(1)、LP11 (Dp、Dn)
HS mode 有 2 种状态: HS-0、HS-1
各状态对应的Dp,Dn定义如下:
image

3、Lane Levels

LP: 0 ~ 1.2V
HS: 100 ~ 300mV,HS common level = 200mV,swing = 200 mv
高通平台,高通文档把各个状态对应的high,low具体到了电压值:

image

其中Single-ended land states即LP模式,differential lane states即HS模式

4、操作模式

在数据线上有 3 种可能的操作模式:Escape mode, High-Speed (Burst) mode and Control mode,下面是从停止状态进入相应模式需要的时序:

Escape mode、

  • Escape mode 需要发送 8-bit entry command 表明请求的动作,比如要进行低速数据传输则需要发送 cmd: 0x87,进入超低功耗模式则发送 cmd: 0x78。在 DSI 中 LP 通讯只用 Data Lane 0。

  • High-Speed mode 进入时序:LP11→LP01→LP00→SoT(0001_1101),退出时序:EoT→LP11,时序图如下:

image

  • Turnaround 进入时序:LP11→LP10→LP00→LP10→LP00,退出时序:LP00→LP10→LP11
    这是开启 BTA 的时序,一般用于从 slave 返回数据如 ACK: 0x84。

5、时序要求

在调试 DSI 或者 CSI 的时候, HS mode 下的几个时序非常重要:T_LPX,T_HS-SETTLE ≈ T_HS-PREPARE + T_HS-ZERO,T_HS-TRAIL,一般遵循的原则为:Host 端的 T_HS-SETTLE > Slave 端的 T_HS-SETTLE。

image

5、数据包类型

短包:4 bytes,由 3 部分组成:

  • Data Identifier (DI) * 1byte: Contains the Virtual Channel[7:6] and Data Type[5:0].
  • Packet Data * 2byte:Length is fixed at two bytes
  • Error Correction Code (ECC) * 1byte:allows single-bit errors to be corrected and 2-bit errors to be detected.

长包:6 ~ 65541 bytes,同样由 3 部分组成:

  • Packet Header(4 bytes) - 包头
    Data Identifier (DI) * 1byte:Contains the Virtual Channel[7:6] and Data Type[5:0].
    Word Count (WC) * 2byte:defines the number of bytes in the Data Payload.
    Error Correction Code (ECC) * 1byte:allows single-bit errors to be corrected and 2-bit errors to be detected.
  • Data Payload(0~65535 bytes) - 有效数据
    Length = WC × bytes
  • Packet Footer(2 bytes):Checksum - 包尾
    If the payload has length 0, then the Checksum calculation results in FFFFh
    If the Checksum isn’t calculated, the Checksum value is 0000h

MIPI规定,传输过程中,包内是200mV、包间以及包启动和包结束时是1.2V,两种不同的电压摆幅,需要两组不同的LVDS驱动电路在轮流切换工作;为了传输过程中各数据包之间的安全可靠过渡,从启动到数据开始传输,MIPI定义了比较长的可靠过渡时间,加起来最少也有600多ns;而且规定各个时间参数是可调的,所以需要一定等待时间,需要缓存,我们用寄存器代替FIFO,每通道128Byte。 
数据与时钟的相位关系:

image

image

CLKp是高电平,CLKn是低电平的时候,差分信号表现为高电平。 
CLKn是高电平, CLKp是低电平的时候,差分信号表现为低电平。 
所以结果就可以等效成红线描述的正弦。 
从正弦可以看出,data在clk的高电平和低电平都有传输数据。
数据通道进入和退出SLM(即睡眠模式)的控制:

image

mipi信号传输分为单端和差分传输。例如: 
LP-00, LP-01, LP-10, LP-11 (单端) 
HS-0, HS-1 (差分) 
Ultra-Low Power State entry command: 00011110 是差分传输,读取方法和上面提到的clk是一样的,需要注意的是Dp和Dn如果同时是高电平或同时是低电平的时候是无效数据,这个时候大概对应的是clk正弦的峰值,只有其中一个是高一个是低才是有效的差分数据。

Camera Serial Interface 2

image

image

标签:MIPI,HS,理解,bytes,时序,Camera,mode,LP,Data
From: https://www.cnblogs.com/regret20-21/p/18358164

相关文章

  • 详尽 | Deeplabv3+结构理解
    https://arxiv.org/pdf/1802.02611.pdfhttps://link.springer.com/chapter/10.1007/978-3-319-10578-9_23目录Deeplabv3+Encoder部分Decoder部分补充摘要SPP 空间金字塔池化层模块Dilated/AtrousConv空洞卷积Deeplabv3+deeplab-v3+是语义分割网络,组合采用空洞......
  • MIPI 速率计算
    MIPI是Camerasensor中常用的接口协议,目前MIPICSI最高传输速率为2.5Gbps/lane。在调试Camerasensor时,经常会遇到MIPI传输速率的问题,本文简单介绍下与MIPI有关的一些速率。像素速率(pixel/s)像素速率和分辨率以及帧率有关,也叫像素时钟。pixel_rate=hts*vts*fps注意......
  • 深入理解指针!!!由浅入深!!1
    1.内存与地址1.1内存计算机上CPU(中央处理器)在处理数据的时候,需要的数据是在内存中读取的,处理后的数据也会放回内存中,而内存空间是如何高效的管理的呢?其实是把内存划分成为一个个的内存单元,每个内存单元的大小取1个字节。每个内存单元也都一个编号,有了这个内存单元的编号,CPU......
  • 深入理解Kerberos:现代网络身份验证的基石
    在当今的分布式计算环境中,网络安全已成为企业和组织最为关注的问题之一。为了确保用户在网络上的身份真实性并保护敏感数据,采用安全且有效的身份验证机制至关重要。而Kerberos,作为一种经典且广泛应用的网络身份验证协议,正是解决这一问题的核心工具之一。一、什么是Kerberos......
  • torch.stack 堆叠函数帮助理解多维数组
    概论在PyTorch中,torch.stack函数用于在指定的维度上将一组张量堆叠起来。这个操作会在指定维度上创建一个新的维度,并将输入张量在该维度上进行堆叠。假设有两个形状相同的张量a和b,它们的形状都是(2,3,4),那么在不同的dim参数下使用torch.stack会产生不同的结果。以......
  • 深入理解 `@DateTimeFormat` 和 `@JsonFormat` 注解
    前言在Java应用程序中,处理日期和时间是一个常见的需求。无论是从数据库读取还是通过API接收数据,正确的日期和时间格式都是确保应用正确运作的关键因素。本文将深入探讨两个常用的注解——@DateTimeFormat和@JsonFormat——以及它们如何帮助我们在Spring和使用Jackson库的应......
  • 线程的理解与创建
    线程定义‌线程是‌操作系统能够进行运算调度的最小单位,它是‌进程中可独立执行的子任务。线程是操作系统中用于并发执行任务的基本单元,每个进程可以包含一个或多个线程。这些线程在进程中并发执行,允许同时处理多个任务,从而提高系统的整体性能和响应速度。线程与进程的区别......
  • 深入理解JVM运行时数据区(内存布局 )5大部分 | 异常讨论
    前言:    JVM运行时数据区(内存布局)是Java程序执行时用于存储各种数据的内存区域。这些区域在JVM启动时被创建,并在JVM关闭时销毁。它们的布局和管理方式对Java程序的性能和稳定性有着重要影响。  一、由以下5大部分组成1.Heap堆区(线程共享)概念:堆是JVM中最大......
  • 深入理解 Spring 三级缓存:解决单例 Bean 循环依赖的利器
    目录一、什么是循环依赖?二、关于传说中的三级缓存1.基本概念:2.三级缓存是哪三级? 3.【举个例子】那三级缓存是怎么解决上述代码例子中的A、B互相依赖呢?详细过程:(理解用)简约版:(理解后看这个就行)三、关于三级缓存的适用范围适用的循环依赖范围:不适用的循环依赖范围:四、......
  • 二分查找不理解?一篇弄懂!--基础二分查找算法详细解释(带简单例题的详细解法)
    本文参考:灵茶山艾府分享丨【题单】二分算法(二分答案/最小化最大值/最大化最小值/第K小)-力扣(LeetCode)二分查找红蓝染色法_哔哩哔哩_bilibili本文主要详细讲解基础的二分算法中的查找,包括原理和模板,并用leetcode和洛谷的一些例题来进行实际题目讲解,如果觉得有帮助或者写......