中级会员
- 积分
- 254
- 金钱
- 254
- 注册时间
- 2020-3-22
- 在线时间
- 35 小时
|
本帖最后由 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 开发板
/*********************************************************************************************/
|
|