资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单片机原理与应用,教学回顾,大课,(,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&,(,1n,),),=0,),else,输出,4.,当需要检测,Px,的第,n,位是否为,1,时,可以使用,:,if,(,(,Px|,(,(,1n,),),),=1,),else,输出,本周教学主要内容,CC2530,电源的管理,CC2530,系统时钟的编程(难点),教学目标,掌握,CC2530,电源的管理;,掌握,CC2530,系统时钟编程方法,;,一、振荡器,CC2530共有四个振荡器,它们为系统时钟提供时钟源。,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=0 x00且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,MODE1,:0,00,R/W,供电模式设置。,00:主动/空闲模式,01:PM1,10:PM2,11:PM3,/,关闭不用的,RC,振荡器,SLEEPCMD|=0 x04;,在选定主时钟之后,需要关闭不用的,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,RST1: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振荡器。等待外部稳定之后,
展开阅读全文