历史上的今天
返回首页

历史上的今天

今天是:2025年04月15日(星期二)

正在发生

2020年04月15日 | 第一课,ARM芯片的时钟体系

2020-04-15 来源:eefocus

注:以下内容学习于韦东山老师arm裸机第一期视频教程

一. 2440时钟简介

1.1 2440是一个SOC(system on chip)系统,不仅有很多CPU,还有很多外设,在2440芯片手册有系统框架图如下:

2440框架图中,不仅有CPU,而且有很多外设,其中外设分为两部分,一部分是AHB总线,一部分是APB总线


1.2 AHB总线

1.2.1 LCD控制器

1.2.2 USB控制器

1.2.3 NAND控制器

1.2.4 内存控制器

1.2.5 摄像头接口

1.2.6 中断控制器

1.2.7 电源管理等等

            

1.3 APB总线

1.3.1 UART

1.3.2 USB device

1.3.3 I2C

1.3.4 GPIO

1.3.5 RTC

1.3.6 ADC

1.3.7 定时器等等

            

1.4 因此引入了三个时钟,FLCK,HCLK,PCLK

cpu工作与FCLK,最大工作频率400MHZ


AHB总线工作于HCLK,最大工作频率136MHZ


APB总线工作与PCLK,最大工作频率68MHZ


二.时钟的获取

2.1 2440时钟体系框图如下

      

2.2 时钟源的选择

从图中看出,时钟源有两个分别是外部晶振和引脚,通过OM[3:2]来选择,模式选择如下图

      

在2440的原理图上,可以看到OM3,OM2都接到了GND上,因此会选择使用外部晶振作为输入

2.3 时钟体系流程      

12MHZ晶振通过MPLL锁相环得到FLCK,CPU直接使用FCLK,FCLK通过PDIV分频得到PCLK提供给APB总线上的设备使用,


FCLK通过HDIV分频得到HCLK提供给AHB总线上使用


12MHZ晶振也会经过UPLL锁相环提供给USB使用


三.程序的编写

3.1 时序图如下:

      

3.2 流程分析

        

3.2.1 一上电,复位引脚会维持一段时间(等待电源稳定),通过复位芯片来维持,如下:

3.2.2 根据OM[3:2]的值FCLK等于晶振的12M


3.2.3 PLL锁存OM[3:2]的值,同时CPU开始运行(复位引脚被拉高)

            

3.2.4 设置PLL

            

3.2.5 在CPU停止运行一段时间设置PLL

            

3.2.6 设置完成后FLCK等于PLL输出的新的频率

        

3.3 寄存器的设置(目的FCLK=400MZH, HCLK=100MZH, PCLK=50MHZ)



3.3.1 设置LOCKTIME寄存器,决定MPLL和UPLL的LOCKTIME

设置为默认值即可



3.3.2 设置MPLLCON/UPLLCON寄存器,决定FCLKi,如下图

          

其中公式如下图:

  

参考设置值如下,我们选择MDIV=92, PDIV = 1, SDIV=1即可设置FCLK = 400MHZ:

MPLLCON = (92 << 12) | (1 << 4) | (1 << 0);


3.3.3 设置CLKCON寄存器(关掉用不到的设备)

                

3.3.4 设置CLKDIVN寄存器,决定HCLK,PCLK,如下图:    

首先要设置bit[2:1]为10,这时HCLK=FCLK/4=100MHZ,但是需要CAMDIVN[9]=0(默认值就是0)


设置bit[0]为1,这时PCLK=HCLK/2=50MHZ



bit[3]取默认值


3.3.5 如果HDIVN不等于0,CPU必须设置为异步模式,CPU会工作于HCLK,如下图

3.3.6 提高系统时钟代码如下(FCLK=400MHZ,HCLK=100MHZ,PCLK=50MHZ):   

.text 

.global _start

 

_start:

 

/* 1.关闭看门狗 */

ldr r0, =0x53000000

ldr r1, =0

str r1, [r0]

 

/* 2.设置时钟 */

/* 2.1 设置LOCKTIME(0x4C000000)=0xFFFFFFFF */

ldr r0, =0x4C000000 

ldr r1, =0xFFFFFFFF

str r1, [r0]

 

/* 2.2 设置CLKDIVN(0x4C000014) = 0x5 FCLK : HCLK : PCLK = 400m : 100m : 50m*/

ldr r0, =0x4C000014

ldr r1, =0x5

str r1, [r0]

 

/* 2.3 设置CPU处于异步模式 */

mrc p15,0,r0,c1,c0,0

orr r0,r0,#0xc0000000 /* #R1_nF:OR:R1_iA */

mcr p15,0,r0,c1,c0,0

 

/* 2.4 设置MPLLCON(0x4C000004)=(92<<12)   | (1 << 4) | (1 << 0)

*    m = MDIV + 8 = 100

*    p = PDIV + 2 = 3

*    s = SDIV = 1

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

* = (2 * 100 * 12) / (3 * 2 ^ 1) = 400MHZ

*/

ldr r0, =0x4C000004

ldr r1, =(92<<12) | (1 << 4) | (1 << 0)

str r1, [r0]

 

/* 3.设置栈

*   自动分辨NOR启动或者NAND启动

*   向0地址写入0,在读出来,如果写入则是NAND,否则是NOR

*/

ldr r0, =0

ldr r1, [r0] /* 读出原来的值备份 */

str r0, [r0] /* 向0地址写入0 */

ldr r2, [r0] /* 再次读出来 */

cmp r1, r2

ldr sp, =0x40000000 + 4096 /* nor启动 */

moveq sp, #4096    /* nand启动 */

streq r1, [r0]    /* 恢复原来的值 */

 

 

bl main

 

halt:

b halt

推荐阅读

史海拾趣

Diplohmatic A/S公司的发展小趣事

随着技术创新的成功,Diplohmatic A/S公司开始寻求国际市场的拓展。公司派遣了一支由经验丰富的销售和技术人员组成的团队,前往欧洲和亚洲的主要市场进行考察和洽谈。通过深入了解当地市场需求和竞争态势,公司制定了一系列有针对性的市场策略,并与多家国际知名企业建立了合作关系。这些合作不仅为公司带来了更多的订单,也提升了其品牌在国际市场的知名度。

展恒电子(Broadic)公司的发展小趣事

自2010年起,展恒电子专注于智能仪表行业,凭借其核心技术和横向联合多家关键器件供应商的策略,为水、电、气、热四表市场提供整套解决方案。随着业务的不断拓展,公司逐渐积累了大量的行业知名客户,进一步巩固了其在智能仪表领域的领先地位。同时,公司还积极向新能源、物联网、安防家居等多个领域拓展,以实现业务的多元化发展。

Broyce Control公司的发展小趣事

进入70年代,Broyce Control开始将目光投向更广阔的市场。公司投入大量资源进行技术研发,成功开发出了一系列具有创新性的电气和电子产品,如继电器、漏电继电器和接地故障检测器等。这些产品不仅提高了工业生产的效率和安全性,也使得Broyce Control在行业内逐渐崭露头角。同时,公司还积极拓展产品线,将业务范围延伸到监控和保护设备领域,为大型工业应用提供了更全面的解决方案。

ACI [Applied Concepts, Inc.]公司的发展小趣事

在电子行业的激烈竞争中,ACI公司凭借其卓越的技术创新能力脱颖而出。公司研发团队不断攻克技术难关,推出了一系列具有竞争力的电子产品。这些产品不仅性能卓越,而且设计独特,满足了消费者的多样化需求。通过技术创新,ACI成功打开了市场,赢得了消费者的青睐。

ACCUTEK公司的发展小趣事

随着产品质量的不断提升和市场份额的逐步扩大,ACCUTEK公司开始将目光投向国际市场。公司积极参加国际电子展会和技术交流活动,与全球多家知名企业建立了合作关系。同时,公司还在海外设立了多个分支机构,以便更好地服务当地客户。这些举措不仅提升了公司的国际影响力,也为公司的长远发展注入了新的活力。

BERNSTEIN公司的发展小趣事

随着工业技术的不断发展,BERNSTEIN公司始终保持着对技术创新的热情。在公司的发展史上,它涉足了几乎所有的重要技术发展的阶段,从电子开关到传感器,再到工业机箱等领域,都取得了显著的成就。尤其是在工业安全技术方面,BERNSTEIN公司凭借其卓越的技术实力和产品质量,成为了行业内的佼佼者。

问答坊 | AI 解惑

推荐大家使用的图书

1.《TMS320X240x DSP原理及应用开发指南》 定价:38元 作者:赵世廉 书号:978-7-81124-066-5 配盘:光盘 丛书名:        出版日期:200707 开本:787×1092 1/16开 字数:614千字 本书以美国TI公司的TMS3 ...…

查看全部问答>

一款单片机实验板的原理图

一款单片机实验板原理图,有很多值得参考的地方。有刚学单片机的想自己动手做一块实验板的可以借鉴一下。…

查看全部问答>

转贴:阿南的ARM入门调试笔记

阿南的ARM入门调试笔记。一篇非常详细的入门教程 [ 本帖最后由 disheng 于 2009-7-20 14:28 编辑 ]…

查看全部问答>

有关checksum的问题,不知道原因,还烦请高手指点一下,多谢了.

小弟不才,学习checksum算法的时候,对如下数据始终无法校验成功,麻烦各位大哥帮忙指点下。 对两段报文,用相同的机制,一个校验成功,一个失败,但这个两个包都是对的,我不知道原因,麻烦哥指点一下。多谢了。 static u8 packet1[] = { & ...…

查看全部问答>

stm8l101比较器的问题

                                 STM8L101比较器有没有内部参考电压,可不可以设置,最低能设置到多少还是只能用外部参考电压TSSOP-20没有外部参考 ...…

查看全部问答>

输出PWM

大家看看这个 #include void ClockInit() {         unsigned char i;         BCSCTL1&=~XT2OFF;                 ...…

查看全部问答>

高速PCB布线实践指南

高速PCB布线有很多方面的问题,关于这个题目已有人撰写了大量的文献。本文主要从实践的角度来探讨高速电路的布线问题。主要目的在于帮助新用户当设计高速电路PCB布线时对需要考虑的多种不同问题引起注意。 …

查看全部问答>

一个看似反相运算电路的正反馈运放电路

这几天在整理运放电路,发现自己忘得七七八八了。 其中还因为记错了,惹出不少麻烦。 比如,最基本的 反相运放电路。 看下图。 左边是 正常的负反馈 反相运放电路,右边 则是因为我无意记错,画出来的一个正反馈电路。…

查看全部问答>

FPGA内存控制

两个摄像头同时采集写入内存,然后一起到vga显示,但是图像的交错的,各位大神看看是什么原因呢,谢谢 Sdram_Control_4Port        u8        (        //      &nbs ...…

查看全部问答>

我需要一个控制电机转速的单片机,急需大家推荐

我自己找了几个,但是不合适。求大家推荐几个比较新的,最好12年以后的。PWM调制…

查看全部问答>