mipi LCD 的CLK时钟频率与显示分辨率及帧率的关系【转】
转自:https://www.cnblogs.com/cartsp/p/6434371.html
我们先来看一个公式:Mipiclock = [ (width+hsync+hfp+hbp) x (height+vsync+vfp+vbp) ] x(bus_width) x fps/ (lane_num)/2
即mipi 屏的传输时钟频率(CLKN,CLKP)等于(屏幕分辨率宽width+hsync+hfp+hbp)x ( 屏幕分辨率高height+vsync+vfp+vbp) x(RGB显示数据宽度) x 帧率/ (lane_num)/2
简单解释下:
一帧画面需要的数据量为(单位bit):FRAME_BIT = (屏幕有效显示宽度+hsync+hfp+hbp) x ( 屏幕有效显示高度+vsync+vfp+vbp) x(RGB显示数据宽度24)
一秒钟内需要传输的数据量为(单位bps):FRAME_BIT x fps(帧率)。
那为何要除以lane_num----因为mipi通讯协议中,一个CLOCK几个lane是可以同时传输数据的。
为何又要除以2----因为根据mipi通讯协议,CLK_N、CLK_P这两根时钟线的上升沿/下降沿可以获取到数据。
因此我们可以得出如下结论:
1.在相同的时钟频率下,lane数越多,则单位时间内可以传输的数据越多。若显示帧率固定不变,则可以支持的更大的分辨率;而分辨率固定不变的情况下,则我们可以考虑支持更高的帧率显示。
2.在lane数固定的情况下,提高传输的时钟频率,则单位时间内也可以传输更多的显示数据。进而我们可以考虑是提高帧率还是提高分辨率,或两者做出平衡。
那么我们是否可以任意无限制的提高mipi的传输时钟频率及lane数目呢?mipi通讯协议对此进行了限制,一组CLOCK最高只能支持4组lane,一组lane的传输速度最高只能支持到1 Gbps。也就是说一组CLOCK最高只能支持到4 Gbps速度传输。
此时就引出了一个新问题:4Gbps速度传输,是满足不了现在市场上推出的4K电视的带宽要求的,怎么办?答案是使用8组lane,使用两组clock来传输。
下面我们以展讯7731平台下EK79023这款LCD 驱动IC的配置参数进行实例说明:
static struct timing_rgb lcd_ek79023_mipi_timing = {
.hfp = 100, /* unit: pixel */
.hbp = 60,
.hsync = 24,
.vfp = 22, /*unit:line*/
.vbp = 10,
.vsync = 2,
};
static struct info_mipi lcd_ek79023_mipi_info = {
.work_mode = SPRDFB_MIPI_MODE_VIDEO,
.video_bus_width =24, /*18,16*/
.lan_number = 2,
.phy_feq=660*1000,
.h_sync_pol =SPRDFB_POLARITY_POS,
.v_sync_pol = SPRDFB_POLARITY_POS,
.de_pol =SPRDFB_POLARITY_POS,
.te_pol =SPRDFB_POLARITY_POS,
.color_mode_pol =SPRDFB_POLARITY_NEG,
.shut_down_pol =SPRDFB_POLARITY_NEG,
.timing =&lcd_ek79023_mipi_timing,
.ops = NULL,
};
struct panel_spec lcd_ek79023_mipi_spec = {
.width = 600,
.height = 1024,
.fps =57,//62,//67,//52,//57,//60,
.type =LCD_MODE_DSI,
.direction =LCD_DIRECT_NORMAL,
.info = {
.mipi =&lcd_ek79023_mipi_info
},
.ops =&lcd_ek79023_mipi_operations,
};
从中可知,该LCD的分辨率为600 x 1024,帧率为57 HZ。
一帧图像的数据量为:FRAME_BIT=(600+24+100+60) x (1024+2+22+10) x(24)=19907328 bit
一秒钟的数据量为:19907328 x 57 = 1134.717696 Mbps
所需的mipi时钟频率为:1134717696/2(lane)/2= 283.679424 Mhz
一组lane的传输速度是:283.679424 x 2= 576.358848 Mbps
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· AI与.NET技术实操系列(六):基于图像分类模型对图像进行分类
2017-06-07 内核中的内存申请:kmalloc、vmalloc、kzalloc、kcalloc、get_free_pages【转】
2016-06-07 strncpy 引起的思考,重新认识了strncpy这个函数【转】
2016-06-07 内核分配大块连续内存的方法【转】
2016-06-07 ARM-Linux (临时,正式) 建立页表的比较【转】
2016-06-07 什么是SVC模式【转】
2016-06-07 ARM 中断状态和SVC状态的堆栈切换 (异常)【转】
2016-06-07 UART硬件流控制信号的使用(图)DTR 【转】