OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4150|回复: 0

<新手向>第二期 裸机开发 P52 第21.4讲 RGBLCD实验 像素时钟 随堂笔记

[复制链接]

5

主题

17

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
254
金钱
254
注册时间
2020-3-22
在线时间
35 小时
发表于 2021-1-18 20:36:24 | 显示全部楼层 |阅读模式
本帖最后由 YOKI 于 2021-3-22 20:47 编辑

/********************************************/
时间        :2021/01/18/
作者        :YOKI
导师        :正点原子 左忠凯
硬件        :正点原子 ALPHA I.MX LINUX 开发板
/*******************************************/
LCD_RGB屏幕接口实验:
3、引脚复用 和功能设置
LCD_IO 初始化
3-1:LCD像素时钟
若为ATK4384(4.3寸 800*480) 屏幕 则
1th = HSPW+HBP+HOZVAL(水平区域显示时间)+HFP = (48+88+800+40)tCLK = 976 tCLK
显示一帧需要
VSPW+VBP+VOZVAL+VFP = (3+32+480+13)th = 528 th
显示一帧总共需要(VSPW+VBP+VOZVAL+VFP)*(HSPW+HBP+HOZVAL+HFP)= 528 th * 976 tCLK = 515328 tCLK
按每秒60帧计算 515328 tCLK*60帧 =30919680 约 31M 也就是说按每秒60帧的速度显示需要的时钟频率约 为31MHZ
以ATK4342(4.3寸 480*272) 屏幕为例
1th = HSPW+HBP+HOZVAL+HFP = (1+40+480+5)tCLK = 526 tCLK
显示一帧需要
VSPW+VBP+VOZVAL+VFP = (1+8+272+8)th = 289 th
显示一帧总共需要(VSPW+VBP+VOZVAL+VFP)*(HSPW+HBP+HOZVAL+HFP)= 289 th * 526 tCLK = 152014 tCLK
按每秒60帧计算 152014 tCLK*60帧 =9120840 约 9.12M 也就是说按每秒60帧的速度显示需要的时钟频率约 为9.12MHZ
LCD显示需要的时钟信号来自 6ULL芯片 CLK引脚
根据6ULL的时钟树,LCDIF1_CLK_ROOT 为LCD的时钟输出源,
而 6ULL 专门设置了 video PLL 即 PLL5 作为显示设备时钟源
根据时钟树来看LCD时钟设置需要一下几个步骤:
PLL5--->
PLL_VIDEOn寄存器的[POST_DIV_SELECT]位(分频)--->
CCM_ANALOG_MISC2n寄存器[VIDEO_DIV]位(分频)--->
CSCDR2寄存器[LCDIF1_PRE_CLK_SEL]位(选择)--->
CSCDR2寄存器[LCDIF1_PRED]位(2分频)--->
CBCMR寄存器[LCDIF1_PODF]位(2分频)--->
CSCDR2寄存器[LCDIF1_CLK_SEL]位(选择)---> LCDIF1_CLK_ROOT(到LCD屏)
PLL5 CLK= Fref * (DIV_SELECT + NUM/DENOM)
Fref = 24MHz(晶振)
1、CCM_ANALOG_PLL_VIDEOn      的bit0-bit6   [DIV_SELECT] 可选值范围 27-54
2、CCM_ANALOG_PLL_VIDEO_NUM   的bit0-bit29  [NUM](分子) 设置为0
     CCM_ANALOG_PLL_VIDEO_DENOM 的bit0-bit29  [DENOM](分母) 可设置为1或 非0的任意数 使 NUM/DENOM =0;
3、CCM_ANALOG_PLL_VIDEOn 的 bit19-bit20 [POST_DIV_SELECT] 置为10 设置为 1分频(00为 4分频,01为2分频)
4、CCM_ANALOG_MISC2n     的 bit30-bit31 [VIDEO_DIV] 置为10 设置为 1分频 (00/10为 1分频, 01为2分频, 11为 4分频)
5、CCM_CSCDR2            的 bit15-bit17 [LCDIF1_PRE_CLK_SEL] 设置为 010 选PLL5为时钟源
6、CCM_CSCDR2            的 bit12-bit14 [LCDIF1_PRED] 设置为 000 设置为 1分频
7、CCM_CBCMR             的 bit23-bit25 [LCDIF1_PODF] 设置为 000 设置为 1分频
8、CCM_CSCDR2            的 bit09-bit11 [LCDIF1_CLK_SEL] 设置为 000 选择LCDIF1_PRED
概括一下
将1、2、称为PLL5 频率设置,
将 3、4、合并为 一级分频(预分频)
将5、称为 一次选频(预选频)
将 6、7、合并为 二级分频
将8、称为 二次选频(选频)
整个时钟频率设置过程为: PLL5频率设置-->  一级分频(预分频)-->一次选频(预选频)-->二级分频-->二次选频(选频)-->输出到 LCD屏幕时钟引脚
                                                                (1、2、4、8、16分频)                       (1~8)*(1~8)分频
再次回顾公式:
PLL5 CLK= Fref * (DIV_SELECT + NUM/DENOM)
DIV_SELECT 取值在27-54,也就是说 PLL5 CLK的频率最低为 24MHz *27~54 = 648 MHz ~ 1296 MHz(约650~1300)MHZ
以650MHZ 为例650MHZ = 24 MHz *(27+1/12) 这个频率称为 loopdiv

假设使用 ATK4342(4.3寸 480*272) 屏幕 帧率为 66帧/每秒 需要的时钟频率为:
152014 tCLK*66帧 =10032924 即10MHz
可以如下设置:

PLL5 = 24MHz *(30+0/1) =720MHz
一级分频(预分频) = 2*4 = 8分频
二级分频 = 3*3= 9 分频
输出LCDIF1_CLK_ROOT = 720/(8*9)= 10MHz

若使用 ATK4384(4.3寸 800*480) 屏幕 帧率 为 62 帧/每秒 需要的时钟频率为
515328 tCLK*62帧 =31950336 约为32MHZ
可以如下设置:

PLL5 = 24MHz *(40+0/1) =960MHz
一级分频(预分频) = 1*2 = 2分频
二级分频 = 3*5= 15 分频
输出LCDIF1_CLK_ROOT = 960/(2*15)= 32MHz

这段视频如有疑问可以回顾一下6ULL 时钟系统有关章节的讲解
也可以跳转到我以前的笔记
<新手向>第二期 裸机开发 P26~P28 第14讲 时钟系统 随堂笔记
http://www.openedv.com/forum.php ... 8022&fromuid=245549
(出处: OpenEdv-开源电子网)

以上注释和代码都是在学习 《正点原子 linux 第二期 裸机开发视频 P41-P42 第19.1-19.2讲 IRQ中断服务编写 》 过程中
跟着 左萌主 学习并加入了一点点自己的思考写成的,作为一个小菜鸡,我大着胆子发出来跟大家一起记录学习
如果有帮助请大家自行参考、下载,如果 转载 请注明出处,并在论坛和我联系。如果有错误请大神指正!左萌主赛高!
作者        :YOKI
导师        :正点原子 左忠凯
硬件        :正点原子 ALPHA I.MX LINUX 开发板
/*********************************************************************************************/

14_RGBLCD.rar

621.35 KB, 下载次数: 10

LCD驱动源代码

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-25 22:48

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表