[国嵌攻略][038][时钟初始化]
时钟脉冲信号
按一定的电压幅度,一定的时间间隔连续发出的脉冲信号叫做时钟脉冲信号。用于给处理器和其他硬件提供时钟度量。
时钟脉冲频率
在单位时间内产生的时钟脉冲的个数叫做时间脉冲频率
时钟源分类
1.晶振:又称晶体振荡器,通过石英晶体切割、加电极、通电后会产生固定的机械震荡。优点是结构简单、噪声低,缺点是生产成本高。
2.PLL:锁相环,通过外部晶振和锁相环电路来提高晶振的频率。
时钟体系
1.晶振频率是多少?
2.有多少个PLL?
3.PLL产生出了哪些时钟?(ARM核使用的是哪个时钟)
4.产生出来的时钟用来做什么?
5.在datasheet中的CLOCK & POWER MANAGEMENT中可以相关描述
2440时钟体系
1.晶振频率是12MHz
2.MPLL,UPLL
3.MPLL产生出来FCLK、HCLK、PCLK;UPLL产生出来UCLK
时钟 |
应用场合 |
应用举例 |
所属PLL |
FCLK |
处理器 |
ARM9 |
MPLL |
HCLK |
AHB总线 |
LCD,DMA |
MPLL |
PCLK |
APB总线 |
UART,GPIO |
MPLL |
UCLK |
USB总线 |
USB |
UPLL |
6410时钟体系
1.晶振是12MHz
2.APLL,MPLL,EPLL
3.APLL产生出来ARMCLK;MPLL产生出来HCLK、PCLK;EPLL产生出来SCLK
时钟 |
应用场合 |
应用举例 |
所属PLL |
ACLK |
处理器 |
ARM11 |
APLL |
HCLK |
AHB总线 |
LCD,DMA |
MPLL |
PCLK |
APB总线 |
UART,GPIO |
MPLL |
SCLK |
USB总线 |
USB |
EPLL |
210时钟体系
1.晶振是24MHz
2.APLL,MPLL,EPLL,VPLL
时钟体系 |
所属时钟 |
应用举例 |
锁相环 |
MSYS |
ARMCLK HCLK_MSYS PCLK_SYS |
ARM核 内存控制器 中断 |
APLL |
DSYS |
HCLK_DSYS PCLK_DSYS |
显示相关部件如FIMC |
MPLL |
PSYS |
HCLK_PSYS CLK_DPM |
外设,如UART,I2C |
EPLL |
|
视频相关 |
|
VPLL |
思维导图设计
1.上电之后ARM核按照晶振频率在工作
2.当PLL配置完成是会进入Lock Time,处理器停止工作,然后以新的频率开始工作。
3.时钟初始化软件需要完成的工作:
3.1.配置Lock Time;
3.2.设置分频系数(用于FCLK来配置HCLK和PCLK);
3.3.如果HDIVN不等于0,需要设置CPU从快速模式到异步模式。FCLK是核的频率,HCLK是总线的频率,当核的频率和总线的频率不相等的时候需要设置CPU到异步工作模式。
3.4.配置FCLK
代码编写
1.找到设置lock time的寄存器LOCKTIME(0x4C000000),一般使用默认值,所以不需要去设置
2.设置PLL需要去设置MPLLCON(0x4C000004)中的MDIV=127 PDIV=2 SDIV=1
3.设置分频系数一定要在datasheet中对应的表里面。可以参考uboot中的分频系数来设置FCLK:HCLK:PCLK=1:4:8 HDIVN=2 PDIVN=1。在CLKDIVN(0x4C000014)寄存器中是用来设置HDIVN和PDIVN的
4.设置异步工作模式需要在ARM核手册中找到CP15的R1寄存器的iA和nF位,并设置为1
时钟设置总结(可以参考芯片手册和uboot代码)
1.设置PLL系数
2.设置选择器
3.设置分频系数
4.设置异步模式
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | /* *名称:init_sysclk *功能:初始化系统时钟 */ init_sysclk: //设置PLL系数 ldr r0, =MPLLCON ldr r1, =MPLLCON_VAL str r1, [r0] //设置分频系数 ldr r0, =CLKDIVN ldr r1, =CLKDIVN_VAL str r1, [r0] //设置异步模式 mrc p15, 0, r0, c1, c0, 0 orr r0, r0, #0xC0000000 //设置iA:1 iF:1 mcr p15, 0, r0, c1, c0, 0 mov pc, lr |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术