S3C2440裸机------时钟

发布者:冰雪勇士最新更新时间:2021-10-13 来源: eefocus关键字:时钟 手机看文章 扫描二维码
随时随地手机看文章

1.S3C2440的时钟体系

1.1.S3C2440结构框图

从上面的结构图可以看出,S3C2440主要分为CPU,高速总线,低速总线。其中


CPU工作与FCLK


AHB总线工作于HCLK,AHB(Advance High performance Bus)总线主要用于高性能模块。


慢速外设工作于PCLK,APB(Advance Peripheral Bus)总线主要用于低贷款的周边外设之间的连接。


我们的S3C2440硬件电路板上,时钟源是一个12M的晶振,我们用PLL锁相环可以得到上面的三种频率。


1.2 S3C2440时钟树

从上图的左上角可以看出,时钟源有两个选择,可以是晶振,也可以是直接从EXTCLK管脚输入的时钟。具体选择什么时钟源由后面的OM进行选择,我们的电路图中OM的两个管脚都是接地低电平的,因此使用晶振作为时钟源。


然后往后有两个PLL,MPLL和UPLL,分别是MAIN  PLL和USB PLL.


晶振经过MPLL,得到FCLK提供给CPU,然后FCLK经过HDIV分频可以得到HCLK提供给AHB总线,经过PDIV得到PCLK提供给APB总线。


晶振经过UPLL然后给USB提供时钟。

1.3 S3C2440上电顺序

2.寄存器配置

下面我们编程来配置S3C2440的时钟,我们配置FCLK=400M,HCLK=100M, PCLK=50M。我们需要设置MPLLCON寄存器让FCLK=400M.然后设置CLKDIVN让HCLK=FCLK/4, PCLK=FCLK/8.


2.1CLKDIVN寄存器

我们把CLKDIVN[2:1]的HDIVN设置为10,然后CLKDIVN[0]的PDIVN设置为1.


2.2MPLLCON寄存器

我们通过设置MDIV=92,PDIV=1,SDIV=1就可以设置FCLK=400M.


2.3设置CPU为异步模式

另外,芯片手册里面有一个注意事项,如果我们的HDIVN不是零的话,CPU总线必须设置为异步模式,否则CPU会使用HCLK而不是FCLK.所以我们要设置CPU为异步模式。

3.编程

修改之前的start.S.


 

.text

.global _start

 

_start:

 

/* 关闭看门狗 */

ldr r0, =0x53000000

ldr r1, =0

str r1, [r0]

 

/* 设置MPLL, FCLK : HCLK : PCLK = 400m : 100m : 50m */

/* LOCKTIME(0x4C000000) = 0xFFFFFFFF */

ldr r0, =0x4C000000

ldr r1, =0xFFFFFFFF

str r1, [r0]

 

/* CLKDIVN(0x4C000014) = 0X5, tFCLK:tHCLK:tPCLK = 1:4:8  */

ldr r0, =0x4C000014

ldr r1, =0x5

str r1, [r0]

 

/* 设置CPU工作于异步模式 */

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

orr r0,r0,#0xc0000000   //R1_nF:OR:R1_iA

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

 

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

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

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

*  s = SDIV = 1

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

*/

ldr r0, =0x4C000004

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

str r1, [r0]

 

/* 一旦设置PLL, 就会锁定lock time直到PLL输出稳定

* 然后CPU工作于新的频率FCLK

*/

 

/* 设置内存: sp 栈 */

/* 分辨是nor/nand启动

* 写0到0地址, 再读出来

* 如果得到0, 表示0地址上的内容被修改了, 它对应ram, 这就是nand启动

* 否则就是nor启动

*/

mov r1, #0

ldr r0, [r1] /* 读出原来的值备份 */

str r1, [r1] /* 0->[0] */ 

ldr r2, [r1] /* r2=[0] */

cmp r1, r2   /* r1==r2? 如果相等表示是NAND启动 */

ldr sp, =0x40000000+4096 /* 先假设是nor启动 */

moveq sp, #4096  /* nand启动 */

streq r0, [r1]   /* 恢复原来的值 */

 

bl main

 

halt:

b halt

4.实验

我们之前的LED实验里面,LED闪烁的时候有延时函数,当我们提高了时钟频率之后,会发现LED闪烁的比之前快。

关键字:时钟 引用地址:S3C2440裸机------时钟

上一篇:S3C2440裸机------UART/串口
下一篇:ARM中的汇编和机器码

推荐阅读最新更新时间:2024-11-08 10:22

基于51单片机的多功能电子时钟设计
设计任务: 1、设计任务:利用单片机、时钟芯片 DS1302、温度传感器 DS18B20、1602 液晶 等实现日期、时间、温度的显示即一个简单的万年历。 2、设计要求 (1)通过 DS1302 能够准确的计时,时间可调并在液晶上显示出来。 (2)通过 DS18B20 能够实时、准确的检测当前环境温度。 (3)利用单片机自身功能实现闹钟 总体方案论证与设计 总体方案论证与设计 本系统以 AT89S52 单片机为控制核心,通过与 DS1302 和 DS18B20 通信获取实时时间和实时环境温度,并将得到的数据通过 1602 液晶 显示出来,同时通过相应的按键调整相应的值。因此本设计可分为一 下模块:显示模块、实时时间计算模块、实
[单片机]
基于51单片机的多功能电子<font color='red'>时钟</font>设计
32位DSP设计中的流水线数据相关问题及解决办法
引言 在航空微电子中心的某预研项目中,需要开发设计某32位浮点通用数字信号处理器(DSP)。本系统控制通路部分的设计采用超级哈佛及五级流水线结构。本文分析了该流水线的设计过程,并对遇到的数据相关问题提出了一种新的解决方法。 1 流水线结构 流水线处理器一般把一条指令的执行分成几个步骤,或称为级(stages)。每一级在一个时钟周期内完成,也就是说在每个时钟周期,处理器启动并执行一条指令。如果处理器的流水线有m级,则同时可重叠执行的指令总条数为m。由于每条指令处在不同的执行阶段,因此,如果分级分得好,每一级都没有时间上的浪费,这就是最理想的情况。流水线处理器在理想情况下与非流水线处理器的性能加速比为: 式中
[应用]
MSP430设置基本时钟系统
简介:上电复位后默认XT2关,ACLK来自XT1,MCLK和SMCLK都来自DCO。 掌握通过对寄存器的操作分配时钟信号: 设置ACLK来自XT1,MCLK来自XT2,SMCLK来自XT2。 各个时钟通道的分频自定。 通过这些基本的时钟模块,我们可以得到3个有用的时钟信号: ACLK辅助时钟(Auxillary Clock) ACLK是LFXT1CLK时钟源经1、2、4、8分频后得到的。 ACLK可由软件选择作为各个外围模块的时钟信号,一般用于低速外设。 MCLK主系统时钟(Main System Clock) MCLK可由软件选择来自LFXT1CLK、XT2CLK、DCOCLK三者之一,然后经1、2、4、8分频。 MCL
[单片机]
STM32时钟设置
3.5的库中什么也不用做。已经在启动文件中设置好了时钟。 大家都知道在使用单片机时,时钟速度决定于外部晶振或内部RC振荡电路的频率,是不可以改变的。而ARM的出现打破了这一传统的法则,可以通过软件随意改变时钟速度。这一出现让我们的设计更加灵活,但是也给我们的设计增加了复杂性。为了让用户能够更简单的使用这一功能,STM32的库函数已经为我们设计的更加简单方便。 在比较靠前的版本中,我们需要向下面那样设置时钟: ErrorStatus HSEStartUpStatus; void RCC_Configuration(void) { RCC_DeInit(); // RCC system reset
[单片机]
TI发布1.8V可编程VCX01-PLL时钟合成器
  TI(德州仪器)推出1.8V可编程VCX01-PLL时钟合成器,CDCE913和CDCEL913均为基于 PLL 模块的、低成本、高性能的可编程时钟合成器,可以在单输入频率的不同频率下生成多达三个输出时钟。每一个输出均可以进行系统内编程,从而使用一个独立的可配置PLL就可用于任何高达 230MHz的时钟频率。该器件的显著特点是具有±150-ppm 拉动范围(pulling range)及三个低抖动和低斜率输出的 VCXO 输入。其应用范围包括数字媒体系统、流媒体、GPS接收机、便携式媒体以及DSP/OMAP/DaVinci媒体处理器。   可编程时钟发生器产品系列的成员   CDCE913/CDCEL913:1-PLL,3
[手机便携]
十三、S3C2440 裸机 — 初始化代码及MMU
13.1 NOR FLASH 搬运 把程序从 nor flash 上搬运到 SDRAM 中 程序存储在 nor flash 上,运行时将程序搬运到 SDRAM 中运行 nor flash 启动:nor flash 的地址从 0x0000 0000 开始,CPU 可以直接在 nor flash 上运行程序 在 nor flash 上运行程序很慢 SDRAM:地址为 0x3000 0000,程序烧录在 nor flash 上,运行时,将 nor flash 上的代码搬运至 SDRAM 中运行 nor flash 启动: 初始化寄存器 关闭看门狗 设置存储控制器 复制代码到 SDRAM 中 跳转 main
[单片机]
十三、<font color='red'>S3C2440</font> <font color='red'>裸机</font> — 初始化代码及MMU
虚拟仪器之——数据采集中的外部时钟及握手信号
前言 数据采集卡作为采集信号的接口为大家所熟知,然而,在市面各种规格的板卡中,为什么有些提供外部时钟以及提供多种触发模式?还有的高速数字I/O卡为什么提供了握手信号的传输方式?本文描述这些功能所带来的好处。 外部时钟 对于数据采集卡来说,就像其它单片机的应用一样,需要一个时钟基准(time-base)来推动板卡上的控制芯片及模/数转换器的运行,这个时钟来自于板卡上的晶振,然后设计者按照不同模/数转换器的特性,将这个周期性的方波信号经计数器(counter)模块分频后,转化成模/数转换器的工作时钟,这也就决定了数据采集卡的采样频率(sampling rate)或更新频率(update rate),然而,由于板卡上晶振的频
[测试测量]
虚拟仪器之——数据采集中的外部<font color='red'>时钟</font>及握手信号
单片机时钟中断的应用
本文以6MHz时钟的单片机AT89C51系统为例,说明时钟中断的应用: 定时器初值与中断周期 时钟中断无需过于频繁,一般取20mS(50Hz)即可。如需要百分之一秒的时基信号,可取10mS(100Hz)。这里取20mS,用定时器T0工作于16位定时器方式(方式1)。T0的工作方式为:每过一个机器周期自动加1,当计满0FFFFh,要溢出时,便会产生中断,并由硬件设置相应的标志位供软件查询。即中断时比启动时经过了N+1个机器周期。所以,我们只要在T0中预先存入一个比满值0FFFFh小N的数,然后启动定时器,便会在N个机器周期后产生中断。这个值便是所谓的“初值”。下面计算我们需要的初值:时钟为6MHz,12个时钟周期为一个机器周期,2
[单片机]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

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

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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