




已阅读5页,还剩228页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
-1-,第4章,CC2530基础开发,-2-,本章目标,掌握I/O的使用理解存储器以及映射的关系掌握ADC的使用方法掌握串口和DMA的使用方法掌握定时器的使用,-3-,本章目标,掌握I/O的使用理解存储器以及映射的关系掌握ADC的使用方法掌握串口和DMA的使用方法掌握定时器的使用,-4-,高性能、低功耗的8051微控制器内核。适应2.4GHzIEEE802.15.4的RF收发器。极高的接收灵敏度和抗干扰性。32KB/64KB/128KB/256KB闪存。8KBSRAM,具备各种供电方式下的数据保持能力。强大的DMA功能。只需极少的外接元件,即可形成一个简单应用系统。只需一个晶振,即可满足网状型网络系统的需要。,4.1概述,CC2530芯片特征,-5-,低功耗,主动模式RX(CPU空闲):24mA;主动模式TX在1dB(CPU空闲):29mA;供电模式1(4us唤醒):0.2mA;供电模式2(睡眠定时器运行):1uA;供电模式3(外部中断):0.4uA;宽电源电压范围(2V-3.6V)。硬件支持CSMA/CA。支持数字化的接收信号强度指示器/链路质量指示(RSSI/LQI)。具有8路输入8位14位ADC。高级加密标准AES协处理器。具有看门狗和2个支持多种串行通信协议的USART。1个通用的16位定时器和2个8位定时器,1个IEEE802.15.4MAC定时器。21个通用I/O引脚。,4.1概述,CC2530芯片特征,-6-,4.2CC2530结构框架,-7-,CC2530包含一个“增强型”工业标准的8位8051微控制器内核,运行时钟32MHz,具有8倍的标准8051内核的性能增强型8051内核使用标准的8051指令集,并且每个指令周期是一个时钟周期,而标准的8051每个指令周期是12个时钟周期,因此增强型8051消除了总线状态的浪费,指令执行比标准的8051更快,4.2.1CC2530CPU,-8-,内核代码:CC2530的“增强型8051”内核的“目标代码”兼容“标准8051”内核的“目标代码”,即CC2530的8051内核的“目标代码”可以使用“标准8051”的编译器或汇编器进行编译。微控制器:由于CC2530的“增强型8051”内核使用了不同于“标准8051”的指令时钟,因此“增强型8051”在编译时与“标准8051”代码编译时略有不同,例如“标准8051”的微控制器包含的“外设单元寄存器”的指令代码在CC2530的“增强型8051”不能正确运行。,4.2.1CC2530CPU,CC2530的“增强型8051内核”与“标准的8051微控制器”相比,除了速度改进之外,使用时要注意以下两点:,-9-,4.2.2CC2530存储器及映射,CC2530物理存储器,CC2530存储空间,映射,存储器仲裁,-10-,4.2.2CC2530存储器及映射,物理存储器,SRAM,上电时,SRAM的内容未定义,在供电的情况下,SRAM的内容被保留,FLASH,片上闪存存储器,主要为了保存程序和常量数据。FLASH由一组2KB的页面组成,信息页面,信息页面是一个2KB的只读区域,它的主要作用是存储全球唯一的IEEE地址,-11-,4.2.2CC2530存储器及映射,物理存储器,SFR,控制8051CPU内核或外设的一些功能,XREG,是SFR的扩展寄存器,比如射频寄存器,访问速度比SFR要慢,-12-,4.2.2CC2530存储器及映射,存储空间,CODE,程序存储器,只读存储空间,用于存放程序代码和一些常量,有16根地址总线,寻址范围为0 x00000 xFFFF共64KB,DATA,数据存储器,可读/写的数据存储空间,用于存放程序运行过程中的数据。有8根地址总线,因此寻址空间为0 x000 xFF,共256个字节,XDATA,外部数据存储器,可读/写的数据存储空间,主要用于DMA寻址。有16根地址总线,寻址空间是0 x00000 xFFFF共64KB,SFR,特殊功能寄存器,可读/写的寄存器存储空间,共有128字节。对于地址是被8整除的SFR寄存器,每一位还可以单独寻址,-13-,4.2.2CC2530存储器及映射,物理存储器与存储空间的关系,存储空间只是4种不同的寻址方式概念,并不代表物理具体上的存储设备,只是存储空间的概念;而FLASH、SRAM、EEPROM等是具体的物理存储设备。他们两者之间的关系是通过映射来联系起来的。例如FLASH或者EEPROM都可以作为物理存储媒介映射到CODE上。,-14-,4.2.2CC2530存储器及映射,映射,映射就是将CC2530的物理存储器映射到其存储空间上,有两个作用:,-15-,4.2.2CC2530存储器及映射,映射的两种形式,CODE存储器映射XDATA存储器映射,-16-,4.2.2CC2530存储器及映射,CODE存储器映射,CODE存储器映射具有两个功能:一是将FLASH映射至CODE存储空间;二是执行来自SRAM的代码(将SRAM映射至CODE存储空间),-17-,4.2.2CC2530存储器及映射,FLASH映射,CODE的寻址空间为64KB,而对于CC2530F256设备来说FLASH的存储空间为256KB,?,CC2530将FLASH存储器分为几个bank,每个bank的大小是32KB。对于CC2530F256设备来说,它有8个bank,分别为bank0bank7。通过操作寄存器FMAP.MAP2:0来控制将哪个编号的bank映射到CODE区域,只针对CC2530F32这款芯片,因为这款芯片的的FLASH只有32KB,虽然这里有bank0区域,但是映射的时候bank0总映射的根部的低32KB区域,-18-,4.2.2CC2530存储器及映射,SRAM映射,为了便于在SRAM中执行代码,可以将SRAM映射到CODE存储空间的0 x8000(0 x8000+SRAM_SIZE-1)的区域,-19-,4.2.2CC2530存储器及映射,SRAM映射,为了方便DMA控制器能访问所有的物理存储空间,CC2530把所有的物理存储器以及寄存器都映射到XDATA上,包括CODE和SFR部分存储空间。,-20-,4.2.2CC2530存储器及映射,XDATA包含了所有物理存储器的映射,包括8KB的SRAM存储器、XREG、SFR、信息页面和FLASH存储器,SRAM映射的地址范围是0 x0000到SRAM_SIZE-1。其中SRAM较高的256字节映射到DATA存储空间8位地址区域,即地址范围从SRAM_SIZE-256到SRAM_SIZE-1XREG区域映射到1KB地址区域0 x6000-0 x63FFSFR寄存器映射到地址区域0 x7080-0 x70FF。128个条目的硬件寄存器区域是通过这一存储空间访问的。闪存信息页面2KB映射到地址区域0 x7800-0 x7FFF。这是一个只读区域,包含有关设备的各种信息信息页面映射到地址区域0 x78000 x7FFFXBANK为CODE存储空间的bank07区域的映射,其地址仍然是0 x80000 xFFFF。可以配置存储器控制寄存器MEMCTR.XBANK2:0(详见存储器仲裁)决定选择映射bank0bank7之间的哪个区域,比如MEMCTR.XBANK=001,则映射bank1区域,-21-,4.2.2CC2530存储器及映射,存储器仲裁,主要功能是解决CPU与DMA访问所有物理存储器(除了CPU内部寄存器)之间的冲突问题。当CPU和DMA之间发生冲突时,“存储器仲裁”停止CPU或DMA的总线存储器仲裁主要有两个寄存器:存储器仲裁控制寄存器MEMCTR和闪存区映射寄存器FMAP,这两个寄存器用于控制存储器子系统的各个方面,-22-,4.2.2CC2530存储器及映射,存储器仲裁控制寄存器MEMCTR,MEMCTR.XMAP必须设置以使得程序从SRAM执行;MEMCTR.XBANK决定XDATA的高32KB映射CODE存储空间的哪个bank区域,-23-,4.2.2CC2530存储器及映射,闪存区映射寄存器FMAP,闪存区映射寄存器FMAP控制物理32KB代码区映射到CODE存储空间的程序地址区域0 x8000-0 xFFFF,即最底部的32KB区域(0 x00000 x7FFF),-24-,4.3CC2530编程基础,CC2530软件开发平台使用IARIAR对CC2530编程操作提供了良好的C语言支持CC2530编程包括头文件、运行库以及中断编程等,-25-,4.3.1寄存器和汇编指令,CC2530的CPU寄存器与标准的8051的CPU寄存器相同,都包括8组寄存器R0R7、程序状态字PSW、累加器ACC、B寄存器和堆栈指针SP等CC2530的CPU指令与标准的8051的指令集相同,-26-,4.3.2编程基础,CC2530编程的风格基本上与普通的基于8051的C语言编程相同,头文件初始化函数主函数其他中断函数,-27-,4.3.2编程基础,头文件,在C语言中头文件以“XXX.h”的格式存在,其中“XXX”为文件名,在头文件中一般定义程序需要的变量或函数的声明等。一般头文件在源程序的一开始使用“包含命令”将头文件包含在源程序中,以便源程序调用头文件中的变量等。头文件“包含命令”使用“#include”命令,-28-,4.3.2编程基础,头文件,在一个工程里面还会有其他的头文件,比如要控制CC2530开发板的LED,一般由用户新建一个头文件,此头文件可以由用户命名,例如“LED.h”,在用户编写的头文件中,也需要将“ioCC2530.h”包含在内,那么在主函数文件中只需要包含“LED.h”文件即可,-29-,4.3.2编程基础,初始化函数,在一个项目工程中为了增强程序的可移植性和可维护性,一般将一些初始化配置信息编写成一个函数,称作初始化函数。在一个工程中可以有多个初始化函数,-30-,4.3.2编程基础,主函数,与常规的C语言程序一样,IAR下的CC2530程序依然将main()函数设定为程序的入口函数,也称主函数。当程序比较大时,在主函数内一般不直接编写与程序相关的业务算法,而是调用其他子函数(如用库函数、户编写的硬件初始化函数和业务算法或其他功能函数等)来实现整个程序的逻辑,使主函数看起来简单明了并且易于程序的维护,-31-,4.3.2编程基础,其他子函数,在一个程序中,为了程序的可维护性,除了初始化函数之外,还需要将某个业务算法或功能封装成一个函数,称为子函数,-32-,4.3.2编程基础,中断函数,当需要中断处理时,需要编写中断处理函数,中断处理函数是当有中断发生时,需要处理的事件,-33-,4.3.2中断的使用,CC2530的中断系统是为了让CPU对内部或外部的突发事件及时地作出响应,并执行相应的中断程序。中断由中断源引起,中断源由相应的寄存器来控制。当需要使用中断时,需配置相应的中断寄存器来开启中断,当中断发生时将跳入中断服务函数中执行此中断所需要处理的事件。,-34-,4.3.3中断的使用,中断源与中断向量,CC2530有18个中断源,每个中断源都可以产生中断请求,中断请求可以通过设置中断使能SFR寄存器的中断使能位IEN0、IEN1或IEN2使能或禁止中断。,-35-,4.3.3中断的使用,-36-,4.3.3中断的使用,中断源与中断向量,当相应的中断源使能并发生时,中断标志位将自动置1,然后程序跳往中断服务程序的入口地址执行中断服务程序。待中断服务程序处理完毕后,由硬件清除中断标志位中断服务程序的入口地址即中断向量,CC2530的18个中断源对应了18个中断向量,中断向量定义在头文件“ioCC2530.h”中,-37-,4.3.3中断的使用,中断优先级,中断优先级将决定中断响应的先后顺序,在CC2530中分为六个中断优先组,即IPG0IPG5,每一组中断优先组中有三个中断源,-38-,4.3.3中断的使用,中断优先级,中断优先组的优先级设定由寄存器IP0和IP1来设置。CC2530的优先级有4级,即03级,其中0级的优先级最低,3级的优先级最高。,其中X为六个中断优先组IPG0IPG5中的任何一个。,-39-,4.3.3中断的使用,中断优先级,如果同时收到相同优先级或同一优先级组中的中断请求时,将采用轮流检测顺序来判断中断优先级别的响应,-40-,4.3.3中断的使用,中断优先级,例如:在中断优先级组IPG0中的中断RFERR、RF和DMA的中断优先级是相同的,如果同时使用这三个中断,就需要使用轮流探测顺序来判断哪一优先级最高。由轮流探测顺序表查得RFERR中断优先级最高,RF中断次之,DMA中断与其他两个中断相比中断优先级最低,-41-,4.3.3中断的使用,中断处理过程,中断发生时,CC2530硬件自动完成以下处理,中断申请:中断源向CPU发出中断请求信号(中断申请一般需要在程序初始化中配置相应的中断寄存器开启中断)中断响应:CPU检测中断申请,把主程序中断的地址保存到堆栈,转入中断向量入口地址中断处理:按照中断向量中设定好的地址,转入相应的中断服务程序中断返回:中断服务程序执行完毕后,CPU执行中断返回指令,把堆栈中保存的数据从堆栈弹出,返回原来程序,-42-,4.3.3中断的使用,中断编程,中断编程的一般过程如下:,中断设置:根据外设的不同,具体的设置是不同的,一般至少包含启用中断中断函数编写;这是中断编程的主要工作,需要注意的是,中断函数尽可能的减少耗时或不进行耗时操作,-43-,4.3.3中断的使用,中断编程,中断编程的一般过程如下:,CC2530所使用的编译器为IAR,在IAR编译器中用关键字_interrupt来定义一个中断函数。使用#progmavector来提供中断函数的入口地址,并且中断函数没有返回值,没有函数参数,-44-,4.3.3中断的使用,中断编程,在中断函数编写中,当程序进入中断服务程序之后,需要执行以下几个步骤:,将对应的中断关掉(不是必须的,需要根据具体情况来处理);如果需要判断具体的中断源,则根据中断标志位进行判断(例如所有I/O中断共用1个中断向量,需要通过中断标志区分是哪个引脚引起的中断)清中断标志(不是必须的,CC2530中中断发生后由硬件自动清中断标志位)处理中断事件,此过程要尽可能的少耗时最后如果在第一步中关闭了相应的中断源,需要在退出中断服务程序之前打开对应的中断,/中断函数入口地址#pragmavector=P0INT_VECTOR/定义一个中断函数_interruptvoidP0_ISR(void)/关端口P0.4、P0.5中断P0IEN,-45-,4.4I/O,CC2530包括3个8位输入/输出(I/O)端口,分别是P0、P1和P2。其中P0和P1有8个引脚,P2有5个引脚,共21个数字I/O引脚,具有以下功能:,通用I/O外设I/O外部中断源输入口弱上拉输入或推拉输出,-46-,4.4.1通用I/O,用作通用I/O时,引脚可以组成3个8位端口,端口0、端口1和端口2,三个端口分别用P0、P1和P2来表示所有的端口均可以通过SFR寄存器P0、P1和P2进行位寻址和字节寻址每个端口引脚都可以单独设置为通用I/O或外部设备I/O其中P1.0和P1.1具备20mA的输出驱动能力,其他所有的端口只具备4mA的输出驱动能力,-47-,4.4.1通用I/O,通用I/O配置寄存器(其中x表示0,1,2)功能寄存器PxSEL方向寄存器PxDIR工作模式寄存器PxINP,-48-,4.4.1通用I/O,配置寄存器PxSEL(其中x表示0,1,2)寄存器PxSEL用来设置端口的每个引脚为通用I/O或者是外部设备I/O(复位之后,所有的数字输入、输出引脚都设置为通用输入引脚)以P0SEL为例讲解,/P0.4和P0.5设置为普通的I/O口P0SEL,/P0.4和P0.5设置为外设的I/O口P0SEL|=0 x30;,-49-,4.4.1通用I/O,配置寄存器PxDIR(其中x表示0,1,2)如果需要改变端口引脚方向,需要使用寄存器PxDIR来设置每个端口引脚的输入和输出以P0DIR为例讲解,/P0.4和P0.5设为输入P0DIR,/P1.0和P1.1设置为输出P1DIR|=0 x03;/P1.0和P1.1设置为输出高电平P1_0=1;P1_1=1;,-50-,4.4.1通用I/O,配置寄存器PxINP(其中x表示0,1,2)复位之后,所有的端口均设置为带上拉的输入。用作输入时,通用I/O端口引脚可以设置为上拉、下拉或三态操作模式。其中P1.0和P1.1端口没有上拉和下拉功能。上拉、下拉或三态操作模式寄存器由PxINP设置以P0INP为例讲解,/P0.4和P0.5设置为三态P0INP|=0 x30;,/P2.0和P2.1设置上拉状态P2INP,-52-,4.4.1通用I/O,任务描述4.D.1,通过扫描方式实现按键触发LED亮灭。利用按键SW5和按键SW6控制LED1和LED2。当按下SW5时,LED1状态改变;当按下SW6时,LED2状态改变,按键SW5由P0.4控制,按键SW6由P0.5控制;LED1和LED2分别由P1.0和P1.1控制按键的初始化:将P0.4和P0.5设为普通I/O口,并且设置为输入状态LED初始化:将P1.0和P1.1设置为输出且将LED1和LED2关闭采用按键检测的方法来控制LED状态的改变:当检测到SW5按下时,LED1状态改变;当检测到SW6按下时,LED2状态改变,-53-,4.4.1通用I/O,#include#defineuintunsignedint#defineucharunsignedchar/*LED状态*/0代表打开#defineON0/1代表关闭#defineOFF1/定义控制灯的端口/定义LED1为P11口控制#defineLED1P1_0/定义LED2为P10口控制#defineLED2P1_1#defineSW6P0_4#defineSW5P0_5/函数声明/延时函数voidDelay(uint);/初始化P0口voidInitial(void);/初始化按键voidInitKey(void);/扫描按键,读键值ucharKeyScan(void);,宏定义以及函数的初始化,-54-,/*按键初始化函数*/voidInitKey(void)/P0.4,P0.5设为通用I/O输出P0SEL,4.4.1通用I/O,按键初始化函数和LED初始化函数,-55-,4.4.1通用I/O,/*延时1.5us*/voidDelay(uintn)uinttt;for(tt=0;ttn;tt+);for(tt=0;ttn;tt+);for(tt=0;ttn;tt+);for(tt=0;ttn;tt+);for(tt=0;tt0).,-65-,4.4.2通用I/O中断,中断控制寄存器PICTL(其中x为0,1,2)I/O口发生中断除了配置中断使能之外,还需要配置中断触发方式。中断触发方式可由端口中断控制寄存器PICTL设置。I/O中断触发方式分为输入的上升沿触发和输入的下降沿触发,/P0.4和P0.5为下降沿触发中断PICTL|=0 x01;,-66-,4.4.2通用I/O中断,中断配置为了使能任一中断,应该采取以下步骤:,设置需要发生中断的I/O口为输入方式。清除中断标志,即将需要设置中断的引脚所对应的寄存器PxIFG状态标志位置0。设置具体的I/O引脚中断使能,即设置中断的引脚所对应的寄存器PxIEN的中断使能位为1。设置I/O口的中断触发方式。设置寄存器IEN1和IEN2中对应引脚的端口的中断使能位为1。设置IEN0中的EA位为1使能全局中断。编写中断服务程序。,-67-,4.4.2通用I/O中断,LED初始化:关闭四个LED。外部中断初始化:清空P0中断标志位,开启P0口中断以及总中断。中断处理函数的编写。,下述内容用于实现任务描述4.D.2,通过外部中断改变LED1亮灭。利用按键SW5和SW6触发P0.4和P0.5下降沿发生中断控制LED1的亮灭。即当按下SW5或者SW6时,LED1灯的状态发生改变,解决问题的步骤如下:,-68-,4.4.1通用I/O,#include#defineuintunsignedint#defineLED1P1_0#defineLED2P1_1#defineLED3P1_2#defineLED4P1_3/*LED初始化*/voidInitLED(void)/P1为普通I/O口P1SEL=0 x00;/P1.0P1.1P1.2P1.3输出P1DIR=0 x0F;/关闭LED1LED1=1;,头文件及宏定义,-69-,4.4.1通用I/O,/*io及外部中断初始化*/voidInitIO(void)/P0中断标志清0P0IFG|=0 x00;/P0.4有上拉、下拉能力P0INP,-70-,4.4.1通用I/O,/*main()函数*/voidmain(void)/LED初始化InitLED();/IO及外部中断初始化InitIO();/等待中断Delay(100);while(1);,-71-,4.4.1通用I/O,/*中断服务子程序*/#pragmavector=P0INT_VECTOR_interruptvoidP0_ISR(void)/关中断P0IEN,-72-,4.4.3外设I/O,外设I/O是I/O的第二功能,当I/O配置为外设I/O时,可以通过软件配置连接到ADC、串口、定时器和调试接口等。当设置为外设I/O时,需要将对应的寄存器位PxSEL置1,每个外设单元对应两组可以选择的I/O引脚,即“外设位置1”和“外设位置2”,如表4-26所示。例如USART在SPI模式下,“外设位置1”为P0.2P0.5,“外设位置2”为P1.2P1.5,-73-,-74-,4.4.3外设I/O,外设I/O位置的选择使用寄存器PERCFG来控制,PERCFG是外设控制寄存器,用来选择外设使用哪一个I/O端口,/设置USART0为外设位置1PERCFG|=0 x00;,-75-,4.4.3外设I/O,如果I/O映射有冲突,可以在有冲突的组合之间设置优先级。优先级的设置是通过寄存器P2SEL和P2DIR来设置,P2SEL设置,-76-,4.4.3外设I/O,如果I/O映射有冲突,可以在有冲突的组合之间设置优先级。优先级的设置是通过寄存器P2SEL和P2DIR来设置,P2DIR设置,-77-,4.4.3外设I/O,ADC,整个P0口可作为ADC使用,因此可以使用多达8个ADC输入引脚。此时P0引脚必须配置为ADC输入。APCFG寄存器(ADC模拟外设I/O配置寄存器)可以配置P0的某个引脚为一个ADC输入,且相应的位必须设置为1,/设置P0.7为ADC输入PICTL|=0 x80;,-78-,4.4.3外设I/O,串口,USART0和USART1均有两种模式,分别是异步UART模式或同步SPI模式,并且每种模式下所对应的外设引脚有两种,即外设位置1和外设位置2P2SEL.PRI3P1和P2SEL.PRI0P1为端口1指派外设优先顺序,当两者都设置为0时,USART0优先,-79-,4.4.3外设I/O,定时器1,PERCFG.T1CFG用于设置定时器1是使用外设位置1还是外设位置2,定时器1的外设信息对应如下,0:通道0捕获/比较引脚。1:通道1捕获/比较引脚。2:通道2捕获/比较引脚。3:通道3捕获/比较引脚。4:通道4捕获/比较引脚。,-80-,4.4.3外设I/O,定时器3,PERCFG.T3CFG用于设置定时器3是使用外设位置1还是外设位置2,0:通道0比较引脚。1:通道1比较引脚。,-81-,4.4.3外设I/O,调试接口,端口P2.1和P2.2分别用于调试数据和时钟信号。即DD调试数据和DC调试时钟。当处于调试模式,调试接口控制这些引脚的方向,并且在这些引脚上禁用上拉和下拉。,-82-,4.5振荡器和时钟,CC2530共有四个振荡器,它们为系统时钟提供时钟源,-83-,4.5.1振荡器,CC2530的四个振荡器分别是32MHz外部晶振、16MHz内部RC振荡器、32KHz外部晶振和32KHz内部RC振荡器。其中32MHz晶振和16MHz内部RC振荡器是两个高频振荡器;32KHz晶振和32KHz内部RC振荡器是两个低频振荡器,32MHz外部晶振(简称32MHz晶振)除了为内部时钟提供时钟源之外,主要用于RF收发器。16MHzRC内部振荡器(简称16MHzRC振荡器)也可以为内部时钟提供时钟源,但是16MHzRC振荡器不能用于RF收发器操作。对于一些应用程序来说32MHz晶振的启动时间较长,设备可以采用先运行16MHzRC振荡器,直到32MHz晶振稳定。32KHz外部晶振(简称32KHz晶振)运行在32.768KHz上,为系统需要的时间精度提供一个稳定的时钟信号。32KHZRC内部振荡器(简称32KHZRC振荡器)运行在32.753KHz上,当系统时钟需要校准时使用此振荡器,校准只能发生在系统时钟工作由16MHzRC震荡器转到32MHz晶振的时候。需要注意的是32KHz晶振和32KHzRC振荡器不能同时使用,-84-,4.5.2系统时钟及寄存器,CC2530内部有一个内部系统时钟和一个主时钟。在CC2530中系统时钟源是从所选的主系统时钟源获得的,主时钟一般由32MHz晶振或16MHzRC振荡器提供。由于32MHz晶振启动时间比较长,因此当选用32MHz晶振作为主时钟源时,内部首先选择16MHzRC振荡器使系统运转起来,当32MHz晶振稳定之后才使用32MHz晶振作为主时钟源可以通过操作时钟寄存器选择使用哪个时钟源。时钟寄存器主要有两个寄存器:时钟控制命令寄存器CLKCONCMD和时钟控制状态寄存器CLKCONSTA,-85-,4.5.2系统时钟及寄存器,CLKONCMD时钟控制命令寄存器,/设置时钟晶振为32MHZCLKCONCMD,-86-,4.5.2系统时钟及寄存器,CLKCONSTA时钟控制状态寄存器,/设置当前时钟为32MHz晶振CLKCONSTA,-87-,4.5.2系统时钟及寄存器,主时钟源的选择通过CLKCONCMD和CLKCONSTA共同操作完成的,比如要改变时钟源,需要使CLKCONSTA.OSC的设置与CLKCONCMD.OSC的设置相同才可以改变时钟源。,/设置系统时钟为32MHz晶振CLKCONCMD,-88-,4.6电源管理和复位,CC2530提供多种供电模式,不同的工作方式需要在相应的供电模式下进行,因此CC2530在工作时首先要选择供电模式,-89-,4.6.1供电模式,CC2530的供电模式有五种:,主动模式空闲模式PM1、PM2和PM3,其中主动模式又称一般模式或完全功能模式。不同的供电模式对系统运行的影响不同,-90-,4.6.1供电模式,主动模式:完全功能模式。稳压器的数字内核开启;高频振荡器32MHz晶振或16MHzRC振荡器运行,或者两者都运行;低频振荡器的32KHz晶振或32KHzRC振荡器运行。在此模式下CPU、外设和RF收发器都是活动的,可以通过操作寄存器使CPU内核停止运行,进入空闲模式。也可以通过复位、外部中断或睡眠定时器到期唤醒空闲模式。空闲模式:当CPU内核停止运行时即空闲,当CPU处于工作状态时与主动模式相同。可以通过复位、外部中断或睡眠定时器到期唤醒进入主动模式。PM1:在PM1模式下,稳压器的数字部分开启;高频振荡器的32MHz晶振或16MHzRC振荡器都不运行;低频振荡器的32KHz晶振或32KHzRC振荡器运行。当发生复位、外部中断或睡眠定时器到期时系统将转到主动模式。当系统运行在此模式下时,将运行一个掉电序列。由于PM1模式使用的上电和掉电序列较快,此模式适合用于等待唤醒事件的时间小于3ms的情况下。,-91-,4.6.1供电模式,PM2:稳压器的数字部分关闭,高频振荡器的32MHz晶振或16MHzRC振荡器都不运行;低频振荡器的32KHz晶振或32KHzRC振荡器运行。当发生复位、外部中断或睡眠定时器到期时系统将转到主动模式。当睡眠时间超过3ms时使用此模式。PM3:稳压器数字部分关闭,所有的振荡器都不运行。当发生复位和外部中断时系统将转到主动模式运行。PM3用于系统最低功耗的运行模式。,-92-,4.6.2电源管理寄存器,电源管理即管理和选择供电模式,供电模式的管理是通过电源管理寄存器来实现的。CC2530的电源管理寄存器有3个,分别是PCON、SLEEPCMD和SLEEPSTA。,PCON为供电模式控制寄存器;SLEEPCND为睡眠模式控制器;SLEEPSTA为睡眠模式控制状态寄存器,-93-,4.6.2电源管理寄存器,PCON为供电模式控制寄存器,-94-,4.6.2电源管理寄存器,SLEEPCND为睡眠模式控制器,/关闭不用的RC振荡器SLEEPCMD|=0 x04;,-95-,4.6.2电源管理寄存器,SLEEPSTA为睡眠模式控制状态寄存器,CC2530数据手册上这部分有错误,/等待晶振稳定while(!(SLEEPSTA,-96-,4.6.2电源管理寄存器,实现任务描述4.D.3,初始化系统时钟。选择外部32MHz晶振作为主时钟源。上电后,由于外部32MHz晶振不稳定,因此CC2530芯片内部先启用内部16MHzRC振荡器。等待外部稳定之后,才开始使用外部32MHz晶振,-97-,4.6.2电源管理寄存器,voidInitClock(void)/选择32MHz晶振CLKCONCMD,-98-,4.6.3复位,CC2530的复位源有5个,这5个复位源分别是:,强制RESET_N输入引脚为低电平复位,这一复位经常用于复位按键。上电复位,在设备上电期间提供正确的初始化值。布朗输出复位,只能运行在1.8V数字电压,此复位是通过布朗输出探测器来进行的。布朗输出探测器在电压变化期间检测到的电压低于布朗输出探测器所规定的最低电压电压时,导致复位。看门狗定时复位,当使能看门狗定时器,且定时器溢出时产生复位。时钟丢失复位,此复位条件是通过时钟丢失探测器来进行的。时钟丢失探测器用于检测时钟源,当时钟源损坏时,系统自动使能时钟丢失探测器,导致复位。,-99-,4.6.3复位,CC2530在复位之后初始状态如下:,I/O引脚配置为带上拉的输入。CPU程序计数器在0 x0000,并且程序从这个地址开始。所有外设寄存器初始化为各自复位值。看门狗定时器禁用。时钟丢失探测器禁用。,-100-,4.7串口,USART0和USART1是串行通信接口,两个USART具有同样的功能,可以分别运行于异步UART模式和同步SPI模式,-101-,4.7.1串口模式,USART0和USART1是串行通信接口,两个USART具有同样的功能,可以分别运行于在两种模式下:,异步UART模式同步SPI模式,-102-,4.7.1串口模式,异步UART模式:UART模式提供异步串行接口,在UART模式中,有2种接口选择方式:2线接口和4线接口。,2线接口,即使用RXD、TXD。4线接口,即使用引脚RXD、TXD、RTS和CTS,-103-,4.7.1串口模式,UART模式的操作具有以下特点:,8位或者9位负载数据。奇校验、偶校验或者无奇偶校验。配置起始位和停止位。配置LSB(最低有效位)或者MSB(最高有效位)首先传送。独立收发中断。独立收发DMA触发。奇偶校验和帧校验出错状态。,-104-,4.7.1串口模式,UART模式提供全双工传送,接收器中的位同步不影响发送功能。传送一个UART字节包含1个起始位,8个数据位,1个作为可选的第9位数据或者奇偶校验位,再加上1个或者2个停止位,-105-,USART控制和状态寄存器UxCSR,4.7.1串口模式,UART操作由USART控制和状态寄存器UxCSR以及UART控制寄存器UxUCR,/设置UART模式U0CSR|=0 x80;/允许接收U0CSR|=0 x40;,-106-,USART控制和状态寄存器UxCSR,4.7.1串口模式,UART操作由USART控制和状态寄存器UxCSR以及UART控制寄存器UxUCR,UART控制寄存器UxUCR,-107-,4.7.1串口模式,当UxCSR.MODE设置为1时,就选择了UART模式。当USART收发数据缓冲器UxDBUF写入数据时,该字节发送到输出引脚TXD。UxDBUF寄存器是双缓冲的,/定义一个字符型变量unsignedchartemp;/读出U0DBUF中的数据temp=U0DBUF;,-108-,4.7.1串口模式,UART发送过程,当字节传送开始时,UxCSR.ACTIVE位变为高电平,而当字节传送结束时为低电平。当传送接收结束时,UxCSR.TX_BYTE位设置为1。当USART收/发数据缓冲寄存器就绪,准备接收新的发送数据时,就产生了一个中断请求。该中断在传送开始之后立刻发生,因此,当字节正在发送时,新的字节能够装入数据缓存器。,-109-,4.7.1串口模式,UART接收过程,当1写入UxCSR.RE位时,在UART上数据接收开始。UART在输入引脚RXDx中寻找有效起始位,并且设置UxCSR.ACTIVE位为1。当检测出有效起始位时,收到的字节就传入到接收寄存器,UxCSR.RX_BYTE位设置为1。该操作完成时,产生接收中断。同时UxCSR.ACTIVE变为低电平。通过寄存器UxBUF提供收到的数据字节。当UxBUF读出时,UxCSR_BYTE位由硬件清零。,-110-,4.7.1串口模式,UART硬件流控制,当UxUCR.FLOW位设置为1,硬件流控制使能。然后,当接收寄存器为空而且接收使能时,RTS输出变低。在CTS输入变低之前,不会发生字节传送。硬件流控制适用于“4线接口”。,-111-,4.7.1串口模式,UART特征格式,如果寄存器UxUCR中的BIT9和奇偶校验位设置为1,那么奇偶校验产生且使能。奇偶校验计算出来,作为第9位来传送。在接收期间,奇偶校验位计算出来而且与收到的第9位进行比较。如果奇偶校验位出错,则UxCSR.ERR位设置为高电平。当读取UxCSR时,UxCSR.ERR位清除。,-112-,4.7.1串口模式,波特率产生,当运行UART模式时,内部的波特率发生器设置UART波特率。当运行在SPI模式时,内部的波特率发生器设置SPI主时钟频率。波特率由寄存器UxBAUD.BAUD7:0和UxGCR.BAUD_E4:0定义,该波特率用于UART传送,也用于SPI传送的串行时钟速率。,f是系统时钟频率,等于16MHzRCOSC或者32MHzXOSC,-113-,4.7.1串口模式,波特率控制寄存器BAUD_M,-114-,4.7.1串口模式,UxGCR通用控制寄存器,-115-,4.7.1串口模式,标准波特率所需的寄存器值,该表适用于典型的32MHz系统时钟,/设置波特率为57600U0GCR|=10;U0BAUD|=216;,-116-,4.7.1串口模式,系统时钟设置,波特率发生器的时钟是从所选的主系统时钟源获得的,主系统时钟源可以是32MHzXOSC或16MHzRCOSC。通过CLKCONCMD.OSC位可选择主系统时钟源,/设置时钟晶振为32MHZCLKCONCMD,2019/12/14,117,可编辑,-118-,4.7.1串口模式,串口发送数据,下述内容用于实现任务描述4.D.4,串口发送数据,P0.2为串口的RX,P0.3为串口的TX。通过JP6使用跳线选择使用RS232或者RS485采用两线方式,-119-,4.7.1串口模式,串口初始化,选择工作时钟。选择串口外设备用位置。初始化I/O口。设置波特率。,voidinitUARTtest(void)/初始化时钟InitClock();/使用串口备用位置1P0口PERCFG=0 x00;/P0用作串口P0SEL=0 x3c;/选择串口0优先作为串口P2DIR,-120-,4.7.1串口模式,串口发送字符串函数,voidUartTX_Send_String(char*Data,intlen)intj;for(j=0;jlen;j+)U0DBUF=*Data+;while(UTX0IF=0);UTX0IF=0;,-121-,4.7.1串口模式,主函数,/包含的头文件#include#include#defineuintunsignedint#defineucharunsignedchar/定义控制灯的端口#defineLED1P1_0#defineLED2P1_1/函数声明voidDelay(uint);voidinitUARTtest(void);voidUartTX_Send_String(char*Data,intlen);/*延时函数*/voidDelay(uintn)uinti;for(i=0;in;i+);for(i=0;in;i+);for(i=0;in;i+);for(i=0;in;i+);for(i=0;in;i+);,-122-,4.7.1串口模式,主函数,/*main()函数*/voidmain(void)uchari;charTxdata30=QingdaoDongheXinxiJishu;/P1输出控制LEDP1DIR=0 x03;/开LED1LED1=0;/关LED2LED2=1;/串口初始化initUARTtest();/串口发送QingdaoDongheXinxiJishuUartTX_Send_String(Txdata,29);/清空Txdatafor(i=0;i30;i+)Txdatai=;/将UART0TXtest赋给Txdata;strcpy(Txdata,UART0TXtest);while(1)/串口发送数据UartTX_Send_String(Txdata,sizeof(UART0TXTest);/延时Delay(50000);Delay(50000);Delay(50000);LED1=LED1;LED2=LED2;,-123-,4.7.1串口模式,下载程序至协调器设备中,程序运行后,LED1和LED2不断闪烁,使用串口工具观察实验现象,-124-,4.7.1串口模式,SPI模式:在SPI模式中,USART通过3线接口或者4线接口与外部系统通信。接口包含引脚MOSI、MISO、SCK和SS_N。当UxCSR.MODE设置为0时,选中SPI模式。SPI模式包含下列特征:,3线或者4线SPI接口。主和从模式。可配置的SCK极性和相位。可配置的LSB或MSB传送。,-125-,4.7.1串口模式,SPI主操作模式,当寄存器UxBUF写入字节后,SPI主模式字节传送开始。USART使用波特率发生器生成SCK串行时钟,而且传送发送寄存器提供的字节到输出引脚MOSI。同时接收寄存器从输入引脚MISO获取收到的字节。当传送开始UxCSR.ACTIVE位变高,当传送结束后UxCSR.ACTIVE位变低。当传送结束时,UxCSR.TX_BYTE位设置为1。串行时钟SCK的极性由UxGCR.CPOL位选择,其相位由UxCSR.CPHA位选择。字节传送的顺序由UxCSR.ORDER位选择。传送结束时,收到的数据字节由UxBUF提供读取。当这个新的数据在UxDBUFUSART接收/发送寄存器中准备好,就产生一个中断。,-126-,4.7.1串口模式,SPI从操作模式,SPI从模式字节传送由外部系统控制。输入引脚MISO上的数据传送到接收寄存器,该寄存器由串行时钟SCK控制。SCK为从模式输入。同时,发送寄存器中的字节传送到输出引脚MOSI。当传送开始UxCSR.ACTIVE位变高,当传送结束后UxCSR.ACTIVE位变低。当传送结束时,UxCSR.RX_BYTE位设置为1。接收中断产生。串行时钟SCK的极性由UxGCR.CPOL位选择,其相位由UxCSR.CPHA位选择。字节传送的顺序由UxCSR.ORDER位选择。传送结束时,收到的数据字节由UxBUF提供读取。,-127-,4.7.2串口中断,每个USART都有两个中断:RX完成中断和TX完成中断。当传送开始时,触发TX中断,且数据缓冲区被卸载。USART的中断使能位在寄存器IEN0和IEN2中USART0接收中断RX由IEN0.URX0IE控制。将该位设置0为中断禁止,设置1为中断使能。USART1接收中断RX由IEN0.URX1IE控制。将该位设置0为中断禁止,设置1为中断使能。例如设置USART0接收中断以及总中断使能,/设置USART0接收中断和总中断使能IEN0|=0 x84;,USART1发送中断TX由IEN2.UTX0IE控制。将该位设置0为中断禁止,设置1为中断使能。USART0发送中断TX由IEN2.UTX1IE控制。将该位设置0为中断禁止,设置1为中断使能。,-128-,4.7.2串口中断,中断标志位在寄存器TCON和寄存器IRCON2中TCON中断标志寄存器,/清中断标志位URX0IF=0,-129-,4.7.2串口中断,中断标志位在寄存器TCON和寄存器IRCON2中TCON中断标志寄存器IRCON2中断标志寄存器,-130-,4.7.2串口中断,下述内容用于实现任务描述4.D.5,通过串口接收数据控制LED的亮灭串口初始化,voidinitUARTtest(void)/晶振CLKCONCMD,-131-,4.7.2串口中断,下述内容用于实现任务描述4.D.5,通过串口接收数据控制LED的亮灭LED初始化,voidInit_LED_IO(void)/P1.0、P1.1控制LEDP1DIR|=0 x03;/关LED1led1=0;/关LED2led2=0;,-132-,4.7.2串口中断,下述内容用于实现任务描述4.D.5,通过串口接收数据控制LED的亮灭头文件、函数声明以及宏定义,#include#include#defineuintunsignedint#defineucharunsignedchar/定义控制灯的端口#defineLED1P
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025企业外包合同
- 2025企业间借贷合同应包含的要素
- 管理学中的知识管理试题及答案
- 2025年行政管理考试重点概念试题及答案
- 2025年个体土地赠与合同样本
- 行政管理与社会舆论试题及答案
- 2025电子书赠与的合同范本
- 尝试2025年公文写作与处理试题及答案
- 现代管理技能应用试题及答案
- 管理心理学对情商培养的作用试题及答案
- 2025-2030年中国科技金融行业前景预测及投资战略规划研究报告
- 美育课程中的跨学科融合教学实践
- 2024年湖北省竹溪县事业单位公开招聘医疗卫生岗笔试题带答案
- 四川2025年四川美术学院招聘辅导员笔试历年参考题库附带答案详解
- 八下劳动教育课件
- 《公共资源交易法规概要》课件
- 2025年04月中国科学技术大学附属第一医院(安徽省立医院)护理人员招聘213人笔试历年专业考点(难、易错点)附带答案详解
- 2025年4月版安全环境职业健康法律法规标准文件清单
- 2025年美容师初级技能水平测试卷:秋季美容院服务礼仪试题
- 2025甘肃省农垦集团有限责任公司招聘生产技术人员145人笔试参考题库附带答案详解
- 违规合作合同协议
评论
0/150
提交评论