在 MIPI 协议族种,除了 DSI(用于显示)、CSI(用于摄像头)以外,还有几个概念会经常的涉及到,这里把它们拎出来晒一下,免得有盲区;
MIPI DPI 的全称为 Display Pixel Interface,是用于主机到显示设备的的一种数据传输标准;显示设备的话,分为很多种不同的类型,有的显示设备本身内部不带 Framebuffer,那么就需要主机不停的给显示设备送数据;还有的显示设备,它内部集成了 Framebuffer,主机只需要发送一帧的数据过去,然后主机就可以休息了,显示设备控制芯片那端的 Framebuffer 会自动的按照刷新率往显示上送;
DPI 的主要使用场景,就在不断的往显示设备送数据,即,显示设备端没有 Framebuffer 的情况;
我们来看以下 DPI 的接口信号定义:
左边是我们的 CPU 的 DPI 控制器,右边是显示设备的控制器;
右边上面是供电口,暂时不管他,没有在本次讨论范围之内;
我们可以看到,Host 给 Display Module 之间通信,是通过单向的很多条信号实现的;这个信号看起来怎么这么像我们的 VGA 或者 LCD 的信号呢?的确是这样的,
Symbol | Name | I/O | Descriptions |
Vsync | Vertical Sync | O | 列同步信号 |
Hsync | Horizontal Sync | O | 行同步信号 |
DE | Data Enable | O | 数据有效信号 |
PCLK | Pixel Clock | O | 像素时钟信号 |
D[x:0](x=15/17/23) | Pixel Data | O | 像素信号 |
SD | Shut Down | O | 控制关闭 Display |
CM | Color Mode | O | 切换 Normal Color 还是 Reduce Color Mode |
可以看到,我们的数据信号可以是 16bit、18bit、24bit;
像素时钟取决于具体要显示的内容,比如你要传一个 720p @ 16fps 的 RGB565,那么像素时钟就可以计算出来;(也查阅相关的手册)
既然 DPI 的时序和 VGA,以及 LCD 是一致的(《LCD 时序分析》、《VGA 时序分析》),那么在这里不多说了,直接把 DPI 的 Timing 贴上来:
哈哈,是不是久违的感觉;
除了时序,还有一点需要注意的是,Color Coding,也就是当在使用 16 bit、18 bit、24 bit 来传输像素 RGB 数据的时候,几根线上的 RGB 通道是如何进行排列的:
这里引出了 16bit 的 CFG1、CFG2、CFG3,以及 18bit 的 CFG1、CFG2;的配置;