0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

S3C2440如何设置系统时钟

工程师邓生 来源:未知 作者:刘芹 2023-09-02 15:12 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

S3C2440如何设置系统时钟

S3C2440是一款嵌入式处理器,属于SAMSUNG公司的ARM9系列。系统时钟是嵌入式系统中非常重要的一个参数,它决定了系统的计算速度和精度,是系统稳定性的关键因素之一。对于S3C2440来说,正确设置系统时钟是实现其高效稳定运行的前提条件之一。本文将详细介绍如何设置S3C2440的系统时钟。

一、 S3C2440的时钟系统架构

在了解如何设置S3C2440的系统时钟之前,我们需要先了解一下S3C2440的时钟系统架构。

我们可以看到S3C2440的时钟系统主要由一个PLL锁相环和各种分频器组成。其中,PLL锁相环是时钟系统的核心,它的作用是将输入的基准信号(XTAL或OSC)通过分频器进行分频,然后通过PLL锁相环进行倍频,最终产生所需要的系统时钟。在S3C2440中,PLL锁相环有两个,分别为PLL0和PLL1,它们的输出时钟可以通过寄存器控制。

二、 S3C2440的系统时钟设置流程

了解了S3C2440的时钟系统架构之后,接下来我们就可以开始设置S3C2440的系统时钟了,下面是系统时钟设置的详细步骤:

1、 确定系统时钟频率

在设置S3C2440的系统时钟之前,我们需要先明确所需要的时钟频率。根据实际需要,可以选择不同的时钟频率,如12MHz、13MHz、16MHz等。需要注意的是,时钟频率不能太高或太低,否则会影响系统的稳定性。

2、 设置PLL0时钟

在确定系统时钟频率后,我们可以开始设置PLL0时钟。PLL0时钟的输出频率需要在50MHz~533MHz之间,可以通过设置PLL0的分频器和倍频器来实现。具体的设置方法如下:

(1) 设置MPLLCON寄存器

MPLLCON寄存器用于设置PLL0的参数,包括分频器和倍频器。具体的设置方法如下:

```C
#define FCLK 50000000 // FCLK时钟为50MHz

void PLL0_Init(void)
{
// 定义需要设置的PLL0参数
unsigned int mdiv, pdiv, sdiv;
unsigned int pllcon, clksrc, clkdivn;

// 设置PLL0的MPLLCON寄存器
Get_Frequency(&mdiv, &pdiv, &sdiv, FCLK, SCLK);
pllcon = (mdiv << 12) | (pdiv << 4) | (sdiv << 0);
rMPLLCON = pllcon;

// 设置系统时钟的源和分频器
clksrc = 0x3; // 旁路模式
clkdivn = 0x1; // FCLK = HCLK / 2
rCLKDIVN = (clksrc << 0) | (clkdivn << 4);
}
```

上面的代码中,我们首先定义了需要设置的PLL0参数mdiv、pdiv和sdiv,然后通过Get_Frequency函数计算出具体的参数值,并将其写入MPLLCON寄存器中。其中,mdiv和pdiv分别为PLL0输入频率与PLL0倍频系数的商和余数,sdiv为PLL0输入频率与PLL0分频系数的商。最后,我们通过设置CLKDIVN寄存器的值来设置系统时钟的源和分频器。

(2) 设置MPLLCON寄存器

如果需要使用PLL1时钟,我们可以按照同样的方法来设置PLL1的参数并将其写入UPLLCON寄存器中,具体代码如下:

```C
void PLL1_Init(void)
{
// 定义需要设置的PLL1参数
unsigned int plldivn;
unsigned int pllcon;

// 设置PLL1的UPLLCON寄存器
plldivn = 0x1;
pllcon = (plldivn << 1);
rUPLLCON = pllcon;
}
```

3、 设置系统时钟

在设置好PLL0/PLL1之后,我们就可以根据实际需要来设置系统时钟了。系统时钟可以通过设置CLKDIVN寄存器来实现。具体的设置方法如下:

```C
void System_Init(void)
{
// 设置PLL0/PLL1参数和系统时钟分频器
PLL0_Init();
PLL1_Init();

// 设置系统时钟分频器
rCLKDIVN = 0x5;
}
```

上面的代码中,我们首先调用了PLL0_Init()和PLL1_Init()函数来设置PLL0和PLL1的参数,然后设置了系统时钟分频器为0x5,表示系统时钟为PLL0的输出频率除以5。需要注意的是,系统时钟的分频器值不能太小或太大,否则会影响系统的稳定性。

4、 配置外设时钟

在设置好系统时钟之后,我们还需要配置外设时钟才能使外设正常工作。在S3C2440中,外设时钟可以通过CLKCON寄存器来配置。具体的设置方法如下:

```C
void Peripheral_Init(void)
{
// 设置SDRAM时钟和NAND Flash时钟
rCLKCON = rCLKCON & (~(1 << 0)) & (~(1 << 1));

// 设置UART0时钟
rCLKCON = rCLKCON & (~(1 << 9));
}
```

上面的代码中,我们首先关闭SDRAM时钟和NAND Flash时钟,并将CLKCON寄存器的第0和第1位清零。然后,我们关闭UART0时钟,并将CLKCON寄存器的第9位清零。根据实际需要,我们还可以配置其他外设的时钟。

三、 总结

本文详细介绍了如何设置S3C2440的系统时钟,包括设置PLL0/PLL1和系统时钟分频器,以及配置外设时钟。通过正确设置系统时钟,可以提高S3C2440的运行效率和稳定性,使其更好地适应不同的应用场景。作为嵌入式开发人员,了解和掌握S3C2440的时钟系统架构和设置方法是非常重要的。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 分频器
    +关注

    关注

    43

    文章

    493

    浏览量

    51510
  • S3C2440
    +关注

    关注

    4

    文章

    132

    浏览量

    39672
  • 嵌入式处理器

    关注

    0

    文章

    256

    浏览量

    31333
  • 倍频器
    +关注

    关注

    8

    文章

    118

    浏览量

    36631
  • 系统时钟
    +关注

    关注

    1

    文章

    31

    浏览量

    9701
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    FD40-110S48B3C3 FD40-110S48B3C3

    电子发烧友网为你提供AIPULNION(AIPULNION)FD40-110S48B3C3相关产品参数、数据手册,更有FD40-110S48B3C3的引脚图、接线图、封装手册、中文资料、英文资料,FD40-110S48B3C3
    发表于 03-25 18:33
    FD40-110<b class='flag-5'>S48B3C3</b> FD40-110<b class='flag-5'>S48B3C3</b>

    FD30-36S18B3(C) FD30-36S18B3(C)

    电子发烧友网为你提供AIPULNION(AIPULNION)FD30-36S18B3(C)相关产品参数、数据手册,更有FD30-36S18B3(C)的引脚图、接线图、封装手册、中文资料
    发表于 03-25 18:30
    FD30-36<b class='flag-5'>S18B3</b>(<b class='flag-5'>C</b>) FD30-36<b class='flag-5'>S18B3</b>(<b class='flag-5'>C</b>)

    FD50-110S48B3C3 FD50-110S48B3C3

    电子发烧友网为你提供AIPULNION(AIPULNION)FD50-110S48B3C3相关产品参数、数据手册,更有FD50-110S48B3C3的引脚图、接线图、封装手册、中文资料、英文资料,FD50-110S48B3C3
    发表于 03-24 18:47
    FD50-110<b class='flag-5'>S48B3C3</b> FD50-110<b class='flag-5'>S48B3C3</b>

    FD30-110S48B3C3 FD30-110S48B3C3

    电子发烧友网为你提供AIPULNION(AIPULNION)FD30-110S48B3C3相关产品参数、数据手册,更有FD30-110S48B3C3的引脚图、接线图、封装手册、中文资料、英文资料,FD30-110S48B3C3
    发表于 03-24 18:45
    FD30-110<b class='flag-5'>S48B3C3</b> FD30-110<b class='flag-5'>S48B3C3</b>

    FD50-110S48B3(C)3 FD50-110S48B3(C)3

    电子发烧友网为你提供AIPULNION(AIPULNION)FD50-110S48B3(C)3相关产品参数、数据手册,更有FD50-110S48B3(
    发表于 03-21 18:31
    FD50-110<b class='flag-5'>S48B3</b>(<b class='flag-5'>C</b>)<b class='flag-5'>3</b> FD50-110<b class='flag-5'>S48B3</b>(<b class='flag-5'>C</b>)<b class='flag-5'>3</b>

    FD50-48S09B3(C) FD50-48S09B3(C)

    电子发烧友网为你提供AIPULNION(AIPULNION)FD50-48S09B3(C)相关产品参数、数据手册,更有FD50-48S09B3(C)的引脚图、接线图、封装手册、中文资料
    发表于 03-21 18:30
    FD50-48<b class='flag-5'>S09B3</b>(<b class='flag-5'>C</b>) FD50-48<b class='flag-5'>S09B3</b>(<b class='flag-5'>C</b>)

    FD20-110S40B3C3 FD20-110S40B3C3

    电子发烧友网为你提供AIPULNION(AIPULNION)FD20-110S40B3C3相关产品参数、数据手册,更有FD20-110S40B3C3的引脚图、接线图、封装手册、中文资料、英文资料,FD20-110S40B3C3
    发表于 03-20 18:58
    FD20-110<b class='flag-5'>S40B3C3</b> FD20-110<b class='flag-5'>S40B3C3</b>

    FD12-110S24A3(C)3 FD12-110S24A3(C)3

    电子发烧友网为你提供AIPULNION(AIPULNION)FD12-110S24A3(C)3相关产品参数、数据手册,更有FD12-110S24A3(
    发表于 03-20 18:54
    FD12-110<b class='flag-5'>S24A3</b>(<b class='flag-5'>C</b>)<b class='flag-5'>3</b> FD12-110<b class='flag-5'>S24A3</b>(<b class='flag-5'>C</b>)<b class='flag-5'>3</b>

    FD6-36S24A3C3 FD6-36S24A3C3

    电子发烧友网为你提供AIPULNION(AIPULNION)FD6-36S24A3C3相关产品参数、数据手册,更有FD6-36S24A3C3的引脚图、接线图、封装手册、中文资料、英文资料,FD6-36S24A3C3真值表,FD6
    发表于 03-20 18:45
    FD6-36<b class='flag-5'>S24A3C3</b> FD6-36<b class='flag-5'>S24A3C3</b>

    FD6-110S05A3(C) FD6-110S05A3(C)

    电子发烧友网为你提供AIPULNION(AIPULNION)FD6-110S05A3(C)相关产品参数、数据手册,更有FD6-110S05A3(C)的引脚图、接线图、封装手册、中文资料
    发表于 03-20 18:43
    FD6-110<b class='flag-5'>S05A3</b>(<b class='flag-5'>C</b>) FD6-110<b class='flag-5'>S05A3</b>(<b class='flag-5'>C</b>)

    FW2-24S15C3 FW2-24S15C3

    电子发烧友网为你提供AIPULNION(AIPULNION)FW2-24S15C3相关产品参数、数据手册,更有FW2-24S15C3的引脚图、接线图、封装手册、中文资料、英文资料,FW2-24S15C3真值表,FW2-24
    发表于 03-20 18:30
    FW2-24<b class='flag-5'>S15C3</b> FW2-24<b class='flag-5'>S15C3</b>

    NN3-24S24C4N NN3-24S24C4N

    电子发烧友网为你提供AIPULNION(AIPULNION)NN3-24S24C4N相关产品参数、数据手册,更有NN3-24S24C4N的引脚图、接线图、封装手册、中文资料、英文资料,NN3-24S24C4N真值表,NN
    发表于 03-19 18:50
    NN<b class='flag-5'>3-24S24C</b>4N NN<b class='flag-5'>3-24S24C</b>4N

    NN3-12S24C3N NN3-12S24C3N

    电子发烧友网为你提供AIPULNION(AIPULNION)NN3-12S24C3N相关产品参数、数据手册,更有NN3-12S24C3N的引脚图、接线图、封装手册、中文资料、英文资料,NN3-12S24C3N真值表,NN
    发表于 03-19 18:49
    NN<b class='flag-5'>3-12S24C3</b>N NN<b class='flag-5'>3-12S24C3</b>N

    用txb0108在ARM9 S3C2440的八个数据口和计数器8254-2的八个数据口做了一个转换,8254-2严重发烫是为什么?

    我用txb0108在ARM9 S3C2440(3.3V)的八个数据口(DATA0~DATA7)和计数器8254-2(5V)的八个数据口做了一个转换,直接导致计数器8254-2严重发烫。这是为什么呢?
    发表于 01-15 07:59

    快速学习全志T113-S3 开发板时钟操作

    不同的场景下需要对时钟进行不同的使用操作。产品简介眺望电子EVM-T113-S3是一款基于全志T113-S3双核ARMCortex-A7+单核HiFi4DSP异构多核
    的头像 发表于 12-06 01:04 1697次阅读
    快速学习全志T113-<b class='flag-5'>S3</b> 开发板<b class='flag-5'>时钟</b>操作