当前位置: 首页 > ds >正文

MIPI 系列之 DCS

目录

1、Display Architectures

2、Power Level Definition

3、Display Command Set

4、Command List

5、Command Accessibility

6、Default Modes and Values

7、Command Descriptions

7.1、enter_idle_mode

7.2、set_page_address

7.3、set_column_address


MIPI 协议族,定义了一个专门用于显示的命令集,叫做 Display Command Set,简称为 DCS;这个 DCS 起什么作用呢?主要是 Host 和 Display 之间的一些 Command 配置和数据传输,以及读 Display 的数据等;

使用过 SPI 的屏的朋友们应该知道,上电后,就开始劈里啪啦的一顿配置,比如,SPI 的屏 ST7735S,上电初始化,就是一顿干:

static void LCD_Parameters_Init(void)
{LCD_RST_LOW();// Resetdelay_ms(100);LCD_RST_HIGH();delay_ms(100);LCD_BLK_HIGH();// Open bldelay_ms(100);LCD_WriteCmd(0x11); // Sleep outdelay_ms(120);    // Delay 120ms//------------------------------------ST7735S Frame rate-------------------------------------------------//LCD_WriteCmd(0xB1); //Frame rate 80HzLCD_WriteData(0x02);LCD_WriteData(0x35);LCD_WriteData(0x36);LCD_WriteCmd(0xB2); //Frame rate 80HzLCD_WriteData(0x02);LCD_WriteData(0x35);LCD_WriteData(0x36);LCD_WriteCmd(0xB3); //Frame rate 80HzLCD_WriteData(0x02);LCD_WriteData(0x35);LCD_WriteData(0x36);LCD_WriteData(0x02);LCD_WriteData(0x35);LCD_WriteData(0x36);//------------------------------------End ST7735S Frame rate-------------------------------------------//LCD_WriteCmd(0xB4); //Dot inversionLCD_WriteData(0x03);//------------------------------------ST7735S Power Sequence-----------------------------------------//LCD_WriteCmd(0xC0);LCD_WriteData(0xA2);LCD_WriteData(0x02);LCD_WriteData(0x84);LCD_WriteCmd(0xC1);LCD_WriteData(0xC5);LCD_WriteCmd(0xC2);LCD_WriteData(0x0D);LCD_WriteData(0x00);LCD_WriteCmd(0xC3);LCD_WriteData(0x8D);LCD_WriteData(0x2A);LCD_WriteCmd(0xC4);LCD_WriteData(0x8D);LCD_WriteData(0xEE);//---------------------------------End ST7735S Power Sequence---------------------------------------//LCD_WriteCmd(0xC5); //VCOMLCD_WriteData(0x0a);LCD_WriteCmd(0x36);LCD_WriteData(0x08);//------------------------------------ST7735S Gamma Sequence-----------------------------------------//LCD_WriteCmd(0XE0);LCD_WriteData(0x12);LCD_WriteData(0x1C);LCD_WriteData(0x10);LCD_WriteData(0x18);LCD_WriteData(0x33);LCD_WriteData(0x2C);LCD_WriteData(0x25);LCD_WriteData(0x28);LCD_WriteData(0x28);LCD_WriteData(0x27);LCD_WriteData(0x2F);LCD_WriteData(0x3C);LCD_WriteData(0x00);LCD_WriteData(0x03);LCD_WriteData(0x03);LCD_WriteData(0x10);LCD_WriteCmd(0XE1);LCD_WriteData(0x12);LCD_WriteData(0x1C);LCD_WriteData(0x10);LCD_WriteData(0x18);LCD_WriteData(0x2D);LCD_WriteData(0x28);LCD_WriteData(0x23);LCD_WriteData(0x28);LCD_WriteData(0x28);LCD_WriteData(0x26);LCD_WriteData(0x2F);LCD_WriteData(0x3B);LCD_WriteData(0x00);LCD_WriteData(0x03);LCD_WriteData(0x03);LCD_WriteData(0x10);//------------------------------------End ST7735S Gamma Sequence-----------------------------------------//LCD_WriteCmd(0x3A); //65k modeLCD_WriteData(0x05);LCD_WriteCmd(0x29); //Display on
}

可以看到,一般是一个 Command 带一堆 Data,Command 描述了这次传输是用来干嘛的,Data 呢,就是此次事件的数据;

为了标准化显示设备,所以呢,就有制定一些个标准(听君一席话,如听一席话);

为了统一江山,Display 方,大家按照同一套标准来定制这个 Command + Data,此刻 DCS 闪亮登场;

1、Display Architectures

Display 的结构,DCS 中分为了 3 类;

 

 

可以看到,这三类的区别就是中间 Display Module 是否带了 Framebuffer,或是带了一部分的 Framebuffer;

Display Module 带不带 Framebuffer 有啥区别呢?如果带了 Framebuffer,那么图形数据不用每次都从主机获取,主机刷一次数据到 Display Module 的 Framebuffer 中,然后 Display Module 就自己会将它自己的 Framebuffer 往屏(Panel)上面刷;

如果 Display Module 不带 Framebuffer,为了维持屏上有数据,需要主机不停的给 Display Module 灌数据,并显示到 panel 上;

2、Power Level Definition

针对上面三种不同的 Display 架构,DCS 中描述了三种对应的 Power Level;

第一种显示架构:

 第二种显示架构:

第三种显示架构:

 

3、Display Command Set

DCS 用于发送 pixel 数据,配置 Display Module,或者读 Display Module 的一些数据或者寄存器;

DCS 分为两类:

  • User Command Set
  • Manufacturer Command Set

Command 域都是 8-bit 的(1 Byte);其中 0x00 - 0xAF 是 User Command Set 的,其余的留给了 Manufacturer Command Set;

Manufacturer Command Set (MCS)是厂商用的,在出厂的时候,设置的一些默认的参数,一旦出厂,这些命令不可见了,会被认为是 NOP;

User Command Set 是独立的部分,里面的所有的 Command(除了write_LUT),都应该被 Display Module 厂家实现;

其他的未定义的 Command 码,都应该被视作 NOP;

4、Command List

DCS 定义了很多很多的 Command,每个 Command 都有 Command Code,有的 Command 带参数,有的不带,有的只适用与 Type1、2、3架构的一种;DCS 的 List 如下所示:

 

 

 

 

 

 

5、Command Accessibility

DCS 的这些个命令,并不是所有的状态下(Normal、Idle、Sleep、Partial)都可以访问的,具体的可以参考 SPEC,太多了,不列举了;

6、Default Modes and Values

同样的,关于 Display Module 来说,这么多命令,每次都全配置一次,太多;默认情况下,有些设置有它的默认值,这里呢,也参考 SPEC,太多了,不多列举了;

7、Command Descriptions

DCS 每个命令都有一些关于它的描述,包括它的 Command Code,它的 Paramters,效果,以及它的流程等;

7.1、enter_idle_mode

Command Code = 0x39

发送这条命令,使得 Display Module 进入 Idle 模式

效果如下:

 明显可以看到,Idle 模式下,色彩信息被减少了;

进入 Idle 的流程如下:

7.2、set_page_address

Command Code = 0x2B

用于设置显示区域的 Y 坐标起始和终止;

Command + Paramter 1 + Paramter 2 + Paramter 3 + Paramter 4

SP 是 Start Page 的简写,EP 是 End Page 的简写,这里叫 Page 可能会让你疑惑,那么看这个图:

 

可以知道,其实 Page 就是纵坐标的意思;

它的典型使用流程是:

 先使用 set_column_address 命令,设置横坐标,在使用 set_page_address 设置纵坐标,然后在这个横纵坐标之间,去进行局部绘制;

7.3、set_column_address

Command Code = 0x2A

这个命令刚刚上面提到了,用于设置显示区域的 X 坐标起始和终止;

Command + Paramter 1 + Paramter 2 + Paramter 3 + Paramter 4

SC 是 Start Column 的简写,EC 是 End Column 的简写,图:

 典型用法如上面一个所示:

 用于指定一个矩形区域进行绘制;

 还有很多 Command,就不全部列举了,这个文档,可以当作参考手册来使用,用的时候来查就行;

http://www.xdnf.cn/news/11403.html

相关文章:

  • 软件可靠性、可维护性、可用性
  • 使用PowerDesigner设计数据库保姆级教程
  • 什么是android market?国内三大类android market知多少?
  • JSP内置对象:使用getparametervalues()获取数据
  • C# Span 入门
  • Extjs多标签关闭,支持关闭左侧和右侧标签。
  • 黑客是如何攻破一个网站的?
  • oracle常见问题、了解知识点及简单命令学习
  • 开源文档管理软件KnowledgeTree安装
  • Openbravo ERP介绍(一)
  • 分享88个ASP整站程序源码,总有一款适合您
  • 黑客是怎么通过IP地址攻击的?
  • Linux共享磁盘分区,linux中ISCSI(网络共享磁盘)
  • Windows server——部署web服务
  • 关于代理服务器的原理及用法
  • 通信线路通信线路
  • ping命令详解
  • No message found under code 'world' for locale 'en_US'.
  • [小技巧] 用搜索引擎查找博客中的内容
  • Dynamips报错及及非正常现象的解决办法汇总
  • RFID-射频识别技术
  • 推荐一些漂亮的Ubuntu 9.04主题
  • 汇编语言 --寄存器-指令集-寻址
  • InstallShield12豪华版破解版下载|InstallShield下载|软件打包工具
  • 数据中台与数据治理服务方案[50页PPT]
  • MySQL中的EXISTS用法
  • 一起学UCOS(三)、创建任务
  • .NET 4.0网络开发入门之旅-- 我在“网” 中央(下)
  • QingBlog|轻博客 一个轻量级的Web版个人博客产品
  • 滤波器设计软件--filter solutions的使用