【ARM裸板】S3C2440 时钟设置与分析

2020-03-08来源: eefocus关键字:ARM裸板  S3C2440  时钟设置

在这里插入图片描述

由时钟树分析,时钟源通过选择器接入给MPLL(Main PLL)与UPLL(USB PLL)

经过MPLL得到FCLK提供给CPU[ARM920T]

FCLK分别通过HDIVN与PDIVN分频得到HCLK与PCLK

HCLK接入给AHB总线,再给各种高速设备(Nand Flash、内存控制器、中断控制器…)

PCLK接入给APB总线,再给各种低速设别(I2C、PWM、GPIO、UART…)


1.时钟源最大值

在这里插入图片描述

2.时钟源

2.1 两种时钟源

1.晶振

2.外部引脚时钟输入


2.2 选择时钟源

通过改变OM[3:2]引脚来选择时钟源

在这里插入图片描述

JZ2440 OM[3:2]接入GND,则主时钟源与USB时钟源都选择外部晶振

在这里插入图片描述

3.上电时钟分析

在这里插入图片描述

复位等待, 等待电源稳定,复位芯片才输出高电平

在这里插入图片描述

2.根据OM[3:2]的值,FCLK=晶振

3.PLL锁存OM[3:2]的值

4.设置PLL(Lock Time中 CPU停止)

5.PLL工作

6.FCLK=PLL输出新的时钟,CPU运行


4.编程控制时钟速度

主要通过设置MPLLCON与CLKDIVN两个寄存器来控制时钟速度


外设时钟使能寄存器CLKCON,可以使得功耗更低(低功耗)


编程目标:FCLK=400MHz、HCLK=100MHz、PCLK=50MHz


4.1 时钟计算公式

在这里插入图片描述

4.2 MPLLCON寄存器

PDIV=1,SDIV=1,由公式可得MDIV=92

/* 设置MPLLCON(0x4C000004) = (92<<12) | (1<<4) | (1<<0)

* m = MDIV+8 = 92+8 =100

* p = PDIV+2 = 1+2 =3

* s = SDIV = 1

* FLCK = (2*m*Fin)/(p*(2^s)) = (2*100*12M)/(3*2^1) = 400M

  */

ldr r0, =0x4C000004

ldr r1, =(92<<12) | (1<<4) | (1<<0)

str r1,[r0]

//一旦设置PLL,就会锁定LOCK TIME直到PLL输出稳定,然后CPU工作

在这里插入图片描述

4.3 CLKDIVN寄存器

目标:FCLK=400M、FCLK=100M、PCLK=50M

则HDIVN设置为10(因为CAMDIVN默认值为0,所以无需关注),PDIVN设置为1

/* CLKDIVN(0x4C000014) = 0x05,fFCLK:fHCLK:fPCLK = 8:4:1 */

ldr r0, =0x4C000014

mov r1, #0x05

str r1,[r0]

在这里插入图片描述

5.注意事项

设置异步模式

如果HDIVN不是0,需要设置为异步模式,否则CPU会使用HCLK

#R1_nF:OR:R1_iA = 0xC0000000

在这里插入图片描述

5.1 注释

MRC指令将协处理器的寄存器中数值传送到ARM处理器的寄存器中

MCR指令将ARM处理器的寄存器中的数据传送到协处理器的寄存器中

c:co-process 协处理器、r:寄存器

汇编版本

mrc p15,0,r0,c1,c0,0   

orr r0,r0,#R1_nF:OR:R1_iA

mcr p15,0,r0,c1,c0,0 


C版本

__asm{ 

mrc p15, 0, r1, c1, c0, 0         /* 读取CP15 C1寄存器 */ 

orr r1, r1, #0xc0000000         /* 设置CPU总线模式 */ 

mcr p15, 0, r1, c1, c0, 0         /* 写回CP15 C1寄存器 */


6.S3C2440默认时钟频率

由芯片手册可知MPLLCON默认初始值为:

MDIV = 0x96 = 150

PDIV = 0x03

SDIV = 0

即:


m = MDIV+8 = 158

p = PDIV+2 = 5

s = SDIV = 0

可以推出:Fclk = (2 * m * Fin)/(p*(2^s)) = (2 * 158 * 12M)/(5 * 2^0) = 379.2M

在这里插入图片描述

关键字:ARM裸板  S3C2440  时钟设置 编辑:什么鱼 引用地址:http://news.eeworld.com.cn/mcu/ic490813.html 本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

上一篇:【ARM裸板】内存控制器、SDRAM基础与代码重定位
下一篇:【ARM裸板】启动文件与栈的简略分析

关注eeworld公众号 快捷获取更多信息
关注eeworld公众号
快捷获取更多信息
关注eeworld服务号 享受更多官方福利
关注eeworld服务号
享受更多官方福利

推荐阅读

ARM裸板实现LCD显示
的项目,如下:all: start.o sdram_init.o interrupt.o nand_flash.o main.o  led.o uart.o   execption.o  timer.o lib1funcs.o my_printf.o  string_utils.o lcd.o  arm-linux-ld -T lcd.lds  $^ libgcc.a -o lcd.elf arm-linux-objcopy -O binary -S lcd.elf lcd.bin arm-linux-objdump -D lcd.elf >
发表于 2020-05-04
ARM裸板实现LCD显示
ARM裸板程序的开发和编译(以点亮LED灯为例)
从这两个地方启动。具体就是把代码烧写到Nor flash或者Nand flash处,如果在Nand flash,启动时硬件会自动拷贝代码到4KB的内部RAM。GT2440开发板nGCS0接的是Norflash。无论哪种模式启动,上电后CPU跳转到0地址处开始执行。如果在片内内存中,我们必须用4KB的代码完成Nand flash,内存控制器的初始化,并且把代码搬运到片外内存中。如果在Nor flash中,我们同样需要初始化内存控制器。由于裸板程序较小,不会超过4KB,因此我们暂时不需要做这些操作(如果在Norflash中我们可直接运行的代码量更大)。此外,ARM处理器还有多种异常。系统上电和看门狗超时都会产生复位异常,跳转到0地址处执行
发表于 2020-04-11
ARM裸板程序的开发和编译(以点亮LED灯为例)
linux系统学习1-8:第1个ARM裸板程序及引申
为1),GPF4配置为输出设置GPFDAT[4]=1:输出高电平,led熄灭设置GPFDAT[4]=0:输出低电平,led点亮S3C2440框架与启动过程:S3C2440框架图: 启动过程:大多数ARM芯片从0地址启动Nor启动时候,Nor Flash基地址为0;片内RAM地址为0x4000,0000 cpu读出Nor上第一个指令(前4字节),执行,cpu继续读出其他指令执行。Nand启动,片内4kRAM基地址为0; Nor Flash不可以访问 2440硬件把Nand前4k内容复制到片内RAM,然后cpu从0地址取出第一条指令执行。第003节:编写第一个程序点亮LED怎么让GPF4输出1/0的方法:先
发表于 2020-03-28
linux系统学习1-8:第1个ARM裸板程序及引申
第008课 第1个ARM裸板程序及引申(点亮LED灯)
led_on.S    arm-linux-ld -Ttext 0 led_on.o -o led_on.elf    arm-linux-objcopy -O binary -S led_on.elf led_on.binclean:    rm *.bin *.o *.elf  以后只需要 使用 make 命令进行编译, make clean 命令进行清理。最后烧写到开发板上,即可看到只有一个LED亮,符合我们预期。第004节_汇编与机器码前面介绍过伪指令,伪指令是实际不存在的ARM命令,编译器在编译时转换成存在的ARM指令。我们代码中的ldr r1
发表于 2020-03-20
第008课 第1个ARM裸板程序及引申(点亮LED灯)
ARM裸板程序及引申_点亮LED
*.elf以后只需要 使用 make 命令进行编译, make clean 命令进行清理。最后烧写到开发板上,即可看到只有一个LED亮,符合我们预期。第004节_汇编与机器码:前面介绍过伪指令,伪指令是实际不存在的ARM命令,编译器在编译时转换成存在的ARM指令。我们代码中的ldr r1, =0x56000050这条伪指令的真实指令时什么呢?我们可以通过反汇编来查看。生成的led_on.dis就是反汇编文件。led_on.dis如下:led_on.elf:     file format elf32-littlearmDisassembly of section .text:00000000 <
发表于 2020-03-16
ARM裸板程序及引申_点亮LED
ARM裸板调用流程
一、汇编mdk软件会选择用户添加到工程文件里面的汇编文件执行(例startup_stm32f10x_md.s),对基本内容进行初始化比如栈空间,这个文件通常由芯片厂家提供,用户使用选择调用即可。二、跳转main函数在汇编执行初始化之后,最终在下面圈红的地方跳转到main函数。__main可以修改成其他名字比如smain,对应main函数名改成smain,也可以完成跳转
发表于 2020-03-11
ARM裸板调用流程
小广播
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2020 EEWORLD.com.cn, Inc. All rights reserved