时钟初始化是个比较烦锁的过程,流程比较长,其中涉及到大量的端口操作,要理解的基础知识也较多。本文先分析一下时钟初始化的原理,后续再说明如何编程实现该过程。
1. What & Why
很多设备都要求输入一定频率的时钟才可以工作,比较明显的例子是CPU。当然除了CPU外还有其他的设备,可以说时钟是这些设备的心脏,没有时钟它们是不会工作的(切断或降低时钟能达到降频减耗的目的)。在开发板刚启动时,时钟处于一个很低的频率,要我们做一些初始化的工作才能把频率提上去,为设备提供所需的工作时钟频率。这就是为什么要进行时钟初始化。
2. Princeple
时钟初始化涉及到很多电子电路的知识,本人并非该科班出身,只能借助Google做些浅薄的理解。
(1) PLL
PLL (Phase-Locked Loop), 锁相环,主要用于产生与基准时钟同步的振荡信号。
PFD是鉴频鉴相器,PUMP是电荷泵,两个模块组合起来可以通过比较输入时钟信号和反馈时钟信号的频率以及相位来控制环路滤波器(Loop Filter)的电压,从而实现控制VCO(振荡器)的频率,得到我们想要的时钟。P/M/S可以理解成分频器控制逻辑,通过三个控制字,是PLL输出频率的选择更加方便。
总的来说,PLL可以基于输入时钟产生一个新的时钟,该时钟频率可以通过调用P/M/S参数来达到调节输出时钟频率的目的。我们要提高系统时钟的操作可以归结为对PLL的P/M/S参数设置。
(2) AMBA总线
AMBA(Advanced Microcontroller Bus Architecture)总线规范是ARM 公司设计的一种用于高性能嵌入式系统的总线标准。AMBA 总线是一个多总线系统,AMBA 2.0 规范中定义了三种可以组合使用的不同类型的总线:AHB(Advanced High-performance Bus)、ASB(AdvancedSystem Bus)和APB(Advanced Perpheral Bus)。AHB 总线适用于连接高性能和高时钟频率的系统模块,主要用于连接高性能和高吞吐量的设备, 如CPU、片上存储器、DMA设备和协处理器等。APB 总线适用于连接低功耗的外部设备模块。
典型的基于AMBA 2.0 的SoC核心结构如下图所示:
2003 年,ARM 扩展了AMBA 技术的性能与灵活性,发布了AMBA 3.0。AMBA 3.0 包括AMBA 3.0 AXI、AMBA 3.0 APB、AMBA 3.0 AHB-lite 和AMBA 3.0 ATB。基于AMBA 2.0和AMBA 3.0
的AMBA 总线互连结构如下图所示:
(3) S3C6410的三个PLL
ARM PLL (APLL), main PLL (MPLL), extra PLL (EPLL)
Note:
(1) ARM核的时钟叫ARMCLK,由APLL产生;MPLL产生HCKL和PCLK,HCLK供连接在AXI/AHB上的设备使用,PCLK供连接在APB上的设备使用。EPLL用于一些特殊设备。
(2) ARM1176的最高运行频率是667MHz, AXI/AHB最高运行频率是133MHz, APB最高运行频率是66MHz
初始化时钟系统就是从时钟源头开始,一步步地设置PLL, 多路复用器,分频器等,最终得到目标总线的时钟。
关键字:tiny6410 裸机编程 Timer
引用地址:
tiny6410裸机编程-----Timer (1)
推荐阅读最新更新时间:2024-11-13 09:06
STM32-基本定时器Timer的使用
前言: 最近在调试STM32L152芯片的定时器功能,本文总结下STM32L152芯片基本定时器的使用方法。 硬件平台:STM32L152 软件平台:keil v5+cubeMX 函数库:HAL库 基本定时器使用方法 下面简单讲述一下STM32L152的定时器使用步骤。 1.使用CubeMX对定时器进行配置,如定时器预分频值,计数值,定时器的触发方式等。 2.下面详细解析相关的代码; TIM_HandleTypeDef htim3; void TIM3_Init(void) { TIM_ClockConfigTypeDef sClockSourceConfig; TIM_MasterCon
[单片机]
STM32裸机编程的基础知识(5)
闪烁 LED 现在我们已经搭建好了完整的构建、烧写的基础设施,是时候让固件做点儿有用的事情了。什么是有用的事情?当然是闪烁 LED 了!Nucleo-F429ZI 开发板有 3 颗 LED,在开发板数据手册的 6.5 节,我们可以看到板载 LED 连接的引脚: PB0: green LED PB7: blue LED PB14: red LED 再次修改 main.c 文件,添加上引脚定义,然后把蓝色 LED 引脚设为输出模式,开始无限循环。首先,把我们之前讨论过的 GPIO 定义和模式设置拷贝过来,注意,现在又新加了一个 BIT(position) 工具宏: #include inttypes.h #include
[单片机]
linux-2.6.38到tiny6410的移植手册(连载2)__网卡&NFS
上次的nand flash移植 linux-2.6.38到tiny6410的移植手册(连载1)见 http://www.arm9home.net/read.php?tid-14196.html 今天做的是dm9000网卡移植,和nfs文件系统的搭建 1、vi include/linux/dm9000.h 28行增加 unsigned char param_addr ; 2、vi arch/arm/mach-s3c64xx/mach-mini6410.c 为方便起见,将他的网卡结构体注释掉 #if 0 static struct resource mini6410_dm9k_resource = { = {
[单片机]
STM8单片机ADC、Timer、USART实用例程
简介:这是一个我花了较长时间摸索出来的STM8L-051的例程,它控制LED灯,Timer2定时100us进入中断,软件启动ADC,采样10 次后取平均,将结果通过UASART发送至PC机,在超级终端上显示的实用程序,因其内存极小,不能用printf等函数,因此对于想用这款资源极少的MCU的开发者来说,读这篇文章会大大节约你的研发时间。 #include #include stm8l15x.h #include iostm8l051f3.h #define LED_GPIO_PORT GPIOA #define LED_GPIO_PINS GPIO_Pin_2 | GPIO_Pin_3 #define AD
[单片机]
s3c2440裸机-I2c编程-1-i2c协议
1.硬件电路 I2C总线是由Philips公司开发的一种简单、双向二线制同步串行总线。如下图: SDA(串行数据线)和SCL(串行时钟线)都是双向I/O线,需通过上拉电阻接电源VCC.当总线空闲时.两根线都是高电平。 I2C 总线标准模式下速度可以达到 100Kb/S,快速模式下可以达到 400Kb/S。SDA 和 SCL 这两根线必须要接一个上拉电阻,一般是 4.7K。 2.i2c协议规则 传输过程如下: 主控发送start讯号(S) 主控发送从设备地址(slave dev addr) 主控发送方向(W/R) 从设备应答(ack) 主控(or从设备)发送数据(data) 从设备(or主控)应答(ack) … 主控发送
[单片机]
远程修改STM32 TIMER占空比的方案
现在有人有这样一个需求,他使用STM32F429芯片做开发,其中用到32位的TIM2实现3路PWM输出。 另外有上位机跟STM32的UART接口相连,上位机可能不定期地需要通过UART接口给STM32发送新的占空比参数,而且每次都发送3个比较输出通道的参数【12个字节】。 如何快捷地实现这个功能呢?要求收到数据后尽快修改3个比较通道的参数。 前一篇重点介绍了利用DMAFIFO和UART接收事件触发DMA传输实现了3个CCR寄存器的批量修改。 我们不妨就该话题稍作拓展,不再局限于某个STM32系列,而是从整个STM32的资源上考虑当前需求。上次提到3种实现方案,我想借此机会再给大家介绍另外一种实现方案,以拓宽未来解决
[单片机]
PIC16F72 TIMER0定时器练习程序
要使用PIC的TIMER0,首先需要看数据手册,熟悉寄存器配置 这里需要用到OPTION,INTCON的配置,还有TMR0计数值的预置。 典型应用程序:利用定时中断实现发光管一闪一闪功能。 源程序: #include pic.h #define uchar unsigned char #define uint unsigned int #define LED1 RC0 ///////////////////////初始化设置程序//////////////////////////////// void Init(void) { PORTA = 0B00000000;
[单片机]
2440裸机编程之八 UART通用异步收发
S3C2440A 内部集成的UART(通用异步收发器)单元提供三个独立的异步串行I/O端口,也就是通常所说的串口。串口是用途广泛的通讯口,很多工业现场总线都以串口为基础。在这里,串口不仅可以用来与外部设备进行数据通讯,还可以用来观察系统的运行状况,例如前面已经使用过的利用串口终端工具观察程序运行情况的方法。 S3C2440A 的UART 单元提供三个独立的异步串行I/O 端口,每个都可以在中断或DMA 两种模式下工作。它们支持的最高波特率为115. 2 kbps。每个UART 通道包含2 个64 位FIFO 分别供接收和发送使用。 S3C2440A 的UART 具有以下可配置的参数项目:可编程的波特率,红外收/发模式,l 或2
[单片机]