从入职到现在,有个问题困惑我很久了。那就是怎么计算屏的帧数?
前言:代码里面的params->dsi.PLL_CLOCK 这个PLL_CLOCK是mipi clock吗?我的个人理解认为不是。
屏的帧数怎么计算(虽然可以用apk测出来,但是我想知道准确的数值)
目前只知道mtk平台的
液晶屏的模式,一种是command模式 (cmd),一种是video模式 (vdo)
目前我点过的屏都是vdo模式
mtk屏的帧数跟以下参数有关:height、vsa、vbp、vfp、width、hsa、hbp、hfp、LANE_NUM、位深、PLL_CLOCK、horizontal_bllp、clk_lp_per_line_enable
这是6761 62 65的屏的代码:LK跟Kernel代码一样
一块屏的部分代码
#define FRAME_WIDTH (720)
#define FRAME_HEIGHT (1600)
//params->dsi.mode = CMD_MODE;
params->dsi.mode = SYNC_PULSE_VDO_MODE; //BURST_VDO_MODE;
params->dsi.LANE_NUM = LCM_FOUR_LANE;
params->dsi.PS=LCM_PACKED_PS_24BIT_RGB888;
params->dsi.vertical_sync_active = 6;
params->dsi.vertical_backporch = 28;
params->dsi.vertical_frontporch = 140;
params->dsi.horizontal_sync_active = 4;
params->dsi.horizontal_backporch = 335;
params->dsi.horizontal_frontporch = 335;
params->dsi.PLL_CLOCK = 410;
params->dsi.horizontal_bllp = 0;
params->dsi.clk_lp_per_line_enable=1;
=========================================================================
网上看到他们说的计算公式:
Mipiclock = [ (width+hsync+hfp+hbp) x (height+vsync+vfp+vbp) ] x(bus_width) x fps/ (lane_num)/2
假如我把代码里面的PLL_CLOCK当成Mipiclock带进去,fps算得的结果是56.61,但是用apk测得明明是60帧啊。
我又用了其他的apk测,还是60帧。
=========================================================================
询问了mtk,mtk说旧的apk测出来的已经不准了,就是那个fps2d_4.apk
他说以这个表格为准
VPW HPW对应的是代码里面的vertical_sync_active和vertical_sync_active
Ideal Bit_Freq对应代码里面的PLL_CLOCK,表格中的Ideal Bit_Freq要x2,填820
左下角这两个,假如屏代码里面没有的话,就默认是0
horizontal_bllp
clk_lp_per_line_enable
表格算出来的是60.69,那跟apk测的差不多了。
表格公式又看不了,公式我也不知道。等以后理解深了再修改笔记。
==================================================================================================================================================
工作经验,跟屏的帧数(proch、mipi clock)有关的问题:(其实改的是代码里面的pll_clock,现在先认为pll_clock是mipi clock吧,个人理解还没那么到位)
1.点新屏
1.1屏点不亮
proch、mipi clock参数设得不对,导致帧数过低。
1.2雪花屏
雪花屏出现说明DDIC已经初始化成功,但数据没有刷出来。可以检查LCM的参数设定,尤其是porch参数,datarate的设定。
1.3内容不正常
此种情况通常已经可以隐约看到内容,屏也有色彩变化,但显示内容是乱的
首先check屏参各方面设置是否正确
在高帧率下出现异常,低帧率正常的情况,考虑可能是系统clock设定不足,可以考虑先拉系统clock至最大看能否正常
2.亮灭屏干扰
屏幕出现异常的亮灭情况。这种现象可能由多种因素引起,包括但不限于软件故障、硬件故障或外部电磁干扰等。例如,当设备靠近强磁场或高频率变化的电器时,可能会因为受到电磁干扰而导致屏幕闪烁或自动熄灭。
2.1软件解决方案:
我一般都是增大mipi clock或者减小mipi clock
比如mipi clock=260MHZ 帧数为60帧 mipi clock改为240后,58帧。客户测试没有问题了,不纠结帧数问题就不用改proch了。
2.2其他解决方案:
检查并更换可能损坏的硬件部件;避免将设备放置于强磁场附近以减少电磁干扰的影响
3.天线射频干扰
天线射频干扰则是指在无线通信过程中,由于外界因素的影响导致信号传输质量下降的现象。这种干扰可以来源于其他无线电信号、电力线路、电子设备等产生的电磁波。射频干扰会影响无线信号的接收与发送,可能导致通话质量下降、数据传输错误增加等问题。例如,在一些密集的电子设备使用环境中,多个设备同时发射的无线信号可能会相互干扰,影响彼此的通信效果。
3.1软件解决方案:
3.1.1.开展屏,mtk有个宏控 params->dsi.ssc_disable = 0;
3.1.2.修改mipi clock和proch 修改mipi的频段,可能是天线频段和mipi频段太接近了有干扰
天线射频干扰能先开展屏就先开展屏,因为我曾经遇到过亮灭屏干扰和天线射频干扰两个都有的,改了不同mipi clock和proch只能解决一个,那就只能改mipi clock去解决亮灭屏干扰,展屏解决天线射频干扰。或者你跟fae说服客户也行,说改不了,哈哈
3.2其他解决方案:
可以尝试改变设备的位置以远离干扰源;使用屏蔽材料包裹干扰源或受影响的设备以减少干扰;提高天线增益或使用更高质量的天线来增强信号接收能力;
4.tp问题(tp无触)
LCD的Vcom信号是影响TP的主要因素。LCD的刷新率可能也会对TP造成影响。我遇到过3次开机后tp无触的,看串口log tp固件版本号都读到了(固件加载成功),后面都是改了屏的初始化代码和proch参数改好的
标签:mipi,干扰,浅谈,clock,代码,MTK,params,dsi From: https://blog.csdn.net/m0_73108512/article/details/143385159