JZ2440:时钟设置

发布者:数字行者最新更新时间:2020-04-16 来源: eefocus关键字:JZ2440  时钟设置  初步设置 手机看文章 扫描二维码
随时随地手机看文章

这一节的目标是对板子上的时钟有一个初步的了解,并且能通过初步设置,为我们接下来的程序做准备。


1. 板子上的基本资源:

板载晶振12M

主时钟源和 USB 时钟源都是晶振

 

2. 手册中的相关项(按时钟进入的方向):

2.1 时钟的整体结构:

2.2 OM[ 3:2 ]:

从图中我们可以看到OM[] 起到可选择的作用(效果同三八译码器):

image.png

注意:


1.虽然MPLL在复位后就开始, MPLL输出 (Mpll) 并没有作为系统时钟, 直到软件写入有效值来设置MPLLCON


寄存器。 在设置此值之前, 是将外部晶振或外部时钟源提供的时钟直接作为系统时钟。 即使用户不想改变MPLLCON


寄存器的默认值,用户也应当写入与之相同的值到MPLLCON寄存器寄存器中。


2.OM[3:2]是用于当OM[1:0]为 11 时决定一个测试模式。

上电一瞬间时钟的状态:


需要注意 OM[3:2] 是引脚,不是寄存器,看原理图得知 OM[3:2] = 00 ,从前边的图中可以得到结论是主时钟源和 USB 的时钟源都是从外部晶振得到的。

2.3 MPLL :

image.png

这里有点需要说明:


当你设置MPLL 和UPLL的值时,你必须首先设置UPLL值再设置MPLL 值。 (大约需要7个 NOP的间隔) 


一般情况下,pll不会关闭,这里包括上电。


对于pll的取值官方称很困难,给出了推荐值

如果你想私人定制你的时钟,公式如下:


MPLL Control Register 

    Mpll = (2 * m * Fin) / (p * 2^s) 

其中:

    m = (MDIV + 8)

    p  = (PDIV + 2)

    s   = SDIV 

UPLL Control Register 

    Upll = (m * Fin) / (p * 2S) 

其中:

    m = (MDIV + 8)

    p  = (PDIV + 2)

    s   = SDIV 

PLL值选择向导(MPLLCON) 

1.  Fout = 2  × m  × Fin / ( p*2s ),Fvco = 2  × m  × Fin / p  

    此处:m =MDIV+8, p=PDIV+2, s=SDIV 

2.  600MHz  ≤ FVCO  ≤ 1.2GHz 

3.  200MHz  ≤ FCLKOUT  ≤ 600MHz 

4.  不要设置P 或M的值为0,这是因为设置P=000000,M=00000000 将会引起PLL的故障。 

5.  P 和M的合理范围为:1  ≤ P  ≤ 62,1  ≤ M  ≤ 248

6.  pll稳定的最高频率是400MHZ


时钟计算举例:

    ldr r0, =0x4c000014    //CLKDIV

    mov r1, #3

    str r1, [r0]

    ...

    ldr r0, =0x4c000004    //MPLLCON

    ldr r1, =((0x5c<<12)|(0x01<<4)|(0x02))    //MDIV=0x5c PDIV=0x01 SDIV=0x02

    str r1, [r0]


    m = (MDIV + 8) = 100

    p  = (PDIV + 2) = 3

    s   = SDIV  = 2

Mpll = (2 * m * Fin) / (p * 2^s) = (2*100*12)/12MHz = 200MHz

从最开始的那张图可以看到,FCLK 直接用的是 Mpll 之后的时钟频率,中间没有分频。


从下面这张图中我们能看到UPLL 的频率只能有两个取值,并且给固定的单元供应频率:


2.4 FCLK,HCLK和 PCLK 介绍:

FCLK 是给 ARM920T 内核使用的

HCLK 是给 AHB总线使用的,具体涉及的硬件包括: memory 控制器中断控制器,LCD控制器,DMA 和 USB 主机模式的AHB总线时钟 

PLK 是给 APB 总线使用的,具体涉及的硬件包括:看门狗,iis,i2c,pwm的定时器,mmc接口,ADC,UART,GPIO,RTC 和 SPI。

UCLK 是给 USB 用的

下边的这两张图看着更清楚:


S3C2440可以对他们三个的比例进行设定:(其中的 HDIVN 和 PDIVN 属于 CLKDIVN 寄存器)

相关寄存器:

image.png

2.5 时钟要想到达具体的硬件(比如spi,i2c)还需要开启他们之间的开关:

image.png

image.png

image.png

关键字:JZ2440  时钟设置  初步设置 引用地址:JZ2440:时钟设置

上一篇:jz2440 ----移植自制的USB RTL8188EUS网卡驱动
下一篇:02-JZ2440裸机学习之系统时钟和UART串口实验

推荐阅读最新更新时间:2024-11-12 10:21

ALSA声卡16_编写ALSA声卡应用程序_学习笔记
1、体验 (1)ALSA声卡使用体验:使用arecord录音,使用aplay播放,在Alsa-utils里面) 准备: cd linux-3.4.2 patch -p1 ../linux-3.4.2_alsa_wm8976_uda1341_jz2440_mini2440_tq2440.patch //打补丁 cp config_wm8976_jz2440 .config 或 cp config_uda1341_tq2440_mini2440 .config //设置配置文件 make uImage //编译内核 (2)使用新内核启动并测试 启动后创建设备节点 直接输入arecord命令查看帮助信息(arecord 选项
[单片机]
ALSA声卡16_编写ALSA声卡应用程序_学习笔记
LM3S1138入门6,系统时钟设置
程序运行后,系统时钟设置为:外部6MHz晶振3分频,即系统时钟为2MHz。在此状态下LED闪烁较慢。 稍后,系统时钟设置为:内部振荡器(12MHz 30%)2分频,即系统时钟为6MHz左右。LED闪烁速度明显加快。 主函数: #include LED.H #include hw_types.h #include hw_memmap.h #include hw_sysctl.h #include hw_gpio.h #include sysctl.h #include gpio.h // 将较长的标识符定义成较短的形式 #define SysCtlPeriEnable SysCtlPeriphe
[单片机]
STM32F03开发板--系统时钟设置SysTick
首先我先分析下startup_stm32f0xx.s启动代码,其中 /* Call the clock system intitialization function.*/ bl SystemInit /* Call the application's entry point.*/ bl main 发现开发板上电启动过程中,先调用了SystemInit()函数,再进入main()函数。 SystemInit()函数在文件system_stm32f0xx.c中,它的作用是设置系统时钟SYSCLK。 下面是SystemInit()源码: void SystemInit (void) { /* Set HSION bi
[单片机]
STM32F03开发板--系统<font color='red'>时钟</font><font color='red'>设置</font>SysTick
JZ2440挂载nfs
前言 本文基于jz2440 一、三者网络ping通 1 硬件连接 开发板和PC电脑 :网线、USB串口。首先,PC电脑是用无线网卡连接WIFI上网,然后PC电脑利用有线网卡通过一条网线与JZ2440网口相连,然后接下来的工作是使PC电脑、JZ2440和虚拟机的网络处于同一段网络。 PC机和开发板处用网线相连 实物连接图 2 网络环境设置 2.1 PC有线网络 配置PC的有线网卡的IPV4地址是:192.168.1.10 网关统一设为:192.168.1.1 2.2 虚拟机网络设置 ①打开虚拟网络编辑器,选择桥接模式,连接PC机的有线网卡。 ! (https://img-blog.csdnimg
[单片机]
<font color='red'>JZ2440</font>挂载nfs
小广播
设计资源 培训 开发板 精华推荐

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

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

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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