RGB屏参配置方法
本文介绍如何计算和配置RGB屏参。
Zephyr上添加RGB接口屏和调试方法一文中已经详细介绍过RGB接口的驱动信号,要正确的将一片RGB屏驱动起来,主要就是对VSYNC,HSYNC,DCLK进行正确配置,本文将详细说明如何根据spec,计算这三个信号的参数。
基本参数 链接到标题
RGB屏的驱动信号参数如下图(图片来源NXP,见后文参考)
RGB接口信号刷新一帧内容并不是只刷新要显示的内容,上图中Active Width和Active Heigh才是可视的显示
一帧以VSYNC开始,VSYNC的单位为H(行)为单位,经过VSW+VBP行后才真正的开始刷出显示数据,一帧数据刷新完后经过VFP行后再进行下一个帧周期。
一行以HSYNC开始,HSYNC的单位为DCLK(数据时钟),经过HSW+HBP后才真正的刷出显示数据,一行数据刷新完后记过HFP后再进行下一个行周期。
因此要确定刷新的屏参,需要配置好下面的参数:
HSW,HBP,HFP,Active Height, VSW,VBP,VHP,Active Width, DCLK
屏规格参数 链接到标题
当拿到一片屏的spec后,在屏的spec内去找Timing的说明,通常会给出这些参数如下
表中的参数和前面的驱动信号图对应关系如下
VSD period time – Total Heigh
VSD display area – Active Height
VSD back porch – VBP
VSD front porch – VFP
VSD pulse width – VSW
HSD period time – Total Width
HSD display area – Active Width
HSD back porch – HBP
HSD front porch – HFP
计算屏驱动参数 链接到标题
通过上面的对应关系我们已这份spec来计算实际的驱动屏参
1. 实际显示区域 链接到标题
实际显示区域每片屏都是固定的,直接按屏规格参数填写: Active Height = 480 Total Width = 800
2. 计算VSYNC 链接到标题
按照spec选择Total Hight使用典型值525 按照公式: Total Hight = VSW + VBP + Active Hight + VFP 将选定的值带入得到 VSW + VBP + VFP = 525-480 = 45 根据规格VBP只能选择32,因此 VSW+VFP = 45 - 32 = 13 根据规格选择VSW使用典型值3,因此 VFP = 13 -3 = 10 10落在VFP的区间范围1~255直接,因此符合规格,最后得出参数 VSW = 3,VBP=32,VFP=10, Active Hight=480
3. 计算HSYNC 链接到标题
按照spec选择Total Width使用典型值928 按照公式: Total Width = HSW + HBP + Active Width + HFP 将选定的值带入得到 HSW + HBP + HFP = 928-800 = 128 根据规格HBP选择典型值40,因此 HSW+HFP = 128 - 40 = 88 由于规格没有给出HSW范围,根据规格选择HFP使用典型值48,因此 HSW = 88 - 48 = 40 HSW = 40,HBP=40,VFP=48, Active Hight=800
4. 计算DCLK 链接到标题
DCLK是数据时钟,一个DCLK送出一个像素的数据,因此一帧数据将会送出Total Width * Total Hight个像素,也就需要对应数量的DCLK,如果帧率为fps,那么1秒钟就需要Total Width * Total Hight * fps个DCLK,这就是DCLK的频率: DCLK Freq = Total Width * Total Hight * fps 我们一开始已经选定Total Hight使用典型值525,Total Width使用典型值928, 我们想要配置为每秒60帧那么 DCLK Freq = 525*928*60 = 29.2M 规格里面显示DCLK Freq低于50M都可接受,因此可以按此配置
LCD控制器配置 链接到标题
不同的SOC其LCD硬件寄存器实现方式不一样,配置方式都略有不同,但基本都是下面参数的组合 VSW = 3,VBP=32,VFP=10, Active Hight=480 HSW = 40,HBP=40,VFP=48, Active Hight=800 Total Hight = 525 Total Width = 928 DCLK Freq = 29.2M