S3C2440 clock 工作原理

发布者:德州小孙最新更新时间:2016-04-20 来源: eefocus关键字:S3C2440  clock  工作原理 手机看文章 扫描二维码
随时随地手机看文章
OSC是用无源晶振,EXT是用有源晶振或外部时钟2440的12M是Oscillator 是有源的呀!

2440的12M是Oscillator

Crystal 无源晶体
Oscillator 有源晶体(里面有有源器件)
  无源晶振内只有一片按一定轴向切割的石英晶体薄片,供接入运放(或微处理器的XTAL端)以形成振荡.有源晶振内带运放,工作在最佳状态,电源后,可直接输出一定频率的等幅正弦波,一般至少有4引脚,体积稍大.

准备先不跑系统,把S3C2440和周边硬件熟悉一下再说。

对于任何一个单片机,要使用它首先就要弄明白他的时钟系统,MCU的时钟就像人的心脏,跳动的快慢,决定着系统的工作速度。S3C2440的datesheet上说,可以达到400M,但是也不是说,必须在400M的频率下工作,主时钟晶振来自于外部晶振(XTIPLL)或者是外部时钟(EXTCLK)。时钟生成器包含了一个振荡器(振荡放大器),其连接外部晶振,并且还有2个PLL,可以产生需要的高频。

通过引脚OM[3:2]来决定时钟源是Crystal还是EXTCLK,不过我用的开发板将OM[3:2]固定接地了,都是用外部晶振。有一点值得注意,在对MPLLCON写入有效值之前,系统使用外部晶振或外部时钟源的时钟。即使用户不准备改变MPLLCON的值,也应当重新写一次。

简单说一下,S3C2440的时钟构成。

S3C2440具有2个PLL(Phase Locked Loop:用来产生高频的电路),一个是MPLL, 用于产生FCLK, HCLK, PCLK三种频率, 这三种频率分别有不同的用途:

FCLK是CPU提供的时钟信号,如果提到CPU的主频是400MHz,就是指的这个时钟信号。

HCLK是为AHB总线提供的时钟信号, Advanced High-performance Bus,主要用于高速外设,比如内存控制器,中断控制器,LCD控制器, DMA 以及USB host 。

 

PCLK是为APB总线提供的时钟信号,Advanced Peripherals Bus,主要用于低速外设,比如WATCHDOG,IIS, I2C, SDI/MMC, GPIO,RTC ,UART,PWM,ADC and SPI等等。

 

另外一个是UPLL,专门用于驱动USB host/Device。并且驱动USB host/Device的频率必须为48MHz。

在系统复位之后,如果没有设定PLL,则采用外部晶振的频率作为FCLK,同时FCLK:HCLK:PCLK的比例关系为1:1:1。

 

下面说一些跟时钟有关的寄存器设置:通过改变CLKDIVN可以改变FCLK,HCLK,PCLK的分频比。

 

锁定时间计数寄存器LOCKTIME(0x4c000000):一般使用默认就可以。

 

锁相环控制寄存器[MPLLCON(0x4c000004)&UPLLCON(0x4c000008)]:

MPLL=(2*m*Fin)/(p*2^s) UPLL=(m*Fin)/(p*2^s)

其中m=(MDIV+8),p=(PDIV+2),s=SDIV

P,M范围:1<=P<=62,1<=M<=248

 

注意:MDIV[19:12],PDIV[9:4],SDIV[1:0],当设置MPLL和UPLL值的时候,需要先设置UPLL再设置MPLL。

 

例如:MPLLCON = (92<<12) | (1<<4) |(1);//FCLK=400M

这里MDIV=92,PDIV=1,SDIV=1,那么m=100,p=3,s=1,且Fin=12M,所以FCLK=400M

 

再设置CLKDIVN=0x03;//FCLK:HCLK:PCLK=1:2:4

这里CLKDIVN(0x4c000014)用于决定三者的分配比例

 

一般设置这两个就可以了。还有一个时钟控制寄存器CLKCON(0x4c00000c)向相应位写1使能相应时钟,不过一般默认为1.

 

关于时钟方面基本就是这么多了。

S3C2440 clock 工作原理

时间:2009-08-10 08:44来源: 作者:long 点击:41次
  

overview
时钟和电源管理这一块内容包括三个部分:时钟控制, USB控制, 电源控制

在s3c2440a的CPU上,时钟控制逻辑可以产生需要的时钟信号,包括给CPU用的FCLK, 给AHB总线外设用的HCLK以及给APB总线外设用的PCLK.S3C2440A含有两个锁相环:一个是FCLK, HCLK和PCLK, 还有另外一个专门用于USB单元(48Hz).时钟控制逻辑可以在没有PLL的时候使时钟变慢,并且可以用软件的方法使时钟与周边设备连接与断开, 这个功能可以节省功耗.

补充:
AMBA总线

先进的微控制器总线体系结构AMBA规范定义了三种总线:

(1)AHB(Advanced High-performance Bus):用于连接高性能系统模块。它支持突发数据传输方式及单个数据传输方式,所有时序参考同一个时钟沿;

(2)ASB(Advanced System Bus):用于连接高性能系统模块,它支持突发数据传输模式;

(3)APB(Advance Peripheral Bus):是一个简单接口支持低性能的外围接口。


对于电源控制逻辑,S3C2440A有不同的电源管理的主题,来对某一项任务来优化电源功耗.S3C2440A中的电源管理单元可以有四种模式: 普通模式, SLOW 模式, IDLE模式, SLEEP模式.

功能描述

时钟架构
时钟产生器包括一个连接在外部crystal上的晶振,并且有两用于产生S3C2440A所需要的高频信号的锁相环.

时钟源的选择
下表显示了芯片模式控制引脚(OM3和OM2)的选择与S3C2440A时钟源的关系.

注意:
1) 尽管重启后,MPLL会启动,但是直到软件正确设置了MPLLCON寄存器后,MPLL的输出才作为系统的时钟.在正确的设置被设置前,来自外部的crystal或extclk源直接作为系统时钟.即使用户并不想改变MPLLCON寄存器的默认值,用户应该在MPLLCON的寄存器中设置同样的值.
2) OM[3:2]用于决定测试模式,当OM[1:0]是11的时候.

锁相环
在时钟产生器中的MPLL,作为一个电路,作用是在频率与相伴上同步输出信号与一个参考输入信号.

时钟控制逻辑
时钟控制逻辑决定使用的信号源,PLL时钟或外部时钟. 当PLL配置成一个新的频率时,时钟控制逻辑中止FCLK的使用,直到使用PLL锁时间的PLL的输出稳定后. 这种时钟控制逻辑在通电重启或从节电模式中醒来都起作用.

通电重启(XTIpll)

在普通模式中变换PLL的设置

USB时钟控制

FCLK, HCLK, PCLK
FCLK 用于ARM920T
HCLK 用于AHB总线,AHB总线被ARM920T用于,内存控制器,中断控制器,LCD控制器,DMA和USB host block.
PCLK 用于APB总线,APB总线是用于周边设备的,如是WDT,IIS, I2C, PWM 计数器, MMC接口, ADC, UART, GPIO, RTC 和SPI

注意:
1) CLKDIVN必须小心设置,不要超过HCLK和PCLK的允许范围.
2) 如果HDIVN不是0,CPU总线模式必须从快速总线模式转换到异步总线模式,通过使用下面的指令来达到.(S3C2440不支持同步总线模式)
MMU_SetAsyncBusMode
mrc p15, 0, r0, c1, c0, 0
orr r0, r0, #R1_nF:OR:R1_iA
mcr p15, 0, r0, c1, c0, 0
如果HDIVN不是0, 并且CPU总线模式是快速总线模式,那么CPU将会在HCLK下工作.这种特性可以用来在不影响HCLK和PCLK的情况下改变CPU频率成原来的一半或更多.

电源管理
在S3C2440A中,电源管理模块通过软件来控制系统时钟以达到减少电源功耗的功能.这些主题跟PLL,时钟控制逻辑(FCLK,HCLK,PCLK)和唤醒信号有关.

S3C2440A有四种电源模式.下面的部分描述各种模式.各种模式之间的转换并不是随意的.

FCLK的值如何得到?

FCLK= Fout = 2 * m * Fin / (p*2^s), Fvco = 2 * m * Fin / p where : m=MDIV+8, p=PDIV+2, s=SDIV

MPLLVal [M:7fh,P:2h,S:1h] bootloader打印出来的信息.

code

mov r1, #0x4c000000

ldr r2, =0x7f021

str r2, [r1, #0x04]

与BOOTLOADER里打印出来的一样.

^ 代表幂

So, FCLK =2* (127+8)*12M/4*2=405M

关于HCLK, PCLK的值,取决于CLKDIVN的值.

代码如下:

mov r1, #0x4c000000

ldr r2, 0x5

str r2, [r1, #0x14]

所以CLKDIVN=5, HDIVN=10, PDIVN=1, 再看CAMDIVN

10: HCLK = FCLK/4 when CAMDIVN[9]=0

HCLK = FCLK/8 when CAMDIVN[9]=1

PCLK = HCLK /2

CAMDIVN代码中没有进行设置,就用初始值.0



HCLK = FCLK/4

PCLK = FCLK/8

至此, clock部分设置结束.

 

 

MCLK:405MHz

HCLK:135MHz

PCLK:67.5MHz

 

在这里定时器时钟频率为PCLK/8=67.5/8=8.4375MHz

定时器0示例代码:

 

 

转载请注明出处,谢谢!

 

1 void T1DelayNus(UINT16 t)
2 {
3 rTCFG1 &= ~(0x0F<<4);
4 rTCFG1 |= (2<<4);
5 rTCNTB1 =(S3C2440PCLK)/8/1000000;
6 rTCON &= ~(0x0F<<8);
7 rTCON |= (1<<11)|(1<<9)|(1<<8);
8 rTCON &= ~(1<<9);
9
10
11 while(t--)
12 {
13
14 while(rTCNTO1!=(rTCNTB1-1));
15
16 }
17
18 rTCON &= ~(1<<8);
19
20 }
21
22
23 void T1DelayNms(UINT16 t)
24 {
25 rTCFG1 &= ~(0x0F<<4);
26 rTCFG1 |= (2<<4);
27 rTCNTB1 =(S3C2440PCLK)/8/1000;
28 rTCON &= ~(0x0F<<8);
29 rTCON |= (1<<11)|(1<<9)|(1<<8);
30 rTCON &= ~(1<<9);
31
32
33 while(t--)
34 {
35 while(rTCNTO1!=(rTCNTB1-1));
36 }
37
38 rTCON &= ~(1<<8);
39
40 }

特别是要注意rTCNTOn与rTCNTBn的关系。

 

1 void T0DelayNus(UINT16 t)
2 {
3 rTCFG1 &= ~0x0F;
4 rTCFG1 |= 2;
5 rTCNTB0 =(S3C2440PCLK)/8/1000000; //时钟频率为PCLK/8
6 //除以1000000表示进行微秒级延时
7 rTCON &= ~0x0F;
8 rTCON |= (1<<3)|(1<<1)|(1<<0);
9 rTCON &= ~(1<<1);
10
11
12 while(t--)
13 {
14 while(rTCNTO0!=(rTCNTB0-1));
15 }
16
17 rTCON &= ~(1<<0); //停止定时器0
18
19 }
20
21 void T0DelayNms(UINT16 t)
22 {
23 rTCFG1 &= ~0x0F;
24 rTCFG1 |= 2;
25 rTCNTB0 =(S3C2440PCLK)/8/1000; //时钟频率为PCLK/8
26 //除以1000表示进行毫级延时
27 rTCON &= ~0x0F;
28 rTCON |= (1<<3)|(1<<1)|(1<<0);
29 rTCON &= ~(1<<1);
30
31 while(t--)
32 {
33 while(rTCNTO0!=(rTCNTB0-1));
34 }
35
36 rTCON &= ~(1<<0); //停止定时器0
37 }

关键字:S3C2440  clock  工作原理 引用地址:S3C2440 clock 工作原理

上一篇:说说ARM汇编的LDR伪指令
下一篇:GNU ARM汇编的.balignl对齐实验

推荐阅读最新更新时间:2024-03-16 14:51

芯科科技新时钟为数据中心消费类产品设计确立新性能标杆
Silicon Labs(亦称“芯科科技”,NASDAQ:SLAB)日前宣布针对PCI Express® (PCIe®) Gen 1/2/3/4应用推出一系列具有业界最低抖动、最高集成度、最低功耗的时钟发生器产品。Silicon Labs新型Si522xx PCIe时钟发生器满足PCIe Gen 4的严格要求且提供20%的抖动裕度,同时为PCIe Gen 3抖动规格提供60%的抖动裕度。开发人员现在可以信心十足地采用Silicon Labs PCIe时钟设计出符合PCIe标准的解决方案,而且可以获得最大限度的抖动裕度,降低产品开发风险。 凭借兼容PCIe Gen 4和高达12路时钟输出,Si522xx时钟非常适合在数据中心应
[嵌入式]
芯科科技新<font color='red'>时钟</font>为数据中心消费类产品设计确立新性能标杆
s3c2440裸机-LCD编程(六、LCD上显示字符)
1.字库的移植 字符也是由点构成的,一个个点组成的点阵,其实本质上要显示文字就是把字库移植到对应的自己型号相匹配的board上,字库中的每一个字符都是一些点按照对应格式组合成的集合。 从linux内核源码中随便挑选一个字库文件,比如linux-4.18.16/lib/fonts这个目录下就有对应的很多字库文件。在这里我挑选font_8x16.c,如下图: 其中8x16表示每个字符所占的像素点的大小,表示每个字符占的大小为长*宽=8*16个像素点。 我们来看下一个字符'A'是如何显示的?从font_8x16.c我们找到字符'A'的数据,如下图: 那么我们如何让font_8x16.c这个字库
[单片机]
<font color='red'>s3c2440</font>裸机-LCD编程(六、LCD上显示字符)
Msp430时钟设计与寄存器说明
4.1基础时钟模块+介绍 基础时钟模块+支持低系统消耗和超低功耗。采用三种片内时钟信号,用户可以选择合适 的性能和低功耗。基础时钟模块只需接一个外部电阻、一个或两个外部晶体、或者用振荡器, 通过软件控制。 基础时钟模块+有4 个时钟源: LFXT1CLK:由低频时钟晶体或外接32768Hz 时钟源产生的低频/高频振荡器或由标准晶 体、振荡器,或外部400KHz~16MHz的外部时钟源提供。 XT2CLK:可供选择的高频振荡器,由标准晶体、振荡器,或外部400KHz~16MHz 的外 部时钟源提供。 DCOCLK:片内可数字控制的振荡器。 VLOCLK:片内超低功耗、12KHz 的低频振荡器。 基础时钟模块可提
[单片机]
Msp430<font color='red'>时钟</font>设计与寄存器说明
MSP430之变态版3线SPI总线实现(DS1302时钟芯片用)
如题, 这个是网上所谓的变态版的3线SPI总线:一根时钟线,一根使能线,一根双向IO线. 一个模块,两个文件: //spi3.c #include typedef.h #include spi3.h /*********************************************************************** 名称:init_spi3 描述:SPI3初始化函数 参数:(无) 返回:(无) 说明: ***********************************************************************/ void init_spi3(void) {
[单片机]
一次性可编程的时钟产生器OmniClockI2C/SMBus
在该视频中,我们将演示如何用Clock Cruiser软件通过I2C/Bus接口载入不同的配置 iframe src="http://player.youku.com/embed/XMjg1Njc3MTgxMg==" width="510" height="498" frameborder="0" /iframe
[嵌入式]
基于MCU的智能水表工作原理及应用
  引言   水表的发展已有近二百年的历史,在开始阶段相当长的一段时间里,英法日德等国家的水表一直占据着中国水表行业。随着城市供水事业的发展,中国的水表工业也相应地发展起来,从20世纪90年代开始,各种智能型水表、水表抄表系统等产品也开始兴起。   尽管,目前国内的水表市场仍然以机械表为主,但是从发展角度来看,智能化是一种必然的趋势,可以节省人工,提高抄表的准确度,更可以实现阶梯化收费,有效的利用有限的水资源。   水表的电源一般由水表自行供给,这就对水表的功耗提出了苛刻的要求。国际规定,智能水表的静态电流应该小于30 A,实际中水表厂商都把该指标控制在10 A以内(使用干簧管传感器时),保证工作时间大于6年以上才算合格。NEC
[单片机]
基于MCU的智能水表<font color='red'>工作原理</font>及应用
电流连续时Buck-Boost升降压式PWM DC/DC转换器的工作原理
  1 工作原理   1)开关模式1(0~TON,见此文《Buck-Boost升降压式PWM DC/DC转换器的主电路组成和控制方式》(a))   在t=0瞬间,开关管V导通,电源电压Ui全部加到电感坛上,电感电流iLf线性增加。二极管D截止,负载由滤波电容Cf供电。   当t=Ton时,电感电流iLf达到最大值ILf max。在开关管V导通期间,iLf的增加量△iLf(+)为:   2)开关模式2(Ton~Ts,见图(b))   在t=Ton瞬间,开关管V关断,电流iLf通过二极管D续流,电感Lf中的储能向负载和电容Cf转移。此时加在电感Lf上的电压为-Uo,iLf线性减小。   当t=Ts时
[电源管理]
电流连续时Buck-Boost升降压式PWM DC/DC转换器的<font color='red'>工作原理</font>
外国器件PCF8563I2C实时时钟/日历芯片在8051系统中的应用
    摘要: PCF8563是PLILIPS公司生产的低功耗CMOS实时时钟/日历芯片,文中介绍了PCF8563的结构、功能及工作原理。结合其在8051系统中的应用实例,给出了PCF8563与8051单片机的硬件接口电路和C语言软件编程程序。     关键词: I2C总线 串行接口 PCF8563 BCD码 C语言 1 PCF8563简介 PCF8563是PHILIPS公司生产的低功耗CMOS实时时钟/日历芯片,芯片最大总线速度为400kbits/s,每次读写数据后,其内嵌的字地址寄存器器会自动产生增量。PCF8563可广泛应用于移动电话、便携仪器、传真机、电池电源等产品中。 PCF8563的引脚
[测试测量]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

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