ARM系统时钟(S3C2440)

news/2025/1/11 9:49:37/

参考韦东山嵌入式
S3C2440有三种时钟:FCLK HCLK PCLK
FCLK: CPU
HCLK :内存芯片,网卡等
PCLK :UART,定时器等
设置这三种时钟的方式:晶振通过PLL,达到一个很高的频率FCLK ,然后将FCLK 分频,以达到想要的HCLK PCLK;
下图是S3C2440CPU,系统刚上电时cpu运行的频率FCLK等于晶振OSC的频率,通过PLL设置,FCLK达到一个新的很高的频率。图中有一个锁定时间,在锁定时间内,cpu停止运行,当频率稳定后,CPU再次开始以新的频率运行。
在这里插入图片描述通过上面的表述,需要对PLL进行设置:
  ①锁定时间:LOCKTIME 寄存器
  ②PLL寄存器:MPLLCON 通过这个寄存器,设置MPLL(FCLK)寄存器的值
  ②分频寄存器:CLKDIVN 设置HCLK PCLK寄存器的值

/** 对于MPLLCON寄存器,[19:12]为MDIV,[9:4]为PDIV,[1:0]为SDIV* 有如下计算公式:*  S3C2410: MPLL(FCLK) = (m * Fin)/(p * 2^s)*  S3C2410: MPLL(FCLK) = (2 * m * Fin)/(p * 2^s)*  其中: m = MDIV + 8, p = PDIV + 2, s = SDIV* 对于本开发板,Fin = 12MHz* 设置CLKDIVN,令分频比为:FCLK:HCLK:PCLK=1:2:4,* FCLK=200MHz,HCLK=100MHz,PCLK=50MHz*/

如下是启动代码以及时钟初始化代码:

@******************************************************************************
@ File:head.S
@ 功能:初始化,设置中断模式、系统模式的栈,设置好中断处理函数
@******************************************************************************       .extern     main
.text 
.global _start 
_start:
@******************************************************************************       
@ 中断向量,本程序中,除Reset和HandleIRQ外,其它异常都没有使用
@******************************************************************************       b   Reset@ 0x04: 未定义指令中止模式的向量地址
HandleUndef:b   HandleUndef @ 0x08: 管理模式的向量地址,通过SWI指令进入此模式
HandleSWI:b   HandleSWI@ 0x0c: 指令预取终止导致的异常的向量地址
HandlePrefetchAbort:b   HandlePrefetchAbort@ 0x10: 数据访问终止导致的异常的向量地址
HandleDataAbort:b   HandleDataAbort@ 0x14: 保留
HandleNotUsed:b   HandleNotUsed@ 0x18: 中断模式的向量地址b   HandleIRQ@ 0x1c: 快中断模式的向量地址
HandleFIQ:b   HandleFIQReset:                  ldr sp, =4096           @ 设置栈指针,以下都是C函数,调用前需要设好栈bl  disable_watch_dog   @ 关闭WATCHDOG,否则CPU会不断重启bl  clock_init          @ 设置MPLL,改变FCLK、HCLK、PCLKbl  memsetup            @ 设置存储控制器以使用SDRAMbl  copy_steppingstone_to_sdram     @ 复制代码到SDRAM中ldr pc, =on_sdram                   @ 跳到SDRAM中继续执行
on_sdram:msr cpsr_c, #0xd2       @ 进入中断模式ldr sp, =4096           @ 设置中断模式栈指针msr cpsr_c, #0xdf       @ 进入系统模式ldr sp, =0x34000000     @ 设置系统模式栈指针,bl  init_led            @ 初始化LED的GPIO管脚bl  timer0_init         @ 初始化定时器0   bl  init_irq            @ 调用中断初始化函数,在init.c中msr cpsr_c, #0x5f       @ 设置I-bit=0,开IRQ中断ldr lr, =halt_loop      @ 设置返回地址ldr pc, =main           @ 调用main函数
halt_loop:b   halt_loopHandleIRQ:sub lr, lr, #4                  @ 计算返回地址stmdb   sp!,    { r0-r12,lr }   @ 保存使用到的寄存器@ 注意,此时的sp是中断模式的sp@ 初始值是上面设置的4096ldr lr, =int_return             @ 设置调用ISR即EINT_Handle函数后的返回地址  ldr pc, =Timer0_Handle          @ 调用中断服务函数,在interrupt.c中
int_return:ldmia   sp!,    { r0-r12,pc }^  @ 中断返回, ^表示将spsr的值复制到cpsr

其中clock_init 是c代码实现,如下:

#define S3C2410_MPLL_200MHZ     ((0x5c<<12)|(0x04<<4)|(0x00))
#define S3C2440_MPLL_200MHZ     ((0x5c<<12)|(0x01<<4)|(0x02))
void clock_init(void)
{// LOCKTIME = 0x00ffffff;   // 使用默认值即可CLKDIVN  = 0x03;            // FCLK:HCLK:PCLK=1:2:4, HDIVN=1,PDIVN=1/* 如果HDIVN非0,CPU的总线模式应该从“fast bus mode”变为“asynchronous bus mode” */
__asm__("mrc    p15, 0, r1, c1, c0, 0\n"        /* 读出控制寄存器 */ "orr    r1, r1, #0xc0000000\n"          /* 设置为“asynchronous bus mode” */"mcr    p15, 0, r1, c1, c0, 0\n"        /* 写入控制寄存器 */);/* 判断是S3C2410还是S3C2440 */if ((GSTATUS1 == 0x32410000) || (GSTATUS1 == 0x32410002)){MPLLCON = S3C2410_MPLL_200MHZ;  /* 现在,FCLK=200MHz,HCLK=100MHz,PCLK=50MHz */}else{MPLLCON = S3C2440_MPLL_200MHZ;  /* 现在,FCLK=200MHz,HCLK=100MHz,PCLK=50MHz */}       
}

下图是芯片手册中对相关寄存器的说明:
1、锁定时间寄存器(LOCKTIME)
在这里插入图片描述
2、PLL控制寄存器
在这里插入图片描述
3、分频寄存器在这里插入图片描述


http://www.ppmy.cn/news/809569.html

相关文章

SM4 简介

SM4 我国国家密码管理局在20012年公布了无线局域网产品使用的SM4密码算法——商用密码算法。它是分组算法当中的一种&#xff0c;算法特点是设计简沽&#xff0c;结构有特点&#xff0c;安全高效。数据分组长度为128比特&#xff0c;密钥长度为128 比特。加密算法与密钥扩展算法…

python接口自动化(二十六)--批量执行用例 discover(详解)

简介  我们在写用例的时候&#xff0c;单个脚本的用例好执行&#xff0c;那么多个脚本的时候&#xff0c;如何批量执行呢&#xff1f;这时候就需要用到 unittest 里面的 discover 方法来加载用例了。加载用例后&#xff0c;用 unittest 里面的 TextTestRunner 这里类的 run 方…

uniapp电子签名以及竖屏签名后内容旋转90度变为横屏图片

用该插件挺不错的 电子签名插件地址 如果你一个页面要用多个该插件&#xff0c;就改成不同的cavas-id&#xff0c;修改插件源码 效果图 竖屏写 旋转成横屏图片 插件内 在拿到签名临时地址后的页面 <!-- 旋转图片canvas --> <canvas canvas-id"camCacnvs&quo…

企业信息化可以为企业带来什么效益?

一、什么是信息化 在具体谈信息化前我们先来谈一谈信息化和数字化 信息化&#xff1a;信息化是指培养、发展以计算机为主的智能化工具为代表的新生产力&#xff0c;并使之造福于社会的历史过程。与智能化工具相适应的生产力&#xff0c;称为信息化生产力。 数字化&#xff1a;…

《刘擎西方现代思想讲义》读书笔记

文章目录 书籍信息导论思想有什么现实意义思想内在于现实利益并不是物质性的人类行为的复杂动机结构 什么是现代和现代性“现代”是一种新的时间意识“现代化”的过程与“现代性”的结果 古今之变:古代和现代到底哪里不一样古今之变的思想动力古今之变后的两个观念转变 第一章&…

乌合之众-大众心理研究(十四)

第一卷群体的性格。 第四章。群体信念都采取的一种宗教形式。 1.什么是宗教热忱 2.宗教热忱不需要崇拜某个商品。 3.宗教热诚的特点。 4.信念&#xff0c;采取宗教形式hold力量各种例子&#xff0c;民众的重赏从未消失。宗教热诚复活石的新形势。 5.无神论也采取宗教形式。 6…

追悼伟大的科学家史蒂芬·霍金,他留下的预言能实现吗 ?

据英国天空新闻等多家媒体3月14日消息&#xff0c;史蒂芬霍金去世&#xff0c;享年76岁。 个人信仰霍金表示&#xff0c;世界上并不存在神&#xff0c;自己是无神论者&#xff0c;宗教相信奇迹&#xff0c;但是奇迹不能和科学并存。精彩语录1.当你面临着夭折的可能性&#xff0…

马斯洛需求理论

马斯洛的需求层次理论简介 亚伯拉罕马斯洛 ( Abraham Harold Maslow , 1908-1970)美国社会心理学家、人格理论家和比较心理学家&#xff0c;人本主义心理学的主要发起者和理论家, 心理学第三势力的领导人。 在马斯洛看来&#xff0c;人类价值体系存在两类不同的需要&#xff0c…