CC2530用户手册笔记
时间:10-02
整理:3721RD
点击:
CC2530用户手册笔记
8051CPU架构的存储器具有四个不同的存储空间,它的程序存储和数据存储具有独立的存储空间。
CODE:一个用于程序存储的只读空间,这个存储空间具有64KB的地址
DATA:一个可以让CPU通过一个周期指令直接或间接进行读写的数据存储空间。这个空间只有256B。低128B的空间即可以直接或也可以间接访问,而高128B只能间接访问。
XDATA:一个需要4-5指令周期的读写空间。这个空间具有64KB的地址。访问XDATA的速度低于DATA的访问速度,因为CODE和XDATA共用一个CPU核上的存储总线并且从CODE预取指令不能和XDATA并行进行。
SFR:一个可以通过单指令周期进行读写的存储空间。这个存储空间有128B空间。这个SFR寄存器的地址为8的倍数,并且每个位都能独立寻址。
这四个不同的存储空间在8051构架中很明显,但是为了简化DMA传输和硬件调试工作,在器件中部分重叠。不同存储空间如何映射到三个物理存储器(FLASH,SRAM和存储映射寄存器)将在后面进行描述。
存储映射
CC2530的存储映射在两个重要的方面与标准8051不同。首先,为了运行DMA控制器访问所有的物理存储器,并在不同8051存储空间之间进行DMA传输,部分SFR和DATA存储空间被映射到XDATA存储空间中。再者,具有两个CODE存储空间的映射方案可选择。第一个方案是在器件复位后,只有程序存储器FLASH被映射到CODE存储空间,及标准8051映射方案。第二个方案适用于从SRAM执行代码。在这个模式中,SRAM被映射到0x8000~(0x8000+SRAM_SIZE-1)的空间中。这个映射方案如图1所示.
image
图1.CODE存储映射方式
XDATA的顶端32KB是只读区域,称为XBANK。任何32KB的flash bank可以映射至此。这使得软件可以访问整个FLash存储器。这个区域通常用于存储额外的常数数据。
CPU具有18个中断源,每个源在中断标志SFR寄存器中具有自己的请求标志位。每个中断源可以独立地使能和禁止,中断具有不同的优先级。
每个中断源可以通过中断使能寄存器IEN0,IEN1和IEN2分别进行使能和禁止。为了使能任何一个中断,必须采取以下的步骤:
1.清楚中断标志
2.在外围SFR寄存器中设置各自的中断使能位
3.在IEN0/IEN1或IEN2寄存器中设置各自相应的中断使能位
4.设置寄存器IEN0中的全局中断使能位EA
5.在相应中断的中断矢量中开始中断服务程序
中断概观
中断号 描述 中断名称 中断矢量 中断屏蔽(CPU) 中断标志
0 射频TXFIFO和RXFIFO溢出 RFERR 03h IEN0.RFERRIE TCON.RFERRIF
1 模数转换结束 ADC 0Bh IEN0.ADCIE TCON.ADCIF
2 串口0接收结束 URX0 13h IEN0.URX0IE TCON.URX0IF
3 串口1接收结束 URX1 1Bh IEN0.URX1IE TCON.URX1IF
4 AES加密解密结束 ENC 23h IEN0.ENCIE S0CON.ENCIF
5 休眠定时器比较 ST 2Bh IEN0.STIE IRCON.STIF
6 端口2输入/USB P2INT 33h IEN2.P2IE IRCON2.P2IF
7 串口发送接收 UTX0 3Bh IEN2.UTX0IE IRCON2.UTX0IF
8 DMA传送结束 DMA 43h IEN1.DMAIE IRCON.DMAIF
9 定时器1(16位)捕获/比较/溢出 T1 4Bh IEN1.T1IE IRCON.T1IF
10 定时器2 T2 53h IEN1.T2IE IRCON.T2IF
11 定时器3(8位)比较/溢出 T3 5Bh IEN1.T3IE IRCON.T3IF
12 定时器4(8位)比较/溢出 T4 63h IEN1.T4IE IRCON.T4IF
13 端口0输入 P0INT 6Bh IEN1.P0IE IRCON.P0IF
14 串口1传输结束 UTX1 73h IEN2.UTX1IE IRCON2.UTX1IF
15 端口1输入 P1INT 7BH IEN2.P1IE IRCON2.P1IF
16 射频通用中断 RF 83h IEN2.RFIE S1CON.RFIF
17 定时器模式看门狗溢出 WDT 8Bh IEN2.WDTIE IRCON2.WDTIF
响应一个中断最快的时间为7个机器周期,一个用于检测中断,另外一个用于执行LCALL指令。中断被分为6个中断优先级组,每一个组的优先级通过IP0和IP1进行设置。每组的优先级有四级。如果同优先级的中断同时发生,则采用查询顺序的方式进行优先级请求的裁定。
CPU寄存器
两个数据指针DPTR0和DPTR1用于加速读取或写入存储器,用于访问CODE或XDATA空间。通过DPS数据指针选择寄存器设置在进行指令执行时采用哪个数据指针。
寄存器R0-R7
一共有四组的8个寄存器的寄存器bank,并且分别映射到DATA存储器空间中,地址分别为:0x00-0x07,0x08-0x0f,0x10-0x17和0x18-0x1F。每个bank包含有8个8为的寄存器R0-R7。寄存器bank的选择通过PSW.RS[1:0]进行设置。 在内部,bank0采用触发器存储数据,而1-3采用SRAM存储数据,这样可以节省能量。采用bank0大概可以比采用bank1-3节省200uA的电流。
堆栈指针
DATA存储器空间中的堆栈是向上增长的,PUSH指令首先增加SP然后将字节复制进堆栈。复位后SP被初始化为0x07,并且从0x08开始进行堆栈的存储。因为0x08刚好是第二个bank的R0,因此如果程序需要多个寄存器bank,就必须修改默认的SP值。
存储仲裁器
存储仲裁器解决CPU和DMA访问除了CPU内部寄存器外所有物理存储器的冲突。当CPU和DMA发生冲突时,存储仲裁器选择一个作为总线主控器而解决冲突。控制寄存器MEMCTR和FMAP用于控制存储子系统的各个方面。MEMCTR.XMAP在从RAM执行程序时必须使能。FLASH BANK映射寄存器FMAP控制32KB物理代码bank的映射到程序地址区域0x8000-0xFFFF。XMAP:XDATA映射到code,当此为置位时,SRAM XDATA区域从0x0000到SRAM_SIZE-1)映射到代码区域,即0x8000到0x80000+SRAM_SIZE-1.这就使能从RAM执行代码。XBANK:XDATA bank选择,控制那些物理flash存储bank映射到XDATA区域。当设置为0时,root bank映射。