OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4392|回复: 0

教你如何设置S3C2440时钟

[复制链接]

70

主题

119

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
433
金钱
433
注册时间
2013-8-19
在线时间
2 小时
发表于 2013-11-14 15:57:28 | 显示全部楼层 |阅读模式



S3C2440 的时钟设置时间:  
一个嵌入式系统中,晶振就像心脏。必须先确定晶振,设置好系统的时钟, 
WDT,UART,PWM,TIMER 等模块才能正常工作。    
  
和51 系列单片机相比,S3C2440 的时钟电路很复杂。    
  
首先通过引脚OM2,OM3 来选择时钟源。    
  
  
  
以TQ2440 开发板为例,OM2,OM3 都接地,外接12M 晶振,主时钟源和USB 时钟源都是 
外部晶振。    
  
S3C2440 具有2 个PLL(Phase Locked Loop:用来产生高频的电路),一个是MPLL,  用于 
产生FCLK,  HCLK,  CLK 三种频率,  这三种频率分别有不同的用途:    
  
  
FCLK 是CPU 提供的时钟信号,如果提到CPU 的主频是400MHz,就是指的这个时钟信号。    
  
  
HCLK 是为AHB 总线提供的时钟信号,  Advanced High-performance Bus,主要用于高速 
外设,比如内存控制器,中断控制器,LCD 控制器,  DMA  以及USB host  。    
  
  
PCLK 是为APB 总线提供的时钟信号,Advanced  eripherals  Bus,主要用于低速外设, 
比如WATCHDOG,IIS, I2C,  SDI/MMC, GPIO,RTC  ,UART,PWM,ADC and SPI 等等。    
  
  
另外一个是UPLL,专门用于驱动USB host/Device。并且驱动USB host/Device 的频率必 
须为48MHz。    
  
  
  
时钟电路相关寄存器总共有7 个,下面分别介绍。    
  
MPLLCON(0X4C00 0004)和UPLLCON(0X4C00 0008)    
  
这两个寄存器用来设置主锁相环产生的时钟和USB 锁相环产生的时钟。    
  
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   
 

----------------------- Page 2-----------------------

注意: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   
  
  
  
CLKCON(0X4C00  000C)  控制各种模块如 SPI,IIC,UART  等的时钟电路开关以及系统的 
SLEEP,IDLE 模式,以便降低系统功耗。默认值是全部时钟电路打开,系统工作在正常模式。    
  
  
  
CLKSLOW(0X4C00  0010)用来选择系统是否进入慢模式,以及是否关闭MPLL 或UPLL, 
和在慢模式下的分频率。    
  
  
  
CLKDIVN(0X4C00  0014)和CAMDIVN(0X4C00  0018 照相机时钟分割寄存器)两个寄存器 
配合来确定FCLK,HCLK,PCLK 的比例。    
  
  
  
LOCKTIME(0X4C00 0000)设置MPLL,UPLL 的锁存时间,采用默认值0XFFFF FFFF,锁存 
时间各为300us。    
  
说到锁存时间,就要分析下S3C2440 的时钟工作过程。    
  
在系统复位时,晶振起振稳定后,PLL  开始按照默认值开始工作,但是在复位时,PLL  工 
作是不稳定的,所以 S3C2440                          用 FIN      (12M )作为 MPLL 。只到一个新的值写入 
MPLLCON,UPLLCON,即使用户不想改变复位后PLLCON 的默认值,仍然需要把这个默认 
值写入PLLCON,写入值之后,系统会自动插入一个PLL LOCK TIME,也就是LOCKTIME 
寄存器中设置的300us。300us 后,PLL 就开始正常工作。    
  深圳专业嵌入式ARM、Linux、单片机技术实训。学习顾问郭老师:QQ754634522
在系统正常工作时,如果要改变FCLK,写入新值到MPLLCON 后,系统也会插入一个PLL  
LOCK TIME,300us 后FCLK 就变成新的频率。  
信盈达科技有限公司专业提供嵌入式、ARM、LINUX、Android、FPGA、PCB、单片机等高端软硬件技术方案设计和培训,公司具有雄厚的研发实力,多个分点,免费试听,包就业。欢迎咨询郭老师13641462598 QQ754634522
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-25 23:33

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表