(转载)摄像头 —— MIPI CSI-2简介

《摄像头 —— MIPI CSI-2简介》 

概述

  本文简单介绍MIPI CSI-2协议,根据MIPI联盟的官方文档MIPI Alliance Specification for Camera Serial Interface 2 (CSI-2),描述其协议层次和应用场景。

  CSI (Camera Serial Interface) 是MIPI定义的规范,用于连接摄像头和CPU,传输摄像头的视频信号,最新的规范是2012发布的CSI-3,使用的物理层为M-PHY。而这里要介绍的CSI-2规范在2005发布、使用D-PHY作为物理层。DSI(Display Serial Interface)同样基于D-PHY,不同的是,它主要用于host将图像传输给显示设备。

  在手机的应用中,一般的SoC至少会有两个CSI Receiver控制器,分别用于连接前置和后置摄像头。

  下图为CSI-2的物理连接:

  从图中可以看到,CSI-2接口包含两种连接: CSI和CCI。

  CCI (Camera Control Interface) 为双向连接,兼容I2C协议。该接口主要用来访问camera中的寄存器,以便对其进行配置和控制。通常使用host的I2C host控制器,而camera则作为I2C slave device。不同的厂家的camera寄存器布局和字段定义是不同的。

  CSI接口为单向传输,包括一个clock lane和一到四个的data lane组成,传输图像数据。采用D-PHY物理层协议。

  像USB、Ethernet一样,复杂的协议一般都会分层,方便将复杂的功能拆解,逐个实现和验证。下图为CSI-2的协议栈:

从上到下,分别是:

  • 应用层
  • CSI协议:
    • pixel/byte转换层
    • Low Level Protocol层
    • Lane Management层
  • 物理层

下面分别进行介绍。

D-PHY物理层

  物理层定义了CSI传输介质的电气特性、帧格式以及时钟等。如下图所示:

  CSI中有clock lane和data lane,每个lane包括两个引脚,传输串行差分信号。clock lane传输时钟信号,接收端根据时钟对data lane的引脚进行采样获取数据。

  D-PHY有两种工作状态:低功耗(LP)和高性能(HS)。LP模式下处于单端模式,传输的信号是单端信号,通常用来维持连接;HS模式下则传输的是差分数据信号。

  在data lane上进行数据传输时,一开始发送SoT(start of transmission)信号,然后发送数据payload,最后以EoT(end of transmission)结束,这样为一个完整的物理层上的数据包。接收端通过SoT和EoT识别数据包并获取payload,然后交给上层解析。

  对物理层的访问和控制,是通过PPI(PHY Protocol Interface)进行的。

  关于D-PHY规范,由MIPI的规范文档MIPI_D-PHY_Specification说明。

CSI协议层

  在物理层之上,即是CSI协议层,由三层构成,每一层有着明确的功能。

Pixel/Byte Packing/Unpacking Layer

  这一层中,发送端接收来自应用层的像素数据,并打包成字节格式发送到下一层;在接收端,解包来自LLP层的数据并传输到应用层。

  该层的主要目的是将不同像素格式(例如YUYV, RGBA等)都转换成为8bit字节格式,消除不同图像格式差异,减少传输的复杂度。例如,对于RGB888格式,一个pixel为24 bit,将转换为三个字节;RGB565格式,一个pixel为16 bit,转换为两个字节。而对于RGB444,大小为12 bit,需要通过padding变成RGB565格式,为两个字节,如下图所示:

 

Low Level Protocol

  Low Level Protocol(LLP)层为CSI协议的主要功能层,不仅定义了包格式,还定义了传输中使用的同步机制。

  在发送端,该层负责将上层传输过来的数据打包,添加校验字段,增加同步包,发送到下一层;在接收端首先校验包的完整性,并解析各个字段,根据包类型执行对应操作,将图像数据传到上一层。

  LLP处理的playload数据为经过转换后的纯字节数据,没有像素概念。通过定义不同的的字段和包类型,实现一帧一帧图像数据的传输。

Lane Management

  CSI-2是可以根据性能要求使用data lane进行扩展的。针对不同的带宽要求,data lane的数目可以是一、二、三或者四。发送端根据使用的lane数目,自动将数据分发到各个lane上进行传输;在接收端则将各个lane上的数据重新合并,恢复数据。

  该层将LLP传输过来的packet当作一段纯字节数据,根据lane数目进行分发,而不考虑包里的数据意义。

  例如,对于4个lane的发送,按如下方式分发:

   通过这样的转换之后,一个packet在lane上的传输情况如下图所示:

   从上面的说明可知,pixel/byte转换层的作用为消除pixel格式差异、简化传输,lane management层的作用为分发和拼接packet、提高带宽。这两层都是对数据进行单纯的转换,而不涉及功能逻辑。LLP层才是和传输机制密切相关。因此在后面的讨论中,展示出来的包格式,将只涉及到LLP层,忽略掉其他两层对包格式的作用,即不考虑pixel与byte的转换而直接显示pixel,不考虑lane的拆分而直接在一个lane上展示,如下图所示:

   上图展示了数据传输,黄色背景色的ST(SoT)、ET(EoT)是物理层所添加的包,和中间的数据包一起,表示一次传输。LPS即Low Power State,Dp-Dn处于低功耗工作状态,此时不传输数据。而SP(Short Packet)和LP(Long Packet)为LLP层所定义的包,用于同步以及帧图像数据传输。

传输一帧图像

  LLP作为主要功能的实现,定义了很多包类型、字段和传输机制。这里不详尽地罗列这些细节,而是讲述一下一帧图像在总线上的传输格式,给出一个直观、感性的理解。关于LLP的详细细节,可以参考协议的Chapter 9 Low Level Protocol

  LLP的packet主要有两种: SP (short packet)和LP (long packet)。一个LP包含一行图像数据,一个SP则用来进行特殊的用途,主要是同步,例如表示帧开始(FS)、帧结束(FE)、线开始(LS)和线结束(LE)。其中LS和LE是可选的。

  同时协议规定,每个packet之间,必须有一个LPS状态,即packet spacing。因此在进行传输时,总线上传输的是SoT+SP+EoT、SoT+LP+EoT和LPS。

  一帧必须以FS包开始,以FE包结束,中间为帧高度个数的LP包,每个包含一行图像数据。如下图所示:

  图中底部的VVALID、HVALID和DVALID表明垂直有效和水平有效。

  传输一开始,首先传输FS类型的SP包,表示一帧图像数据开始,进行帧同步。

  然后传输图像数据,一行数据一个LP包。每个LP包由PH (packet header)、Data和PF (packet footer)组成,各字段定义如下如下图所示:

  其中Data字段中的内容,根据不同的图像格式,其组织方式也不一样。这即为上一章Pixel/Byte转换层的内容。关于Data的格式,可以参考Chapter 11 Data Formats

  如RGB565的格式如下:

  在一帧图像的所有数据包传输之后,最后传输一个FE类型的LP包,表示一帧的结束。

Linux驱动

  在Linux系统中,要使用CSI进行图像传输,还需要两种驱动:CSI receiver驱动和CSI sender驱动。

  CSI receiver驱动用来控制SoC上的CSI外设,读取CSI总线上的数据并输出到内存或者ISP上,位于drivers/media/platform/soc_camera。一方面,驱动实现soc_camera子系统和v4l2子系统需要的结构体和回调函数,成为一个v4l2 device,以/dev/video接口暴露给用户层;另一方面,控制SoC中的CSI硬件并调用它的subdev接口,实现具体的传输。

  CSI sender驱动,即camera sensor驱动,位于drivers/media/i2c中。一方面,该驱动通过I2C与sensor通信,配置参数、启动或停止传输图像;另一方面实现soc_camera子系统所需的结构体和回调函数,作为v4l2 device的subdev,提供接口给receiver驱动调用。

通过soc_camera和v4l2子系统框架,sensor驱动和host驱动相互独立,能够被复用。

总结

  本文介绍了CSI-2协议的层次结构,展现总线上实际数据传输情况,提供一个感性的认识。驱动方面的介绍非常简单,没有涉及细节,因为实现细节和内核版本有关,v4l2子系统和soc_camera子系统也一直在进化。

和I2C、SPI总线不同的是,CSI总线因为速度高,需要性能较高的示波器才能进行在线分析。重要的是了解其中的概念,在写驱动时有帮助。

内容概要:本文针对区域综合能源系统(RIES)的多目标优化调度问题,提出了一种基于NSGA-II多目标进化算法并计及电--气综合需求响应(IDR)的优化模型。研究构建了一个涵盖电力、热力与天然气等多种能源形式的RIES集成模型,旨在协同优化“系统运行成本最小化”与“用户用能满意度最大化”这两个相互冲突的目标。通过在Matlab环境中实现NSGA-II算法,成功求解出一组代表最优权衡关系的帕累托前沿解集,为决策者提供了多样化的调度方案选择。文中深入探讨了电--气综合需求响应的精细化数学建模方法,并将其作为一种关键的柔性调节资源融入优化框架,有效实现了负荷侧的削峰填谷,提升了能源的整体利用效率与系统运行的经济性。研究通过详实的仿真算例验证了所提模型与算法的有效性和优越性,结果表明,引入综合需求响应机制能够显著降低系统综合运行成本,同时有效改善用户的用能体验。; 适合人群:具备一定电力系统、优化算法和Matlab编程基础的研究生、科研人员及从事能源系统规划与优化工作的工程师。; 使用场景及目标:① 学习和复现基于NSGA-II的多目标优化在综合能源系统中的应用;② 研究电--气综合需求响应的建模方法及其在系统调度中的作用;③ 获取可用于科研和教学的Matlab代码实例。; 阅读建议:此资源提供了完整的Matlab代码实现,读者应结合文档内容,重点理解综合需求响应的建模逻辑、多目标优化问题的构建以及NSGA-II算法的具体实现步骤,并通过运行和调试代码加深对区域综合能源系统优化调度核心思想的理解。
内容概要:本文围绕分布式光伏储能系统的优化配置方法展开研究,重点探讨了在高比例可再生能源接入背景下,如何通过Matlab代码实现对光伏与储能系统的协同优化配置。研究综合考虑了分布式电源、储能设备以及多渗透率电动汽车接入对配电网的影响,构建了一个涵盖技术、经济与运行约束的多目标优化模型。该模型以提升新能源消纳能力、增强配电网承载能力、降低系统运行成本为核心目标,采用粒子群优化算法(PSO)等智能优化算法进行求解,并通过典型算例仿真验证了所提方法的有效性与实用性。文中不仅提供了完整的Matlab代码实现路径,还系统阐述了模型构建逻辑、算法设计流程及结果分析方法,为相关领域的科研与工程实践提供了可复现的技术参考。; 适合人群:具备一定电力系统基础知识和Matlab编程能力,从事新能源、储能系统、智能电网、电动汽车等领域研究的研发人员及高校研究生。; 使用场景及目标:①应用于分布式光伏与储能系统的规划与设计阶段,实现容量与位置的协同优化配置;②评估高渗透率电动汽车接入对配电网承载能力的影响,并制定相应的优化对策;③提升配电网对可再生能源的接纳能力与运行经济性,支撑新型电力系统的建设与发展。; 阅读建议:建议读者结合文中提供的Matlab代码进行实践操作,深入理解优化模型的构建逻辑、求解算法的实现细节以及仿真结果的分析过程,并尝试在不同参数设置和场景条件下进行仿真实验,以增强对系统运行特性的认知与调控能力。
内容概要:本文提出了一种事件触发驱动的微电网分布式二次协同控制策略,旨在实现孤岛运行模式下微电网的电压与频率精确恢复以及分布式电源间有功/无功功率的精准按比例分配。该策略基于多智能体系统框架,设计了分布式控制协议,通过各节点仅与邻居交换局部信息的方式,避免全局通信依赖,有效降低了通信负担。引入事件触发机制,仅当系统状态偏差超过预设阈值时才进行信息更新与传输,显著提升了通信资源的利用效率,减少了不必要的控制更新。在Simulink中建立了包含多个分布式电源的微电网仿真模型,对所提控制策略进行了全面验证。仿真结果表明,该策略能够快速有效地恢复电压和频率至额定值,实现功率的均衡分配,并展现出优异的动态响应性能、抗干扰能力和系统鲁棒性,同时证明了事件触发机制在保证控制性能的前提下,能大幅减少通信次数,节约系统资源。; 适合人群:具备电力系统自动化、分布式控制理论、微电网运行与控制等相关专业知识的研究生、高校科研人员以及从事新能源发电、智能配电网、微电网工程应用的技术研发工程师。; 使用场景及目标:①用于研究和解决孤岛微电网中多分布式电源的电压频率稳定与功率协同分配问题;②为设计低通信开销、高效率的分布式能源控制系统提供理论依据和技术方案;③适用于需要在保证控制性能的同时优化通信资源使用的微电网二次控制算法开发与仿真验证。; 阅读建议:建议读者结合提供的Simulink仿真模型,深入剖析控制协议的数学推导与实现逻辑,重点理解事件触发条件的设计原则及其对系统稳定性与收敛性的影响,可通过与传统的周期性通信控制方式进行对比仿真,直观体会事件触发机制在降低通信频率和节能方面的显著优势。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值