S3C2440-裸机篇-05 | S3C2440时钟体系详解(FCLK、PCLK、HCLK)

news/2024/11/23 0:32:44/

1.时钟架构


简化一下如图所示:

1.1.时钟源的选择

S3C2440的时钟源来源有两种:

  • 外部晶振(OSC)
  • 外部时钟信号(EXTCLK)

选择哪一路作为S3C2440的时钟源由模式控制引脚OM3和OM2引脚(的电平)决定,如何选择见下图:

以JZ2440开发板为例,其使用的是12Mhz外部晶振, 硬件电路如下:

其OM3和OM2选择引脚设置如下,选择第一种方式:

1.2.MPLL改变主时钟FCLK的控制时序(上电复位时序)

2.实验 —— LED闪烁(为了后续对比)

2.1.实验目的

使用C语言控制LED闪烁。

2.2.实验代码

启动文件与之前相同;
C程序添加延时函数delay修改后如下:

void delay(unsigned int xms)
{while(xms--);
}int main(void)
{/* 设置GPFCON寄存器,配置GPF4引脚为输出模式 */*(unsigned int *)0x56000050 &= ~(3<<(2*4));*(unsigned int *)0x56000050 |= 1<<(2*4);/* 程序循环闪烁LED */while(1){/* 设置GPFDAT寄存器,GPF4输出低电平,点亮LED */*(unsigned int *)0x56000054 &= ~(1<<4);delay(100000);/* 设置GPFDAT寄存器,GPF4输出高电平,熄灭LED */*(unsigned int *)0x56000054 |= (1<<4);delay(100000);}
}

编译的makefile也和之前相同;

2.3.运行结果

第一个LED先亮起,1s后熄灭,1s后再次点亮,如此循环。

3.实验 —— 设置芯片时钟运行频率

3.1.实验目的

设置芯片的时钟工作频率最高,如下:

  • FCLK = 400Mhz
  • HCLK = 100Mhz
  • PCLK = 50Mhz

与实验2对比观察效果。

注:芯片手册中给出的最高时钟频率:

3.2.实验步骤

  1. 设置PLL更改之后的锁定时间(默认即可)
  2. 设置分频系数(UCLK=UPLL(默认值)、HCLK = FCLK/4(100M)、PCLK=HCLK/2(50M))
  3. HDIVN不为0,设置CPU为异步模式
    注:其中#R1_nF:OR:R1_iA的值为0xc0000000
  4. 设置MPLL倍频,产生FCLK=400Mhz:

    注:MPLLCON寄存器的值可以由公式自己推算,但芯片手册中推荐直接查找推荐表获得:

3.3.实验代码

时钟修改应该在上电后修改,所以在启动文件中关闭看门狗之后添加

@ brief:	S3C2440启动文件
@ author:	mculover666
@ note:
@			1.关闭看门狗
@			2.设置栈顶指针SP(从Nand启动)
@			3.设置时钟:FCLK=400Mhz,HCLK=100Mhz,PCLK=50Mhz
@			4.调用main函数,保存返回地址,转入C程序.text
.global	_start_start:@ 关闭看门狗LDR	R0,=0x53000000MOV	R1,#0STR	R1,[R0]@ 设置栈顶指针SP(从Nand启动)LDR SP,=4096@ 设置时钟:FCLK=400Mhz,HCLK=100Mhz,PCLK=50Mhz@ 设置PLL更改之后的锁定时间(默认值)LDR R0,=0x4c000000LDR R1,=0xFFFFFFFFSTR R1,[R0]@ 设置分频系数LDR R0,=0x4c000014LDR R1,=0x05STR R1,[R0]@ HDIVN不为0,设置CPU为异步模式(来源芯片手册)mrc p15,0,r0,c1,c0,0orr r0,r0,#0xc0000000  @#R1_nF:OR:R1_iAmcr p15,0,r0,c1,c0,0@ 设置MPLL,输出FCLK=400MhzLDR R0,=0x4c000004LDR R1,=(92<<12)|(1<<4)|(1<<0)STR R1,[R0]	@ 设置MPLL之后锁定一段时间,然后系统变为设置的频率@ 调用main函数,保存返回地址,转入C程序BL	main@ main函数返回,程序暂停
halt:B	halt

为了方便对比**,C程序与实验2的相同**;
编译的makefile和之前的也相同

3.4.实验结果

程序编译下载后,可以观察到,LED闪烁速度与之前相比快了非常多。

3.5.实验总结

通过本节的两个实验,

  • 从直观的的现象来看:同样的C语言程序(都是delay(100000)),但是在第二个实验中因为CPU时钟FCLK提高到最高运行频率400Mhz,所以LED的闪烁速度与之前相比快了好几倍
  • 深入到S3C2440芯片的结构:掌握了S3C2440的时钟体系架构上电复位时序,其时钟源有两个:外部晶振或者外部时钟,通过OM[3:2]硬件选择,其内部主要调整频率的PLL有两个:MPLL(产生FCLK)和UPLL(产生UCLK),其主要的时钟频率有三个(FCLK->CPU使用,HCLK->AHB总线高速外设使用,PCLK->APB总线低速外设使用),其中HCLK和PCLK由FCLK分频而来;
  • 在芯片操作上:掌握了如何编程设置寄存器控制S3C2440的时钟频率(比如本节设置FCLK=400Mhz,HCLK=100Mhz,PCLK=50Mhz)。

http://www.ppmy.cn/news/110778.html

相关文章

S3C2440和S3C6410性能比较

比较项目 S3C2440 S3C6410 内核 ARM920T ARM1176JZF-S 主频 400MHZ 533MHZ/667MHZ 处理器类型 16/32-bit RISC 16/32-bit RISC 设计目标 高性能、低功耗 高性能、低功耗、高性价比 主要应用 手持设备 2.5G和3G通信服务 内部总线结构 32/16-bit 64/32-bit 多媒体硬件编码器/解码…

普通耳机的多源感知功能(智能耳机)

原文来自 DeepTech深科技 范博士主页&#xff1a;https://ox5bc.github.io/ 罗格斯大学的范博士开发出一项名为 HeadFi 的系统&#xff0c;可让普通耳机在播放音乐的同时&#xff0c;获得感知能力&#xff0c;并能让普通耳机实现生理感应、手势识别、身份验证、语音通话四大功…

YUV420SP

1)SP(Semi-Planar)指的是YUV不是分成3个平面而是分成2个平面。Y数据一个平面&#xff0c;UV数据合用一个平面。UV平面的数据格式是UVUVUV...。 2)interlace指的是隔行扫描&#xff0c;是把一帧图像分成上下两场&#xff0c;上场(Top field)的数据是整个图像的奇数行(1,3,5,7...…

飞思卡尔 k60/k64 移植FreeRTOS+USB

每年七八月份是智能车大赛的比赛时间&#xff0c;前段时间&#xff0c;学校车队的学弟问我嵌入式系统的问题&#xff0c;于是笔者拿起多年未碰的K60/K64芯片&#xff0c;搭建了一个FreeRTOSUSB的系统框架。文章结尾提供源码。 1.官网下载最新SDK 我们先从nxp官网下载对应芯片…

伺服器对比:S3010,S-U400

简 介&#xff1a; 本文给出了有S3010,S-U400两款舵机的参数主要区别。 关键词&#xff1a; 舵机&#xff0c;参数 #mermaid-svg-ER0c5igs28jEaXDP {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-ER0c5igs28jEaXDP …

K3 Cloud 参数配置、消息配置

K3 Cloud 常见参数配置 单据参数配置1、单据配置设置 操作人员一致 2、基础资料配置快捷查询增加字段 销售管理系统参数变更业务参数 消息配置操作&#xff08;审核、提交等&#xff09;后 发送业务消息1、消息模版2、消息配置 单据参数配置 1、单据配置 Administrator 登录&a…

SoapUI、Jmeter、Postman三种接口测试工具的比较分析

前段时间忙于接口测试&#xff0c;也看了几款接口测试工具&#xff0c;简单从几个角度做了个比较&#xff0c;拿出来与诸位分享一下。本文从多个方面对接口测试的三款常用工具进行比较分析&#xff0c;以便于在特定的情况下选择最合适的工具&#xff0c;或者使用自己编写的工具…

sc4020配置方法

A控制器的IP地址&#xff0d;&#xff0d;&#xff0d;管理ip 192.168.1.245 GUI 192.168.1.246 网关 192.168.1.1 B控制器的IP地址&#xff0d;&#xff0d;&#xff0d;管理ip 192.168.1.248 GUI 192.168.1.247 网关 192.168.1.1 A和B控制器心跳地址 192.168.1.244 配…