关于3C2440 FCLK, HCLK, PCLK的关系

本文深入探讨了S3C2440处理器中的时钟系统,包括FLCK、HCLK和PCLK的关系,输入时钟与主频的关系,以及USB时钟的生成方式。同时,介绍了S3C2440的时钟和电源管理模块,包括三种运行模式和相关寄存器的作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

ADS1.2中关于时钟的C代码

ChangeMPllValue((mpll_val>>12)&0xff, (mpll_val>>4)&0x3f, mpll_val&3);

ChangeClockDivider(key, 12);   

1)FLCK、HCLK和PCLK的关系

S3C2440有三个时钟FLCK、HCLK和PCLK

s3c2440官方手册上说P7-8写到:

FCLK is used by ARM920T,内核时钟,主频。

HCLK is used for AHB bus, which is used by the ARM920T, the memory controller, the interrupt controller, the LCD controller, the DMA and USB host block. 也就是总线时钟,包括USB时钟。

PCLK is used for APB bus, which is used by the peripherals such as WDT, IIS, I2C, PWM timer, MMC interface,ADC, UART, GPIO, RTC and SPI.即IO接口时钟,例如串口的时钟设置就是从PCLK来的;

那么这三个时钟是什么关系呢?

这三个时钟通常设置为1:4:8,1:3:6的分频关系,也就说如果主频FLCK是400MHz,按照1:4:8的设置,那么HLCK是100MHz,PLCK是50MHz

寄存器CLKDIVN表明并设置了这三个时钟的关系

如果CLKDIVN设置为0x5,那么比例即为1:4:8,前提是CAMDIVN[9]为0.

2)输入时钟FIN与主频FCLK的关系

现代的CPU基本上都使用了比主频低的多的时钟输入,在CPU内部使用锁相环进行倍频。对于S3C2440,常用的输入时钟FIN有两种:12MHz和16.9344MHz,那么CPU是如何将FIN倍频为FCLK的呢?

S3C2440使用了三个倍频因子MDIV、PDIV和SDIV来设置将FIN倍频为MPLL,也就是FCLK

MPLL=(2*m*FIN)/(p*2^s) where m=(MDIV+8), p=(PDIV+2), s="SDIV"

寄存器MPLLCON就是用来设置倍频因子的

理论上,你可以通过设置该寄存器来实现不同的频率,然而,由于实际存在的各种约束关系,设置一个适当的频率并不容易,手册上列出了一些常用频率的表格,

例如,假设输入时钟FIN=16.9344M,MDIV=110, PDIV="3", SDIV="1",

利用上面的公式,FCLK=2*16.9344*(110+8)/((2+3)*2)=399.65

3)关于USB时钟

S3C2440有两个锁相环,一个主锁相环MPLL提供给FCLK的,另外一个UPLL是提供给USB时钟(48MHz)的,与MPLL一样,UPLL的产生也是通过UPLLCON寄存器设置分频因子得到,计算公式稍有不同:

UPLL=(m*FIN)/(p*2^s) where m=(MDIV+8), p=(PDIV+2), s="SDIV",同样,可以通过查表得到一个合适的值。

最后值得一提的是,在CLKDIVN的第三位DIVN_UPLL用来设置USB时钟UCLK和UPLL的关系,如果UPLL已经是48Mhz了,那么这一位应该设置为0,表示1:1的关系,否则是1:2的关系

2410的时钟和电源管理

概述

时钟和电源管理模块由3部分组成:时钟控制、USB控制、电源控制。

时钟控制部分产生3种时钟信号:CPU用的FCLK,AHB总线用的HCLK,APB总线用的PCLK。有2个锁相环,一个用于FCLK HCLK PCLK,另一个用于48MHzUSB时钟。可以通过不使能锁相环来达到慢速省电目的。

电源管理模块提供了4种模式: Normal模式、Slow模式、Idle模式、Power_Off模式。

Normal Mode

该模式下如果所有外围设备都打开时电流消耗最大,允许用户通过软件关闭外围设备达到省电目的。

Slow Mode

不采用PLL的模式,能量消耗仅取决于外时钟的频率。由外部提供的时钟源作FCLK

Idle Mode

关掉了给cpuFCLK时钟,但外围设备时钟仍存在,任何到CPU的中断请求可以将cpu唤醒。

Power_off Mode

这种模式关掉了内部供电,仅有给wake_up部分的供电还存在。可以通过外部中断或实时时钟中断可以唤醒。

功能描述

时钟结构:主时钟源来自外部晶振XTlpll或外部时钟EXTCLK

时钟源选择:通过OM[3: 2]的高低电平选择,现在我们采用00OM[32]的状态在nRESET的上升沿锁存。尽管MPLL在上电复位后就开始工作,但是MPLL输出不作为系统时钟,只有对MPLLCON写入适当的数值后才可以。即使用户不想改变MPLLCON的值,也要重新写一遍才能使其起作用。

时钟控制逻辑:时钟控制逻辑决定要使用的时钟源,当锁相环被设置为一个新的值时,时钟控制逻辑切断FCLK直到PLL输出稳定。时钟控制逻辑在上电复位或从power_down状态启动时使能。

上电复位:注意上电后必须通过设置PLLCON才能使PLL作用。

在正常操作状态下改变PLL设置:通过改变PMS的值来实现。

USB时钟控制:UCLK不起作用直到UPLL被设置。

FCLK、HCLK、PCLK:可以通过HDIVNPDIVNCLKDIVN来改变3种时钟的比率,推荐采用124的比率。在设置完PMS的值后,需要设置CLKDIVN寄存器,该寄存器设置的值在PLL锁定后生效,只需要1.5HCLK即可完成比率的修改。

电源管理:4种模式及特点。

Power_Off模式:外部中断EINT[15:0]RTC alarm中断可以从该模式wakeup.

进入PowerOff模式的流程:1。将GPIO端口设置为适当的状态; 2。……….

VDDiVDDiarm的控制:在PowerOff模式,仅VDDiVDDiarm通过PWREN管脚控制被关闭。如果PWREN为高,VDDiVDDiarm被外部电源提供,如果为低则关闭。 尽管VDDiVDDiarmVDDi_MPLLVDDi_UPLL可能被关闭,其他电源必须被提供。

EINT[15:0]启动信号: EINTn管脚必须被设置为中断管脚,在启动后,相应的EINTn管脚将不被用作启动,可以被用作外部中断请求。

电池故障信号(nBATT_FLT): cpu不在PowerOff模式时,nBATT_FLT将要引起低电平触发的中断。当在PowerOff模式时,nBATT_FLT信号将会禁止芯片从PowerOff模式启动,故所有的wakeup信号被屏蔽,此举用来保护系统电量低时不出现故障。

时钟和电源管理部分寄存器

LOCKTIME:   UPLL MPLL 锁定时间的计数值。

MPLLCON   UPLLCON: 这两个寄存器都有MDIV PDIV SDIV设置,对于输入12M的晶振,有相应的推荐值,产生200M和48M的频率。

CLKCON: 为各种外围接口提供时钟。

CLKSLOW: 是否打开2个PLL。

CLKDIVN: 设置CLK HCLK PCLK比率的寄存器。

<think>好的,我现在需要回答用户关于CW32微控制器中FCLKPCLKHCLK时钟的作用和配置方法的问题。首先,我得回忆一下微控制器时钟系统的基本概念。通常,不同的时钟信号用于不同的模块,比如CPU核心、总线、外设等,以优化功耗和性能。 用户提供的引用内容提到了FCLKHCLKPCLK在ARM920T和STM32中的情况。例如,FCLK是给ARM920T的时钟,HCLK用于AHB总线,而PCLK用于APB总线。STM32中,SYSCLK是系统时钟,HCLK通常等于系统时钟,而PCLK分频得到,且有不同的最大频率限制。这些信息可以作为参考,但CW32的具体实现可能有所不同,需要查阅相关资料确认。 接下来,我需要确定CW32微控制器中这三个时钟的具体作用。根据常见的架构,FCLK可能是内核时钟,HCLK连接高速外设和内存,PCLK用于低速外设。配置方法通常涉及时钟分频器和控制寄存器,如CLKDIVN的设置,如引用2和4提到的步骤。 用户可能希望了解如何通过代码或寄存器配置这些时钟的分频系数,以及注意事项,比如配置顺序或锁定时间。需要确保回答结构清晰,分点说明作用和配置步骤,并引用提供的资料适当标注来源。 最后,生成相关问题时要围绕时钟配置的影响、外设时钟关系、低功耗模式下的调整,以及具体配置寄存器的名称。需要确保问题与主题相关,帮助用户深入理解。</think>### CW32微控制器时钟系统解析 在CW32微控制器中,FCLKHCLKPCLK是时钟树的核心组成部分,其作用与配置方法如下: #### 1. **各时钟的作用** - **FCLK(内核时钟)** 为微控制器内核(如Cortex-M系列)提供工作时钟,直接影响CPU指令执行速度。例如,当FCLK=72MHz时,CPU每秒可处理约72M条指令[^1][^3]。 - **HCLK(高速总线时钟)** 服务于AHB总线(Advanced High-performance Bus),连接高速外设(如存储器控制器、DMA、USB等)。HCLK通常与FCLK同频,但可通过分频降低功耗[^1]。 - **PCLK(外设总线时钟)** 驱动APB总线(Advanced Peripheral Bus),为低速外设(如UART、SPI、GPIO等)提供时钟。PCLK一般由HCLK分频得到,且不同APB总线可能支持不同最大频率(如APB1=36MHz,APB2=72MHz)。 #### 2. **配置方法** 配置流程通常包含以下步骤: 1. **选择时钟源**:通过寄存器(如`RCC_CR`)选择HSI(内部高速时钟)或HSE(外部高速时钟)作为主时钟源。 2. **设置PLL(锁相环)**:若需超频,需配置`PLL_CFGR`寄存器调整倍频系数。例如: $$ \text{PLL输出频率} = \text{输入频率} \times \frac{N}{M} $$ 3. **分频器设置**:通过`CLKDIVN`类寄存器调整分频系数: - HCLK分频:`HCLK = FCLK / HPRE` - PCLK分频:`PCLK = HCLK / PPRE` 代码示例(基于类似架构): ```c RCC->CFGR |= (0x3 << HPRE_Pos); // HCLK = FCLK / 8 RCC->CFGR |= (0x4 << PPRE_Pos); // PCLK = HCLK / 16 ``` 4. **时钟切换**:通过`RCC_CFGR`的`SW`字段切换系统时钟源至PLL输出[^2][^4]。 #### 3. **注意事项** - **配置顺序**:需先配置PLL再开启,避免时钟紊乱。 - **外设限制**:超频时需确保外设支持目标频率(如ADC可能仅支持14MHz以下时钟)[^3]。 - **锁相环锁定时间**:切换时钟源后需等待`RCC_CR`中的PLL就绪标志位。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值