查看: 4612|回复: 4

[原创] 【LPC1768】3.系统时钟设置

[复制链接]
  • TA的每日心情
    擦汗
    昨天 15:50
  • 签到天数: 1874 天

    连续签到: 5 天

    [LV.Master]伴坛终老

    203

    主题

    3万

    帖子

    64

    超级版主

    Rank: 8Rank: 8

    积分
    112714
    最后登录
    2025-8-31
    发表于 2019-2-18 17:31:35 | 显示全部楼层 |阅读模式
    本帖最后由 stm1024 于 2019-2-18 17:33 编辑

    概述
    通过手册可知,LPC1768的时钟树如下图:
    1.png
    LPC1768包含三个独立的振荡器,即主振荡器,内部RC振荡器和RTC振荡器。
    主振荡器工作在1-25MHz,可作为CPU的时钟源,而且可以选择是否采用PLL0倍频。
    内部RC振荡器:用作看门狗的时钟源,也可以通过PLL0倍频从而作为CPU的时钟源,芯片在上电和复位的时候就是使用的这个时钟源,由于PLL没有配置,时钟只有4MHz。
    RTC振荡器:可提供1Hz给RTC,或者32.768KHz给CPU,看门狗,但是如果PLL0为USB提供时钟,则不能使用这个作为时钟源。

    配置
    通常,选用IRC作为时钟源,但是需要配置一下,先丢代码,然后分析:
    1. void Chip_SetupIrcClocking(void)
    2. {
    3.         /* Disconnect the Main PLL if it is connected already */
    4.         if (Chip_Clock_IsMainPLLConnected()) {
    5.                 Chip_Clock_DisablePLL(SYSCTL_MAIN_PLL, SYSCTL_PLL_CONNECT);
    6.         }

    7.         /* Disable the PLL if it is enabled */
    8.         if (Chip_Clock_IsMainPLLEnabled()) {
    9.                 Chip_Clock_DisablePLL(SYSCTL_MAIN_PLL, SYSCTL_PLL_ENABLE);
    10.         }

    11.         Chip_Clock_SetCPUClockDiv(0);
    12.         Chip_Clock_SetMainPLLSource(SYSCTL_PLLCLKSRC_IRC);

    13.         Chip_Clock_SetupPLL(SYSCTL_MAIN_PLL, 44, 0);

    14.         Chip_Clock_EnablePLL(SYSCTL_MAIN_PLL, SYSCTL_PLL_ENABLE);

    15.         Chip_Clock_SetCPUClockDiv(2);
    16.         while (!Chip_Clock_IsMainPLLLocked()) {} /* Wait for the PLL to Lock */

    17.         Chip_Clock_EnablePLL(SYSCTL_MAIN_PLL, SYSCTL_PLL_CONNECT);
    18. }
    复制代码
    拎重点:
    前面两个是安全检查,如果连接了PLL就先脱开PLL。
    Chip_Clock_SetCPUClockDiv(0);
    配置CCLKSEL,CCLKSEL=0时,pllclk除1。

    Chip_Clock_SetMainPLLSource(SYSCTL_PLLCLKSRC_IRC);
    配置时钟源为IRC

    Chip_Clock_SetupPLL(SYSCTL_MAIN_PLL, 44, 0);
    通过PLL倍频后时钟频率,配置详见寄存器PLL0CFG,计算公式为:
    FCCO = (2 *M*FIN) / N  
    因此:FCCO = (2 *(44+1) *  4MHz) / (0+1) = 360MHz

    Chip_Clock_EnablePLL(SYSCTL_MAIN_PLL, SYSCTL_PLL_ENABLE);
    打开PLL。

    Chip_Clock_SetCPUClockDiv(2);
    设置CPU的分频,360/(1+2)=120MHz


    该会员没有填写今日想说内容.
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2025-8-8 16:43
  • 签到天数: 1504 天

    连续签到: 1 天

    [LV.Master]伴坛终老

    97

    主题

    4693

    帖子

    12

    版主

    Rank: 7Rank: 7Rank: 7

    积分
    10096
    最后登录
    2025-8-31
    发表于 2019-2-18 17:51:58 | 显示全部楼层
    LPC1768的主频最高可以设置为100MHz,楼主这个120能跑下来吗?
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    擦汗
    昨天 15:50
  • 签到天数: 1874 天

    连续签到: 5 天

    [LV.Master]伴坛终老

    203

    主题

    3万

    帖子

    64

    超级版主

    Rank: 8Rank: 8

    积分
    112714
    最后登录
    2025-8-31
     楼主| 发表于 2019-2-18 19:31:16 | 显示全部楼层
    jobszheng5 发表于 2019-2-18 17:51
    LPC1768的主频最高可以设置为100MHz,楼主这个120能跑下来吗?

    这个设置程序真的可以跑起来,但是具体是用的100还是120我还真没有测试。
    你这么一说,我赶紧翻了一下手册,发现只有LPC17x9是高速版本可以跑120MHz,其他是100MHz……
    虽然程序运行起来似乎没什么问题,不过看来有必要修改一下。十分感谢指正。
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2025-8-8 16:43
  • 签到天数: 1504 天

    连续签到: 1 天

    [LV.Master]伴坛终老

    97

    主题

    4693

    帖子

    12

    版主

    Rank: 7Rank: 7Rank: 7

    积分
    10096
    最后登录
    2025-8-31
    发表于 2019-2-18 20:38:27 | 显示全部楼层
    这个小芯片 难道还能超频吗?
    一会儿我测试一下其输出频率,看看是否可以超频!
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    擦汗
    昨天 15:50
  • 签到天数: 1874 天

    连续签到: 5 天

    [LV.Master]伴坛终老

    203

    主题

    3万

    帖子

    64

    超级版主

    Rank: 8Rank: 8

    积分
    112714
    最后登录
    2025-8-31
     楼主| 发表于 2019-2-19 10:38:31 | 显示全部楼层
    jobszheng5 发表于 2019-2-18 20:38
    这个小芯片 难道还能超频吗?
    一会儿我测试一下其输出频率,看看是否可以超频! ...

    我的逻辑分析仪没在手边,不然我也想测试一下。个人感觉这个程度的超频应该问题不大
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /3 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2025-9-1 03:58 , Processed in 0.090931 second(s), 23 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

    快速回复 返回顶部 返回列表