mini2440学习之2440时钟配置解

发布者:yunhui最新更新时间:2024-06-18 来源: elecfans关键字:mini2440  时钟配置 手机看文章 扫描二维码
随时随地手机看文章

在移植Nboot时,发现串口输出乱码,检查串口配置没问题后,觉得应该是时钟配置没配好,修改后果然ok,所以补习一下!

2440时钟配置详细说明,以上电为顺序讲述:

一、S3C2440A时钟概述

1、S3C2440A的电源管理有4种模式:NORMAL,SLOW,IDLE,SLEEP。

2、 有4种时钟:FCLK,HCLK,PCLK,UCLK具体分工如下:

FCLK is used by ARM920T.

HCLK is used for AHB bus, which is used by the ARM920T, the memory controller, the interrupt controller, the LCD

controller, the DMA and USB host block.

PCLK is used for APB bus, which is used by the peripherals such as WDT, IIS, I2C, PWM timer, MMC interface,

ADC, UART, GPIO, RTC and SPI.

UCLK专门为USB供电,有UPLL输出。

3、有两个锁相环,一个MPLL负责FCLK,HCLK,PCLK,一个UPLL负责USB的48MHz,通过三个倍频因子MDIV、PDIV和SDIV来 设置倍频。

二、S3C2440A时钟上电过程

1、主时钟源可以由外部时钟(EXTCLK)或者外部晶振(XTIPll)提供,时钟源由模式控制引脚OM3和OM2选择,在复位信号

的上升沿检测OM3和OM2引脚状态并锁定在OM[3:2]中。

2、我们可以在程序开头启动MPLL,在设置MPLL的几个寄存器后,需要等待一段时间(Lock Time),MPLL的输出才稳定。在这段

(Lock Time)时间内,FCLK停振,CPU停止工作。Lock Time的长短由寄存器LOCKTIME设定。Lock Time之后,MPLL输出平

稳。在上电没有设置MPLL时,系统时钟为晶振时钟。

三、S3C2440A时钟配置流程和样例

1、设置S3C2440A的时钟频率需要配置4个寄存器:LOCKTIME(0x4C000000)、CLKDIVN (0x4C000014)、MPLLCON

( 0x4C000004)、UPLLCON(0x4C000008)。

2、时钟配置顺序如上:LOCKTIME => CLKDIVN  => MPLLCON => UPLLCON。注意:UPLL的设置要先于MPLL,切超前7个时钟

设置。

3、时钟样例:

(1)、LOCKTIME:位[31:16]用于UPLL,位[15:0]用于MPLL。确省值为0xFFFFFFFF

(2)、CLKDIVN:DIVN _UPLL[3]:HDIVN [2:1]:PDIVN [0]用来设置FCLK:HCLK:PCLK的比例关系,默认为1:1:1。

CLKDIVN不同的设置及对应的时钟比例关系如下图:

图HDIVN 和PDIVN对应的比例,HCLK4_HALF和HCLK3_HALF在摄像头CAMDIVN寄存器中。 


( 3)MPLLCON寄存器位[19:12]-MDIV(Main divider control);[9:4]-PDIV(Pre-divider control);[1:0]-SDIV(Post dividercontrol)。

锁相环输出时钟MPLL(FCLK) 通过如下计算公式得出:

MPLL(FCLK) = (m * Fin)/(p * 2^s);其中:m = (MDIV + 8), p = (PDIV + 2), s = SDIV,Fin 输入的时钟频率。

如:MPLLCON设为(0x5c << 12)|(0x01 << 4)|(0x1),即0x5c010,可以计算出FCLK=200MHz,假设CLKDIVN设置

HDIV=1和PDIV=1;可知比例FCLK、HCLK、PCLK比率为1:2:4,所以HCLK=100MHz,PCLK=50MHz。

下图 为锁相环配置推荐表。

UPLLCON同理一样设置,计算公式如下:UPLL(UCLK) = (m * Fin) / (p * 2^s),m = (MDIV + 8), p = (PDIV + 2), s =SDIV。

Fin 输入的时钟频率。

(4)程序:

;To reduce PLL lock time, adjust the LOCKTIME register.
  ldr r0,=LOCKTIMEldr r1,=0xffffffstr r1,[r0] ;Configure CLKDIVN
 ; Added for confirm clock divide. for 2440.; Setting value Fclk:Hclk:Pclkldr r0,=CLKDIVNldr r1,=CLKDIV_VAL; 0=1:1:1, 1=1:1:2, 2=1:2:2, 3=1:2:4, 4=1:4:4, 5=1:4:8, 6=1:3:3, 7=1:3:6.str r1,[r0];Configure UPLL
    ldr r0,=UPLLCON
    ldr r1,=((U_MDIV<<12)+(U_PDIV<<4)+U_SDIV) 
    str r1,[r0]
    nop ; Caution: After UPLL setting, at least 7-clocks delay must be inserted for setting hardware be completed.
    nop
    nop
    nop
    nop
    nop
    nop
;Configure MPLL
    ldr r0,=MPLLCON
    ldr r1,=((96<<12)+(M_PDIV<<4)+M_SDIV)  ;Fin=16.9344MHz  68<<12+1<<4+1
    str r1,[r0]

四、时钟修改影响单元

在移植程序是要注意时钟修改后对应的模块频率也改变了,我的Nboot移植时,需要修改两个地方:UART 和 SDRAM。 UART,它是接在APB总线上,对应的时钟信号为PCLK,假设现在为50MHz。如果想要设置波特率为115200bps,那么根公式 UBRDIV0=(int)(PCLK/(bps*16))-1计算,应该为26。程序:UBRDIV0 = ((int)(PCLK/16./UART_BAUD_RATE) -1).


关键字:mini2440  时钟配置 引用地址:mini2440学习之2440时钟配置解

上一篇:mini2440 LED驱动程序开发
下一篇:linux-2.6.32在mini2440开发板上移植-移植Nand驱动并修改分区信息

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

s3c2440中断程序(烧录到NORFlash,运行在SDRAM中)
现在正在看韦东山的《嵌入式Linux应用开发完全手册》,看到了中断部分。书上是将程序烧录到NANDFlash中,由于当mini2440板子从NANDFlash启动的时候,会自动将其中的前4KB程序拷贝到CPU内部的SRAM(4KB大小)中,并且将该SRAM的起始地址映射为0x0。所以当中断发生的时候,PC指针指向0x0+offset(如:IRQ就是0x18),可以找到中断服务程序的入口。 但是有4KB的限制,加上U-BOOT一般都烧录到NORFlash中,再将程序搬移到SDRAM中再运行的,恰好手底下有JLINK设备,所以决定写一个烧录到NORFlash,运行在SDRAM中的中断测试程序。 先说一下整体思路:将系统启动时寻找的八个
[单片机]
Linux的I2C 设备驱动 -- mini2440 上i2c接口触摸屏驱动
本篇记录在友善之臂 mini2440 平台上挂载I2C接口触摸屏的驱动开发过程。 内核版本linux-2.6.32.2, 平台是ARM9 S3C2440+I2C接口的触摸屏 如上篇 Linux的I2C驱动体系结构讲述 http://www.lupaworld.com/273398/viewspace-204237.html 要挂载新的I2C设备,需要实现3部分: 1) 适配器的硬件驱动: 内核中已经实现mini2440,i2c适配器驱动,可以在如下目录i2c-s3c2410.c中看到相关代码 linux-2.6.32.2/drivers/i2c/busses/i2c-s3c2410.c 2) I2C 设配器的algorithm 同
[单片机]
STM32时钟配置及相关问题
Ⅰ、写在前面 最近有很多朋友问: 1.我的USART串口打印出来的数据是乱码? 2.我的TIM定时器延时或定时不准确? 常见可能原因: 1.晶振问题:外部晶振不起振、或频率与配置不匹配。 2.软件问题:分频、倍频、时钟源选择等。 总结来说,主要还在于软件的问题。因为即使没有外部晶振,也可以使用内部晶振。 其实,软件的问题是容易得到解决的,只要你了解了STM32时钟配置里面具体内容就知道了。 关于本文的详细内容请看下面章节 Ⅱ、本文要点 要了解时钟的配置,就需要知道它在哪里配置,也就是还需要了解软件执行的流程。 1.软件流程 说软件流程是让大家知道系统时钟配置的位置。不管是使用寄存器开发,还是使用库(标准库、HA
[单片机]
STM32<font color='red'>时钟</font><font color='red'>配置</font>及相关问题
linux-2.6.32在mini2440开发板上移植-移植I2C-EEPROM 驱动
1 在内核中配置I2C 驱动 Linux-2.6.32.2 对S2C2440 的I2C 接口提供了完善的驱动,因此我们只需在内核中配置一下即可使用。 在内核源代码目录执行:make menuconfig,进入内核配置主菜单,依次选择进入如下子菜单: Device Drivers --- * I2C support --- I2C Hardware Bus support --- 如图,我们看到这里已经选择好了“ * S3C2410 I2C Driver”,这里的S3C2410 也可以适用于S3C2440,因为它们的I2C 端口及寄存器定义都是完全相同的。 以上配置所对
[单片机]
linux-2.6.32在<font color='red'>mini2440</font>开发板上移植-移植I2C-EEPROM 驱动
Mini2440 DM9000 驱动分析(三)
现在开始逐步分析dm9000驱动的probe方法 具体过程见代码中添加的注释 /* * Search DM9000 board, allocate space and register it */ static int __devinit dm9000_probe(struct platform_device *pdev) { struct dm9000_plat_data *pdata = pdev- dev.platform_data; struct board_info *db; /* Point a board information structure */ struct net_device *nde
[单片机]
s3c2440裸机-nandflash编程(一. nandflash原理及结构简介)
1.nandflash的原理图如下: 引脚属性见下表: 引脚名称 引脚功能 IO0~IO7 数据输入输出(命令、地址、数据共用数据总线) CLE 命令使能 ALE 地址使能 /CE 芯片使能(片选) /RE 读使能 /WE 写使能 R/B 就绪/忙输出信号(低电平表示操作还在进行中,高电平表示操作完成) 2.nandflash内部存储结构 nandflash内部存储结构如下: 我们常见的Nand Flash,内部只有一个chip,每个chip只有一个plane。但也有些复杂的,容量更大的Nand Flash,内部有多个chip,每个chip有多个plane,这类的Nand Flash,其实就是多了一
[单片机]
s3c<font color='red'>2440</font>裸机-nandflash编程(一. nandflash原理及结构简介)
s3c2440裸机实现图片显示
功能 LCD显示字汉字,字符和图片 说明 汉字,字符和图片需要用相应的取模软件得到相应的c文件,然后包含到工程中 主要代码 1)绘制背景 void Brush_ U32 c) { int x,y ; for( y = 0 ; y LCD_HEIGHT ; y++ ) { for( x = 0 ; x LCD_WIDTH ; x++ ) { LCD_BUFFER = c ; } } } 2)文字绘制 void Draw_Text16(U32 x,U32 y,U32 color,const unsigned char ch ) { unsigned
[单片机]
s3c<font color='red'>2440</font>裸机实现图片显示
s3c2440的网卡接口扩展DM9000
网络对于嵌入式系统来说必不可少。可是s3c2440没有集成以太网接口,所以要想使s3c2440具备以太网的功能,就必须扩展网卡接口。在这里,我们外接DM9000,使其可以与以太网相连接。 DM9000可以直接与ISA总线相连,也可以与大多数CPU相连。在这里,我们当然是要让DM9000与s3c2440相连接了。DM9000对外来说只有两个端口——地址口和数据口,地址口用于输入内部寄存器的地址,而数据口则完成对某一寄存器的读写。DM9000的CMD引脚用来区分这两个端口,当CMD引脚为0时,DM9000的数据线上传输的是寄存器地址,当CMD引脚为1时,传输的是读写数据。我们把DM9000的A8和A9接为高电平,把A4~A7接为低
[单片机]
小广播
设计资源 培训 开发板 精华推荐

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

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

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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