关键词:
点击上方「嵌入式云IOT技术圈」,选择「置顶公众号」第一时间查看嵌入式笔记!
前面我们介绍了一些MIPI LCD的基础知识以及LCD初始化序列的配置:
Linux MIPI DSI LCD设备驱动开发调试细节学习笔记(一)
Linux MIPI DSI驱动调试笔记-设备树DCS格式序列之配置LCD初始化代码(二)
要点亮MIPI DSI接口的LCD,我们还有一个非常重要的配置,那就是屏幕的时序,时序就是点屏的基础,大部分LCD提供的数据手册都大同小异;由于没搞过这块驱动的调试,我还很担心怕这个月都搞不定;但是我确实太低估自己的能力了,没想到居然就只用了不到一天时间不到就把一个完全没用过的屏给点起来了!所以我告诉自己,以后要自信点,不要怕,上来就是肝才是正道!
1、LCD屏幕显示原理
与纯 RGB 显示屏同理, MIPI DSI 显示参考下图:之前有一篇文章也写得很好,结合学习会很有收获:
图解LCD硬件原理 && 调色板与Framebuffer原理
1.1、垂直方向
直接干Datasheet,关于垂直方向,我们只需要关心以下几个参数就可以了:垂直方向:
tvd :垂直方向的分辨率
tv :整个垂直方向的周期
tvpw :vysnc 脉冲宽度
tvb :上边黑框 ===> vbp ===> Vertical Back porch ===> 垂直后肩
tvfp :下边黑框 ===> vfp ===> Vertical Front porch ===> 垂直前肩
1.2、水平方向
直接干Datasheet,关于水平方向,我们只需要关心以下几个参数就可以了:水平方向:
thd :水平方向的分辨率
th : 整个水平方向的周期
thpw :hsync 脉冲宽度
thb :左边黑框 ===> hbp ===> Horizontal Back porch ===> 水平后肩
thfp :右边黑框 ===> hfp ===> Horizontal Front porch===> 水平前肩
2、MIPI DSI 设备树时序配置
接下来我们照着以上的几个参数,结合数据手册里提供的典型参数往设备树里的时序列表里填,最终时序部分如下:
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是否已经匹配到系统上。
往期精彩
如何添加APP到Buildroot里(以瑞芯微rv1126为例)
瑞芯微RV1109配置GPIO设备树修改笔记(熟悉新平台从点灯大法开始)
新产品立项了,作为嵌入式软件工程师该如何来开展设计工作?(个人经验分享)
觉得本次分享的文章对您有帮助,随手点[在看]
并转发分享,也是对我的支持。
linuxmipidsi驱动调试笔记-设备树dcs格式序列之配置lcd初始化代码(代码片段)
...ff0c;真正深入往里钻的话还是很难的,文章如下:LinuxMIPIDSILCD设备驱动开发调试细节学习笔记(一)1、MIPILCD 查看详情
linuxmipidsi驱动调试笔记-设备树dcs格式序列之配置lcd初始化代码(代码片段)
1、MIPILCD初始化序列描述在上一篇文章中,我们看到荣品的屏设备树中有这么一段代码,但是里面的数据是什么含义呢?panel-init-sequence = [ 05 78 01 11 05 78 01 29 ];今天... 查看详情
一款特殊的lcd屏幕驱动调试(代码片段)
问题分析这款LCD屏幕的有效显示区域为480*1280,但是它的timing时序却是600*1280。时序要求600*1280意味着主控需要通过物理接口输出600*1280的图像,然而LCD的背板芯片会剪裁掉左右两侧各60像素,得到480*1280的显示区域。那么我们的LCD屏幕... 查看详情
lcd驱动分析时序分析
参考:S3C2440LCD驱动(FrameBuffer)实例开发<一> S3C2440LCD驱动(FrameBuffer)实例开发<二> 查看详情
lcd调试1.0
...见觉得比较好就粘过来了: TFT电路驱动原理:由CPU通过LCD接口送来的视频信号及时钟经过TCON的时序转换,RGB数据经过D/A转换送到SOURCE端,同时TCON产生移位时钟信号驱动GATE端,选通一行,打开这一行的所有... 查看详情
一款特殊的lcd屏幕驱动调试(代码片段)
问题分析这款LCD屏幕的有效显示区域为480*1280,但是它的timing时序却是600*1280。时序要求600*1280意味着主控需要通过物理接口输出600*1280的图像,然而LCD的背板芯片会剪裁掉左右两侧各60像素,得到480*1280的显示区域。那么我们的LCD屏幕... 查看详情
linuxlld
...制开发指南-手机|智能终端-瑞芯微RK-一牛网论坛(16rd.com)LinuxMIPIDSI驱动调试笔记-设备树DCS格式序列之配置LCD初始化代码(二)(qq.com)基于瑞芯微RV1109Linux屏幕背光调试心得-腾讯云开发者社区-腾讯云(tencent.com)RK1126从入门到放弃:... 查看详情
linuxmipidsilcd设备驱动开发调试细节学习笔记(代码片段)
最近在学习MIPI接口的LCD驱动开发与调试,这里我主要用的是MIPI-DSI接口,它学习起来真的是太复杂了,特别是对于我这种很久都没写驱动来说更是头疼,但是头疼归头疼,工作咱们还是要完成的,那就只能硬着头皮往下肝吧!首... 查看详情
lcd双图层驱动原理
参考技术Alcd双图层驱动原理是A:显示指针从矩形左上角的第一行第一个点开始,一个点一个点的在LCD上显示,在上面的时序图上用时间线表示就为VCLK,我们称之为像素时钟信号;B:当显示指针一直显示到矩形的右边就结束这... 查看详情
linuxmipidsilcd设备驱动开发调试细节学习笔记(代码片段)
最近在学习MIPI接口的LCD驱动开发与调试,这里我主要用的是MIPI-DSI接口,它学习起来真的是太复杂了,特别是对于我这种很久都没写驱动来说更是头疼,但是头疼归头疼,工作咱们还是要完成的,那就只能... 查看详情
lcd屏背光驱动调试心得---血的教训
开发板:明远智睿MY-IMX6-EK140内核源码:linux-3.14.52背光驱动IC:MP3202调光原理:通过开发板的核心板PWM4引脚控制MP3202的EN脚,输出不同的占空比从而达到输出平均电流的不同,这样就可以达到调节背光亮度的目的调试过程:1.从硬... 查看详情
lcd实验学习笔记:nandflash
s3c2440CPU内置NANDFLASH控制器。相关寄存大器起始地址为0x4e000000。通过设置NFCONF寄存器,设置NANDFLASH时序。通过设置NFCONT寄存器,使能NANDFLASH、初始化ECC等。代码: #defineGSTATUS1(*(volatileunsignedint*)0x560000B0)//读此寄存器可以知道CPU... 查看详情
jz2440裸机驱动第13章lcd控制器
本章目标 了解LCD显示器的接口及时序;掌握S3C2410/S3C2440LCD控制器的使用方法;了解帧缓冲区的概念,掌握如何设置帧缓冲区来显示图像;13.1LCD和LCD控制器13.1.1LCD显示器1.LCD的种类2.LCD的接口 CPU或显卡发出的图像数据... 查看详情
lcd学习(代码片段)
...入裸屏,也就是最终接口是RGB的信号线,需要MCU支持液晶驱动或者MCU连接液晶驱动芯片在JZ2440连接的就是裸屏,接口一般如下:带驱动芯片的液晶模块,类似STM32就是这么使用的,比如使用STM32连接ili9341或者 查看详情
lcd学习(代码片段)
...入裸屏,也就是最终接口是RGB的信号线,需要MCU支持液晶驱动或者MCU连接液晶驱动芯片在JZ2440连接的就是裸屏,接口一般如下:带驱动芯片的液晶模块,类似STM32就是这么使用的,比如使用STM32连接ili9341或者 查看详情
51单片机+l298驱动步进电机+l297测速+lcd1602显示+按键调试+proteus仿真(代码片段)
51单片机+L298驱动步进电机+L297测速+LCD1602显示+按键调试+Proteus仿真*Proteus仿真L298N是双H桥式驱动器。L297是步进电机控制集成芯片(包括环形分配器),可产生四相驱动信号,应用于微处理机控制两相双极性和四相单极性步进电机... 查看详情
lcd显示原理
...数据从一个位于系统内存的videobuffer传送到一个外部的LCD驱动器接口。类型:STN(超扭曲向列),它的特点是功耗低,但亮度不足,响应时间长;(1602那种类型的)TFT(薄膜晶体管),它的特点是响应时间短,画面清晰,但功耗稍... 查看详情
LCD配置:发送和传输时序
】LCD配置:发送和传输时序【英文标题】:ConfigurationofLCD:sendingandtransmissiontiming【发布时间】:2011-12-2404:31:39【问题描述】:我正在使用VHDL编程并尝试配置LCD。我的问题与LCD-interface-timing和Power-On-Initilization所需的时间有关。在进... 查看详情