LPC2148的时钟配置
1,时钟结构
Fosc是外部晶振时钟;
Fcco是PLL倍频之后的时钟;
CCLK是PLL输出时钟,也是处理器的运行时钟;
PLL0 是处理器运行和UART0使用
PLL1是USB使用,要求必须48MHz,要求外部晶振时钟必须是12MHz,16MHz,24MHz
M、P的值是配置寄存器中的值加1;
2,PLL时钟配置
新建工程之后,在启动文件cr_startup_lpc21.s 中,默认对PLL和外部设备时钟进行了配置
#ifdef PLL_INIT.set PLL, SYSCTRL+0x40.set PLLCON_OFFSET, 0x0.set PLLCFG_OFFSET, 0x4.set PLLSTAT_OFFSET, 0x8.set PLLFEED_OFFSET, 0xC.set PLOCK, (1<<10) //lock bit inside PLLSTAT.set SET_PLLCFG_MUL3, 0x2.set SET_PLLCFG_MUL4, 0x3.set SET_PLLCFG_MUL5, 0x4.set SET_PLLCFG_MUL6, 0x5.set SET_PLLCFG_DIV1, (0x0<<4).set SET_PLLCFG_DIV2, (0x1<<4).set SET_PLLCFG_DIV4, (0x2<<4).set SET_PLLCFG_DIV8, (0x3<<4).set PLLCFG_INIT_VAL, SET_PLLCFG_MUL6 | SET_PLLCFG_DIV1.set SET_PLLCON_ENABLE, 1.set SET_PLLCON_CONNECT, 2/** Setup the PLL*/LDR R0,=PLLMOV R1,#0xAAMOV R2,#0x55MOV R3,#PLLCFG_INIT_VALSTR R3,[R0,#PLLCFG_OFFSET]MOV R3,#SET_PLLCON_ENABLESTR R3,[R0,#PLLCON_OFFSET]STR R1,[R0,#PLLFEED_OFFSET]STR R2,[R0,#PLLFEED_OFFSET]// Wait for the loop to lock
1: LDR R3,[R0,#PLLSTAT_OFFSET]ANDS R3,R3,#PLOCKBEQ 1b// Now swap the cpu clock to the PLL MOV R3,#(SET_PLLCON_ENABLE | SET_PLLCON_CONNECT)STR R3,[R0,#PLLCON_OFFSET]STR R1,[R0,#PLLFEED_OFFSET]STR R2,[R0,#PLLFEED_OFFSET]#endif
通过代码.set PLLCFG_INIT_VAL, SET_PLLCFG_MUL6 | SET_PLLCFG_DIV1
可以得知M = 6;P = 1;
CCLK = M * Fosc = 6 * 12 = 72MHz;
3,APB divider外设时钟(PCLK)配置
APB分频器确定处理器时钟(CCLK)和外围设备使用的时钟(PCLK)之间的关系。APB分隔符有两个目的。首先是通过APB总线为外设提供所需的PCLK,以便它们能够以为ARM处理器选择的速度运行。为了实现这一点,APB总线可以被减慢到处理器时钟速率的一半或四分之一。因为APB总线必须在通电时正常工作(如果APB分频器控制寄存器驻留在APB总线上,它的时间不能改变),重置时的默认条件是APB总线以四分之一的速度运行。APB分频器的第二个目的是,当应用程序不需要任何外围设备以全处理器速率运行时,允许节省电力。APB分频器相对于振荡器和处理器时钟的连接如图12所示。因为APB分隔符已连接到PLL输出,所以PLL在空闲模式下仍然保持活动状态(如果它正在运行)。
也就是说PCLK是由CCLK分频得到的,分频值由APBDIV确定。
00 处理器时钟四分之一; 01 与处理器时钟相同 10 处理器适中的一半; 11 保留,不影响;
在启动文件cr_startup_lpc21.s 中,默认配置如下
#ifdef VPB_INIT
/** Setup the VPB/APB Peripheral bus clock*/.set VPBDIV_OFFSET, 0xc0.set VPBDIV, SYSCTRL+VPBDIV_OFFSET.set VPBDIV_INIT_VAL, 1LDR R0,=VPBDIVLDR R1,=VPBDIV_INIT_VALSTR R1,[R0]#endif
由上文件可知APBDIV的值为1,与处理器时钟相同,即72MHz。
举例将CCLK设置为60MHz,PCLK设置为30MHz;修改cr_startup_lpc21.s中的内容
CCLK = M * Fosc = 5 * 12 = 60MHz;
PCLK = CCLK / 2 = 30MHz;
LPC2148的时钟配置相关推荐
- STM32的时钟配置随笔
以前使用STM32都是使用库函数开发,最近心血来潮想要使用寄存器来试试手感,于是乎便在工作之余研究了一下STM32F4的时钟配置,在此将经历过程写下来作为锻炼,同时也供和我一样的新手参考,如有错误或者 ...
- 华大单片机HC32L136J8TA读取DS18B20温度(源码+时钟配置)
免费的C语言和linuxPDF文档:传送门 有一点C语言基础和华大单片机开发经验,应该就能看得懂就不多介绍了,有疑问可以留言,看到就回了; 关于协议具体解析:传送门@不脱发的程序猿 注(2021-05 ...
- STM32的时钟配置——时钟树解析
此文章由于讲得较详细因此篇幅较长,请带着一点耐心去读,相信会有收获! 目录 STM32为什么要有复杂的时钟系统 详解STM32时钟系统 STM32有几个时钟源 关于时钟输出 软件配置时钟 STM32为 ...
- NXP(I.MX6uLL)DDR3实验——DDR3重要时间参数、时钟配置与原理图简析
目录 DDR3 内存时间参数 传输速率 tRCD 参数 CL 参数 AL 参数 tRC 参数 tRAS 参数 I.MX6U MMDC内存控制器简介 MMDC内存控制器简介 MMDC内存控制器信号引脚 ...
- STM32 RCC时钟配置
STM32 RCC时钟配置 时钟源 外部高速晶振HSE,通常是8MHz. 内部高速晶振HSI,8MHz. 外部低速晶振LSE,32.768KHz. 内部低速晶振LSI,40KHz. 时钟源选择 通常使 ...
- stm32时钟配置总结
stm32时钟配置时钟源: 1,HSE(高速外部时钟)即常见的外接8M晶振方案: 2,HSI(高速内部时钟) 即8M内部振荡时钟方案: 3,LSE(低速外部时钟)即常见的32.768Khz晶振方案: ...
- 火牛单片机rtc时钟配置_怎么用STM32F103RTC进行时钟的配置
#include "sys.h" #include "delay.h" #include "usart.h" #include " ...
- DSP28377s系统时钟配置注意事项
DSP28377s系统时钟配置注意事项 问题一脸嫣然的向我们走来... 近日,一个兄弟在配置基于28377s芯片的主控系统时钟时,遇到点困难. 具体是这样的,原来的主控板使用的是20MHz外部晶振,为 ...
- 如何修改IMX6UL开发板时钟配置?
启扬i.MX6UL开发板时钟由24Mhz与32.768Khz晶振提供,这里不具体介绍NXP公司整体的时钟规划,只从软件API接口方面去分析如何去修改一个外设的时钟. 接下来的讲解将以CAN总线的时钟为 ...
最新文章
- 动态的管理ASP.NET DataGrid数据列
- 分布式服务限流实战,已经为你排好坑了
- vc++ 隐式链接dll
- 2021-01-07 python opencv实现车牌识别 颜色定位
- oracle 创建表中又有表,oracle创建表
- 八、pink老师的学习笔记—— CSS用户界面样式(鼠标样式、轮廓线、防止拖拽文本域)
- Stream anyMatch查找案例
- javascript数据结构与算法--散列
- 一元线性回归 R语言
- 未来计算机二级软件vc,江苏省计算机二级VC++上机模拟软件
- hdb3编码规则波形_求HDB3码编码后波形,编码后功率谱密度图形,求解啊
- Apache 许可证2.0 版
- GoldWave教程分享:删除声道该怎么操作?
- linux源码rm函数,linux的rm命令源码
- Go和Rust计算性能大比武
- AES算法在Wi-Fi加密中的应用
- scp 的拷贝限速功能
- SAP HANA SQL系列二:数据类型转换函数
- 广播发送者广播接收者介绍
- Vue如何将baes64格式的图片转成普通格式
热门文章
- 用于主题检测的临时日志(9fcb0391-54d0-4f35-9170-e53887f47814 - 3bfe001a-32de-4114-a6b4-4005b770f6d7)...
- 中心和非中心卡方分布
- 如何学习(三)看到更多东西
- 全数字摄影测量系统应用(4D)
- 上海交大的微电子学院计算机科学与技术 与 电子信息 区别,电子科学与技术和电子信息工程,到底有啥差别?学姐给你讲个明白...
- 互联网快讯:齐广璞空中技巧夺金;极米投影产品成用户首选;星巴克美式、拿铁等产品涨价
- 基于MOS管的防反接电路设计仿真
- 花3万买的大学申请文书,竟和ChatGPT写的一样?
- 安装pytorch 1.0 出现的问题及解决方法
- 用cmd登录mysql数据库