目录
- 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中一般都由两种命令集:
- 符合DCS规范的命令集
- 厂商自定功能的命令集
我们可以从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,即三种类型分别为:
- Full-frame memory
- Partial-frame memory
- 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
显示设备能够实现四种伽马矫正,分别如下所示:
- Gamma Curve 1 (GC0) is 2.2, i.e. y=x^2.2
- Gamma Curve 2 (GC1) is 1.8, i.e. y=x^1.8
- Gamma Curve 3 (GC2) is 2.5, i.e. y=x2.5
- 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
- Parameter1 SC8-SC15==> 起始列坐标[15:8]
- Parameter2 SC0-SC7 ==>起始列坐标[7:0]
- Parameter3 EC8-EC15 ==>结束列坐标[15:8]
- 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
- Parameter1 SP8-SP15==> 起始行坐标[15:8]
- Parameter2 SP0-SP7 ==>起始行坐标[7:0]
- Parameter3 EP8-EP15 ==>结束行坐标[15:8]
- 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
- Pixel Data1
- 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
- Pixel Data1
- 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