MIPI计算ECC和CRC工具介绍

news2025/4/22 6:16:07

一、MIPI简介

  MIPI联盟,即移动产业处理器接口(Mobile Industry Processor Interface 简称MIPI)联盟。MIPI(移动产业处理器接口)是MIPI联盟发起的为移动应用处理器制定的开放标准和一个规范。MIPI官网https://mipi.org/
  MIPI目前应用最广泛的还是基于DPHY的接口,有手机和平板的屏幕接口,即DSI接口。还有就是MIPI接口的摄像头,即CSI接口。如下图所示。
在这里插入图片描述

  MIPI物理层 D-PHY支持两种传输模式。
在这里插入图片描述

High-speed (HS) 高速模式
 数据传输通过差分信号;
 低电压差分信号LVDS-200mv;
在这里插入图片描述

Low-power (LP) 低速模式
 在camera和display应用中, 设备在blanking期间进入LP模式以降低功耗;
 在display应用中, LP 模式用于屏幕配置;
 LP模式独立驱动Lane0的两根互连线;
 通道上有4中不同状态 (LP-00, LP-01, LP-10, LP-11)
 LP模式电压为1.2V LVCMOS信号
在这里插入图片描述

  LP数据包格式示例波形如下图,LSB先传输。DI可以分为4种,0x05,0x15,0x29,0x39。
  其中0x05和0x15这两种DI之后紧跟2个字节数据,然后是1个字节的ECC值。
  另外0x29和0x39这两种DI之后是2个字节的Word Count值(低字节先传),然后是1个字节的ECC值。再之后是Word Count个字节的数据,最后是两个字节的CRC值。
在这里插入图片描述
在这里插入图片描述

  HS数据包格式如下图,分为short packet短包和long packet长包两种。
  短包是1个字节的DI,然后是2个字节的数据,最后是1个字节的ECC值。
  长包是1个字节的DI,然后是2个字节的Word Count值,然后是1个字节的ECC值。再之后是Word Count个字节的数据,最后是两个字节的checksum值,也就是CRC值。
在这里插入图片描述
  例如常见的短包有VS start包 0x07000001,HS start包 0x21000012。

1. ECC计算方式

  ECC值是3个字节的纠错码计算结果。ECC纠错码生成方法如下。
在这里插入图片描述

2. CRC计算方式

  CRC计算多项式 polynomial: x^16 + x^12 + x^5 + 1,通常用如下的移位寄存器实现。实际的电路或实现代码通常会转换成并行实现方式。只是由于Data width数据位宽有8bit,16bit或32bit等区分,所以并行实现方式会不同。
在这里插入图片描述

二、ECC和CRC计算工具介绍

  在MIPI传输的LP数据包中,例如用于MIPI屏初始化,会有大量的初始化数据需计算ECC和CRC值。在MIPI传输HS数据包中,一些短包的数据往往是固定的,但有时填充0的DI为0x19的包因为0的字节数会变动,所以也需要计算ECC和CRC值。
  为了方便计算,用python写了个小工具,用于计算ECC和CRC值。不过工具软件在Windows10系统下能正常显示,在Windows7系统下可能会显示错位。其界面如下图。软件下载路径如下https://download.csdn.net/download/cjie221/90536177
在这里插入图片描述

1.ECC计算

  软件界面上半部分可以计算的3个字节的ECC值。举例,要计算0x39,0x03,0x00三个字节的ECC值,与LP的波形图示例符合。
在这里插入图片描述
在这里插入图片描述

  因为三个字节的ECC计算,经常第2和第3字节表示的是Word Count值,如果是计算Word Count个字节0的CRC值,这个界面也会一同计算显示。

2.N个字节0的CRC计算

  如果只是单纯计算N个字节0的CRC值,软件界面的中间部分就可以完成计算。例如计算的3个字节0的CRC值。
在这里插入图片描述

3.N个字节数据的CRC计算

  软件界面可以计算任意数据的CRC值。不过数据需先放在一个txt文档中,例如test.txt文件,需计算数据如下。
在这里插入图片描述

  点击按钮打开txt文档,再点击计算按钮,会提示保存文件,保存的文件每行最后为这一行数据的CRC计算值。
在这里插入图片描述
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

医院管理系统(源码)分享

「医院管理系统(源码) 源码: https://pan.quark.cn/s/b6e21488fce3 第1章 绪论 1.1 项目背景 随着计算机科学的迅猛发展和互联网技术的不断推进,人们的生活方式发生了巨大的变化,同时也推动了整个软件产业的发展。把…

使用Geotools从DEM数据中读取指定位置的高程实战

目录 前言 一、GridCoverage2D对象介绍 1、GridCoverage2D的属性 2、GridCoverage2D核心方法 3、GridCoverage2D中的高级操作 二、指定位置的高程获取 1、存储原理 2、相关属性的获取 3、获取高程的方法 三、总结 前言 在地理信息科学领域,高程数据是至关重…

STM32F103_LL库+寄存器学习笔记05 - GPIO输入模式,捕获上升沿进入中断回调

导言 GPIO设置输入模式后,一般会用轮询的方式去查看GPIO的电平状态。比如,最常用的案例是用于检测按钮的当前状态(是按下还是没按下)。中断的使用一般用于计算脉冲的频率与计算脉冲的数量。 项目地址:https://github.…

直播预告 | TDgpt 智能体发布 时序数据库 TDengine 3.3.6 发布会即将开启

从海量监控数据,到工业、能源、交通等场景中实时更新的各类传感器数据,时序数据正在以指数级速度增长。而面对如此庞杂的数据,如何快速分析、自动发现问题、精准预测未来,成为企业数字化转型过程中的关键挑战。 TDengine 的答案是…

vscode 通过Remote-ssh远程连接服务器报错 could not establish connection to ubuntu

vscode 通过Remote-ssh插件远程连接服务器报错 could not establish connection to ubuntu,并且出现下面的错误打印: [21:00:57.307] Log Level: 2 [21:00:57.350] SSH Resolver called for "ssh-remoteubuntu", attempt 1 [21:00:57.359] r…

【JavaScript 简明入门教程】为了Screeps服务的纯JS入门教程

0 前言 0-1 Screeps: World 众所不周知,​Screeps: World是一款面向编程爱好者的开源大型多人在线即时战略(MMORTS)沙盒游戏,其核心机制是通过编写JavaScript代码来控制游戏中的单位(称为“Creep”)&#…

Prometheus stack命令行接入springboot服务metrics

使用Prometheus Stack监控SpringBoot应用 本文将详细介绍如何使用Prometheus Stack监控SpringBoot应用的metrics。假设你已经安装了Kubernetes集群,并使用Helm安装了Prometheus Stack全家桶。SpringBoot应用已经配置好,暴露了相应的metrics端点。 Sprin…

Git Bash 设置Notepad++作为默认编辑器

网上搜的时候发现别人搞得有点复杂 (绝对正确的方法)Git Bash 设置Notepad作为默认编辑器_git 通过notpad 编辑器-CSDN博客 最简单的方式就是重新安装git,然后在选择编辑器的时候,勾选notepad即可

Qt 制作验证码

Qt 制作验证码 #include <QRandomGenerator> #include <QPainterPath> #include <QPainter>// 生成随机数 int r(int a,int b0){return b ? QRandomGenerator::global()->bounded(a, b): QRandomGenerator::global()->bounded(a); }// 生成随机多边形…

【数据结构】二叉树 — 经典OJ面试题剖析!!!

目录 二叉树相关oj题 1. 检查两颗树是否相同 2. 另一棵树的子树 3. 翻转二叉树 4. 判断一颗二叉树是否是平衡二叉树 5. 对称二叉树 6. 二叉树的构建及遍历 7. 二叉树的层序遍历 8. 判断一棵树是不是完全二叉树 9. 二叉树的最近公共祖先 10. 根据前序与中序遍历序列构…

【MySQL】用户账户、角色、口令、PAM

目录 查看用户账户设置 连接 1.本地连接 2.远程连接 账户 角色 操作用户账户和角色 配置口令和账户有效期限 手工使口令过期 配置口令有效期限 PAM身份验证插件 客户端连接&#xff1a;使用 PAM 账户登录 在连接到MySQL服务器并执行查询时&#xff0c;会验证你的身…

SpringBoot 3+ Lombok日志框架从logback改为Log4j2

r要将Spring Boot 3项目中的日志框架从Logback切换到Log4j2&#xff0c;并配置按日期滚动文件和控制台输出&#xff0c;请按照以下步骤操作&#xff1a; 步骤 1&#xff1a;排除Logback并添加Log4j2依赖 在pom.xml中修改依赖&#xff1a; <dependencies><!-- 排除默…

【Tauri2】002——Cargo.toml和入口文件

目录 前言 正文 toml文件的基础 注释——# Comment 键值对——Key/Value 表——[table] 内联表——Inline Table 数组——Array package和crate Cargo.toml文件 Cargo.toml——dependencies Cargo.toml——lib crate-type main.rs 前言 【Tauri2】001——安装及…

二叉树相关算法实现:判断子树与单值二叉树

目录 一、判断一棵树是否为另一棵树的子树 &#xff08;一&#xff09;核心思路 &#xff08;二&#xff09;代码实现 &#xff08;三&#xff09;注意要点 二、判断一棵树是否为单值二叉树 &#xff08;一&#xff09;核心思路 &#xff08;二&#xff09;代码实现…

CSS 美化页面(一)

一、CSS概念 CSS&#xff08;Cascading Style Sheets&#xff0c;层叠样式表&#xff09;是一种用于描述 HTML 或 XML&#xff08;如 SVG、XHTML&#xff09;文档 样式 的样式表语言。它控制网页的 外观和布局&#xff0c;包括字体、颜色、间距、背景、动画等视觉效果。 二、CS…

23种设计模式-组合(Composite)设计模式

组合设计模式 &#x1f6a9;什么是组合设计模式&#xff1f;&#x1f6a9;组合设计模式的特点&#x1f6a9;组合设计模式的结构&#x1f6a9;组合设计模式的优缺点&#x1f6a9;组合设计模式的Java实现&#x1f6a9;代码总结&#x1f6a9;总结 &#x1f6a9;什么是组合设计模式…

LSTM创新点不足?LSTM + Transformer融合模型引领Nature新突破

LSTM创新点不足&#xff1f;LSTM Transformer融合模型引领Nature新突破 2024年LSTM真的没有创新空间了吗&#xff1f; 最新研究表明&#xff0c;通过将LSTM与Transformer巧妙融合&#xff0c;依然能创造出Nature级别的突破性成果。LSTM擅长处理短期时序模式&#xff0c;但在…

【区块链安全 | 第六篇】NFT概念详解

文章目录 NFTNFT&#xff08;非同质化代币&#xff09;FT&#xff08;可替代代币&#xff09; 以太坊 NFT 标准ERC-721&#xff08;单一资产&#xff09;ERC-1155&#xff08;多资产&#xff09; NFT 市场版税机制NFT 借贷NFT 安全 NFT NFT&#xff08;Non-Fungible Token&…

iOS常见网络框架

URLSession、Alamofire 和 Moya 1. URLSession 1.1 核心概念 URLSession 是 Apple 官方提供的网络请求 API&#xff0c;封装在 Foundation 框架中。它支持 HTTP、HTTPS、FTP 等协议&#xff0c;可用于&#xff1a; ​ • 普通网络请求&#xff08;GET/POST&#xff09; ​ …

蓝桥杯备考---->激光炸弹(二维前缀和)

本题我们可以构造二维矩阵&#xff0c;然后根据题意&#xff0c;枚举所有边长为m的正方形&#xff0c;找到消灭价值最多的炸弹 #include <iostream> using namespace std; const int N 1e4; int a[N][N]; int n,m; int f[N][N]; int main() {cin >> n >> m…