前面我们介绍了一些MIPI LCD的基础知识以及LCD初始化序列的配置:
Linux MIPI DSI LCD设备驱动开发调试细节学习笔记(一)
Linux MIPI DSI驱动调试笔记-设备树DCS格式序列之配置LCD初始化代码(二)
要点亮MIPI DSI接口的LCD,我们还有一个非常重要的配置,那就是屏幕的时序,时序就是点屏的基础,大部分LCD提供的数据手册都大同小异;由于没搞过这块驱动的调试,我还很担心怕这个月都搞不定;但是我确实太低估自己的能力了,没想到居然就只用了不到一天时间不到就把一个完全没用过的屏给点起来了!所以我告诉自己,以后要自信点,不要怕,上来就是肝才是正道!
与纯 RGB 显示屏同理, MIPI DSI 显示参考下图:
之前有一篇文章也写得很好,结合学习会很有收获:
图解LCD硬件原理 && 调色板与Framebuffer原理
直接干Datasheet,关于垂直方向,我们只需要关心以下几个参数就可以了:
垂直方向:
直接干Datasheet,关于水平方向,我们只需要关心以下几个参数就可以了:
水平方向:
接下来我们照着以上的几个参数,结合数据手册里提供的典型参数往设备树里的时序列表里填,最终时序部分如下:
display-timings {
native-mode = <&timing0>;
timing0: timing0 {
clock-frequency = <51200000>; //DCLK
hactive = <1024>; //hactive
vactive = <600>; //vactive
hfront-porch = <160>; //hfp
hsync-len = <70>; //hsa
hback-porch = <160>; //hbp
vfront-porch = <12>; //vfp
vsync-len = <10>; //vsa
vback-porch = <23>; //vbp
hsync-active = <0>; //hync 极性控制 置 1 反转极性
vsync-active = <0>; //vsync 极性控制 置 1 反转极性
de-active = <0>; //DEN 极性控制
pixelclk-active = <0>; //dclk 极性控制
};
};
其中 clock-frequency
即 DCLK
频率,查看以下规格书:
可知, DCLK
频率为 51.2Mhz
,所以这个参数就是51200000。
其中clock-frequency
的计算公式是这样的:
clock-frequency = (h_active + hfp + hbp + h_sync) * (v_active + vfp + vbp + v_sync) * fps
根据以上公式我们还可以计算出fps
:
fps = 51200000 / (1024+160+160+70) * (600+23+12+10) = 51200000 / 912030 = 56Hz
这里的 56Hz
也就是屏幕的刷新率(fps)。
时序一搞定了,那离点屏就差10%了,今天就学习总结到这了,下期会继续分享怎么通过Linux终端确认MIPI DSI是否已经匹配到系统上。