MIPI 打怪升级之DCS篇

news2024/11/16 5:45:12

目录

    • 1 Overview
    • 2 Display Architectures
      • 2.1 The Type 1 Display Architecture
    • 3 Power Level
      • 3.1 Type 1 Display Architecture Power Change Sequences
      • 3.2 Type 2 Display Architecture Power Change Sequences
      • 3.3 Type 3 Display Architecture Power Change Sequences
    • 4 Gamma Curves
    • 5 Self-diagnostic
      • 5.1 Register Loading Detection
      • 5.2 Functionality Detection
      • 5.3 Chip Attachment Detection (optional)
      • 5.4 Display Glass Break Detection (optional)
    • 6 Display Command Set
    • 7 Command Description
      • 7.1 enter_idle_mode
      • 7.3 enter_normal_mode
      • 7.25 set_column_address
      • 7.26 set_display_off
      • 7.27 set_display_on
      • 7.28 set_gamma_curve
      • 7.29 set_page_address
      • 7.40 write_memory_continue
      • 7.41 write_memory_start

1 Overview

DCS全称Display Command Set,即显示命令集,定义了符合MIPI规范的设备的显示模块的行为。该规范中的所有命令均应由符合 MIPI 联盟DPI标准[MIPI01]、DBI标准[MIPI02] 和 DSI标准 [MIPI03] 的显示模块支持。
其目的在于:制造商使用DCS规范来设计符合移动设备主机处理器和显示接口的 MIPI 规范的产品。实施 DCS 规范通过简化来自不同制造商的产品的互连,缩短了移动设备的上市时间和设计成本。 此外,由于 MIPI 规范的可扩展性,简化了向移动设备添加新功能(例如更大或额外的显示器)的过程。
当然DCS并不能囊括所有显示设备的功能,故在具体的显示设备的Databook中一般都由两种命令集:

  1. 符合DCS规范的命令集
  2. 厂商自定功能的命令集

我们可以从DSI IP的命令发送方式上看到,发送DCS的命令需要使用DCS方式,而发送私有的厂商自定义的命令需要使用Gen方式,即Data Type上有所区别。

DCS方式只能发送DCS命令
Gen方式即可以发送DCS命令也可以发送非DCS命令

2 Display Architectures

显示模块应基于 Type 1、Type 2 或 Type 3 显示架构。其实这三种架构的关键差异就在于是否具有frame buffer,具有多少frame buffer,即三种类型分别为:

  1. Full-frame memory
  2. Partial-frame memory
  3. No-frame memory

2.1 The Type 1 Display Architecture

3 Power Level

基于上面三种不同的显示架构,定义了三种类型的供电序列。
每个电源序列由不同显示和电源模式的组合组成,如下所示:

  • Normal mode:显示模块使用显示设备的整个显示区域显示图像数据。
  • Partial mode:显示模块仅在显示设备的整个显示区域的一部分中显示图像数据
  • Idle mode:显示模块使用有限数量的颜色显示图像数据。 关闭Idle模式使用显示设备支持的全部颜色显示图像数据。
  • Sleep mode:显示模块不显示任何图像数据。 此外,显示接口应保持供电,并与维护帧存储器和寄存器中的数据所需的功能块一起保持供电。

3.1 Type 1 Display Architecture Power Change Sequences

在这里插入图片描述

3.2 Type 2 Display Architecture Power Change Sequences

在这里插入图片描述

3.3 Type 3 Display Architecture Power Change Sequences

在这里插入图片描述

4 Gamma Curves

显示设备能够实现四种伽马矫正,分别如下所示:

  1. Gamma Curve 1 (GC0) is 2.2, i.e. y=x^2.2
    在这里插入图片描述
  2. Gamma Curve 2 (GC1) is 1.8, i.e. y=x^1.8
    在这里插入图片描述
  3. Gamma Curve 3 (GC2) is 2.5, i.e. y=x2.5
    在这里插入图片描述
  4. Gamma Curve 4 (GC3) is linear, i.e. y=x1
    在这里插入图片描述

5 Self-diagnostic

显示模块应支持本节中的所有自诊断功能,但表示为可选的功能除外。 制造商可以自行决定在显示模块中实现可选功能。

5.1 Register Loading Detection

exit_sleep_mode 命令是寄存器加载检测功能的触发器。此函数指示显示模块是否将工厂默认值从非易失性存储器正确加载到寄存器。 如果寄存器加载正确,则 SDR 寄存器的位 D7 被反转,否则值不变。
在这里插入图片描述

5.2 Functionality Detection

exit_sleep_mode 命令是功能检测功能的触发器。 该函数指示显示模块功能是否阻塞,例如 电源、时钟发生器等运行正常。 如果功能块运行正常,则 SDR 寄存器的位 D6 被反转,否则值不变。
在这里插入图片描述

5.3 Chip Attachment Detection (optional)

exit_sleep_mode 命令是 Chip Attachment Detection 功能的触发器。此功能指示是否某些芯片,例如 显示驱动IC,附在显示模块上。 如果芯片正确连接到显示模块,则 SDR 寄存器的位 D5 被反转,否则值不变。
Chip Attachment Detection实现参考:两个凸块通过柔性箔或芯片所有四个角的显示玻璃基板上的导体连接在一起。
在这里插入图片描述
在这里插入图片描述

5.4 Display Glass Break Detection (optional)

exit_sleep_mode 命令是Display Glass Break Detection功能的触发器。 此功能指示显示屏玻璃是否损坏。 如果显示屏玻璃破损,则 SDR 寄存器的 D4 位反转,否则值不变。
Display Glass Break Detection实现参考:两个凸块通过在显示器玻璃基板外边缘上布线的导体连接在一起。
在这里插入图片描述
在这里插入图片描述

6 Display Command Set

DCS用于存储图像数据、配置显示模块行为以及通过访问帧存储器和显示模块寄存器来检索包括标识信息的显示模块数据。

DCS 分为两个功能区:用户命令集和制造商命令集。 每个命令都是一个八位代码,其中 00h 到 AFh 分配给用户命令集,所有其他代码分配给制造商命令集。

制造商命令集 (MCS) 是一个依赖于设备的接口,用于显示模块默认参数的工厂编程。 一旦配置显示模块,制造商应禁用 MCS。 一旦禁用,所有 MCS 命令都被显示界面视为 nop。 MCS 在DCS中没有定义。

用户命令集提供了一个针对操作系统硬件抽象层的独立于显示设备的接口。 除可选的 write_LUT 外,本节中列出的所有命令均应执行。

显示模块应将任何未使用的命令代码视为 nop。

命令列表如下:

7 Command Description

所有命令都由一个 8 位字节组成,在某些情况下还附带为正确执行命令提供必要信息的参数。 通常,无论物理接口宽度和架构如何,命令和伴随的参数字节都使用显示接口的串行或并行位 0 到 7 传输。唯一的例外是 DBI 系统中 read_memory_continue、read_memory_start、write_memory_continue 和 write_memory_start 命令。
下面以常用命令进行举例说明:

7.1 enter_idle_mode

  • Interface:All
  • Command:39h Parameters:None
  • Description:该命令让显示模块进入Idle模式
    在Idle模式下,色彩表现力会降低。 使用帧存储器中每个 R、G 和 B 颜色分量的 MSB 在显示设备上显示颜色。
    在这里插入图片描述
    在这里插入图片描述Flow Chart

7.2 enter_invert_mode

  • Interface:All
  • Command:21h
  • Parameters:None
  • Description:此命令让显示模块仅在显示设备上反转图像数据。 帧存储器内容保持不变。
    在这里插入图片描述
    Flow Chart

7.3 enter_normal_mode

  • Interface:All
  • Command:21h
  • Parameters:None
  • Description:此命令让显示模块进入正常模式显示。正常模式定义为部分显示模式和滚动模式关闭。

。。。。。。

7.25 set_column_address

  • Interface:All
  • Command:2Ah
  • Parameters:4
    1. Parameter1 SC8-SC15==> 起始列坐标[15:8]
    2. Parameter2 SC0-SC7 ==>起始列坐标[7:0]
    3. Parameter3 EC8-EC15 ==>结束列坐标[15:8]
    4. Parameter4 EC0-EC7==>结束列坐标[7:0]
  • Description:此命令定义主机处理器使用 read_memory_continue 和 write_memory_continue 命令访问的帧存储器的列范围。 可以简单理解为X1,X2。

SC[15:0] <= EC[15:0]

Flow Chart

7.26 set_display_off

  • Interface:All
  • Command:28h
  • Parameters:None
  • Description:该命令使显示模块停止在显示设备上显示图像数据。 帧存储器内容保持不变。
    在这里插入图片描述
    Flow Chart

7.27 set_display_on

  • Interface:All
  • Command:21h
  • Parameters:None
  • Description:此命令使显示模块开始在显示设备上显示图像数据。 帧存储器内容保持不变。
    在这里插入图片描述
    Flow Chart

7.28 set_gamma_curve

  • Interface:All
  • Command:26h
  • Parameters:1
    5. GC[7:0] ==> Curve Selected
  • Description:此命令为显示设备选择所需的伽马曲线
    在这里插入图片描述Flow Chart

7.29 set_page_address

  • Interface:All
  • Command:2Bh
  • Parameters:4
    1. Parameter1 SP8-SP15==> 起始行坐标[15:8]
    2. Parameter2 SP0-SP7 ==>起始行坐标[7:0]
    3. Parameter3 EP8-EP15 ==>结束行坐标[15:8]
    4. Parameter4 EP0-EP7==>结束列行标[7:0]
  • Description:此命令定义主机处理器使用 write_memory_continue 和 read_memory_continue 命令访问的帧存储器的页范围。

SP[15:0] <= EP[15:0]

Flow Chart

。。。。。。

7.40 write_memory_continue

  • Interface:All
  • Command:3Ch
  • Parameters:N
    • Pixel Data1
    • Pixel DataN
  • Description:此命令将图像数据从主机处理器传输到显示模块的帧存储器,从上一个 write_memory_continue 或 write_memory_start 命令之后的像素位置继续。
    If set_address_mode B5 = 0:在前一个 write_memory_start 或 write_memory_continue 的写入范围之后,从像素位置继续写入数据。 然后列寄存器递增并将像素写入帧存储器,直到列寄存器等于 End Column (EC) 值。 然后列寄存器复位为 SC 并且页寄存器递增。 像素被写入帧存储器,直到页寄存器等于结束页 (EP) 值并且列寄存器等于 EC 值,或者主机处理器发送另一个命令。 如果像素数超过 (EC – SC + 1) * (EP – SP + 1),则忽略多余的像素。
    If set_address_mode B5 = 1:在前一个 write_memory_start 或 write_memory_continue 的写入范围之后,从像素位置继续写入数据。 然后页寄存器递增并将像素写入帧存储器,直到页寄存器等于结束页 (EP) 值。 然后页寄存器复位为 SP,列寄存器递增。 像素被写入帧存储器,直到列寄存器等于结束列 (EC) 值并且页寄存器等于 EP 值,1605 或主机处理器发送另一个命令。 如果像素数超过 (EC – SC + 1) * (EP – SP + 1),则忽略多余的像素。

write_memory_start 应该遵循 set_column_address、set_page_address 或 set_address_mode 来定义写入地址。 否则,使用 write_memory_continue 写入的数据将写入未定义的地址。
一些常见的颜色与对应的图像数据的关系如图所示:
在这里插入图片描述Flow Chart

7.41 write_memory_start

  • Interface:All
  • Command:2Ch
  • Parameters:N
    • Pixel Data1
    • Pixel DataN
  • Description:此命令将图像数据从主机处理器传输到显示模块的帧存储器,从前面的 set_column_address 和 set_page_address 命令指定的像素位置开始。
    If set_address_mode B5 = 0:列和页寄存器分别复位到起始列 (SC) 和起始页 (SP)。像素数据 1 存储在 (SC, SP) 处的帧存储器中。 然后列寄存器递增并将像素写入帧存储器,直到列寄存器等于 End Column (EC) 值。 然后列寄存器复位为 SC 并且页寄存器递增。 像素被写入帧存储器,直到页寄存器等于结束页 (EP) 值并且列寄存器等于 EC 值,或者主机处理器发送另一个命令。 如果像素数超过 (EC – SC + 1) * (EP – SP + 1),则忽略多余的像素。
    If set_address_mode B5 = 1:列和页寄存器分别复位为起始列 (SC) 和起始页 (SP)。 像素数据 1 存储在 (SC, SP) 的帧存储器中。 然后页寄存器递增并将像素写入帧存储器,直到页寄存器等于结束页 (EP) 值。 然后页寄存器复位为 SP,列寄存器递增。 像素被写入帧存储器,直到列寄存器等于结束列 (EC) 值并且页寄存器等于 1652 EP 值,或者主机处理器发送另一个命令。 如果像素数超过 (EC – SC + 1) * (EP – SP + 1),则忽略多余的像素。
    一些常见的颜色与对应的图像数据的关系如图所示:
    在这里插入图片描述Flow Chart

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

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

相关文章

unity的学习,准备搞一款mmo小游戏,服务器和客户端从零学

如代码所示&#xff0c;简单了解一下。 using System.Collections; using System.Collections.Generic; using UnityEngine;public class test : MonoBehaviour { void Awake(){Debug.Log("awake hello world!");}// 当脚本可用时&#xff0c;也就是打勾的时候可以…

线程同步-信号量-互斥量-条件变量

文章目录线程同步信号量互斥量条件变量线程同步 线程同步其实实现的是线程排队。防止线程同步访问共享资源造成冲突。多个线程访问共享资源的代码有可能是同一份代码&#xff0c;也有可能是不同的代码&#xff1b;无论是否执行同一份代码&#xff0c;只要这些线程的代码访问同…

Java避免死锁的几个常见方法(有测试代码和分析过程)

目录 Java避免死锁的几个常见方法 死锁产生的条件 上死锁代码 然后 &#xff1a;jstack 14320 >> jstack.text Java避免死锁的几个常见方法 Java避免死锁的几个常见方法 避免一个线程同时获取多个锁。避免一个线程在锁内同时占用多个资源&#xff0c;尽量保证每个锁…

Geoserver启动时提示:The GEOSERVER_HOME variable is not defined

场景 GeoServer简介、下载、配置启动、发布shapefile全流程(图文实践)&#xff1a; GeoServer简介、下载、配置启动、发布shapefile全流程(图文实践)_霸道流氓气质的博客-CSDN博客 在下载解压之后点击启动bat时提示: The GEOSERVER_HOME environment variable is not defin…

row_number 和 cte 使用实例:背包问题

row_number 和 cte 使用实例&#xff1a;背包问题背包问题01背包解决同一行数据需要引用两次的问题对 for xml 的结果进行引用时的处理完全背包多重背包小结背包问题 最近老顾从新把算法捡了起来&#xff0c;碰到了各种各样以前没见过的&#xff0c;工作中没遇到的问题&#x…

leetcode:快乐数(详解)

前言&#xff1a;内容包括&#xff1a;题目&#xff0c;代码实现&#xff0c;大致思路&#xff0c;代码解读 题目&#xff1a; 编写一个算法来判断一个数 n 是不是快乐数。 「快乐数」 定义为&#xff1a; 对于一个正整数&#xff0c;每一次将该数替换为它每个位置上的数字…

坚鹏:《银行业数字化转型指导意见》政策解读及银行数字化转型

中国银保监会《关于银行业保险业数字化转型的指导意见》政策解读及银行数字化转型课程背景&#xff1a; 很多银行存在以下问题&#xff1a; 不知道如何准确理解中国银保监会《关于银行业保险业数字化转型的指导意见》相关政策 不清楚中国银保监会《关于银行业保险业数字化转型…

使用AI进行“文本纠错”

AI在现实中的应用有很多&#xff0c;你有没有想过&#xff0c;它还可以进行文本纠错呢&#xff1f;传统的校对既耗时又枯燥&#xff0c;通过“AI纠错”&#xff0c;不仅能更快完成&#xff0c;还能提高准确度。那么AI“文本纠错”背后的原理是什么呢&#xff1f;和我一起看看吧…

Python综合案例-小费数据集的数据分析(详细思路+源码解析)

目录 1. 请导入相应模块并获取数据。导入待处理数据tips.xls&#xff0c;并显示前5行。 2、分析数据 3.增加一列“人均消费” 4查询抽烟男性中人均消费大于5的数据 5.分析小费金额和消费总额的关系&#xff0c;小费金额与消费总额是否存在正相关关系。画图观察。 6分析男女顾…

chatGPT写文章攻略-用chatGPT写网文

chatGPT可以写中文吗 ChatGPT可以写中文。在过去的几年中&#xff0c;许多深度学习机器翻译模型已经开始探索中英文翻译、去噪声、语音识别等任务&#xff0c;并且在这些任务中ChatGPT具有最先进的表现。 目前&#xff0c;例如GPT-3和GPT-2都可以用来生成中文文本。为此&…

以太坊上海升级,DeFi 3.0的序章

引言 距离以太坊Shapella升级&#xff08;也曾被称为上海升级&#xff09;仅剩一天的时间&#xff01;自2015年以太坊上线以来&#xff0c;它已成为世界排名第二的加密虚拟资产&#xff0c;以太坊诞生于行业的意义在于它能够让开发者构建智能合约和去中心化应用&#xff08;DAp…

Jumpserver与Freeipa集成(以及其他配置)

背景&#xff1a; jumpserver的安装参照&#xff1a;jumpserver的简单安装使用&#xff0c;Freeipa的安装参照&#xff1a;Freeipa的简单搭建配置。准备将Freeipa与Jumpserver集成。其实Freeipa搭建后linux客户端如果安装了Freeipa client。也能完成用户的授权权限管理了&…

肖 sir_就业课__005项目数据

项目数据 一、项目周期 &#xff08;1&#xff09;新项目&#xff1a;从无到有&#xff0c;从项目的开始到上线的时间 时间长&#xff1a;3个月、6个月、1年、2年 &#xff08;2&#xff09;老项目&#xff1a;迭代项目 迭代周期&#xff1a;1个月、2个月、3个月迭代、 &#…

现在是香港推动Web3的“正确时机” 将采取监管与发展并重策略

香港财政司司长陈茂波在香港特区政府网站发表司长随笔《发展Web3—守正创新 稳慎前行》&#xff0c;提出为了让Web3稳慎走好创新发展的道路&#xff0c;政府将采取“适当监管”和“推动发展”两者并重的策略&#xff0c;确保虚拟资产行业可持续和负责任发展。 此前&#xff0c;…

java_集合

1.集合 集合分为单列集合&#xff08;collection&#xff09;和双列集合&#xff08;map&#xff09;. 单列就是每个位置只有一个值&#xff0c;双列则是每个位置都是一对键值对&#xff0c;类似于python的字典。 2.collection 其中&#xff0c;collection又可以分为List…

全国大学生智能汽车竞赛——安装Ubuntu操作系统(双系统)

1.1 电脑分区 1.1.1 分区原因 由于我们想要在电脑上同时安装Windows和Ubuntu系统&#xff0c;所以就要在window使用的内存中划分出来一段用来给Ubuntu系统使用&#xff0c;相当于一个应用程序一样 1.1.2 分区步骤 1.右击此电脑&#xff0c;点击管理&#xff0c;然后双击左侧…

【刷题笔记】--dp--376. 摆动序列122. 买卖股票的最佳时机 II

感觉自己dp还不是很会&#xff08;/(ㄒoㄒ)/~~ 写dp题的步骤&#xff1a;①通过定义子问题&#xff0c;确定dp[ ] or dp[ ][ ] 表示的含义 ②写出子问题的递归关系 ③确定初始条件 题目&#xff1a; 思路&#xff1a; ①确定dp的含义&#xff1a;dp[i]表示 到i位置&#x…

网络信息安全(三层设备部署DHCP服务器与DHCP中继、ICMP协议)

文章目录三层路由器部署DHCP服务器配置trunkVLAN创建将端口加入对应vlan路由创建子接口路由器创建地址池服务器配置静态IPDHCP服务器部署创建作用域在三层设备配置DHCP中继DHCP中继原理ICMP协议概述用途封装格式三层路由器部署DHCP服务器 配置trunk VLAN创建 这里以S1为例&…

Vulnhub:Digitalworld.local (Development)靶机

kali&#xff1a;192.168.111.111 靶机&#xff1a;192.168.111.130 信息收集 端口扫描 nmap -A -v -sV -T5 -p- --scripthttp-enum 192.168.111.130 查看网站首页源码 访问development目录&#xff0c;提示存在一个流量包 查看流量包发现另一个网站路径&#xff1a;/devel…

多模态之论文笔记ViLT

文章目录ViLT: Vision-and-Language Transformer Without Convolution or Region Supervision一. 简介1.1 摘要1.2 文本编码器&#xff0c;图像编码器&#xff0c;特征交互复杂度分析1.2 特征交互方式分析1.3 图像特征提取分析二. 方法 Vision-and-Language Transformer2.1. 方…