嵌入式linux调试dsi,LCD 调试总结

本文总结了嵌入式Linux系统中DSI LCD的调试经验,包括数据流程、初始化步骤及遇到的问题。在调试过程中,由于PCLK与MIPI clk换算不清导致LCD闪屏,最终通过检查DSI输出信号发现问题并解决。调试流程涉及DC、DSI控制器的初始化代码,以及DSI83 IC的使用。此外,文章强调了遇到问题时应跳出困境,根据原理寻找解决方案的重要性。
摘要由CSDN通过智能技术生成

LCD 调试总结

数据流程:

Framebuffer  -> DC  -> Dsi  ->  Dsi83 -> LCD

DC 通过DMA从framebuffer取数据 ,然后通过并口传递给Dsi , Dsi输出mipi信号给Dsi83 , Dsi83将MIPI信号转成LVDS信号给LCD。

初始化流程:

首先得给各个器件上电,然后执行各个控制器的初始化代码,这个过程里面要确保各个信号的稳定性以及时序符合芯片要求,这是调试驱动的第一步,这一步不能确保后面不管怎么搞都是瞎搞。

遇到的问题:

一、不知道pclk是什么意思,也不了解pclk与mipi clk的换算关系:

1,Pclk是一秒钟要送出的总的像素点,实际上就是 一行的像素点*总行数*帧率

2,mipi clk的算式就是mipi clk = pclk * bpp/num(lane)*2

文字解释,pclk*bpp就是一秒要送出的总的bit位也就是比特率,这是每一秒由DC送给Dsi的数据,因为它在芯片内部是以并口的形式送出的,而Dsi拿到数据后是以串口的形式送出的,所以这里计算mipi的clk要除以lane的总数,又因为mipi是上升沿下降沿都取数据,所以这里要除以2。

二、这次主要是遇到LCD不断闪屏,为了debug做过的实验有:

1, 测试模式下用mipi clk,仍然闪屏

2,测试模式下用外部clk,不闪屏

实际上从这里就有理由怀疑mipi的输出有问题,从原理上来看接下来也应该去check dsi的输出信号,但是因为mipi没有测试点接出来,所以一开始居然避开了这一项检测,转而去狂填参数,现在想起来大概是因为填参数对软件而言比较容易,但实在是没什么道理,我也对一开始没有坚持自己的推理让硬件去测信号感到不满。

解决问题:

最终吹掉dsi83 IC,量mipi信号,发现时钟的确输出不连贯,而对比使用该IC的能正常显示的板子,其clk是连贯的。那么我们首先要保证mipi信号输出的正确性。

最后改掉一个控制clk的 参数TEGRA_DSI_VIDEO_CLOCK_CONTINUOUS即可。

总结: 遇到问题,应该跳出来,找人喝茶聊天,根据原理寻找思路,而不是匆匆忙忙冒冒失失的一头扎进去,以至深陷其中,不能自拔。

最后附上一张图:

81ed9db02953d3d8c0500e98b1cd453c.png

方向不对,越努力越尴尬。

========================================华丽丽的分界线================代码======================

代码介绍:

英伟达平台:

对于linux内核显示相关代码在Dc.c (drivers\video\tegra\dc)目录下。

这是display control的驱动文件,在这个文件中首先看driver结构体:

struct platform_driver t

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值