第五周 CC2530电源及系统时钟的管理(大课).ppt
34页单击此处编辑母版标题样式,,单击此处编辑母版文本样式,,第二级,,第三级,,第四级,,第五级,,*,,34,单片机原理与应用,教学回顾,大课,,(,1,),CC2530和8051的关系,;,,(,2,),CC2530结构,;,,(,3,),物理存储器的映射,(难点),,(,4,),CC2530 GPIO,口编程(,重点),,,小课,,(,1,)点亮一盏发光二极管并闪烁;,,(,2,),8051,上的,C,语言,——,位运算,,教学回顾,,1.,当变量,X,的第,n,位需清,0,,其它位不变,可使用,:,,X,&=~(1<<,n,);,,2.,当变量,X,的第,n,位需置,1,,其它位不变,可使用,:,,X,|,=(1<<,n,);,,3.,当需要检测,Px,的第,n,位是否为,0,时,可以使用,:,,if,(,(,Px &,(,1< 16,MHz,内部,RC,振荡器,32,MHz,外部晶振,32,KHz,外部晶振,32,KHz,内部,RC,振荡器,两个,低频,振荡器,两个,高频,振荡器,,,RC振荡器:成本较低,但由于电阻电容的精度导致振荡频率会有误差,同时,,受到温度、湿度的影响;,,晶体振荡器:振荡频率一般都比较稳定,但价格要稍高点,使用时一般还需,,要接两个15-33pF起振电容1.,,振荡器的作用,16MHz,内部,RC,振荡器,(简称,16MHz RC,振荡器,):,32MHz,外部晶振,(简称,32MHz,晶振,):,32KHz,外部晶振,(简称,32KHz,晶振,),32KHz,内部,RC,振荡器,(简称,32KHZ RC,振荡器,),除了为内部时钟提供时钟源之外,,主要用于,RF,收发器,运行在,32.753,KHz上,当系统时钟需要,校准,时使用此振荡器,校准只能发生在系统时钟工作由16MHz RC震荡器转到32MHz晶振的时候也可以为内部时钟提供时钟源,但是,16MHz RC,振荡器不能用于,RF,收发器操作对于一些应用程序来说,32MHz,晶振的启动时间较长,设备可以采用先运行,16MHz RC,振荡器,直到,32MHz,晶振稳定。 运行在,32.768,KHz上,为系统需要的时间精度提供一个稳定的时钟信号不能同时使用,2.,系统时钟及寄存器,CC2530,内部有一个内部系统,时钟或主时钟,在,CC2530,中系统时钟源是从所选的主系统时钟源获得的,主时钟一般由,32MHz,晶振或,16MHz RC,振荡器提供由于,32MHz,晶振启动时间比较长,因此当选用,32MHz,晶振作为主时钟源时,内部首先选择,16MHz RC,振荡器使系统运转起来,当,32MHz,晶振稳定之后才使用,32MHz,晶振作为主时钟源 可以通过操作时钟寄存器选择使用哪个时钟源时钟寄存器主要有两个寄存器:,时钟控制命令寄存器,CLKCONCMD,时钟控制状态寄存器,CLKCONSTA,2.,系统时钟及寄存器,CLKONCMD,时钟控制命令寄存器,位,名称,复位,R/W,描述,7,OSC32K,1,R/W,32KHz,时钟振荡器选择设置该位只能发起一个时钟源改变要改变该位,必须选择,16MHz RCOSC,作为系统时钟0,:,32KHz XOSC 1,:,32KHz RCOSC,6,OSC,1,R/W,系统时钟源选择。 设置该位只能发起一个时钟源改变0,:,32MHz XOSC,,1,:,16MHz RCOSC,5,:,3,TICKSPD,001,R/W,定时器,标记输出,设置不能高于通过,OSC,位设置的系统时钟设置000,:,32MHz 001,:,16MHz,,010,:,8MHz 011,:,4MHz,,100,:,2MHz 101,:,1MHz,,110,:,500KHz 111,:,250KHz,,注:,CLKCONCMD.TICKSPD,可以设置为任意值,但是结果受,CLKCONCMD.OSC,设置的限制//,设置时钟晶振为,32MHZ,,CLKCONCMD ,2.,系统时钟及寄存器,CLKONCMD,时钟控制命令寄存器,位,名称,复位,R/W,描述,2,:,0,CLKSPD,001,R/W,时钟速度,不能高于通过,OSC,位设置的系统时钟设置标识当前系统时钟频率000,:,32MHz,,001,:,16MHz,,010,:,8MHz,,011,:,4MHz,,100,:,2MHz,,101,:,1MHz,,110,:,500KHz,,111,:,250KHz,,注:,CLKCONCMD.TICKSPD,可以设置为任意值,但是结果受,CLKCONCMD.OSC,设置的,限制。 2.,系统时钟及寄存器,CLKCONSTA,时钟控制状态寄存器,位,名称,复位,R/W,描述,7,OSC32K,1,R,当前选择的,32KHz,时钟源,,0,:,32KHz,晶振,,1,:,32KHz RCOSC,6,OSC,1,R,当前选择系统时钟0,:,32MHz XOSC,,1,:,16MHz RCOSC,//,设置当前时钟为,32MHz,晶振,,CLKCONSTA ,2.,系统时钟及寄存器,CLKCONSTA,时钟控制状态寄存器,位,名称,复位,R/W,描述,5,:,3,TICKSPD,001,R,当前设定定时器标记输出,,000,:,32MHz,,001,:,16MHz,,010,:,8MHz,,011,:,4MHz,,100,:,2MHz,,101,:,1MHz,,110,:,500KHz,,111,:,250KHz,2,:,0,CLKSPD,001,R,当前时钟速度,,000,:,32MHz,,001,:,16MHz,,010,:,8MHz,,011,:,4MHz,,100,:,2MHz,,101,:,1MHz,,110,:,500KHz,,111,:,250KHz,二、,,电源管理和复位,CC2530,提供多种供电模式,不同的工作方式需要在相应的供电模式下进行,因此,CC2530,在工作时首先要选择供电模式 。 1,.,,供电模式,CC2530,的供电模式有五种:,主动模式,,空闲模式,,PM1,、,PM2,和,PM3,其中主动模式又称一般模式或完全功能模式不同的供电模式对系统运行的影响不同,1,.,,供电模式,供电模式,高频振荡器,低频振荡器,稳压器,主动模式,32MHz,晶振或,16MHzRC,振荡器,32KHz,晶振或,,,32KHzRC,振荡器,ON,空闲模式,32MHz,晶振或,16MHzRC,振荡器,32KHz,晶振或,,,32KHzRC,振荡器,ON,PM1,无,32KHz,晶振或,,,32KHzRC,振荡器,ON,PM2,无,32KHz,晶振或,,,32KHzRC,振荡器,OFF,PM3,无,无,OFF,1,.,,供电模式,,主动模式:,完全功能模式稳压器的数字内核开启;,高频振荡器运行行为,:高频振荡器,32MHz,晶振或,16MHz RC,振荡器运行,或者两者都运行;,,低频振荡器运行行为:,低频振荡器的,32KHz,晶振或,32KHzRC,振荡器运行在此模式下,CPU,、外设和,RF,收发器都是活动的,可通过操作寄存器使,CPU,内核停止运行,,进入空闲模式,;也可通过复位、外部中断或睡眠定时器到期,唤醒空闲模式,。 空闲模式,:除了,CPU,内核停止运行,其他的运行方式和主动模式的运行方式相同可以通过复位、外部中断或睡眠定时器到期唤醒进入主动模式PM1,:在,PM1,模式下,稳压器的数字部分开启;高频振荡器(,32MHz,晶振或,16MHz RC,振荡器)都不运行;低频振荡器的,32KHz,晶振或,32KHz RC,振荡器运行当发生复位、外部中断或睡眠定时器到期时系统将转到主动模式当系统运行在此模式下时,将运行一个掉电序列由于,PM1,模式使用的上电和掉电序列较快,此模式适合用于等待唤醒事件的时间小于,3ms,的情况下1,.,,供电模式,1,.,,供电模式,PM2,:,具有较低功耗,稳压器的数字部分关闭,,高频振荡器(,32MHz,晶振或,16MHz RC,振荡器)都不运行;,低频振荡器的,32KHz,晶振或,32KHzRC,振荡器运行当发生复位、外部中断或睡眠定时器到期时系统将转到主动模式当睡眠时间超过,3ms,时使用此模式PM3,:,最低功耗模式,稳压器数字关闭,所有的振荡器都不运行当发生复位和外部中断时系统将转到主动模式运行2,.,,电源管理寄存器,电源管理即管理和选择供电模式,供电模式的管理是通过电源管理寄存器来实现的。 CC2530,的电源管理寄存器有,3,个:,PCON,为供电模式控制寄存器;,,SLEEPCND,为睡眠模式控制器;,,SLEEPSTA,为睡眠模式控制状态寄存器2,.,,电源管理寄存器,PCON,为供电模式控制寄存器,位,名称,复位,R/W,描述,7,:,1,--,000000,R0,保留,0,IDLE,0,R/W,,H0,供电模式控制1,:强制设备进入,SLEEP.MODE,设置供电模式如果,SLEEP.MODE=0x00,且,IDLE=1,将停止,CPU,内核活动中断可以清除此位2,.,,电源管理寄存器,SLEEPCND,为睡眠模式控制器,位,名称,复位,R/W,描述,7,OSC32K_CALDIS,0,R/W,禁用,32KHz RC,振荡器校准,,0,:使能,32KHz RC,振荡器校准,,1,:禁用,32KHz RC,振荡器校准,,此设置可以在任何时间写入,但是在芯片没有运行在,16MHz,高频,RC,振荡器时不起作用,6,:,3,--,0000,R0,保留,2,--,1,R/W,总为,1,,关闭不用的,RC,振荡器,1,:,0,MODE[1,:,0],00,R/W,供电模式设置。 00,:主动,/,空闲模式,,01,:,PM1,,10,:,PM2,,11,:,PM3,,//,关闭不用的,RC,振荡器,,SLEEPCMD |= 0x04;,在选定主时钟之后,需要关闭不用的,RC,振荡器,此时需要设置,SLEEPCND,的哪位?,2.,电源管理寄存器,SLEEPSTA,为睡眠模式控制状态寄存器,位,名称,复位,R/W,描述,7,OSC32K_CALDIS,0,R/W,禁用,32KHz RC,振荡器校准,,0,:使能,32KHz RC,振荡器校准,,1,:禁用,32KHz RC,振荡器校准,,此设置可以在任何时间写入,但是在芯片没有运行在,16MHz,高频,RC,振荡器时不起作用,6,XOSC_STB,0,R,32MHz,晶振稳定状态,,0,:,32MHz,晶振上电不稳定,,1,:,32MHz,晶振上电稳定,5,--,0,R,保留,CC2530,数据手册上这部分有错误,2.,电源管理寄存器,SLEEPSTA,为睡眠模式控制状态寄存器,位,名称,复位,R/W,描述,4,:,3,RST[1:0],XX,R,状态位,表示上一次复位的原因,,,00,:上电复位和掉电探测,,01,:外部复位,,10,:看门狗定时器复位,,11,:时钟丢失复位,2,:,1,--,00,R,保留,0,CLK32K,0,R,32KHz,时钟信号(与系统时钟同步),,//,等待晶振稳定,,,while(!(SLEEPSTA ,由于,32MHz,晶振启动时间比较长,因此当选用,32MHz,晶振作为主时钟源时,内部首先选择,16MHz RC,振荡器使系统运转起来,当,32MHz,晶振稳定之后才使用,32MHz,晶振作为主时钟源。 如何判断,32MHz,晶振是否稳定?,3.,系统时钟初始化,在使用串口、,DMA,、,RF,等功能时需要对系统时钟进行初始化,以系统时钟选择,32MHz,晶振为例来设置系统时钟控制要求:,1.,选择外部,32MHz,晶振作为主时钟源;,,2.,等待,32MHz,晶振稳定:上电后,由于外部,32MHz,晶振不稳定,因此,CC2530,芯片内部先启用内部,16MHz RC,振荡器等待外部稳定之后,才开始使用外部,32MHz,晶振,,,,3.,设置定时器时钟输出,128,分频,当前系统时钟不分频,,4.,关闭不用的,RC,振荡器,void InitClock(void),,{,,CLKCONCMD /,*选择,32MHz,晶振*,/,,while(!(SLEEPSTA /*,等待晶振稳定,*/,,CLKCONCMD ,,/* TICHSPD128,分频,,CLKSPD,不分频,*/,,SLEEPCMD |= 0x04;/*,关闭不用的,RC,振荡器,*/,,,},3.,系统时钟初始化,4.,复位,CC2530,的复位源有,5,个,这,5,个复位源分别是:,,(,1,)强制,RESET_N,输入引脚为低电平复位,这一复位经常用于复位按键。 2,)上电复位,在设备上电期间提供正确的初始化值3,)布朗输出复位,只能运行在,1.8V,数字电压,此复位是通过布朗输出探测器来进行的布朗输出探测器在电压变化期间检测到的电压低于布朗输出探测器所规定的最低电压电压时,导致复位4.,复位,CC2530,的复位源有,5,个,这,5,个复位源分别是:,,(,4,)看门狗定时复位,当使能看门狗定时器,且定时器溢出时产生复位5,)时钟丢失复位,此复位条件是通过时钟丢失探测器来进行的时钟丢失探测器用于检测时钟源,当时钟源损坏时,系统自动使能时钟丢失探测器,导致复位4.,复位,CC2530,在复位之后初始状态如下 :,,I/O,引脚配置为带上拉的输入CPU,程序计数器在,0x0000,,并且程序从这个地址开始所有外设寄存器初始化为各自复位值看门狗定时器禁用时钟丢失探测器禁用CC2530,电源管理和时钟的设置,,,系统时钟除了提供给,CPU,外,还供给大量的,IO,接口,CC2530,电源管理和时钟的设置,系统时钟设置例子:,,CLKCONCMD//,设置系统时钟源为,32MHZ,晶振,,while(CLKCONSTA//,等待晶振稳定为,32M,,CLKCONCMD//,设置当前系统时钟频率为,32M,官方,zstack,上的时钟初始化代码,#define OSC_PD (1<<2),,,SLEEPCMD /* wait for 32MHz XOSC stable */,,asm("NOP"); /* chip bug workaround */ \,,for (i=0; i<504; i++) asm("NOP"); /* Require 63us delay for all revs */,,CLKCONCMD = (CLKCONCMD_32MHZ | OSC_32KHZ); /* Select 32MHz XOSC and the source for 32K clock */ \,,while (CLKCONSTA != (CLKCONCMD_32MHZ | OSC_32KHZ)); /* Wait for the change to be effective */,,SLEEPCMD |= OSC_PD; /* turn off 16MHz RC */,小结,,本次课重讲述了,CC2530,的时钟控制器的原理与编程、电源模式及设置,重点理解相关,SFR,在控制器运行过程中所起的作用,之后才可以正确的编程。 课后,作业,结合数据手册(在本人课件区的资料目录下中英文版都有)、课件整理,CC2530,时钟控制、串口控制编程的步骤预习内容,CC2530,数据手册,+,网上资料理解,cc2530,的串口控制器的原理与编程。

卡西欧5800p使用说明书资料.ppt
锂金属电池界面稳定化-全面剖析.docx
SG3525斩控式单相交流调压电路设计要点.doc
话剧《枕头人》剧本.docx
重视家风建设全面从严治党治家应成为领导干部必修课PPT模板.pptx
黄渤海区拖网渔具综合调查分析.docx
2024年一级造价工程师考试《建设工程技术与计量(交通运输工程)-公路篇》真题及答案.docx
【课件】Unit+3+Reading+and+Thinking公开课课件人教版(2019)必修第一册.pptx
嵌入式软件开发流程566841551.doc
生命密码PPT课件.ppt
爱与责任-师德之魂.ppt
制冷空调装置自动控制技术讲义.ppt


