下图是2440的总线框架,其中有AHB(Advanced High performance Bus)高速总线,APB(Advanced Peripheral Bus)外围总线。
不同总线对应不同的时钟。
SOC <-> FCLK
AHB <-> HCLK
APB <-> PCLK
其中:
1.使用AHB总线的有:LCD控制器、usb控制器、中断控制器、内存控制器等...
2.使用APB总线的有:i2c、spi、timer、gpio、adc等...具体上图。
2.时钟框架
下图表示2440 Soc的时钟框图:
下面从细节上讲解时钟体系:
1.如何选择时钟源:
s3c2440时钟源有2个,一个是OSC,一个是外部时钟EXTCLK,上面的时钟框图有标记,当然大家也可以查看手册“Figure 7-1. Clock Generator Block Diagram”。
那么如何选择是OSC还是EXTCLK呢?
打开原理图,OM3,OM2的引脚接地,那么OM[3,2]=00.所以根据手册“Table 7-1. Clock Source Selection at Boot-Up”可知时钟源为OSC晶振。
2.如何得到HCLK,PCLK,UCLK?
先了解下PLL, DIV
PLL:用锁相环进行倍频
DIV:用分频器进行分频
如下图:
生成的MPLL(Main PLL)和UPLL(USB PLL),MPLL直接提供给FCLK,通过HDIVN分频给HCLK,通过PDIVN分频给PCLK,再传给下面的各个设备。
osc经过UPLL(USB PLL)得到UCLK。
关键字:s3c2440 时钟编程 时钟体系
引用地址:
s3c2440裸机-时钟编程-1-2440时钟体系介绍
推荐阅读最新更新时间:2024-11-12 16:17
S3C2440在MDK4.22下使用printf向串口打印调试
背景知识: 串口的基本知识已经在上一篇讲过了。这里重点讲解如何在MDK4.22下使用printf函数,这样的话就可以很方便的打印调试信息,追踪。 这个知识来源于MDK自带的帮助手册。有现成的代码提供。 实现方式有2种,使用标准C库下裁剪合适的函数,使用微库C下裁剪合适的函数。 微库下的情况,在魔术棒那里要勾选上使用微库。然后需要定义如下结构和改写如下函数--FILE stdout fputc ferror。 标准库的情况,也是需要关注FILE stdout fputc ferror。注意网上很多文章说,在标准库下,需要关掉半主机模式,我尝试过,关掉后,需要定义_sys_exit函数,可以达到效果,但是如果不关掉半主机模式,和
[单片机]
基于S3C2440嵌入式Linux系统下的一个DS18B20驱动
用Linux驱动编程的方法写一个DS18B20的温度传感器驱动,从底层采集温度信息。以下乃本人所写的驱动和测试的源码,嵌入式Linux内核版本为2.6.29,硬件平台是友善之臂的QQ2440,DS18B20引脚连接S3C2440的GPIOB1,程序难免存在一定的漏洞,希望大家指出。 #include linux/config.h #include linux/module.h #include linux/kernel.h #include linux/fs.h #include linux/init.h #include linux/devfs_fs_kernel.h #include linux/miscdevic
[单片机]
Linux2.6.32移植到MINI2440(4)移植+分析DM9000网卡驱动
开发环境: 主机:fedora 14 虚拟机:vmware workstation 10 交叉编译工具:arm-linux-gcc 4.3.2 开发板:mini2440(2m nor ,64m sdram,256m nand) 内核版本:linux2.6.32.2 上一篇帖子的uImage可以起yaffs2文件系统,但是起不了nfs,我的yaffs2使用nfs打包来的,换一个内核可以起,bootargs也没有问题,可能是这里网卡没有移植造成的,移植结束之后再看能不能起,因为nfs对后面做驱动开发优势比较大,方便调试看现象,不需要每次都烧写进去,所以还是需要能够起nfs的。DM9000内核
[单片机]
裸机程序--keil mdk下xc2440按键控制LED
其实只要前面几个回了,熟悉了keil mdk开发环境之后,简单的诸如led和按键的裸机程序其实和51单片机没什么区别了。。。 新建工程,配置GPF0,也就是LED1为输出模式,GPF4,也就是按键1为输入模式; 新建main.c文件,并加入工程,编写代码如下 同样给出 配置,和上次一模一样。。。
[单片机]
将JZ2440调试串口改成COM2
众所周知,JZ2440 V2很小巧,精致。今天单就JZ2440的串口来讨论一些问题。我们在用串口进行调试的时候,需要用JZ2440自带的一根USB线连接电脑USB口和开发板的USB-com1口。先来看一下JZ2440的串口大致连接图: 从S3C2440芯片上引出TXD0和RXD0到芯片PL2303,大家都知道PL2303是干嘛用的。在单片机开发板上一般都用这个芯片,它的作用就是USB转TTL电平,经过PL2303的转换之后,电脑和开发板即可通信,设置好参数后也就能够显示出开发板的打印信息了。JZ2440在这一点上还有一处可以说说,就是它没有使用其他品牌开发板常用的RS232 DB9接口,这在很大程度上减小了开发板的体积,同时也节
[单片机]
ARM9_S3C2440学习(七)SDRAM学习总结
1.SDRAM的burst mode SDRAM是一种命令型动作的设备,就算读写资料只有一个也要先下命令才可以用,为了增加工作效率,就产生了一种传送一个命令,写多个数据的模式,这就是burst mode。 burst mode是一种利用内部列地址发生器来工作的高速读写模式,只要设置最开始的列地址,后面的地址就可以通过内部的列地址发生器来自动生成。 2.为什么要做precharge动作? 关闭正在作用的SDRAM bank,算是一种结束命令,后面可以下新的命令。我想这是和SDRAM内部管理有关。(这是从网上查到的,感觉不够详细,也不太理解) 3.自动刷新功能? 动态存储器(Dynamic RAM)都存在刷新问题。这里主要
[单片机]
s3c2440之ADS移植keil
最近把ADS1.2工程转到MDK4.03出现一些error,罗列了可能出现的error,并给予相关的办法,让大家在以后的转换中尽快搞定 1:error : No section matches selector no section to be FIRST/LAST. 把原来的Init 代码段名修改成RESET: ; AREA Init,CODE,READONLY AREA RESET,CODE,READONLY 2:error Undefined symbol Main (referred from 2440
[单片机]
反汇编解析S3C2440汇编点灯
代码 首先回顾代码 /* *点亮LED:GPF4 */ .text //表明它是代码段 .global _start _start: /*配置GPF4为输出引脚 *把0x100写到地址0x56000050上,熄灭led */ ldr r1, =0x56000050 /*将这个地址存放到r1中*/ ldr r0, =0x100 /*或者使用 mov r0, #0x100 将0x100放入r0 */ str r0, /*将r0的值写入到r1的地址中*/ /*设置GPF4输出高电平 *把0x00写到地址0x56000054上,点亮led */ ldr r1, =0x56000054
[单片机]