版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第7章
LPC2132
系统结构资源
系统控制模块系统控制模块概述系统控制模块包括一些系统构件和控制寄存器,它们具有众多与芯片内其它外设无关的功能。系统控制模块包括:系统时钟单元、复位、外部中断输入、存储器映射控制、功率控制和唤醒定时器。系统时钟系统时钟概述CPU正常工作需要有合适的时钟信号,包括ARM7内核使用的CCLK时钟,和芯片外设使用的PCLK时钟。通过LPC2000系列微控制器的时钟产生单元产生ARM7内核和芯片外设正常工作所需要的时钟节拍。系统时钟系统时钟概述ARM7核桥外设时钟产生FCCLKFPCLKFOSCCPU时钟结构系统时钟晶体振荡器LPC2000微控制器可以使用内部的晶体振荡器产生时钟信号,也可以从外部引入时钟信号。LPC2000LPC2000X1X2X1X2ClockCX1CX2CCXTAL从属模式振荡模式系统时钟晶体振荡器使用从属模式时,时钟信号通过X1引脚从外部输入,输入频率范围:1~50(MHz),其幅度不小于200mVrms。LPC2000X1X2ClockCC从属模式系统时钟晶体振荡器使用振荡模式时,时钟信号由内部晶体振荡器和外部连接的晶体振荡产生,振荡频率范围:1~30(MHz)。LPC2000X1X2CX1CX2XTAL振荡模式系统时钟晶体振荡器注意:如果使用了ISP下载功能或者连接PLL提高频率,则输入的时钟频率范围必须在10~25(MHz)之间。LPC2000LPC2000X1X2X1X2ClockCX1CX2CCXTAL从属模式振荡模式系统时钟锁相环(PLL)由晶体振荡器输出的时钟信号,通过PLL升频,可以获得更高的系统时钟(CCLK)。PLL接受的输入时钟频率范围为10~25MHz,通过一个电流控制振荡器(CCO)倍增到10~60MHz。PLL晶体振荡器VPB分频器FCCLKFPCLKFOSC10MHz~25MHz10MHz~60MHzPLLPLL内部结构相位频率检测CCO102P分频M分频0101FOSCFCCOFCLK晶体振荡器输入时钟对输入的两路时钟信号进行相位频率检测,将两者差值以电流形式输出电流控制振荡器,根据输入电流控制振荡频率对输入时钟分频输入时钟2选1开关PLL内部结构相位频率检测CCO102P分频M分频0101FOSCFCCOFCLKFCCO/2PFCCO/(2P*M)CCO自由振荡,输出频率FCCO根据两个输入时钟的相位偏差,控制CCO。当两个时钟相位同步时,回路锁定。PLL相关寄存器相位频率检测CCO102P分频M分频0101FOSCFCCOFCLKPLL控制寄存器(PLLCON):位76543210功能------PLLCPLLEPLLE:PLL使能,该位为1时将激活PLL并允许其锁定到指定的频率;PLLC:PLL连接,当PLLE为1,并且在PLL锁定后,该位为1,将把PLL作为时钟源连接到CPU,否则直接使用振荡器时钟。PLLCPLLE相位频率检测CCO102P分频M分频0101FOSCFCCOFCLK位76543210功能------PLLCPLLE注:其中“-”表示该位保留,用户不要向该位写入1,读取的值将不确定PLLCPLLEPLL相关寄存器PLL控制寄存器(PLLCON):相位频率检测CCO102P分频M分频0101FOSCFCCOFCLKPLLCPLLEPLL功能00PLL被关闭,并断开连接。01PLL被激活但是尚未连接。可以在PLOCK置位后连接。10与00组合相同。避免PLL已连接,当还没有使能的情况。11PLL已经使能,并连接到处理器作为系统时钟源。PLLCPLLEPLL相关寄存器PLL控制寄存器(PLLCON):相位频率检测CCO102P分频M分频0101FOSCFCCOFCLKPLL配置寄存器(PLLCFG):位76543210功能-PSEL[1:0]MSEL[4:0]MSEL[4:0]:PLL倍频器值,在PLL频率计算中其值为(M-1);PSEL[1:0]:PLL分频器值,在PLL频率计算中其值为P。PLL相关寄存器相位频率检测CCO102P分频M分频0101FOSCFCCOFCLKPLL状态寄存器(PLLSETA):位15:11109876:54:0功能-PLOCKPLLCPLLE-PSEL[1:0]MSEL[4:0]MSEL[4:0]、PSEL[1:0]、PLLE、PLLC:读出反映这几个参数的设置值,写入无效;PLOCK:反映PLL的锁定状态。为0时,PLL未锁定;为1时,PLL锁定到指定频率。PLL相关寄存器相位频率检测CCO102P分频M分频0101FOSCFCCOFCLKPLL馈送寄存器(PLLFEED):PLLFEDD[7:0]:PLL馈送序列必须写入该寄存器才能使PLL配置和控制寄存器的更改生效;位76543210功能PLLFEED[7:0]PLL相关寄存器相位频率检测CCO102P分频M分频0101FOSCFCCOFCLK馈送序列为:1.将值0xAA写入PLLFEED;2.将值0x55写入PLLFEED。位76543210功能PLLFEED[7:0]PLL相关寄存器PLL馈送寄存器(PLLFEED):PLL频率计算回路锁定后:FOSC=FCCO/(2P×M)FCLK=FOSC
×M相位频率检测CCO102P分频M分频0101FOSCFCCOFCLKFCCO/2PFCCO/(2P*M)FOSC:晶振频率;FCCO:CCO振荡器输出频率FCCLK:处理器时钟频率;M:PLL倍频值P:PLL分频值必须满足的条件:FOSC范围:10MHz~25MHz;FCCLK范围:10MHz~60MHz;FCCO范围:156MHz~320MHz;系统时钟锁相环(PLL)计算流程1.选择处理器的工作频率(CCLK)2.选择振荡器频率(FOSC)3.计算M值配置MSEL位4.计算P值配置PSEL位根据处理器的整体要求、UART波特率的支持等因素来决定。外围器件的时钟频率可以低于处理器频率CCLK必须为FOSC的整数倍。M=CCLK/FOSC,取值范围1~32。写入MSEL的值为(M-1)。选择合适的P值,使FCCO在限制范围内。P只能取1、2、4或8。写入PSEL的值为P。系统时钟锁相环(PLL)计算实例系统要求:FOSC=10MHz、CCLK=60MHz1.计算M值:M=CCLK/FOSC=6
;2.设置MSEL位:写入值为(M-1)=5;3.设置PSEL位:P=FCCO/(CCLK×2)=(156~320)/120=1.3~2.67所以P取整数2,PSEL写入值为2。系统时钟锁相环(PLL)注意要点PLL在芯片复位或进入掉电模式时被关闭并旁路,在掉电唤醒后不会自动恢复PLL的设定;PLL只能通过软件使能;PLL在激活后必须等待其锁定,然后才能连接;PLL如果设置不当将会导致芯片的错误操作。系统时钟VPB分频器VPB分频器将PLL输出的时钟信号分频后作为芯片外设的时钟。PLL晶体振荡器VPB分频器FCCLKFPCLKFOSCVPB分频器系统时钟VPB分频器VPB分频器决定处理器时钟(CCLK)与外设器件所使用的时钟(PCLK)之间的关系。VPB用途1:通过VPB总线为外设提供所需的PCLK时钟,以便外设在合适的速度下工作;VPB用途2:在应用不需要任何外设全速运行时使功耗降低。系统时钟VPB分频器相关寄存器位76543210功能--XCLKDIV[1:0]--VPBDIV[1:0]VPB分频寄存器(VPBDIV):VPBDIV[1:0]:设置分频值,可以设定3个值;XCLKDIV[1:0]:这些位用于控制LPC2200系列微控制器A23/XCLK引脚上的时钟驱动,取值编码方式与VPBDIV相同;系统时钟VPB分频器相关寄存器位76543210功能--XCLKDIV[1:0]--VPBDIV[1:0]VPB分频寄存器(VPBDIV):VPBDIV[1:0]说明00VPB总线时钟为处理器时钟的1/4。01VPB总线时钟与处理器时钟相同。10VPB总线时钟为处理器时钟的1/2。11保留。写入该值将不改变分频值。系统时钟初始化流程使能PLL设置VPB分频值PLL馈送序列等待PLL锁定设置PLL分频值连接PLLPLL馈送序列系统时钟初始化——启动代码实例//应当与实际一至晶振频率,10MHz~25MHz,应当与实际一至#defineFosc11059200//系统频率,必须为Fosc的整数倍(1~32),且<=60MHZ#defineFcclk(Fosc*4)//CCO频率,必须为Fcclk的2、4、8、16倍,范围为156MHz~320MHz#defineFcco(Fcclk*4)//VPB时钟频率,只能为(Fcclk/4)的1、2、4倍#defineFpclk(Fcclk/4)*1将系统内各时钟的频率定义为宏,方便用户操作。设置晶振频率设置内核工作频率设置CCO输出频率设置外设工作频率系统时钟初始化——启动代码实例使能PLL设置VPB分频值PLL馈送序列等待PLL锁定设置PLL分频值连接PLLPLL馈送序列使能PLL设置VPB分频值C代码分析:PLLCON=1;#if(Fpclk/(Fcclk/4))==1VPBDIV=0;#endif#if(Fpclk/(Fcclk/4))==2VPBDIV=2;#endif#if(Fpclk/(Fcclk/4))==4VPBDIV=1;#endif...注意:在启动代码中很多地方使用了条件编译的方法,根据用户定义的宏来决定要设置的值,可以方便用户使用。系统时钟初始化——启动代码实例使能PLL设置VPB分频值PLL馈送序列等待PLL锁定设置PLL分频值连接PLLPLL馈送序列设置PLL分频值C代码分析:...#if(Fcco/Fcclk)==2PLLCFG=((Fcclk/Fosc)-1)|(0<<5);#endif#if(Fcco/Fcclk)==4PLLCFG=((Fcclk/Fosc)-1)|(1<<5);#endif#if(Fcco/Fcclk)==8PLLCFG=((Fcclk/Fosc)-1)|(2<<5);#endif#if(Fcco/Fcclk)==16PLLCFG=((Fcclk/Fosc)-1)|(3<<5);...系统时钟初始化——启动代码实例使能PLL设置VPB分频值PLL馈送序列等待PLL锁定设置PLL分频值连接PLLPLL馈送序列PLL馈送序列等待PLL锁定连接PLLPLL馈送序列C代码分析:...PLLFEED=0xaa;PLLFEED=0x55;while((PLLSTAT&(1<<10))==0);PLLCON=3;PLLFEED=0xaa;PLLFEED=0x55;注意:在修改PLL的控制和配置寄存器后,必须写入馈送序列,使修改生效。复位复位的分类外部复位 —把nRESET引脚拉为低电平,并保持一个最小时间,引发复位看门狗复位 —通过设置看门狗相关寄存器,当看门狗定时器溢出后,引发复位复位外部复位 外部复位引脚(nRESET)连接内部的施密特触发器,通过施密特触发器可以滤除引脚输入的干扰信号,保证复位的可靠性。如果外部复位信号一直有效,芯片将保持复位状态。 注意:如果芯片使用了外部晶体,上电后nRESET引脚的复位信号必须保持至少10ms,以便产生稳定的振荡信号。如果晶振已经稳定运行且X1引脚上以出现稳定信号时,nRESET引脚的复位信号只需保持至少300ns时间。1.在芯片未上电时,芯片振荡器没有工作;复位UX1tLPC2xxxnRESET电源输入X1X2外部复位复位振荡器稳定需要一段时间UX1tLPC2xxxnRESET电源输入X1X2外部复位2.芯片上电后,晶体振荡器开始振荡。因为振荡从开始到稳定需要一过程,所以外部复位信号至少要保持10ms;>=10ms>=300ns复位UX1t此时振荡器稳定工作外部复位LPC2xxxnRESET电源输入X1X23.在晶体振荡器保持稳定振荡,或者使用有源钟振时,外部复位信号可以缩短到不小于300ns;复位任何复位源引起的芯片复位都会启动唤醒定时器,当计数到一个固定个数的时钟时,处理器开始执行指令。这确保振荡器和芯片所需要的其它模拟电路在处理器开始执行指令之前能够正确工作。外部复位与内部看门狗复位的共同点复位外部复位与内部看门狗复位的区别外部复位将把某几个特定引脚的值锁存,来决定系统复位后的状态,而看门狗(WDT)复位则无此功能。检测引脚锁存状态对应功能P1.20/TRACESYNC0P1.25~P1.16作为跟踪端口P1.26/RTCK0P1.31~P1.26作为调试端口P0.140进入ISP状态BOOT1、BOOT2全1内部Flash启动,否则外部启动复位复位后的系统状态芯片被复位后,处理器和外设寄存器都恢复为默认状态。程序计数器(PC)值为0,即CPU复位后运行的第一条代码位于0x00000000处。此时位于该地址的程序并不位于片内Flash,而是来自BootBlock的异常向量表的重新映射。通过异常向量表的复位异常入口,程序跳转至BootBlock中执行Boot程序。复位复位后的系统状态FlashSRAMBootBlockAHB&VPB0x000000000xFFFFFFFF0x400000000x80000000地址空间1.复位后用户见到的存储器分布2.BootBlock中的异常向量表重新映射复位复位后的系统状态FlashSRAMBootBlockAHB&VPB0x000000000xFFFFFFFF0x400000000x80000000地址空间复位异常入口未定义异常入口软件中断入口...0x000000000x000000040x000000080x00000040PC指向3.PC指向0x0000地址处,CPU执行复位后的第一条指令复位复位后的系统状态FlashSRAMBootBlockAHB&VPB0x000000000xFFFFFFFF0x400000000x80000000地址空间复位异常入口未定义异常入口软件中断入口...0x000000040x000000080x000000404.通过跳转指令,程序跳入BootBlock,执行Boot程序。复位复位后的系统状态PC指向FlashSRAMBootBlockAHB&VPB0x000000000xFFFFFFFF0x400000000x80000000地址空间复位异常入口未定义异常入口软件中断入口...0x000000040x000000080x00000040复位Boot程序Boot程序是芯片生产厂家固化在芯片中的一段代码,它完成芯片复位后的初始化操作,并提供实现Flash编程的方法。Boot装载程序可启动对空片的编程、已编程器件的擦除和再编程,以及在运行的系统中由应用程序对Flash存储器进行编程。Boot程序工作流程——LPC2114/2124复位运行ISP服务程序看门狗复位根据硬件(P1.20、P1.26)配置进入ISP状态吗?(P0.14为低)初始化用户代码是否有效执行用户代码(片内Flash:0x00000000)NYYYNN在此检测特定引脚检测用户代码是否有效Boot程序工作流程——LPC2210/2212/2214复位看门狗复位进入ISP模式?(P0.14为低)初始化用户代码是否有效芯片加密允许调试外部引导芯片加密运行ISP服务程序执行外部用户代码(0x80000000)执行内部用户代码(0x00000000)NNYYNNNNYYYY在此检测特定引脚检测用户代码是否有效复位有效用户代码的判别LPC2000系列微控制器规定“内部Flash中向量表所有数据的32位累加为零”时,判定内部Flash中的代码为有效可执行代码。即只有当向量表所有数据32位累加和为零时,用户的程序才能脱机运行。有效用户代码的判别CODE32AREAvectors,CODE,READONLYENTRYResetLDRPC,ResetAddrLDRPC,UndefinedAddr...DCD0xb9205f80LDRPC,[PC,#-0xff0]LDRPC,FIQ_AddrResetAddrDCDResetInitUndefinedAddrDCDUndefined...NouseDCD0IRQ_AddrDCD0FIQ_AddrDCDFIQ_Handler异常向量表前32字节为异常入口后32字节为跳转地址有效用户代码的判别Reset[0xe59ff018]ldrpc,ResetAddr[0xe59ff018]ldrpc,UndefinedAddr...[0xb9205f80]dcd0xb9205f80[0xe51ffff0]ldrpc,0x7ffff030[0xe59ff018]ldrpc,FIQ_AddrResetAddr[0x8000008c]dcd0x8000008cUndefinedAddr[0x80000040]dcd0x80000040...Nouse[0x00000000]dcd0x00000000IRQ_Addr[0x00000000]dcd0x00000000FIQ_Addr[0x8000004c]dcd0x8000004c异常向量表反汇编代码指令的机器码指令有效用户代码的判别Reset[0xe59ff018]ldrpc,ResetAddr[0xe59ff018]ldrpc,UndefinedAddr...[0xb9205f80]dcd0xb9205f80[0xe51ffff0]ldrpc,0x7ffff030[0xe59ff018]ldrpc,FIQ_AddrResetAddr[0x8000008c]dcd0x8000008cUndefinedAddr[0x80000040]dcd0x80000040...Nouse[0x00000000]dcd0x00000000IRQ_Addr[0x00000000]dcd0x00000000FIQ_Addr[0x8000004c]dcd0x8000004c异常向量表反汇编代码8条指令的机器码累加和为0,表示用户代码有效Reset[0xe59ff018]ldrpc,ResetAddr[0xe59ff018]ldrpc,UndefinedAddr...[0xb9205f80]dcd0xb9205f80[0xe51ffff0]ldrpc,0x7ffff030[0xe59ff018]ldrpc,FIQ_AddrResetAddr[0x8000008c]dcd0x8000008cUndefinedAddr[0x80000040]dcd0x80000040...Nouse[0x00000000]dcd0x00000000IRQ_Addr[0x00000000]dcd0x00000000FIQ_Addr[0x8000004c]dcd0x8000004c异常向量表反汇编代码8条指令的机器码累加和为0,表示用户代码有效有效用户代码的判别[0x00000000][0xe59ff018][0xe59ff018]...[0xb9205f80][0xe51ffff0][0xe59ff018]跳转地址数据不在累加范围内通过调整该保留字,使累加和为0实时时钟RTC内部结构时钟发生器预分频器时间计数器报警控制=时钟控制增量中断控制中断标志报警寄存器PCLK产生秒时钟时间寄存器组与报警设定值进行比较有两类中断,一种是时间增量中断,一种是报警中断时钟发生器预分频器时间计数器报警控制=时钟控制增量中断控制中断标志报警寄存器PCLK寄存器描述时钟发生器预分频器时间计数器报警控制=时钟控制增量中断控制中断标志报警寄存器PCLK时间计数器时钟发生器预分频器时钟控制报警控制增量中断控制中断标志报警寄存器所有寄存器大致可以分为三类:时钟产生寄存器;时间寄存器组;中断产生控制;寄存器描述时间计数器=时钟发生器预分频器时钟控制报警控制增量中断控制中断标志报警寄存器PCLK时钟产生寄存器组控制产生RTC时间计数器需要的秒时钟信号。——时钟产生寄存器组名称有效位描述访问PREINT13预分频值,整数部分读写PREFRAC15预分频值,小数部分读写CCR4时钟节拍计数器读写CTC15时钟控制寄存器只读寄存器描述——预分频寄存器名称有效位描述访问PREINT13预分频值,整数部分读写PREFRAC15预分频值,小数部分读写CCR4时钟节拍计数器读写CTC15时钟控制寄存器只读名称有效位描述访问PREINT13预分频值,整数部分读写PREFRAC15预分频值,小数部分读写CCR4时钟节拍计数器读写CTC15时钟控制寄存器只读PREINT13预分频值,整数部分读写PREFRAC15预分频值,小数部分读写预分频器用于将任何频率高于67.536KHz的PCLK时钟分频产生32.768KHz的基准时钟。这样就可以不管外设时钟的频率为多少,RTC总是以正确的速率运行。预分频寄存器分为整数部分和小数部分,因此有可能某个时钟节拍多包含一个PCLK周期,而某个节拍却少一个PCLK周期。但是每个时钟节拍的周期一定是32768个PCLK周期。寄存器描述预分频整数部分为13位有效位,小数部分为15位有效位。预分频整数部分的计算公式为:PREINT=int(PCLK/32768)–1预分频小数部分的计算公式为:PREFRAC=PCLK–((PREINT+1)×32768)——预分频寄存器名称有效位描述访问PREINT13预分频值,整数部分读写PREFRAC15预分频值,小数部分读写CCR4时钟节拍计数器读写CTC15时钟控制寄存器只读PREINT13预分频值,整数部分读写PREFRAC15预分频值,小数部分读写寄存器描述——时钟控制寄存器名称有效位描述访问PREINT13预分频值,整数部分读写PREFRAC15预分频值,小数部分读写CCR4时钟节拍计数器读写CTC15时钟计数寄存器只读时钟控制寄存器包含4位有效位,它用于控制时钟分频电路的操作,包括启动RTC和复位时钟节拍计数器(CTC)等功能。CCR4时钟控制寄存器读写位功能描述0CLKEN时钟使能。当该位为1时,时间计数器使能。为0时,时间计数器被禁止,这时可对其初始化。1CTCRSTCTC复位。为1时,时钟节拍计数器复位。在CCR的bit1变为0之前,它将一直保持复位状态。3:2CTTEST测试使能。在正常操作中,这些位应当全为0。寄存器描述——时钟计数寄存器名称有效位描述访问PREINT13预分频值,整数部分读写PREFRAC15预分频值,小数部分读写CCR4时钟节拍计数器读写CTC15时钟计数寄存器只读时钟节拍计数器对预分频器的输出时钟进行计数,用于产生秒的时钟节拍。它是一个只读寄存器,但它可通过时钟控制寄存器(CCR)复位为0。CTC15时钟计数寄存器只读位功能描述0保留用户程序不要向该位写入115:1时钟节拍计数器对预分频器的时钟输出进行计数,每计满32768个时钟,该寄存器复位,并向时间计数器发送一个秒脉冲寄存器描述时间计数器=时钟发生器预分频器时钟控制报警控制增量中断控制中断标志报警寄存器PCLK时间计数器组中包含当前的时间,它们分为两类:完整时间寄存器和分类时间寄存器。——时间计数器寄存器描述时间计数器=时钟发生器预分频器时钟控制报警控制增量中断控制中断标志报警寄存器PCLK——时间计数器名称有效位描述CTIME032包含秒、分、时和星期。CTIME132包含日期(月)、月和年CTIME232包含日期(年)在完整时间寄存器中,时间以一个比较完整的格式存储,程序只需要3次读操作即可读出所有计数器值。这些寄存器为只读寄存器。寄存器描述——时间计数器名称有效位描述CTIME032包含秒、分、时和星期。CTIME132包含日期(月)、月和年CTIME232包含日期(年)名称有效位描述CTIME032包含秒、分、时和星期。CTIME132包含日期(月)、月和年CTIME232包含日期(年)(0~59)—(0~59)—(0~23)—(0~6)—取值范围秒保留分保留小时保留星期保留功能5:07:613:815:1430:1623:2126:2431:27CTIME0(1~28,29,30)—(1~12)—(0~4095)—取值范围日期(月)保留月保留年保留功能4:07:511:815:1227:1631:28CTIME1(1~365,366)—取值范围日期(年)保留功能8:031:9CTIME2这两个寄存器意义不同,(月)表示当日在当月中的序号,(年)表示当日在当年中的序号寄存器描述——时间计数器分类时间寄存器包含8个寄存器,所有寄存器都可读可写。名称有效位描述SEC6秒值。该值的范围为0~59。MIN6分值。该值的范围为0~59。HOUR5小时值。该值的范围为0~23。DOM5日期(月)值。该值的范围为1~28,29,30或31(取决于月份以及是否为闰年)。DOW3星期值。该值的范围为1~365(闰年为366)。DOY9日期(年)值。该值的范围为1~365。MONTH4月值。该值的范围为1~12。YEAR12年值。该值的范围为0~4095。名称有效位描述SEC6秒值。该值的范围为0~59。MIN6分值。该值的范围为0~59。HOUR5小时值。该值的范围为0~23。DOM5日期(月)值。该值的范围为1~28,29,30或31(取决于月份以及是否为闰年)。DOW3星期值。该值的范围为1~365(闰年为366)。DOY9日期(年)值。该值的范围为1~365。MONTH4月值。该值的范围为1~12。YEAR12年值。该值的范围为0~4095。注意:这些日期的寄存器只能在适当的时间间隔处递增,而在定义的溢出点处复位。为了使这些值有意义,它们不能进行计算且必须正确初始化。其中DOY寄存器需要单独初始化,也就是说该寄存器的值不会因为对年、月、日寄存器进行初始化而自动确定到一个正确的值。寄存器描述时间计数器=时钟发生器预分频器时钟控制报警控制增量中断控制中断标志报警寄存器PCLKRTC部件的中断分为两类,一类为时间计数器的增量中断,由增量中断寄存器控制。另一类为报警匹配产生的中断,由报警屏蔽寄存器控制。——中断产生寄存器名称描述访问ILR中断位置寄存器读写CIIR递增中断寄存器读写AMR报警屏蔽寄存器读写报警寄存器组设定报警时间读写寄存器描述——中断产生寄存器名称描述访问ILR中断位置寄存器读写CIIR递增中断寄存器读写AMR报警屏蔽寄存器读写报警寄存器组设定报警时间读写名称描述访问ILR中断位置寄存器读写CIIR递增中断寄存器读写AMR报警屏蔽寄存器读写报警寄存器组设定报警时间读写名称描述访问ILR中断位置寄存器读写CIIR递增中断寄存器读写AMR报警屏蔽寄存器读写报警寄存器组设定报警时间读写位功能描述0RTCCIF为1时,表示计数器增量中断模块产生了中断。向该位写入1清除该中断标志。1RTCALF为1时,表示报警寄存器产生了中断。向该位写入1清除该中断标志位。中断位置寄存器是一个2位的寄存器,它指出哪些模块产生中断,它实际上是一个中断标志寄存器。寄存器描述——中断产生寄存器名称描述访问ILR中断位置寄存器读写CIIR递增中断寄存器读写AMR报警屏蔽寄存器读写报警寄存器组设定报警时间读写计数器增量中断寄存器可使计数器每次增加时产生一次中断,比如设置秒增加中断为1,则每秒均产生一次中断。在清除增量中断标志之前,该中断一直保持有效。寄存器描述——中断产生寄存器名称描述访问ILR中断位置寄存器读写CIIR递增中断寄存器读写AMR报警屏蔽寄存器读写报警寄存器组设定报警时间读写CIIR功能描述0IMSEC为1时,秒值的增加产生一次中断。1IMMIN为1时,分值的增加产生一次中断。2IMHOUR为1时,小时值的增加产生一次中断。3IMDOM为1时,日期(月)的增加产生一次中断。4IMDOW为1时,星期值的增加产生一次中断。5IMDOY为1时,日期(年)的增加产生一次中断。6IMMON为1时,月值的增加产生一次中断。7IMYEAR为1时,年值的增加产生一次中断。寄存器描述——中断产生寄存器名称描述访问ILR中断位置寄存器读写CIIR递增中断寄存器读写AMR报警屏蔽寄存器读写报警寄存器组设定报警时间读写报警屏蔽寄存器允许用户屏蔽任意的报警寄存器,被屏蔽的报警寄存器将不与时间计数器比较。未被屏蔽的报警寄存器与时间计数器比较如果匹配,将产生中断。该中断只有在从不匹配到匹配时才发生,可以避免中断重复。注意:如果所有屏蔽位都置位,报警将被禁止。寄存器描述——中断产生寄存器名称描述访问ILR中断位置寄存器读写CIIR递增中断寄存器读写AMR报警屏蔽寄存器读写报警寄存器组设定报警时间读写AMR功能描述0AMRSEC为1时,秒值不与报警寄存器比较。1AMRMIN为1时,分值不与报警寄存器比较。2AMRHOUR为1时,小时值不与报警寄存器比较。3AMRDOM为1时,日期(月)值不与报警寄存器比较。4AMRDOW为1时,星期值不与报警寄存器比较。5AMRDOY为1时,日期(年)值不与报警寄存器比较。6AMRMON为1时,月值不与报警寄存器比较。7AMRYEAR为1时,年值不与报警寄存器比较。寄存器描述——中断产生寄存器名称描述访问ILR中断位置寄存器读写CIIR递增中断寄存器读写AMR报警屏蔽寄存器读写报警寄存器组设定报警时间读写报警寄存器的值与时间计数器相比较,如果所有未被屏蔽的报警寄存器都与它们对应的时间计数器相匹配,那么将产生一次中断。向中断位置寄存器的bit1写入1清除中断。名称描述访问ALSEC秒报警值读写ALMIN分报警值读写ALHOUR小时报警值读写ALDOM日期(月)报警值读写ALDOW星期报警值读写ALDOY日期(年)报警值读写ALMON月报警值读写ALYEAR年报警值读写寄存器描述——中断产生寄存器名称描述访问ILR中断位置寄存器读写CIIR递增中断寄存器读写AMR报警屏蔽寄存器读写报警寄存器组设定报警时间读写7.17实时时钟使用RTC的注意要点RTC部件使用VPB时钟,如果该时钟出现任何的异常都会导致时间值的偏移,所以芯片不能进入掉电模式;芯片掉电后RTC不能保持寄存器的内容;芯片复位后只有预分频寄存器被硬件初始化,其它寄存器的内容不受复位影响;RTC部件的闰年计算比较简单,当年计数器的最低两位为0时,认为该年为闰年,这在2100年时会出错。闰年影响2月份的日期数和年的日期数。RTC使用示例设置RTC基准时钟分频器初始化RTC时钟值报警中断设置启动RTC读取当前时间或等待中断操作流程VoidRTCIni(void){PREINT=Fpclk/32768–1;PREFRAC=Fpclk–(Fpclk/32768)*32768;YEAR=200;MONTH=2;DOM=19;DOW=4;HOUR=8;MIN=30;SEC=0;CIIR=0x01;CCR=0x01;}RTC使用示例设置预分频寄存器设置年设置月设置日(月)设置星期设置小时设置分设置秒设置增量中断启动RTC——RTC初始化示例...ILR=0x03; //清除RTC中断标志CIIR=0x02; //设置分值增量中断ALHOUR=12; //设置小时比较值ALMIN=0; //设置分比较值ALSEC=0;//设置秒比价值AMR=0xF8;//设置报警屏蔽寄存器 //只允许时、分、秒比较...RTC使用示例——RTC定时报警设置8.1最小系统简介一个嵌入式处理器自己是不能独立工作的,必须给它供电、加上时钟信号、提供复位信号,如果芯片没有片内程序存储器,则还要加上存储器系统,然后嵌入式处理器芯片才可能工作。这些提供嵌入式处理器运行所必须的条件的电路与嵌入式处理器共同构成了这个嵌入式处理器的最小系统。而大多数基于ARM7处理器核的微控制器都有调试接口,这部分在芯片实际工作时不是必需的,但因为这部分在开发时很重要,所以也把这部分也归入最小系统中。8.1最小系统简介嵌入式控制器时钟系统调试测试接口复位及其配置系统存储器系统供电系统(电源)可选,因为许多面向嵌入式领域的微控制器内部集成了程序和数据存储器——最小系统框图可选,但是在样品阶段通常都会设计这部分电路嵌入式控制器时钟系统调试测试接口复位及其配置系统存储器系统供电系统(电源)嵌入式控制器时钟系统调试测试接口复位及其配置系统存储器系统供电系统(电源)各部件简介——电源供电系统(电源)电源系统为整个系统提供能量,是整个系统工作的基础,具有极其重要的地位,但却往往被忽略。如果电源系统处理得好,整个系统的故障往往减少了一大半。各部件简介——电源嵌入式控制器时钟系统调试测试接口复位及其配置系统存储器系统供电系统(电源)供电系统(电源)设计电源时要考虑的因素:1.输出的电压、电流、功率;2.输入的电压、电流;3.安全因素;4.输出纹波;7.电池兼容和电磁干扰;8.体积限制;7.功耗限制;8.成本限制。对于LPC2200系列微控制器,它有4组电源输入。理想情况下需要提供4组独立的电源,它们需要单点接地或大面积接地。甚至还有为系统中其它的部件提供更多种类的电源。但如果没有使用LPC2000内部的AD功能,或对AD的要求不高,模拟电源和数字电源可以不分开供电。这样LPC2200和LPC210x都只需要两组电源。各部件简介——电源1.分析需求LPC2000系列微控制所需要的电源类型:电压型号3.3V1.8VLPC210xV3.3V1.8LPC22xxV3.3D、V3.3AV1.8D、V1.8ALPC213xV3.3D、V3.3A无V3.3D表示数字电源,V3.3A表示模拟电源。LPC2104/05/06无模拟和数字之分。各部件简介——电源2.设计末级电源电路LPC2000系列微控制1.8V消耗电流的极限值为70mA。为了保证可靠性并为以后升级留下余量,则电源系统1.8V能够提供的电流应当大于300mA。整个系统在3.3V上消耗的电流与外部条件有很大的关系,这里假设电流不超过200mA,这样,电源系统3.3V能够提供600mA电流即可。分析得到以下参数:3.3V电源设计最大电流:600mA;1.8V电源设计最大电流:300mA。各部件简介——电源2.设计末级电源电路在了解功率消耗之后,需要选择合适的器件。因为系统对这两组电压的要求比较高,且其功耗不是很大,所以不适合用开关电源,应当用低压差模拟电源(LDO)。合乎技术参数的LDO芯片很多,Sipex半导体SPX1117是一个较好的选择,它的性价比较好,且有一些产品可以与它直接替换,减少采购风险。各部件简介——电源SPX1117主要特点: 0.8A稳定输出电流; 1A稳定峰值电流; 3V可调节; 低静态电流;
0.8A时低压差为1.1V; 0.1%线形调整率; 0.2%负载调整率; 过流及温度保护;
多种封装供选择。
各部件简介——电源3.设计前级电源电路尽管SPX1117允许的输入电压可达20V(参考芯片数据手册),但太高的电压使芯片的发热量上升,散热系统不好设计,同时影响芯片的性能。这样,就需要前级电路调整一下。如果系统可能使用多种电源(如交流电和电池),各种电源的电压输出不一样,就更需要前级调整以适应末级的输入。通过之前的分析,前级的输出选择为5V。选择5V作为前级的输出有两个原因:这个电压满足SPX1117的要求;目前很多器件还是需要5V供电的,这个5V可以兼做前级和末级了。各部件简介——电源3.设计前级电源电路根据系统在5V上消耗的电流和体积、成本等方面的考虑,前级电路可以使用开关电源,也可以使用模拟电源。它们的特别如下:开关电源:效率较高,可以减少发热量,因而在功率较大时可以减小电源模块的体积;模拟电源:电路简单,输出电压纹波较小,并且干扰较开关电源小得多。各部件简介——电源模拟电源开关电源嵌入式控制器时钟系统调试测试接口复位及其配置系统存储器系统供电系统(电源)各部件简介——时钟目前所有的微控制器均为时序电路,需要一个时钟信号才能工作,大多数微控制器具有晶体振荡器。简单的方法是利用微控制器内部的晶体振荡器,但有些场合(如减少功耗、需要严格同步等情况)需要使用外部振荡源提供时钟信号。时钟系统各部件简介——时钟目前所有的微控制器均为时序电路,需要一个时钟信号才能工作,大多数微控制器具有晶体振荡器。简单的方法是利用微控制器内部的晶体振荡器,但有些场合(如减少功耗、需要严格同步等情况)需要使用外部振荡源提供时钟信号。LPC2000X1X2CCXtalLPC2000X1X2C
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025至2030年中国无水磷酸二氢钾数据监测研究报告
- 2025年中国台阶铣刀片市场调查研究报告
- 2025年中国三层密闭加热冷却保温桶市场调查研究报告
- 2025至2031年中国银制计时钟行业投资前景及策略咨询研究报告
- 2025至2031年中国热塑性高软化点酚醛树脂行业投资前景及策略咨询研究报告
- 多模态超声联合超声评分系统在原发性干燥综合征涎腺病变中的诊断价值
- 2025年度个人独家销售代理合同(化妆品品牌专署代理权)
- 个人廉洁自律合同标准版
- 2025年度存量房维修基金管理与使用合同模板4篇
- 2025年度个人对科技公司股权借款合同
- 劳务协议范本模板
- 2024年全国职业院校技能大赛高职组(生产事故应急救援赛项)考试题库(含答案)
- 2025大巴车租车合同范文
- 老年上消化道出血急诊诊疗专家共识2024
- 人教版(2024)数学七年级上册期末测试卷(含答案)
- 2024年国家保密培训
- 2024年公务员职务任命书3篇
- CFM56-3发动机构造课件
- 会议读书交流分享汇报课件-《杀死一只知更鸟》
- 2025届抚州市高一上数学期末综合测试试题含解析
- 公司印章管理登记使用台账表
评论
0/150
提交评论