《第7章LPC2132系统结构资源学习资料》由会员分享,可在线阅读,更多相关《第7章LPC2132系统结构资源学习资料(98页珍藏版)》请在金锄头文库上搜索。
1、第7章LPC2132系统结构资源,系统控制模块,系统控制模块概述,系统控制模块包括一些系统构件和控制寄存器,它们具有众多与芯片内其它外设无关的功能。系统控制模块包括:系统时钟单元、复位、外部中断输入、存储器映射控制、功率控制和唤醒定时器。,系统时钟,系统时钟概述,CPU正常工作需要有合适的时钟信号,包括ARM7内核使用的CCLK时钟,和芯片外设使用的PCLK时钟。 通过LPC2000系列微控制器的时钟产生单元产生ARM7内核和芯片外设正常工作所需要的时钟节拍。,系统时钟,系统时钟概述,FOSC,CPU时钟结构,系统时钟,晶体振荡器,LPC2000微控制器可以使用内部的晶体振荡器产生时钟信号,也
2、可以从外部引入时钟信号。,从属模式,振荡模式,系统时钟,晶体振荡器,使用从属模式时,时钟信号通过X1引脚从外部输入,输入频率范围:150(MHz),其幅度不小于200m Vrms。,系统时钟,晶体振荡器,使用振荡模式时,时钟信号由内部晶体振荡器和外部连接的晶体振荡产生,振荡频率范围:130(MHz)。,系统时钟,晶体振荡器,注意:如果使用了ISP下载功能或者连接PLL提高频率,则输入的时钟频率范围必须在1025(MHz)之间。,从属模式,振荡模式,系统时钟,锁相环(PLL),由晶体振荡器输出的时钟信号,通过PLL升频,可以获得更高的系统时钟(CCLK)。 PLL接受的输入时钟频率范围为1025
3、MHz,通过一个电流控制振荡器(CCO)倍增到1060MHz。,10MHz25MHz,10MHz60MHz,PLL,PLL内部结构,相位频率 检测,CCO,1 0,2P 分频,M 分频,0 1,0 1,FOSC,FCCO,FCLK,晶体振荡器输入时钟,对输入的两路时钟信号进行相位频率检测,将两者差值以电流形式输出,电流控制振荡器,根据输入电流控制振荡频率,对输入时钟分频,输入时钟 2选1开关,PLL内部结构,相位频率 检测,CCO,1 0,2P 分频,M 分频,0 1,0 1,FOSC,FCCO,FCLK,FCCO / 2P,FCCO / (2P*M),CCO自由振荡,输出频率FCCO,根据两
4、个输入时钟的相位偏差,控制CCO。当两个时钟相位同步时,回路锁定。,PLL相关寄存器,PLL控制寄存器(PLLCON):,PLLE:PLL使能,该位为1时将激活PLL并允许其锁定到指定的频率;,PLLC:PLL连接,当PLLE为1,并且在PLL锁定后,该位为1,将把PLL作为时钟源连接到CPU,否则直接使用振荡器时钟。,注:其中“”表示该位保留,用户不要向该位写入1,读取的值将不确定,PLLC,PLLE,PLL相关寄存器,PLL控制寄存器(PLLCON):,PLLC,PLLE,PLL相关寄存器,PLL控制寄存器(PLLCON):,PLL配置寄存器(PLLCFG):,MSEL4:0:PLL倍频器
5、值,在PLL频率计算中其值为(M-1);,PSEL1:0:PLL分频器值,在PLL频率计算中其值为P 。,PLL相关寄存器,PLL状态寄存器(PLLSETA):,MSEL4:0、PSEL1:0、PLLE、PLLC:读出反映这几个参数的设置值,写入无效;,PLOCK:反映PLL的锁定状态。为0时,PLL未锁定;为1时,PLL锁定到指定频率。,PLL相关寄存器,PLL馈送寄存器(PLLFEED):,PLLFEDD7:0:PLL馈送序列必须写入该寄存器才能使PLL配置和控制寄存器的更改生效;,PLL相关寄存器,馈送序列为: 1.将值0 xAA写入PLLFEED; 2.将值0 x55写入PLLFEED
6、。,PLL相关寄存器,PLL馈送寄存器(PLLFEED):,PLL频率计算,回路锁定后:FOSC = FCCO / (2P M) FCLK = FOSC M,FOSC:晶振频率; FCCO :CCO振荡器输出频率FCCLK:处理器时钟频率; M:PLL倍频值 P:PLL分频值,必须满足的条件: FOSC范围:10MHz25MHz; FCCLK范围:10MHz60MHz; FCCO范围:156MHz320MHz;,系统时钟,锁相环(PLL)计算流程,1.选择处理器的 工作频率(CCLK),2.选择振荡器 频率(FOSC),3.计算M值 配置MSEL位,4.计算P值 配置PSEL位,根据处理器的整
7、体要求、UART波特率的支持等因素来决定。外围器件的时钟频率可以低于处理器频率,CCLK 必须为FOSC的整数倍。,M = CCLK / FOSC,取值范围132。写入MSEL的值为(M-1)。,选择合适的P值,使FCCO在限制范围内。P只能取1、2、4或8。写入PSEL的值为P。,系统时钟,锁相环(PLL)计算实例,系统要求:FOSC10MHz、CCLK 60MHz,1.计算M值:M CCLK / FOSC 6 ;,2.设置MSEL位:写入值为(M1)5;,3. 设置PSEL位:PFCCO/(CCLK2) (156320)/1201.32.67 所以P取整数2,PSEL写入值为2。,系统时钟
8、,锁相环(PLL)注意要点,PLL在芯片复位或进入掉电模式时被关闭并旁路,在掉电唤醒后不会自动恢复PLL的设定; PLL只能通过软件使能; PLL在激活后必须等待其锁定,然后才能连接; PLL如果设置不当将会导致芯片的错误操作。,系统时钟,VPB分频器,VPB分频器将PLL输出的时钟信号分频后作为芯片外设的时钟。,VPB分频器,系统时钟,VPB分频器,VPB分频器决定处理器时钟(CCLK)与外设器件所使用的时钟(PCLK)之间的关系。 VPB用途1:通过VPB总线为外设提供所需的PCLK时钟,以便外设在合适的速度下工作; VPB用途2:在应用不需要任何外设全速运行时使功耗降低。,系统时钟,VP
9、B分频器相关寄存器,VPB分频寄存器(VPBDIV):,VPBDIV1:0:设置分频值,可以设定3个值;,XCLKDIV1:0:这些位用于控制LPC2200系列微控制器A23/XCLK引脚上的时钟驱动,取值编码方式与VPBDIV相同;,系统时钟,VPB分频器相关寄存器,VPB分频寄存器(VPBDIV):,系统时钟初始化流程,系统时钟初始化启动代码实例,/应当与实际一至晶振频率,10MHz25MHz,应当与实际一至 #define Fosc 11059200 /系统频率,必须为Fosc的整数倍(132),且=60MHZ #define Fcclk (Fosc * 4) /CCO频率,必须为Fcc
10、lk的2、4、8、16倍,范围为156MHz320MHz #define Fcco (Fcclk * 4) /VPB时钟频率,只能为(Fcclk / 4)的1、2、4倍 #define Fpclk (Fcclk / 4) * 1,将系统内各时钟的频率定义为宏,方便用户操作。,设置晶振频率,设置内核工作频率,设置CCO输出频率,设置外设工作频率,系统时钟初始化启动代码实例,使能PLL,设置VPB 分频值,C代码分析:,PLLCON = 1; #if (Fpclk / (Fcclk / 4) = 1 VPBDIV = 0; #endif #if (Fpclk / (Fcclk / 4) = 2 V
11、PBDIV = 2; #endif #if (Fpclk / (Fcclk / 4) = 4 VPBDIV = 1; #endif . . .,注意:在启动代码中很多地方使用了条件编译的方法,根据用户定义的宏来决定要设置的值,可以方便用户使用。,系统时钟初始化启动代码实例,设置PLL 分频值,C代码分析:,. . . #if(Fcco/Fcclk)=2 PLLCFG=(Fcclk/Fosc)-1)|(05); #endif #if(Fcco/Fcclk)=4 PLLCFG=(Fcclk/Fosc)-1)|(15); #endif #if(Fcco/Fcclk)= 8 PLLCFG=(Fcclk
12、/Fosc)-1)|(25); #endif #if(Fcco/Fcclk)=16 PLLCFG=(Fcclk/Fosc)-1)|(35); . . .,系统时钟初始化启动代码实例,PLL馈送序列,等待PLL锁定,连接PLL,PLL馈送序列,C代码分析:,. . . PLLFEED = 0 xaa; PLLFEED = 0 x55; while(PLLSTAT ,注意:在修改PLL的控制和配置寄存器后,必须写入馈送序列,使修改生效。,复位,复位的分类 外部复位 把nRESET引脚拉为低电平,并保持一个最小时间,引发复位 看门狗复位 通过设置看门狗相关寄存器,当看门狗定时器溢出后,引发复位,复位
13、,外部复位 外部复位引脚(nRESET)连接内部的施密特触发器,通过施密特触发器可以滤除引脚输入的干扰信号,保证复位的可靠性。如果外部复位信号一直有效,芯片将保持复位状态。,注意: 如果芯片使用了外部晶体,上电后nRESET引脚的复位信号必须保持至少10ms,以便产生稳定的振荡信号。如果晶振已经稳定运行且X1引脚上以出现稳定信号时,nRESET引脚的复位信号只需保持至少300ns时间。,1. 在芯片未上电时,芯片振荡器没有工作;,复位,UX1,t,外部复位,复位,振荡器稳定需要一段时间,UX1,t,外部复位,2. 芯片上电后,晶体振荡器开始振荡。因为振荡从开始到稳定需要一过程,所以外部复位信号
14、至少要保持10ms;,=10ms,=300ns,复位,此时振荡器稳定工作,外部复位,3. 在晶体振荡器保持稳定振荡,或者使用有源钟振时,外部复位信号可以缩短到不小于300ns;,复位,任何复位源引起的芯片复位都会启动唤醒定时器,当计数到一个固定个数的时钟时,处理器开始执行指令。这确保振荡器和芯片所需要的其它模拟电路在处理器开始执行指令之前能够正确工作。,外部复位与内部看门狗复位的共同点,复位,外部复位与内部看门狗复位的区别,外部复位将把某几个特定引脚的值锁存,来决定系统复位后的状态,而看门狗(WDT)复位则无此功能。,复位,复位后的系统状态,芯片被复位后,处理器和外设寄存器都恢复为默认状态。程
15、序计数器(PC)值为0,即CPU复位后运行的第一条代码位于0 x00000000处。此时位于该地址的程序并不位于片内Flash,而是来自Boot Block的异常向量表的重新映射。通过异常向量表的复位异常入口,程序跳转至Boot Block中执行Boot程序。,复位,复位后的系统状态,地址空间,1. 复位后用户见到的存储器分布,2. BootBlock中的异常向量表重新映射,复位,复位后的系统状态,地址空间,PC指向,3. PC指向0 x0000地址处,CPU执行复位后的第一条指令,复位,复位后的系统状态,地址空间,复位异常入口,未定义异常入口,软件中断入口,. . .,0 x00000004,0 x00000008,0 x00000040,4. 通过跳转指令,程序跳入Boot Block,执行Boot程序。,复位,复位后的系统状态,PC指向,地址空间,复位异常入口,未定义异常入口,软件中断入口,. . .,0 x00000004,0 x00000008,0 x00000040,复位,Boot程序,Boot程序是芯片生产厂家固化在芯片中的一段代码,它完成芯片复位后的初始化操作,并提供实现Flash编程的方法。Boot装载程序可启动对空片的编程、已编程器件的擦除和再编程,以及在运行的系统中由应用程序对Flash存储器进行编程。,Boot程序工作流程LPC2