IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> MIPI 系列之 DCS -> 正文阅读

[嵌入式]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();// Reset
    delay_ms(100);
    LCD_RST_HIGH();
    delay_ms(100);

    LCD_BLK_HIGH();// Open bl
    delay_ms(100);
    LCD_WriteCmd(0x11); // Sleep out
    delay_ms(120);    // Delay 120ms
    //------------------------------------ST7735S Frame rate-------------------------------------------------//
    LCD_WriteCmd(0xB1); //Frame rate 80Hz
    LCD_WriteData(0x02);
    LCD_WriteData(0x35);
    LCD_WriteData(0x36);

    LCD_WriteCmd(0xB2); //Frame rate 80Hz
    LCD_WriteData(0x02);
    LCD_WriteData(0x35);
    LCD_WriteData(0x36);

    LCD_WriteCmd(0xB3); //Frame rate 80Hz
    LCD_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 inversion
    LCD_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); //VCOM
    LCD_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 mode
    LCD_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,就不全部列举了,这个文档,可以当作参考手册来使用,用的时候来查就行;

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2022-04-01 23:35:28  更:2022-04-01 23:36:29 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 5:42:41-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码