BLE开发笔记——CC2541寄存器整理

CC2541本质上是一个8051内核的单片机,对其编程必须了解其寄存器,本文整理了常用的寄存器。

访问模式

符号 访问模式
R/W 可读写
R 只读
R0 读0
R1 读1
W 只写
W0 写0
W1 写1
H0 硬件清除
H1 硬件设置

时钟相关

时钟控制命令(CLKCONCMD,0xC6)
Bit位 名称 初始化 读写 描述
7 OSC32K 1 R/W 32kHz时钟振荡器选择。设置该位只能发起一个时钟源改变。CLKCONSTA.OSC32K 反映当前的设置。当要改变该位必须选择16MHz RCOSC作为系统时钟。0:32 kHz XOSC;1:32 kHz RCOSC;
6 OSC 1 R/W 系统时钟 源选择 。设置该位只能发起一个时钟源改变。CLKCONSTA.OSC 反映当前的设置。0:32 MHz XOSC;1:16 MHz RCOSC;
5:3 TICKSPD[2:0] 001 R/W 定时器标记输出设置。不能高于通过 OSC 位设置的系统时钟设置。000:32 MHz;001:16 MHz;010:8 MHz;011:4 MHz;100:2 MHz;101:1 MHz;110:500 kHz;111:250 kHz;注意 CLKCONCMD.TICKSPD 可以设置为任意值,但是结果受CLKCONCMD.OSC 设置的限制,即如果 CLKCONCMD.OSC=1且 CLKCONCMD.TICKSPD=000,CLKCONCMD.TICKSPD 读出001 且实际 TICKSPD 是 16 MHz。
2:0 CLKSPD 001 R/W 时钟速度。不能高于通过 OSC 位设置的系统时钟设置 。 表示当前系统时钟频率。000:32MHz;001:16MHz;010:8MHz;011:4MHz;100:2MHz;101:1MHz;110:500 kHz;111:250 kHz;注意CLKCONCMD.CLKSPD可以设置为任意值,但是结果受CLKCONCMD.OSC设置的限制,即如果CLKCONCMD.OSC=1且CLKCONCMD.CLKSPD=000 , CLKCONCMD.CLKSPD读出001且实际CLKSPD是16MHz。还要注意调试器不能和一个划分过的系统时钟一起工作。当运行调试器,当CLKCONCMD.OSC=0,CLKCONCMD.CLKSPD的值必须设置为000,或当CLKCONCMD.OSC=1设置为001。
时钟控制状态(CLKCONSTA,0x9E)
Bit位 名称 初始化 读写 描述
7 OSC32K 1 R 当前选择的 32 kHz 时钟源。0:32kHz XOSC;1:32kHz RCOSC;
6 OSC 1 R 当前选择的系统时钟。0:32MHz XOSC;1:16MHz RCOSC
5:3 TICKSPD[2:0] 001 R 当前设置的定时器标记输出。000:32MHz;001:16MHz;010:8MHz;011:4MHz;100:2MHz;101:1MHz;110:500kHz;111:250 kHz;
2:0 CLKSPD 001 R 当前时钟速度。000:32MHz;001:16MHz;010:8MHz;011:4MHz;100:2MHz;101:1MHz;110:500kHz;111:250 kHz;
睡眠模式控制命令(SLEEPCMD,0xBE)
Bit位 名称 初始化 读写 描述
7 OSC32K_CALDIS 0 R/W 禁用32-kHz RC振荡器. 0: 使能32-kHz RC振荡器. 1: 禁用32-kHz RC振荡器.在任何时刻都可以设置此bit位,但在片上16-MHz高速RC振荡器起振前设置不会有作用。
6:3 - 000 0 R0 保留
2 OSC_PD 1 R/W 设置晶振、振荡器电源。1:关闭未使用振荡器和晶振的电源 0:开启所有振荡器和晶振的电源。
1:0 MODE[1:0] 00 R/W 电源模式 00: 活动和空闲模式 01:电源模式1(PM1) 10: 电源模式2(PM2) 11:电源模式3(PM3)
睡眠模式状态(SLEEPSTA,0x9D)
Bit位 名称 初始化 读写 描述
7 OSC32K_CALDIS 0 R 禁用32-kHz RC振荡器. 0: 使能32-kHz RC振荡器. 1: 禁用32-kHz RC振荡器.在任何时刻都可以设置此bit位,但在片上16-MHz高速RC振荡器起振前设置不会有作用。
6:5 - 00 R 保留
4:3 RST[1:0] 00 R 记录最终复位信号源。有多种复位,寄存器只保留最后事件,00:上电复位和掉电检测 01:外部复位信号 10:看门狗时钟复位 11:时钟丢失复位。
2 OSC_PD 1 R 1:关闭未使用振荡器和晶振的电源 0:开启所有振荡器和晶振的电源。
1 - 0 R 保留.
0 CLK32K 0 R 32kHz时钟信号,与系统时钟同步。

IO寄存器

端口寄存器(P0,P1,P2)
端口 Bit位 名称 初始化 读写 描述
P0 7:0 P0[7:0] 0XFF R/W 端口0,通用I/O端口,可以位寻址。 XDATA (0x7080).
P1 7:0 P1[7:0] 0XFF R/W 端口1,通用I/O端口,可以位寻址。 XDATA (0x7090).
P2 7:5 000 R0 未使用
P2 4:0 P2[4:0] 0x1F R/W 端口2,通用I/O端口,可以位寻址。 XDATA (0x70A0).

方向寄存器(P0DIR,P1DIR,P2DIR)

端口 Bit位 名称 初始化 读写 描述
P0DIR 7:0 DIRP0_[7:0] 0x00 R/W P0.7--P0.0的方向(0:输入 1:输出)
P1DIR 7:0 DIRP1_[7:0] 0x00 R/W P1.7--P1.0的方向(0:输入 1:输出)
P2DIR 7:6 PRIP0[1:0] 00 R/W 端口0外设优先级控制,当PERCFG分配给一些外设相同引脚的时候,这些位将确定优先级。优先级从前到后如下:00:USART 0,USART 1,Timer 1; 01:USART 1,USART 0,Timer 1; 10:Timer 1 channels 0-1,USART 1,USART 0,Timer 1 channels 2-3; 11:Timer 1 channels 2-3,USART 0,USART 1,Timer 1 channels 0-1
P2DIR 5 --- 0 R0 未使用
P2DIR 4:0 DIRP2_[4:0] 00000 R/W P2.4—P2.0的方向(0:输入 1:输出)
外设控制(PERCFG)
端口 Bit位 名称 初始化 读写 描述
PERCFG 7 --- 0 R0 未使用
PERCFG 6 T1CFG 0 R/W 计时器1的I/O位置:0:位置1; 1:位置2
PERCFG 5 T3CFG 0 R/W 计时器3的I/O位置:0:位置1; 1:位置2
PERCFG 4 T4CFG 0 R/W 计时器4的I/O位置:0:位置1; 1:位置2
PERCFG 3:2 --- 00 R/W 未使用
PERCFG 1 U1CFG 0 R/W USART 1的I/O位置:0:位置1; 1:位置2
PERCFG 0 U0CFG 0 R/W USART 0的I/O位置:0:位置1; 1:位置2
功能选择(P0SEL,P1SEL,P2SEL)
端口 Bit位 名称 初始化 读写 描述
P0SEL 7:0 SELP0_[7:0] 0x00 R/W P0.7--P0.0的功能选择(0:通用I/O 1:外设功能)
P1SEL 7:0 SELP1_[7:0] 0x00 R/W P1.7--P1.0的功能选择(0:通用I/O 1:外设功能)
P2SEL 7 --- 0 R0 未使用
P2SEL 6 PRI3P1 0 R/W 端口1外设优先级控制,当PERCFG分配USART0和USART1相同引脚的时候,这些位将确定优先级。0:USART 0 优先; 1:USART 1 优先
P2SEL 5 PRI2P1 0 R/W 端口1外设优先级控制,当PERCFG分配USART1和TIMER3相同引脚的时候,这些位将确定优先级。0:USART 1 优先; 1:TIMER 3 优先
P2SEL 4 PRI1P1 0 R/W 端口1外设优先级控制,当PERCFG分配TIMER1和TIMER4相同引脚的时候,这些位将确定优先级。0:TIMER 1 优先; 1:TIMER 4 优先
P2SEL 3 PRI0P1 0 R/W 端口1外设优先级控制,当PERCFG分配USART0和TIMER1相同引脚的时候,这些位将确定优先级。0:USART 0 优先; 1:TIMER 1 优先
P2SEL 2:0 SELP2_[2:0] 000 R/W P2.2--P2.0的功能选择(0:通用I/O 1:外设功能)
输入模式(P0INP,P1INP,P2INP)
端口 Bit位 名称 初始化 读写 描述
P0INP 7:0 MDP0_[7:0] 0x00 R/W P0.7--P0.0的输入模式: 0:上拉/下拉(具体看PDUP0设置); 1:三态
P1INP 7:2 MDP1_[7:2] 000000 R/W P1.7—P1.2的输入模式:0:上拉/下拉(具体看PDUP1设置);1:三态
P1INP 1:0 --- 00 R0 未使用
P2INP 7 PDUP2 0 R/W 端口2上拉/下拉选择,对所有端口2引脚设置为上拉/下拉输入:0:上拉;1:下拉
P2INP 6 PDUP1 0 R/W 端口1上拉/下拉选择,对所有端口1引脚设置为上拉/下拉输入:0:上拉;1:下拉
P2INP 5 PDUP0 0 R/W 端口0上拉/下拉选择,对所有端口0引脚设置为上拉/下拉输入:0:上拉;1:下拉
P2INP 4:0 MDP2_[4:0] 00000 R/W P2.4—P2.0的输入模式: 0:上拉/下拉(具体看PDUP2设置);1:三态
中断状态标志(P0IFG,P1IFG,P2IFG)
端口 Bit位 名称 初始化 读/写 描述
P0IFG 7:0 P0IF[7:0] 0x00 R/W0 端口0,位7至位0输入中断状态标志。当某引脚上有中断请求未决信号时,其相应标志为设1。
P1IFG 7:0 P1IF[7:0] 0x00 R/W0 端口1,位7至位0输入中断状态标志。当某引脚上有中断请求未决信号时,其相应标志为设1。
P2IFG 7:5 --- 000 R0 未使用
P2IFG 4:0 P2IF[4:0] 0x00 R/W0 端口2,位4至位0输入中断状态标志。当某引脚上有中断请求未决信号时,其相应标志为设1。
中断控制(PICTL)
端口 Bit位 名称 初始化 读写 描述
PICTL 7 PADSC 0 R/W 强制引脚在输出模式。选择输出驱动能力,由DVDD引脚提供。0:最小驱动能力;1:最大驱动能力
PICTL 6:4 --- 000 R0 未使用
PICTL 3 P2ICON 0 R/W 端口2,引脚4至0输入模式下的中断配置,该位为端口2的4-0脚的输入选择中断请求条件。0:输入的上升沿引起中断;1:输入的下降沿引起中断
PICTL 2 P1ICONH 0 R/W 端口1,引脚7至4输入模式下的中断配置,该位为端口1的7-4脚的输入选择中断请求条件。0:输入的上升沿引起中断;1:输入的下降沿引起中断
PICTL 1 P1ICONL 0 R/W 端口1,引脚3至0输入模式下的中断配置,该位为端口1的3-0脚的输入选择中断请求条件。0:输入的上升沿引起中断;1:输入的下降沿引起中断
PICTL 0 P0ICON 0 R/W 端口0,引脚7至0输入模式下的中断配置,该位为端口0的7-0脚的输入选择中断请求条件。0:输入的上升沿引起中断;1:输入的下降沿引起中断
中断屏蔽(P0IEN,P1IEN,P2IEN)
端口 Bit位 名称 初始化 读写 描述
P0IEN 7:0 P0_[7:0]IEN 0x00 R/W 端口0,位7至位0中断使能。0:中断禁止;1:中断使能
P1IEN 7:0 P1_[7:0]IEN 0x00 R/W 端口1,位7至位0中断使能。0:中断禁止;1:中断使能
P2IEN 7:6 --- 00 R0 未使用
P2IEN 5 DPIEN 0 R/W USB D+ 中断使能。
P2IEN 4:0 P2_[4:0]IEN 00000 R/W 端口2,位4至位0中断使能。0:中断禁止;1:中断使能

ADC输入配置(APCFG)

端口 Bit位 名称 初始化 读写 描述
APCFG 7:0 APCFG[7:0] 0x00 R/W 模拟外围I/O配置(ADC输入配置),APCFG[7:0]选择P0.7—P0.0作为模拟输入口。0:模拟输入(ADC输入)禁止; 1:模拟输入(ACD输入)使能

串口及SPI相关

USART0的控制和状态(U0CSR,0x86)
Bit位 名称 初始化 读写 描述
7 MODE 0 R/W USART模式选择: 0:SPI模式;1:UART模式
6 RE 0 R/W UART接收器使能。注意在UART完全配置之前不使能接收。0:禁用接收器;1:接收器使能
5 SLAVE 0 R/W SPI主或者从模式选择.0:SPI主模式;1:SPI从模式;
4 FE 0 R/W0 UART帧错误状态.0:无帧错误检测;1:字节收到不正确停止位级别
3 ERR 0 R/W0 UART奇偶错误状态.0:无奇偶错误检测;1:字节收到奇偶错误
2 RX_BYTE 0 R/W0 接收字节状态。URAT模式和SPI从模式。当读U0DBUF该位自动清除,通过写0清除它,这样有效丢弃U0DBUF中的数据 。0:没有收到字节;1:准备好接收字节
1 TX_BYTE 0 R/W0 传送字节状态。URAT模式和SPI主模式.0:字节没有被传送;1:写到数据缓存寄存器的最后字节被传送
0 ACTIVE 0 R USART传送/接收主动状态、在SPI从模式下该位等于从模式选择。0:USART空闲;1:在传送或者接收模式USART忙碌
UART的控制(U0UCR,0xC4)
Bit位 名称 初始化 读写 描述
7 FLUSH 0 R0/W1 清除单元。当设置时,该事件将会立即停止当前操作并且返回单元的空闲状态。
6 FLOW 0 R/W UART硬件流使能。用RTS和CTS引脚选择硬件流控制的使用。0:流控制禁止.1:流控制使能.
5 D9 0 R/W UART奇偶校验位。当使能奇偶校验,写入D9的值决定发送的第9位的值,如果收到的第9位不匹配收到字节的奇偶校验,接收时报告ERR。如果奇偶校验使能, 那么该位设置以下奇偶校验级别。0:奇校验;1:偶校验.
4 BIT9 0 R/W UART 9位数据使能。当该位是1时, 使能奇偶校验位传输(即第9位)。如果通过PARITY使能奇偶校验,第9位的内容是通过D9给出的。0:8位传送;1:9位传送
3 PARITY 0 R/W UART奇偶校验使能。除了为奇偶校验设置该位用于计算,必须使能9位模式。0:禁用奇偶校验;1:奇偶校验使能
2 SPB 0 R/W UART停止位的位数。选择要传送的停止位的位数.0:1位停止位;1:2位停止位
1 STOP 1 R/W UART停止位的电平必须不同于开始位的电平.0:停止位低电平;1:停止位高电平
0 START 0 R/W UART起始位电平。闲置线的极性采用选择的起始位级别的电平的相反的电平。0:起始位低电平;1:起始位高电平
USART0的通用控制(U0GCR,0xC5)
Bit位 名称 初始化 读写 描述
7 CPOL 0 R/W SPI的时钟极性.0:负时钟极性;1:正时钟极性;
6 CPHA 0 R/W SPI时钟相位.0:当SCK从CPOL倒置到CPOL时数据输出到MOSI,并且当SCK从CPOL倒置到CPOL时数据输入抽样到 MISO。1:当SCK从CPOL倒置到CPOL时数据输出到MOSI,并且当SCK从CPOL倒置到 CPOL 时数据输入抽样到 MISO 。
5 ORDER 0 R/W 传送位顺序.0:LSB先传送;1:MSB先传送;
4:0 BAUD_E[4:0] 0 0000 R/W 波特率指数值。BAUD_E 和 BAUD_M 决定了 UART 波特率 和 SPI 的主 SCK 时
USART0的数据缓存(U0BUF,0xC1)
Bit位 名称 初始化 读写 描述
7:0 DATA[7:0] 0x00 R/W USART接收和传送数据 。 当写这个寄存器的时候数据被写到内部,传送数据寄存
USART0波特率(U0BAUD,0xC2)
Bit位 名称 初始化 读写 描述
7:0 BAUD_M[7:0] 0x00 R/W 波特率小数部分的值。 BAUD_E和 BAUD_M决定了UART的波特率和SPI的主SCK

ble

5087 字

2015-10-27 06:00 +0000