MIPI CSI-2 Low Level Protocol解读

一、Low Level Protocol介绍

LLP 是一种面向字节的基于数据包的协议,支持使用短数据包和长数据包格式传输任意数据。为简单起见,本节中的所有示例均为单通道配置。

LLP特性:

  • 传输任意数据(与有效载荷无关)

  • 8 位字大小

  • 在同一链路上支持多达四个交错的虚拟通道

  • 用于帧开始、帧结束、行开始和行结束信息的特殊数据包

  • 特定于应用程序的有效负载数据的类型、像素深度和格式的描述符

  • 用于错误检测的 16 位校验码

二、LLP Packet Format

LLP通信定义了两种数据包结构: 长包短包。对于每个数据包结构,从低功耗状态(LPS)退出,后跟传输开始 (SoT) 序列表示数据包的开始。传输结束 (EoT) 序列后跟低功耗状态(LPS)表示数据包结束。

2.1 Long Packet Format

长数据包应由三个元素组成:32 位包头 (PH)、包数据、16位数据包页脚 (PF)。

2.2 Short Packet Format

短包只有SH,没有PH,包含Data ID、Word Count、ECC三部分,WC用来传输短包的数据。

三、Data Identifier(DI)

数据标识符字节包含虚拟通道标识符 (VC) 值和数据类型 (DT) 值。虚拟通道标识符包含在数据标识符字节的两个 MS 位中。数据类型值包含在数据标识符字节的六个 LS 位中。

四、Virtual Channel Identifier

虚拟通道标识符的用途是为数据流中交错的不同数据流提供单独的通道。

虚拟通道标识符编号位于数据标识符字节的前两位。接收方将监视虚拟通道标识符,并将交错的视频流解复用到其相应的通道。最多支持四个数据流有效通道标识符为0到3。

五、Data Type(DT)

“数据类型”值指定有效负载数据的格式和内容。最多支持64种数据类型,共八类,如表所示。在每类中,最多有8个不同的数据类型定义。前两类表示短数据包数据类型。其余六类表示长数据包数据类型。

六、Packet Header Error Correction Code(ECC)

正确地解析数据包的Data Identifier、Word Count和Virtual Channel Extension字段是至关重要的,这是所有后续处理的前提。D-PHY物理层中定义了6-bit包头ECC,能够修正单bit错误,检测2 bits错误,算法细节不是本节重点,想要了解的请自行百度。

七、Checksum Generation

为了检测传输中可能出现的错误,在每个数据包上计算校验和。校验和实现为 16 位 CRC。生成器多项式为 x16+x12+x5+x0。

校验和的传输如图所示

八、Packet Spacing

在LLP数据包之间,必须始终有进出低功耗状态(LPS)的转换。下图显示了LPS的数据包间隔。数据包间隔不必是 8 位数据字的倍数,因为接收方将在 SoT 序列期间重新同步到正确的字节边界,然后再进行下一个数据包的 Packet Header。

注:想要mipi csi-2协议文档的,《MIPI CSI-2.pdf》,请私聊我。

一个专注于“嵌入式知识分享”、“DIY嵌入式产品”的技术开发人员,关注我,一起共创嵌入式联盟。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/293000.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Chatgpt掘金之旅—有爱AI商业实战篇(二)

演示站点: https://ai.uaai.cn 对话模块 官方论坛: www.jingyuai.com 京娱AI 一、前言: 成为一名商业作者是一个蕴含着无限可能的职业选择。在当下数字化的时代,作家们有着众多的平台可以展示和推广自己的作品。无论您是对写书、文…

MSPF5438数据卫星透传

最近在网上找了个项目来做,实现功能简单描述就是通过Lora模块E30-170T27D接收上位机发送的数据包,并对接收数据包进行正确性校验,若数据包校验成功则将其储存在W25Q125FV 中,待上位机发送数据包传输完毕指令后,单片机启…

Docker配置Mysql

1.首页搜索mysql镜像 2.选择对应版本的MySQL,点击pull 3.pull完成以后,点击images,这里可以看到刚刚pull完成的mysql版本 4.打开命令界面,运行命令 docker images ,查看当前已经pull的images 5.运行命令设置mysql docker run -it…

【有芯职说】数字芯片BES工程师

一、 数字芯片BES工程师简介 今天来聊聊数字芯片BES工程师,其中BES是Back End Support的缩写,就是后端支持的意思。其实这个岗位是数字IC前端设计和数字IC后端设计之间的一座桥,完成从寄存器传输级设计到具体工艺的mapping和实现。这个岗位在…

Linux文件(系统)IO(含动静态库的链接操作)

文章目录 Linux文件(系统)IO(含动静态库的链接操作)1、C语言文件IO操作2、三个数据流stdin、stdout、stderr3、系统文件IO3.1、相关系统调用接口的使用3.2、文件描述符fd3.3、文件描述符的分配规则3.3、重定向3.4、自制shell加入重…

HCIP【GRE VPN、MGRE VPN与PPP验证综合实验】

目录 实验要求: 实验拓扑图: 实验思路: 实验步骤: 一、配IP地址 (1)配置所有设备接口的IP地址: (2)配置私网与公网接口的缺省路由使得公网可通: 二、P…

前端面试题---->JavaScript

const声明的对象属性和数组的值可以被修改吗?为什么 原因:当使用const声明一个对象或数组时,实际上是保证了对象或数组的引用不会被修改,但对象或数组本身的属性或元素是可以被修改的。这是因为const只能保证指向的内存地址不变&a…

操作教程|在MeterSphere中通过SSH登录服务器的两种方法

MeterSphere开源持续测试平台拥有非常强大的插件集成机制,用户可以通过插件实现平台能力的拓展,借助插件或脚本实现多种功能。在测试过程中,测试人员有时需要通过SSH协议登录至服务器,以获取某些配置文件和日志文件,或…

ES学习日记(四)-------插件head安装和一些配套插件下载

前言 接上节,第三方插件选择了时间久,功能丰富,长得丑的head,head 插件在ES 5版本以前开箱即用非常简单,ES 5版本以后需要运行在node环境下,所以我们要先准备一下环境 一.安装Git yum -y install git 二.安装node 安装包位置node for linux下载 解压…

CaT论文翻译

CaT: Balanced Continual Graph Learning with Graph Condensation CaT:通过图压缩实现平衡的连续图学习 Abstract 持续图学习(CGL)的目的是通过以流方式输入图数据来持续更新图模型。由于模型在使用新数据进行训练时很容易忘记以前学到的知识,因此灾…

什么是检索增强生成(Retrieval-Augmented Generation,RAG)

什么是RAG? 检索增强生成(Retrieval-Augmented Generation,RAG),是指为大模型提供外部知识源的概念。能够让大模型生成准确且符合上下文的答案,同时能够减少模型幻觉。 用最通俗的语言描述:在已…

向量点乘有哪些作用呢

如下: 1.找到两个向量之间的夹角(不用多说) 2.求一个向量投影在另一个向量的投影: 我们把图中b的在a上的投影向量称作b1吧,因为b1就在a上,所以只需要求出b1的大小,然后乘以a的单位向量,我们就得到向量b1了…

Unity 渲染

渲染的三个阶段 1:应用阶段 1.1 数据的准备 遮挡剔除,层级剔除。 渲染顺序,UI在Herachy窗口按照层级渲染,其余物体由大概按照先近后远。 打包渲染数据发送给显存,主要包括有模型信息,变换矩阵&#xff0c…

归并排序---分治法

1、算法的概念 归并排序:是创建在归并操作上的一种有效的排序算法。算法是采用分治法的一个非常典型的应用,且各层分治递归可以同时进行。归并排序的思路简单,速度仅次于快速排序,为稳定排序算法,一般用于对总体无序&…

MoonBit MeetUp回顾——张正、宗喆:编程语言在云原生与区块链领域的技术探索

宗喆和张正分别给我们带了 KCL 相关的最新进展,由蚂蚁集团开发的 Rust 编写的开源 DSL,目标是优化云原生策略配置和用户体验。它通过引入动态配置管理、配置校验和基础设施抽象等核心概念,解决开发者认知负担、配置膨胀和标准化工具缺乏的问题…

[Windows]服务注册工具(nssm)

文章目录 官网下载地址百度云下载地址NSSM常用命令 使用场景:例如现在我们想开启自动启动一个Java服务,nginx,node等。 官网下载地址 https://nssm.cc/download 百度云下载地址 链接:https://pan.baidu.com/s/111fkBWIS7CTlWIj80Kc8Sg?pwdanan 提取码…

python_2

文章目录 题目一运行结果 题目二运行结果 题目一 代码如下: def merge():ls_0 input("输入一个列表(空格隔开):").split()ls_1 []for i in ls_0:ls_1.append(i)ls_1.sort()if ls_0 ls_1:print("这是一个有序列表")else:print(&qu…

[Android]模拟器登录Google Play失败

问题: 模拟器登录Google Play失败,提示couldnt sign in there was a problem communicating with google servers. try again later. 原因: 原因是模拟器没有连接到互联网,打开模拟器中Google浏览器进行搜索一样不行。 解决&am…

数据结构--循环链表(C语言实现)

一.循环链表的设计 typedef struct CNode{ int data; struct CNode* next; }CNode ,*CList; 2.循环链表的示意图: 3.循环链表和单链表的区别: 唯一区别,没有空指针,尾节点的后继为头,为循环之意. 二.循环链表的实现 //初始化return true; }//返回key的前驱地址,如果…

蓝桥杯省赛刷题——题目 2656:刷题统计

刷题统计OJ链接:蓝桥杯2022年第十三届省赛真题-刷题统计 - C语言网 (dotcpp.com) 题目描述 小明决定从下周一开始努力刷题准备蓝桥杯竞赛。他计划周一至周五每天做 a 道题目,周六和周日每天做 b 道题目。请你帮小明计算,按照计划他将在第几…