当前位置:首页 > 单片机 > 单片机
[导读](时钟体系)时钟概念:★时钟脉冲:一个按一定电压幅度,一定时间间隔连续发出的脉冲信号;★时钟频率:在单位时间(如:1秒)内产生的时钟秒冲数;时钟的作用:时钟信号是时序逻辑的基础,它用于决定逻辑单元中的状

(时钟体系)

时钟概念:

★时钟脉冲:一个按一定电压幅度,一定时间间隔连续发出的脉冲信号;

★时钟频率:在单位时间(如:1秒)内产生的时钟秒冲数;

时钟的作用:

时钟信号是时序逻辑的基础,它用于决定逻辑单元中的状态何时更新。数字芯片中众多的晶体管都工作在开关状态,它们的导通和关断动作无不是按照时钟信号的节奏进行的。

时钟的作用(简洁版)

系统中的设备需要有个时间来和它进行同步—即靠时钟!

时钟的产生-晶振

晶振:晶体振荡器,是用石英晶体精密切割做成。

优点:振荡频率非常稳定;振荡频率很准确;结构简单、噪声低。

缺点:生产成本高,交货周期较长,不利于客户加快产品上市时间,而且难以获得非常标准的频率。

时钟产生-PLL

PLL:(锁相环)合成器是一种更为复杂的系统时钟源。通过PLL合成器需要一个外部晶体并包含一个能够对晶体的特定频率加倍或分频的集成锁相环PLL电路。

S3C2440时钟体系

S3C2440的主时钟晶振来自外部晶振(XTIPLL),或者是外部时钟(EXTCLK)。时钟生成器包含了一个振荡器(振荡放大器),其连接外部晶振,可以产生需要的高频,通过引脚OM[3:2]来决定时钟源时Crystal还是EXTCLK.

S3C2440时钟体系

S3C2440有两个PLL:(1)MPLL和(2)UPLL,

UPLL专用于USB设备。

MPLL用于CPU及其他外围器件。

通过MPLL会产生三个部分的时钟频率:FCLK、HCLK、PLCK.

FCLK:用于CPU核;

HCLK:用于AHB(常用于高速外设)总线的设备,比如:SDRAM;

PCLK:用于APB(常用于低速外设)总线的设备,比如:UART.

时钟启动流程:

1.上电几毫秒后,外部晶振输出稳定,FCLK=外部晶振频率(12MHZ),nRESET

信号恢复高电平后,CPU开始执行命令。

2.在设置MPLL的几个寄存器后,需要等待一段时间(Lock Time),MPLL的输出才稳定。在这段时间(Lock Time)内,FCLK停振,CPU停止工作。

Lock Time的长短由寄存器LOCKTIME设定。

3.Lock Time之后,MPLL输出正常,CPU工作在新的FCLK(如:400MHZ)下。

寄存器:

设置S3C2440的时钟频率就是设置相关的几个寄存器:

1.LOCKTIME寄存器

2.MPLLCON寄存器

3.CLKDIVN寄存器

寄存器-LOCKTIME

MPLL启动后需要等待一段时间(Lock Time),使得其输出稳定。

位[31:16]用于UPLL,

位[15:0]用于MPLL.

使用缺省值0xffff ffff

寄存器-MPLLCON

该寄存器用于设置FCLK(cpu的时钟频率)与Fin的倍数(Fin:输入的时钟频率)

位[19:12]的值称为MDIV

位[9:4]的值称为PDIV

位[1:0]的值称为SDIV

FCLK与Fin的计算关系式如下:

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

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

寄存器-CLKDIVN

该寄存器用于设置FCLK、HCLK、PCLK三者的比例

★HDIVN:位[2:1],用来设置HCLK与FCLK比例关系

★PDIVN:位[0],用来设置PCLK与HCLK比例关系

例如:

FCLK:HCLK:PCLK=4:2:1

FCLK=400MHZ(主频)

HCLK=200M

PCLK=100M

巧计,速记2图:

图1:

图2:

S3C2440定时器

S3C2440共有5个16位的定时器。其中定时器0、1、2、3有PWM功能,他们都有一个输出引脚,可以通过定时器来控制引脚周期性的高、低电平变化;

定时器4没有输出引脚。

S3C2440定时器

定时器部件的时钟源为--PCLK,(经过两次分频)

首先通过两个8位的预分频器降低频率:定时器0、1共用第一预分频器,

定时器2、3、4公用第二个预分频器。

再次预分频器的输出将进入第二级分频器,它们输出5种频率的时钟:2分频、4分频、8分频、16分频或者外部时钟TCLK0、TCLK1,每个定时器的工作时钟也可以从这5种频率中选择。

定时器初始化:步骤:

1.定时器时钟频率

(定时器的时钟频率需要经过两次的分频)例如:定时器的时钟频率50--表示:每一秒钟把定时器的初始值减去50;

2.设置定时器计数值;

--即设置定时器的初始值(比较值为0)

3.设置中断处理函数;--即定时器到时间时去处理什么函数

定时器输出时钟频率=PCLK/{prescalervalue+1} /{divider value}

{prescaler value} =0 ~255(第一次预分频通过TCFG0设置)

{divider value} = 2, 4, 8, 16(第二次预分频通过TCFG1设置)

TCMPB0:定时器n的比较值

TCNTB0:初始计数值(放到TCNT0后TCNT0会自动减一直到减到== TCMPB0)

之后设置TCON会自动重新装载TCMPB0和TCNTB0再次重新计数

定时器工作流程

1.程序初始化,设置TCMPBn、TCNTBn这两个寄存器,它们表示定时器n的比较值、初始计数值。

2.设置TCON寄存器定时器n,这时TCMPBn、TCNTBn的值将被装入其内部寄存器TCMPn、TCNTn中。在定时器n的工作频率下,TCNTn开始减一计数,其值可以通过读取TCNTOn寄存器得知。

3.当TCNTn的值等于TCMPn的值时,定时器n的输出管脚TOUTn反转;TCNTn继续减一计数。

4.当TCNTn的值到达0时,器输出管脚TOUTn再次反转,并触发定时器n的中断。

5.当TCNTn的值到达0时,如果TCON寄存器中将定时器n设为“自动加载”,则TCMPB0和TCNTB0寄存器的值被自动装入TCMP0和TCNT0寄存器中,下一个计数流程开始。


#defineGLOBAL_CLK1

#include

#include

#include"def.h"

#include"option.h"

#include"2440addr.h"

#include"2440lib.h"

#include"2440slib.h"

#include"mmu.h"

#include"profile.h"

#include"memtest.h"

voidTimer0_init(void);

staticvoid__irqIRQ_Timer0_Handle(void);

voidSet_Clk(void);

staticvoidcal_cpu_bus_clk(void);

voidLed1_init(void);

voidLed1_run(void);

/*************************************************

Functionname:delay

Parameter:times

Description:延时函数

Return:void

Argument:void

Autor&date:

**************************************************/

voiddelay(inttimes)

{

inti,j;

for(i=0;i

for(j=0;j<400;j++);

}

/*************************************************

Functionname:Main

Parameter:void

Description:主功能函数

Return:void

Argument:void

Autor&date:Daniel

**************************************************/

voidMain(void)

{

Set_Clk();

MMU_Init();

//Uart_Init(0,115200);

//Uart_Select(0);

Led1_init();

Timer0_init();

while(1);

}

/*************************************************

Functionname:Timer0_init(void)

Parameter:void

Description:定时器的初始化

Return:void

Argument:void

Autor&date:Daniel

**************************************************/

voidTimer0_init(void)

{

//Timer0init

rTCFG0=49;//pclk/(49+1)

rTCFG1=0x03;//16分频=62500HZ

rTCNTB0 = 6250

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: 驱动电源

在工业自动化蓬勃发展的当下,工业电机作为核心动力设备,其驱动电源的性能直接关系到整个系统的稳定性和可靠性。其中,反电动势抑制与过流保护是驱动电源设计中至关重要的两个环节,集成化方案的设计成为提升电机驱动性能的关键。

关键字: 工业电机 驱动电源

LED 驱动电源作为 LED 照明系统的 “心脏”,其稳定性直接决定了整个照明设备的使用寿命。然而,在实际应用中,LED 驱动电源易损坏的问题却十分常见,不仅增加了维护成本,还影响了用户体验。要解决这一问题,需从设计、生...

关键字: 驱动电源 照明系统 散热

根据LED驱动电源的公式,电感内电流波动大小和电感值成反比,输出纹波和输出电容值成反比。所以加大电感值和输出电容值可以减小纹波。

关键字: LED 设计 驱动电源

电动汽车(EV)作为新能源汽车的重要代表,正逐渐成为全球汽车产业的重要发展方向。电动汽车的核心技术之一是电机驱动控制系统,而绝缘栅双极型晶体管(IGBT)作为电机驱动系统中的关键元件,其性能直接影响到电动汽车的动力性能和...

关键字: 电动汽车 新能源 驱动电源

在现代城市建设中,街道及停车场照明作为基础设施的重要组成部分,其质量和效率直接关系到城市的公共安全、居民生活质量和能源利用效率。随着科技的进步,高亮度白光发光二极管(LED)因其独特的优势逐渐取代传统光源,成为大功率区域...

关键字: 发光二极管 驱动电源 LED

LED通用照明设计工程师会遇到许多挑战,如功率密度、功率因数校正(PFC)、空间受限和可靠性等。

关键字: LED 驱动电源 功率因数校正

在LED照明技术日益普及的今天,LED驱动电源的电磁干扰(EMI)问题成为了一个不可忽视的挑战。电磁干扰不仅会影响LED灯具的正常工作,还可能对周围电子设备造成不利影响,甚至引发系统故障。因此,采取有效的硬件措施来解决L...

关键字: LED照明技术 电磁干扰 驱动电源

开关电源具有效率高的特性,而且开关电源的变压器体积比串联稳压型电源的要小得多,电源电路比较整洁,整机重量也有所下降,所以,现在的LED驱动电源

关键字: LED 驱动电源 开关电源

LED驱动电源是把电源供应转换为特定的电压电流以驱动LED发光的电压转换器,通常情况下:LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: LED 隧道灯 驱动电源
关闭