CC2430研究记录.docx
- 文档编号:12226908
- 上传时间:2023-04-17
- 格式:DOCX
- 页数:15
- 大小:254.69KB
CC2430研究记录.docx
《CC2430研究记录.docx》由会员分享,可在线阅读,更多相关《CC2430研究记录.docx(15页珍藏版)》请在冰豆网上搜索。
CC2430研究记录
【CC2430内部硬件图】
【CC2430-F128存储空间】
CC2430-F128的物理空间分为4个部分,即SFR、radioregister、8KSRAM、128Kflash;
这四个存储空间在CC2430集成模块里,通过MemoryArbitrator对SFR总线、Data总线实现统一管理;
为了达到高效访问各存储空间,通过DMA(directmemoryaccess直接存储访问)机制将物理空间映射到16-bit映射表里,然后统一编制访问;
映射表分配见以下两张表:
CC2430-F128XDATAmemoryspace
CC2430-F128UnifiedmappingofCODEspace
可见,映射表的低55K用以访问FLASH只读空间,高8K用以访问SRAM,中间的地址范围用以访问SFR和Radioregister;
在地址地图上,可以看到SFR、DATA、CODE、XDATA四种数据类型,这些数据类型是有区别的,但是很显然,它们也是相互重叠的,即在概念上可能是相互重叠的;
SFR:
7-bit(0x80~0xFF)可读写寄存器,可在单个CPU周期里直接操作;
DATA:
8-bit可读写存储器,小于128bytes可直接读写,大于128bytes间接读写;
CODE:
16-bit只读程序存储区(flash);
XDATA:
16-bit可读写数据存储区,其访问周期比DATA慢,因为它是与CODE共用总线的;
【CC2430外围接口】
XOSC_Q1和XOSC_Q2:
外接主时钟,32M;
P2_3和P2_4:
如果需要用到慢时钟,此二端口接32K副时钟;
RF_N、RF_P、TXRX_SWITCH:
外接天线;
P0_0……P1_7、P0_0……P1_7、P2_0……P2_7(P2_3和P2_4在无慢时钟情况下作为I/O口):
I/O口;
其余端口接电源或接地;
【特殊功能寄存器SFR】
这些寄存器在ioCC2430.h中对应定义的SFRs表;
这些积存器的功能见《CC2430数据手册》.P42;
CPU寄存器:
PSW(0xD0)–ProgramStatusWord程序运算状态字;
ACC(0xE0)–Accumulator用于存放计算源或结果或发送数据或其他;
B(0xF0)–BRegister用于乘除运算;
SP(0x81)–StackPointer堆栈指针;
中断相关寄存器:
IEN0(0xA8)–InterruptEnable0
IEN1(0xB8)–InterruptEnable1
IEN2(0x9A)–InterruptEnable2
TCON(0x88)–InterruptFlags
T2CON(0xC8)–InterruptControl
S0CON(0x98)–InterruptFlags2
S1CON(0x9B)–InterruptFlags3
IRCON(0xC0)–InterruptFlags4
IRCON2(0xE8)–InterruptFlags5
IP1(0xB9)–InterruptPriority1
IP0(0xA9)–InterruptPriority0
【中断向量表】
这张向量表上的数值0……17并没有实际意义,与优先级等无关;
以上提到两个中断优先级控制表IP0和IP1,这两个寄存器的同等位组合应用,表示如下:
表中的x是一个byte的位,即0~7,由于向量表总共只有18个向量,这里将它们分成6组,每组3个向量,每一组里的3个向量可以有0~3四中优先级,3最高、0最低,如果不同组出现相同的优先级,那么就按照6个组的排列先后扫描:
【I/O口】
P0_0~P2_7:
共24个I/O口,每个口都对应着三类寄存器的相应位;
P0/P1/P2:
移位积存器,即端口当前要发送或接收的1或0保存在该寄存器的对应位;
P0SEL/P1SEL/P2SEL:
每个I/O口的功能寄存器,同一个I/O口,可能用作普通I/O或给外围设备用,也可能在两个特殊功能上选0或1辨别谁优先,即在两个功能二选一时用1和0区分;
P0DIR/P1DIR/P2DIR:
I/O口的方向寄存器,即输入或输出二选一,0为输入;
P0INP/P1INP/P2INP:
I/O口的输入模式寄存器,可能位拉高/拉低二态表示或采用三态表示,0为拉高/拉低二态表示;
P0IFG/P1IFG/P2IFG:
如果I/O口用作中断,该寄存器的对应位为中断状态标志位,有中断请求发生的时候,该对应位置1;
PICTL:
P0和P2的中断控制寄存器,控制中断使能、边沿触发、输出驱动能力;
P1IEN:
P1的中断控制寄存器,8bit分别控制P1_0……P1_7的中断使能;
【定时器】
16-bit定时器Timer1:
系统时钟频率是0.25Mhz到32Mhz,在Timer1的控制寄存器里可以设置1-128分频,也就是说,Timer的计数频率可以达到1953.125至32M;
Timer1的计数模式有三种:
Free-running模式,从0开始计数到0xFFFF置T1CTL.OVFIF
标志位同时对计数值清0;Modulo模式,从0开始计数到用户设定数置T1CTL.OVFIF标志位,同时计数值清0;Up/Down模式,在0和用户设定数之间振荡计数,即先加计数然后减计数如此循环;
Timer1的用户设定计数值放在T1CC0H:
T1CC0L里;
Timer1定时器控制了3各channel(通道),三个通道的控制寄存器为T1CCTLn(n值为1-3),
Channel模式:
channel模式在其寄存器T1CCTLn中设置,分为输入获取模式和输出对比模式,其中输入获取模式又有外接普通I/O口和RF两种;输入获取就是当外部信号到来的时候获取Timer1的计数器值,输出对比模式就是当Timer1计数器值计数到设定值时产生输出;
Timer1中断:
Timer1中断产生自三类事件:
计数值达到某设定值、输入获取事件、输出对比事件;Timer1的三个channel由以下四个标志位控制:
T1CTL.OVFIF,T1CTL.CH0IF,T1CTL.CH1IF,T1CTL.CH2IF;
Timer1的寄存器分列如下:
T1CNTH–Timer1CountHigh
T1CNTL–Timer1CountLow
T1CTL–Timer1ControlandStatus
T1CCTLx–Timer1ChannelxCapture/CompareControl
T1CCxH–Timer1ChannelxCapture/CompareValueHigh
T1CCxL–Timer1ChannelxCapture/CompareValueLow
16-bitMAC定时器Timer2:
Timer2用于带冲突避免的载波监听多路访问技术算法和802.15.4的MAC层计时器;在睡眠定时器配合使用的情况下,即使在低功耗模式下,计时功能仍然继续;
Timer2计时与32.768K晶振保持同步;
Timer2的计数器是16-bit加计数,设定值存放在T2CAPHPH:
T2CAPLPL里,计数值达到该值,中断请求标志位T2PEROF2.PERIM置1,然后看T2CNF.PERIF判断是否产生中断;
Timer2有个对应的调整值计数器即deltatimer,其寄存器为T2THD:
T2TLD,该寄存器采用减计数,只要里面值非零即开始减计数,什么时候该调整Timer2了,就用该计数器来延时将快的时间调整过来;
Timer2的对比数寄存器是8-bit的,所以其内部设定的值只能跟Timer2计数器的高byte或低byte进行比较,具体选择高byte还是低byte由T2CNF.CMSEL标志位决定,当计数超过了对比数寄存器的值后,使中断标志位T2CNF.CMP置1;
Timer2的溢出次数会在20-bit溢出次数寄存器T2OF2:
T2OF1:
T2OF0
里面记录;
Timer2的中断原因有三个:
定时器溢出、达到对比数寄存器的值、达到设定的溢出次数;
24-bit睡眠定时器SleepTimer:
SleepTimer的主要功能是计算系统进入和退出低功耗睡眠模式的周期,同时就是在进入低功耗睡眠模式后用来维持MAC定时器Timer2;
SleepTimer的计时源是32.768K晶振;
对比计数值在24-bit寄存器ST2:
ST1:
ST0里设置,IEN0.STIE是中断使能位,IRCON.STIF是中断标志位;
8-bit普通定时器Timer3、Timer4:
普通定时器Timer3和Timer4就是用来平常的计时和通过软件定时产生波形,每个定时器都有其各自通道;
时钟源可以自由选择,分频数为1、2、4……128;
计数模式有4类:
自由计数(溢出为止)、减计数、模计数(有设定值)、up/down振荡计数;
【看门狗WDT】
看门狗定时器WatchdogTimer:
看门狗定时器仅在用到看门狗这一功能的时候才有效,如果不用该功能,也可以通过配置将其使用成普通的定时器;
其原理是,当看门狗定时器使能位使能后开始计数,如果在计数值达到设定的间隔时间值仍然没有阻止,那么就复位系统;
看门狗定时器的五个特征:
4个可选间隔时间、看门狗模式、定时器模式、定时器模式下可产生中断请求、其所用时钟与系统时钟独立;
看门狗定时器受寄存器WDCTL控制,其计数器为15-bit,时钟源是32.768KHz晶振;
WDCTL.MODE为0的时候,即为看门狗模式,WDCTL.EN位置1后定时器开始计数,计数过程中不能对该位进行操作改变,一旦计数值达到设定的间隔时间,系统复位,所以要在间隔时间到达之前,将WDCTL.CLR[3:
0]的值在1/2看门时钟周期内先写0x5后写0xA即达到阻止看门狗定时器计数的效果,此时计数值自动清0;值得注意的是,看门狗定时器模式下没有中断;
在时钟源32.768kHz情况下,给出了1.9ms,15.625ms,0.25s和1s四种间隔时间,其对应的计数值分别为64,512,8192和32768;
【USART】
串行口有两个:
USART0和USART1;
串行口有两种模式:
异步UART模式和同步SPI模式;
UART模式采用2线(RXD/TXD)或4线(RXD/TXD/RTS/CTS);
SPI模式采用3线(MOSI/MISO/SCK)或4线(MOSI/MISO/SCK/SS_N);
串口波特率计算公式:
其中BAUD_M和BAUD_E都可以通过寄存器设置,F是晶振值即32M;
串口中断由全局中断控制寄存器控制,分别是:
中断使能:
•USART0RX:
IEN0.URX0IE
•USART1RX:
IEN0.URX1IE
•USART0TX:
IEN2.UTX0IE
•USART1TX:
IEN2.UTX1IE
中断标志:
•USART0RX:
TCON.URX0IF
•USART1RX:
TCON.URX1IF
•USART0TX:
IRCON2.UTX0IF
•USART1TX:
IRCON2.UTX1IF
串口相关寄存器介绍如下(其中x代表串口号0或1):
•UxCSRUSARTxControlandStatus
•UxUCRUSARTxUARTControl
•UxGCRUSARTxGenericControl
•UxBUFUSARTxReceive/Transmitdatabuffer
•UxBAUDUSARTxBaudRateControl
(Jon.cc2430用了地址映射机制,而且集成了无线模块和cpu,可以对寄存器直接操作,而不用管cpu和无线模块是怎么通信的。
不同于chipcon-cc2420,操作cc2420是通过SPI进行访问。
)
【无线Radio】
CC2430的无线模块继承了CC2420的机构和功能,其收发也是各自独立的BUF,都是128bytes,不过,由于CC2430用了DMA(直接存储访问)机制,所以用户可以对寄存器进行操作。
RF寄存器:
RF寄存器在XDATA中的地址范围是0xDF00~0xDF80;(所以,存放无线模块参数的所谓的寄存器不是通常意义上的寄存器,本文没有特殊说明的寄存器地址指的都是CPU的特殊功能寄存器的地址。
)
中断:
无线模块在CPU中断资源上占用2个中断向量,向量0和向量12,分别用于RFERR中断和RF中断;RFERR中断用于控制TXFIFO下溢出或RXFIFO上溢出,RF中断用于响应无线模块中的所有由RFIF中断标志寄存器控制的中断。
两个中断的中断使能位分别是:
•RFERR:
IEN0.RFERRIE
•RF:
IEN2.RFIE
两个中断的中断标志位分别是:
•RFERR:
TCON.RFERR
•RF:
S1CON.RFIF
与RF中断相关的两个寄存器:
RFIF(0xE9):
中断产生标志寄存器;
RFIM(0x91):
中断使能寄存器;
RF数据寄存器:
RFD(0xD9)是特殊功能寄存器,无论是TXFIFO中的数据要发送或数据接收到RXFIFO来,都要经过RFD。
接收模式:
RFSTATUS.FIFO和RFSTATUS.FIFOP两个标志位仅供RXFIFO使用;
只要RXFIFO中有数据,FIFO就维持1,当然,如果RXFIFO溢出,FIFO清0;
只要有一帧接收完整,即接收到一帧的最后一个字节,那么FIFOP就置1,直到用户开始从RXFIFO中读取数据,FIFOP才清0;
RXFIFO中可以存放多帧数据;
那么从以上信息可知:
(1)如何获知RXFIFO中有完整帧?
FIFO为1,FIFOP为1;
(2)如何获知RXFIFO溢出?
FIFO为0,FIFOP为1;
如果PRERR中断使能,那么当RXFIFO溢出时,会引发中断;
此外,即使在发送模式下,FIFO和FIFOP两个标志对RXFIFO依然有效;
发送模式:
当SFD(startofframedelimiter)发送完毕,RFIF.IRQ_SFD中断标志位置1且RF中断请求产生,当后续MPDU发送完毕,RFIF.IRQ_SFD清0;
IEEE802.15.4帧格式:
(本节以下提到的寄存器是Radio内部寄存器,并非CPU特殊寄存器;Radio内部寄存器仅是为了保存某些重要信息,跟组帧没有关系。
)
PHY帧长度:
就是上图PPDU长度,存放在MDMCTRL0L.PREAMBLE_LENGTH中;
PHY同步头:
在SYNCWORDH:
SYNCWORDL寄存器中设置,从下图很容易获悉其构造
同步头的Preamble部分为4bytes全0,SFD部分为0x7A;
MAC帧长度:
就是上图MPDU的长度,无论是接收或发送帧,该长度就是TXFIFO或RXFIFO中实际要处理的长度;
FCF:
帧控制字;
MAC序列号:
2430没有寄存器保存它,只能通过软件控制;
地址识别:
保存本地过滤信息
•IEEE_ADDR7-IEEE_ADDR0本地MAC地址寄存器
•PANIDH:
PANIDL本地PANid寄存器
•SHORTADDRH:
SHORTADDRL.本地NWK地址寄存器
地址识别功能使能标志位MDMCTRL0H.ADDR_DECODE使能后,每次本模块接收到数据,先通过MDMCTRL0H.FRAMET_FILT寄存器过滤非有效帧(例如beacon、data、cmd帧都是有效帧,非法帧舍弃),然后根据以上三组寄存器过滤,过滤方法如下:
1、如果是beacon帧,那么源PANid必须与本地匹配(本地为0xFFFF例外);2、如果接收帧里包含了目标PANid,那么就要与本地匹配(本地为0xFFFF例外);3、如果接收帧里包含了目标NWK地址,那么要与本地匹配(本地为0xFFFF例外),或者,接收帧里包含了目标MAC地址,那么必须与本地匹配;4、如果是data或mac帧,并且仅包含了源地址,那么必须是来自协调器的设备并且PANid必须匹配;
应答帧:
MDMCTRL0L.AUTOACK如果使能,那么本地只要接收到有效帧就要回复应答帧;
Radio控制状态机:
即Radiocontrolstatemachine,Radio当前状态保存在FSMSTATE寄存器中;
RSSI:
接收信号强度,从RSSIL.RSSI_VAL寄存器读取,接收功率可以从以下公式计算得到P=RSSI_VAL+RSSI_OFFSET[dBm],其中RSSI_OFFSET取经验值-45;
LQI:
信号质量;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- CC2430 研究 记录
![提示](https://static.bdocx.com/images/bang_tan.gif)