-1-第四章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结构框架输入输出控制器Reset_nXosc_q2Xosc_q1P2_4P2_3P2_2P2_1P2_0P1_7P1_6P1_5P1_4P1_3P1_2P1_1P1_0P0_7P0_6P0_5P0_4P0_3P0_2P0_1P0_0复位看门狗32MHz晶体振荡器32.768KHz晶体振荡器调试接口高速16MHzRC振荡器32KHzRC振荡器8051CPU内核DMAADC(直流8通道)AES加解密串口1定时器4(8位)定时器3(8位)定时器2(MACIEEE802.15.4)定时器1(16位)串口2片上稳压器上电复位关断睡眠定时器电源管理控制存储器仲裁32KB/64KB/128KB/256KBFLASH8KBSRAM中断请求控制器FLASH写控制器无线寄存器CSMA/CA选通处理器无线数据接口解调器调制器合成器接收链发送链频率合成先进先出帧控制VDDDCOUPLRF_PRF_NSFR总线SFR总线PDATAXRAMSFRIRAM模拟比较器运算放大比较器时钟和校准DIGITALANALOGMIXED-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.1CC2530CPUCC2530的“增强型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根地址总线,寻址范围为0x0000~0xFFFF共64KBDATA数据存储器,可读/写的数据存储空间,用于存放程序运行过程中的数据。有8根地址总线,因此寻址空间为0x00~0xFF,共256个字节XDATA外部数据存储器,可读/写的数据存储空间,主要用于DMA寻址。有16根地址总线,寻址空间是0x0000~0xFFFF共64KBSFR特殊功能寄存器,可读/写的寄存器存储空间,共有128字节。对于地址是被8整除的SFR寄存器,每一位还可以单独寻址-13-4.2.2CC2530存储器及映射物理存储器与存储空间的关系存储空间只是4种不同的寻址方式概念,并不代表物理具体上的存储设备,只是存储空间的概念;而FLASH、SRAM、EEPROM等是具体的物理存储设备。他们两者之间的关系是通过映射来联系起来的。例如FLASH或者EEPROM都可以作为物理存储媒介映射到CODE上。-14-4.2.2CC2530存储器及映射映射映射就是将CC2530的物理存储器映射到其存储空间上,有两个作用:方便DMA访问存储设备可在CODE区执行FLASH或SRAM中的代码-15-4.2.2CC2530存储器及映射映射的两种形式CODE存储器映射XDATA存储器映射-16-4.2.2CC2530存储器及映射CODE存储器映射CODE存储器映射具有两个功能:一是将FLASH映射至CODE存储空间;二是执行来自SRAM的代码(将SRAM映射至CODE存储空间)-17-4.2.2CC2530存储器及映射FLASH映射Bank0-7(32KBFLASH)0x80000xFFFF普通区/Bank0(32KBFLASH)0x00000x7FFFCODE的寻址空间为64KB,而对于CC2530F256设备来说FLASH的存储空间为256KB首先要解决存储空间不对称的问题CC2530将FLASH存储器分为几个bank,每个bank的大小是32KB。对于CC2530F256设备来说,它有8个bank,分别为bank0~bank7。通过操作寄存器FMAP.MAP[2:0]来控制将哪个编号的bank映射到CODE区域只针对CC2530F32这款芯片,因为这款芯片的的FLASH只有32KB虽然这里有bank0区域,但是映射的时候bank0总映射的根部的低32KB区域-18-4.2.2CC2530存储器及映射SRAM映射为了便于在SRAM中执行代码,可以将SRAM映射到CODE存储空间的0x8000~(0x8000+SRAM_SIZE-1)的区域Bank0-7(较高的24KBFLASH)0x80000xFFFF普通区/Bank0(32KBFLASH)0x00000x7FFF0x8000+SRAM_SIZE-10x8000+SRAM_SIZESRAM虽然程序从SRAM中运行代码,但是并不代表程序是从SRAM中启动的。程序仍旧是从CODE的普通区域0x0000开始执行,当程序执行到0x8000时,将执行SRAM中的代码-19-4.2.2CC2530存储器及映射SRAM映射为了方便DMA控制器能访问所有的物理存储空间,CC2530把所有的物理存储器以及寄存器都映射到XDATA上,包括CODE和SFR部分存储空间。Bank0~7(可选的32KB闪存区)0x80000xFFFF信息页面(2KB)SFR(128B)XREGSRAM(SRAM_SIZE字节)0x78000x7FFF0x70FF0x70800x60000x63FF0x0000SRAM_SIZE-256SRAM_SIZE-18051DATA空间8051SFR空间-20-4.2.2CC2530存储器及映射XDATA包含了所有物理存储器的映射,包括8KB的SRAM存储器、XREG、SFR、信息页面和FLASH存储器SRAM映射的地址范围是0x0000到SRAM_SIZE-1。其中SRAM较高的256字节映射到DATA存储空间8位地址区域,即地址范围从SRAM_SIZE-256到SRAM_SIZE-1XREG区域映射到1KB地址区域0x6000-0x63FFSFR寄存器映射到地址区域0x7080-0x70FF。128个条目的硬件寄存器区域是通过这一存储空间访问的。闪存信息页面2KB映射到地址区域0x7800-0x7FFF。这是一个只读区域,包含有关设备的各种信息信息页面映射到地址区域0x7800~0x7FFFXBANK为CODE存储空间的bank0~7区域的映射,其地址仍然是0x8000~0xFFFF。可以配置存储器控制寄存器MEMCTR.XBANK[2:0](详见存储器仲裁)决定选择映射bank0~bank7之间的哪个区域,比如MEMCTR.XBANK=001,则映射bank1区域-21-4.2.2CC2530存储器及映射存储器仲裁主要功能是解决CPU与DMA访问所有物理存储器(除了CPU内部寄存器)之间的冲突问题。当CPU和DMA之间发生冲突时,“存储器仲裁”停止CPU或DMA的总线存储器仲裁主要有两个寄存器:存储器仲裁控制寄存器MEMCTR和闪存区映射寄存器FMAP,这两个寄存器用于控制存储器子系统的各个方面-22-4.2.2CC2530存储器及映射存储器仲裁控制寄存器MEMCTRMEMCTR.XMAP必须设置以使得程序从SRAM执行;MEMCTR.XBANK决定XDATA的高32KB映射CODE存储空间的哪个bank区域位名称复位R/W描述7:4--0000R0保留3XMAP0R/WXDATA映射到代码,当设置了这一位,SRAMXDATA区域从0x0000到(SRAM_SIZE)映射到CODE区域的(0x8000+SRAM_SIZE-1)这使得程序代码从RAM执行。0:SRAM映射到CODE功能禁用1:SRAM映射到CODE功能使能2:0XBANK000R/WXDATA区选择,控制物理闪存存储器的哪个代码区域映射到XDATA区域(0x8000-0xFFFF)。当设置为0,映射到根底部。有效设置取决于设备的闪存大小。写一个无效设置被忽略,即不会更新XBANK[2:0]32KB版本只能是0(即总是映射到根底部)64KB版本:0-1128KB版本:0-3256KB版本:0-7-23-4.2.2CC2530存储器及映射闪存区映射寄存器FMAP闪存区映射寄存器FMAP控制物理32KB代码区映射到CODE存储空间的程序地址区域0x8000-0xFFFF位名称复位R/W描述7:3--00000R0保留2:0MAP[2:0]001R/W闪存区域映射,控制物理闪存存储器的哪个代码映射到XDATA区域(0x8000-0xFFFF)。当设置为0,映射到根部区。有效设置取决于设备的闪存大小。写一个无效设置被忽略,即不会更新MAP[2:0]32KB版本只能是0(即总是映射到根底部)64KB版本:0-1128KB版本:0-3256KB版本:0-7即最底部的32KB区域(0x0000~0x7FFF)-24-4.3CC2530编程基础CC2530软件开发平台使用IARIAR对CC2530编程操作提供了良好的C语言支持CC2530编程包括头文件、运行库以及中断编程等-25-4.3.1寄存器和汇编指令CC2530的CPU寄存器与标准的8051的CPU寄存器相同,都包括8组寄存器R0~R7、程序状态字PSW、累加器ACC、B寄存器和堆栈指针SP等CC2530的CP