X
首页
技术
模拟电子
单片机
半导体
电源管理
嵌入式
传感器
最能打国产芯
应用
汽车电子
工业控制
家用电子
手机便携
安防电子
医疗电子
网络通信
测试测量
物联网
最能打国产芯
大学堂
首页
直播
专题
TI 培训
论坛
汽车电子
国产芯片
电机驱动控制
电源技术
单片机
模拟电子
PCB设计
电子竞赛
DIY/开源
嵌入式系统
医疗电子
颁奖专区
【厂商专区】
【电子技术】
【创意与实践】
【行业应用】
【休息一下】
最能打国产芯
活动中心
直播
发现活动
颁奖区
电子头条
参考设计
下载中心
分类资源
文集
排行榜
电路图
Datasheet
最能打国产芯
国产芯片交流
[MCU] 全志V853开发板 Tina SDK LCD小分辨率DCLK设置问题
aleksib
2022-10-24 11:28
楼主
**1.主题** Tina SDK LCD小分辨率DCLK设置 **2.问题背景** 产品:带显示屏的产品 硬件:V系列 + DE 软件:Tina SDK 其他:使用小分辨的LCD显示频,根据LCD的时序算出的DLCK小于48MHz **3.具体表现** 可以看到希望设置的dlck为10MHz,但lck real dclk为18MHz,导致后续的帧率显示异常 ``` [ 0.186329] disp 0, clk: pll(40000000),clk(40000000),dclk(10000000) dsi_rate(10000000) [ 0.186329] clk real:pll(72000000),clk(72000000),dclk(18000000) dsi_rate(18000000) ``` 查看信息: ``` root@(none):/sys/devices/virtual/disp/disp/attr# cat sys screen 0: de_rate 300000000 hz, ref_fps:50 mgr0: 272x480 fmt[rgb] cs[0x204] range[full] eotf[0x4] bits[8bits] err[0] force_sync[0] unblank direct_show[false] dmabuf: cache[0] cache max[0] umap skip[0] overflow[0] lcd output backlight(255) fps:90.9 272x 480 err:0 skip:170 irq:22509 vsync:0 vsync_skip:0 BUF enable ch[0] lyr[0] z[2] prem[N] a[pixel 128] fmt[ 77] fb[ 272, 480; 136, 240; 0, 0] crop[ 0, 0, 272, 480] frame[ 0, 0, 272, 480] addr[ 2e0000, 2d0000, 0] flags[0x 0] trd[0,0] BUF enable ch[2] lyr[0] z[16] prem[N] a[pixel 150] fmt[ 0] fb[ 272, 480; 272, 480; 272, 480] crop[ 0, 0, 272, 480] frame[ 0, 0, 272, 480] addr[ 17f800, 0, 0] flags[0x ``` **4.问题分析** 当LCD使用小分辨率时,根据LCD需要的时序参数,计算出来的dlck一般会小于48MHz,或者更小,此时客户计算出来的dclk会很小,可能会整除不了24,然后直接设置了dclk,比如设置lcd_dclk_freq = <10>;驱动底层默认的分频系数为4分频,所以理论计算值得到的pll值为40MHz,而真实的LCD的PLL是由24MHz倍频得到,而40MHz,并不是24的倍数,所以此时PLL的频率会向上取,此处计算出来的是72MHz,然后4分频得到的真实的dlck是18MHz,从而使得LCD出现异常。 **5.根本原因** 小分辨率dts中设置了不能整除24MHz的频率。 **6.解决办法** 对于小分辨的的LCD设置DCLK的时候,计算出来的dclk的理论值尽量按照以下的频率值的设置: 48MHz 24MHz 12MHz 8MHz 6MHz 4MHz 当设置条件1的dclk时,显示的帧率或者显示还是异常,则就按照计算出来的理论值来设置即可,比如计算出来的dclk的值为10MHz, 则dts中lcd_dclk_freq = <10>;,然后根据启动log来调整分频系数,如下: ``` [ 0.186329] disp 0, clk: pll(40000000),clk(40000000),dclk(10000000) dsi_rate(10000000) [ 0.186329] clk real:pll(72000000),clk(72000000),dclk(18000000) dsi_rate(18000000) ``` 从打印可以看到此时的分频系统是4分频:pll/dclk=4,所以想得到接近10MHz的频率此时可以把分频系数改成6或者8, 72/6=12, 72/8=9。 修改分频系数 ``` 3.1 kernel(drivers/video/fbdev/sunxi/disp2/disp/de/lowlevel_v2x/disp_al.c) static struct lcd_clk_info clk_tbl[] = { {LCD_IF_HV, 6, 1, 1, 0}, /* CPU接口 / {LCD_IF_CPU, 12, 1, 1, 0}, / LVDS接口 / {LCD_IF_LVDS, 7, 1, 1, 0}, #if defined(DSI_VERSION_40) {LCD_IF_DSI, 4, 1, 4, 148500000}, #else / mipi接口 / {LCD_IF_DSI, 4, 1, 4, 0}, / 改成8分频 {LCD_IF_DSI, 8, 1, 8, 0}*/ #endif /endif DSI_VERSION_40/ {LCD_IF_VDPO, 4, 1, 1, 0}, }; 3.2 uboot(drivers/video/sunxi/disp2/disp/de/lowlevel_v2x/disp_al.c) static struct lcd_clk_info clk_tbl[] = { {LCD_IF_HV, 6, 1, 1, 0}, {LCD_IF_CPU, 12, 1, 1, 0}, {LCD_IF_LVDS, 7, 1, 1, 0}, #if defined(DSI_VERSION_40) {LCD_IF_DSI, 4, 1, 4, 150000000}, #else {LCD_IF_DSI, 8, 1, 8, 0}, #endif /*endif DSI_VERSION_40 */ }; ```
点赞
回复评论 (2)
沙发
Jacktang
原来这个小分辨率dts中设置了不能整除24MHz的频率是问题啊
点赞
2022-10-25 08:28
板凳
freebsder
调lcd好辛苦,谢谢楼主分享!
默认摸鱼,再摸鱼。2022、9、28
点赞
2022-10-31 16:45
最新活动
报名直播赢【双肩包、京东卡、水杯】| 高可靠性IGBT的新选择——安世半导体650V IGBT
30套RV1106 Linux开发板(带摄像头),邀您动手挑战边缘AI~
安世半导体理想二极管与负载开关,保障物联网应用的稳健高效运行
免费申请 | 上百份MPS MIE模块,免费试用还有礼!
PI 电源小课堂|无 DC-DC 变换实现多路高精度输出反激电源
2024 瑞萨电子MCU/MPU工业技术研讨会——深圳、上海站, 火热报名中
随便看看
在打印驱动中调用SetPrinterData和GetPrinterData无效
小资料: 什么是ARM, ARM CUP, ARM体系结构和编程
MY-IMX6-EK200用busybox编译自己的u-boot和kernel源码
求助
IPM智能功率模块控制电源选择
AVR309 USB to UART Protocol Converter 中文版
开关电源电路结构与LED驱动电源的设计应用
【ESP32-Korvo测评】 02 硬件熟悉
【RPi PICO】Programmable IO例子
一个好的ftp地址!
调用RAS拨号,加载coredll.lib的现象
为什么呢
急!怎么检测U盘的芯片信息啊,
哪位高人帮我看看这段程序
Keil ARM 5.0出来了
中断问题!
无操作系统的arm9裸片能实现多线程吗?该如何实现?
【TMS320测频一】LAUNCHXL TMS320F280049C 开箱和新建工程电亮LED
FPGA助学开发板到了,简单和大家分享一下
三星2510开发板,那家比较好??有没有那位朋友推荐推荐
电子工程世界版权所有
京B2-20211791
京ICP备10001474号-1
京公网安备 11010802033920号
回复
写回复
收藏
回复