嵌入式开发之mipi协议基础学习

嵌入式开发之mipi协议基础学习MIPI——Mobileindustryprocessinterface多家移动开发或者应用商共同筹划接口标准联盟节约成本,加快产品开发速度内容丰富,显示、照相机、电源管理、射频、存储接口等等CIS(cmosimagesensor)中仅用到了mipi协议中的csi-2(cameraserialinterface二代,标识生成要求)和D-phy

大家好,又见面了,我是你们的朋友全栈君。

MIPI ——Mobile industry process interface

多家移动开发或者应用商共同筹划

接口标准联盟

节约成本,加快产品开发速度

内容丰富,显示、照相机、电源管理、射频、存储接口等等

CIS(cmos image sensor)中仅用到了mipi协议中的csi-2(camera serial interface二代,标识生成要求)和D-phy(物理层,输出通道要求)

Camera端做transmitter,平台端做receiver

简而言之 mipi的作用就是:

1.数据并行转换成串行;

2.功能复用,节约传输线;

3.相对提高传输品质和速度;

4.增加传输距离;

5.适用新的平台需求;

嵌入式开发之mipi协议基础学习

为什么mipi那么NB,下面对比一下就照了。

嵌入式开发之mipi协议基础学习

并口需要

Vsync:帧同步信号

Hsync:行同步信号

和8条数据线,但这10根线,mipi只需要5根。所以,我行,我来!

嵌入式开发之mipi协议基础学习

Clock和 data中体现差分即低位先出,故如此表示,差分信号P高N低表1,P低N高表0.

现在对mipi大概有点小小的概念了。再给你看看她的照片,保证你喜欢。MIPI 输出长什么样?

当当当当~~

嵌入式开发之mipi协议基础学习

帧头标识、帧尾标识(分别由vsync上升下降沿生成)

行头标识、行尾标识(分别由hsync上升下降沿生成)

有效数据长包。包含行标识,所以可以省略line_sync短包

相对于并口传输,即是将vsync、hsync与数据共通道复用传输。

总之一句话,能用软件解决的一定不要动硬件,能动手的一定不要动嘴。人生哲理。

什么?不要看PS过的照片!好吧,下面发个素颜照。

嵌入式开发之mipi协议基础学习

是不是美如画。

而mipi的信号符合其通信协议,

规定其起始电压在1.1~1.3V,等等,如下图(我比较懒,不服来辩)。这是其电气要求。

嵌入式开发之mipi协议基础学习

然后软件方面,如下图:

嵌入式开发之mipi协议基础学习

字节(byte)为基本传输单元,每个byte中有8位(bit)

Sync dyte:用来同步数据开始,告知接下来为有效数据

DATA TYPE:该包传输的是什么格式的数据YUV422(1E)/RAW8(2A)/RAW10(2B)

WC(16bits)= PAYLOAD中的byte数量(即输出窗口的1行中有多少个字节,也即列数。注意raw10为列数的1.25倍,raw12为列数的1.5倍)

ECC:校验datatype和wc是否出错

Payload=image data

CSC:PAYLOAD数据传输校验

*由于插入了许多数据标识,所以会影响hb或者vb的最小值

MIPI DPHY 终端概念

嵌入式开发之mipi协议基础学习

mipi的信号线是一对差分线,理论上可以高电平传一个数据,低电平也传一个,速度又快,功耗又小。

很多时候,平台端的mipi时序和Sensor端如果不匹配,就会出问题。硬件问题的话,就亮信号!

嵌入式开发之mipi协议基础学习

Term未连接情况信号时这样滴。正常的是这样滴:

嵌入式开发之mipi协议基础学习

Sensor输出在设计时已经考虑,应用时主要是FPC或者PCB走线影响

通常要求:

差分对内两线等长,尽量少折线,方向一致;

差分对间地线走地,减小串扰;

线上过孔最少;

至少一侧有铺地;

线长最长不超过20cm;

尽量远离天线;

目的:

阻抗匹配、阻抗连续,减少信号损失,获得较高的信号完整性;

减少信号间耦合,保证信号完整性;

减少与其他射频信号的相互作用,保证各信号的质量;

Settle count

主要是hs_prepare+hs_zero时间与其匹配;

通常设定T_settle count为T_(hs_prepare+hs_zero)/2;

是平台设定参数,通常不改默认值,与pclk频率有关;

不匹配会引起的问题:

卡顿;

不出图;

不规则滚屏、拍照分屏

调节方法:

增大或者减小T_hs_prepare、hs_zero,参数最小值为1,有时需要调的很不可思议才可行,这是需要配成manual模式。

嵌入式开发之mipi协议基础学习

DDR采样,即在时钟的上升和下降沿均采集数据,保证高速传输又可以有效降低时钟频率,要求时钟和数据相位为正交关系。

实际中因为负载差异,会限制时钟的建立速度,同时数据的不规律输出(不是确定的输出序列),所以对setup或者hold时间要求不同。可能造成误码,引起麻点,严重时会丢行。

数据传输速率,单位为bps(bit per second)

mipi_data=pclk_tot*10(raw10)

=pclk_tot*8 (raw8)

pclk_tot=数字输出并行时钟pclk * 数字通道数M

mipi N通道,每通道数据率=mipi_data/N

Mipi时钟速度=每通道数据率/2= mipi_data/4

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/141835.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • SchedulerFactoryBean初始化监听

    SchedulerFactoryBean初始化监听SchedulerFactoryBean初始化监听今天碰到一个问题,使用的是Quartz动态控制定时器的运行,功能已经完善,但是每次上线定时项目的时候,总要重启,一重启,所有定时任务自动就停止了,就会跟数据库对应的定时器状态不一致,在网上找了半天,找到了关于SchedulerFactoryBean初始化监听的东西,网上的文章大部分是SchedulerFactoryBean初始化解析,全部去研究…

  • ubuntu20.04 美化_ubuntu19美化

    ubuntu20.04 美化_ubuntu19美化本文目录效果终端文件管理器步骤Ubuntu上的准备工作tweaktool安装火狐浏览器/谷歌浏览器安装插件安装插件下载主题、图标等配置终端的标题栏太大???方案1方案2效果终端文件管理器步骤Ubuntu上的准备工作tweaktool安装sudoaptinstallgnome-tweak-tool火狐浏览器/谷歌浏览器安装插件在浏览器的插件管理界面搜索gnomeshellintegration插件,然后安装。安装插件上面的东西都准备好之后,去gnome插件官网

  • GHOSTXPSP3电脑爱好者V9.9美化修正版

    GHOSTXPSP3电脑爱好者V9.9美化修正版全自动无人值守安装,采用万能GHOST技术,安装系统过程只需5-8分钟,适合新旧各种机型。集成DX9.0c最新版、双核补丁。集成常用VB/VC++2005、2008、2010、2012、2013/运行库、万能驱动助理稳定版安装过程会自动删除各分区下可能存在的AUTORUN病毒TcpIP连接数修改为1000;破解Uxtheme.dll可自由添加美化主题。我的文档收藏夹…

  • 兄弟连新版Linux视频教程

    兄弟连新版Linux视频教程兄弟连新版Linux视频教程目录:F:\linux\兄弟连新版Linux视频教程├(1)云计算是什么东西集群又是嘛玩意?.mp4├(2)兄弟连新版Linux教程1.1.1Linux系统简介-UNIX发展历史和发行版本.mp4├(3)兄弟连新版Linux教程1.1.2Linux系统简介-Linux发展历史和发行版本.mp4├(4)兄弟连新版Linux教程1.2Linux系统简介-开源软件…

  • BatchMD5Modify_4F-MDMB-BUTINACA

    BatchMD5Modify_4F-MDMB-BUTINACA写前bb最早是看了matlab的代码,搭了环境,demo也跑了,就再也没碰过了。之后想自己把测试和训练部分全部跑通,找了个用pytorch写的代码,看的过程中发现自己还是很多细节部分不是很清楚。虽然文章写的很一笔带过,但是看着代码会发现还是很多疑问的。代码地址:gayhub代码的requirements:UbuntuPython2.7(useAnaconda2.*here)…

  • ubuntu安装go语言_go语言web服务器

    ubuntu安装go语言_go语言web服务器来源:微信公众号「编程学习基地」文章目录简介下载go安装包环境配置添加环境变量第一个go语言程序go入门学习简介go语言是一种开源的、语法精简的静态编程语言,它的开源社区比较庞大,应用场景非常广范。可以用于系统监控、容器技术(Docker)、大数据、存储技术、分布式系统(HyperledgerFabric)、消息系统(Kafka客户端)、服务器管理、安全工具、Web工具等。这里介绍在Linux上安装并配置go。下载go安装包到GoLang中国,下载Go语言安装包。解压tar-xzv..

    2022年10月12日

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号