回答

收藏

CC430学习笔记——(三)(网友juring作品)

TI TI 4183 人阅读 | 0 人回复 | 2012-08-24

网友juring作品
这篇笔记写的是RF1A的各种寄存器和指令,还有CC1101的数据包格式等。
指令:Command Strobes
SRES             复位radio core
SFSTXON       启用和校准频率合成器
SXOFF           radio core进入睡眠状态
SCAL             校准频率合成器,并把它关掉
SRX               使能接收
STX               使能发送
SIDLE            退出RX / TX,关闭频率合成器,并退出WOR模式
SWOR          启动自动RX轮询序列(唤醒RadioWOR
SPWD           radio core进入睡眠状态
SFRX             刷新RX FIFO缓冲区
SFTX             刷新TX FIFO缓冲区
SWORRST    复位WOR定时器为Event1的值
SNOP            空操作,可以用来读取radio core的状态字
以上指令通过指令寄存器对radio core直接操作,在头文件里都有定义,直接使用即可,除SRES指令之外,其余指令都会返回radio core的状态
头文件中的定义:

其余指令:非Command Strobes
SNGLREGRD       读单个寄存器
SNGLREGWR             写单个寄存器
REGRD                读寄存器
REGWR                写寄存器
STATREGRD        radio core状态寄存器
SNGLPATABRD    从功率放大表中读取单字节
SNGLPATABWR    写单个字节到功率放大表
PATABRD             读功率放大表
PATABWR            写功率放大表
SNGLRXRD          从接收FIFO中读取单个字节
SNGLTXWR          单字节写入发送FIFO
RXFIFORD            读接收FIFO
TXFIFOWR          写发送FIFO
因为CC1101对寄存器的访问分单字节存取和突发访问存取两种方式,这两种方式指令有所区别,使用的时候需要注意一下。
以上指令也可以在头文件中找到定义,具体操作数及返回值参照用户手册。

Radio core 状态字
当写寄存器的时候,MCU将指令或者数据通过相应的寄存器写入,radio core则将状态字返回至状态寄存中,状态字的定义如下图所示。

Bit7radio core准备好标志位,0表示准备就绪;1表示内核还未准备好。
Bit6-4radio core状态机的当前状态,分别是IDLE态、接收状态、发送状态、快速TX就绪、频率合成器校准中、PLL正在建立、RX FIFO溢出、TX FIFO溢出。
Bit3-0表示在RX FIFOTX FIFO中可用的字节数。

Radio Core寄存器
Radio core47个配置寄存器(从地址0x00~0x2E),如下图所示:


通过这些寄存器可以配置所需要的参数,比如版本号、同步字、信道,只有配置好了才可以按照期望工作,芯片上电或者复位之后,所有寄存器的值均恢复到芯片预定义的值,所以必须重新配置,也就是常说的初始化。
对着数据手册计算每个寄存器的值然后配置是一个繁琐的过程,为了避免这一过程,TI推出了SmartRF Studio软件,具有良好的人机交互界面,可以直接访问到芯片寄存器,用户只需要出入所需要的要求和功能参数,软件可以自动计算并生成各个主要寄存器的最佳配置(下一篇笔记会讲到SmartRF Studio的使用)。
而且这47个寄存器大多数仅用来测试,一般使用并不需要理会这些用不到的寄存器。
头文件中的定义:

Radio core还有12个状态寄存器,如下图:

这些寄存器都是只读型的,它们包含了radio core的状态信息。
比如当前版本号、解调器估计链路质量LQI、接受信号强度指示RSSI等。
头文件中的定义:

功率放大表PATABLE的存取
地址0x3E用于存取PATABLEPATABLE是用来选择PA功率设置,即输出功率的大小。
PATABLE是一个8字节表,其定义了PA控制设置,PATABLE保存了8PA功率值。一般用一个就够了,用8个的情况是实现受控的PA功率斜坡上升和下降,以及用于降低带宽的ASK调制整型。(个人理解,仅供参考)
PATABLE的访问可以是单字节也可以是突发访问。
数据包格式
CC1101的数据包的格式可以配置为由以下部分组成:
■ 前导
■ 同步字
■ 可选的长度字节
■ 可选的地址字节
■ 有效载荷
■ 可选的2 字节CRC

以范例程序来说明:
主程序中有这么两句:
#define  PACKET_LEN         (0x05)
const unsigned char TxBuffer[6]=
{PACKET_LEN, 0x27, 'L', 'S', 'D', '.'};
这就是定义了一个数据包,第一句是定义数据包的长度(不包括本身),第二句定义了一个6字节的数组,其中包括PACKET_LEN(数据包长度)、0x27(地址)、和后面的用户数据。
数据包的长度是5,定义的数组是6,因为要包括数据长度字。
下面可以看一下收到的效果:

因为没有可以显示的设备,所以只能在程序中设断点查看,看方框中的数据:
0x05(数据包长度)、0x27(地址)被显示成了字符”’”、以及用户数据“LSD.”、还有两个数据0xff0xac就是下面要说的RSSILQI

RSSI和LQI

RSSI(接收信号强度指示)、LQI(链路质量指示)和CRC 状态的两个状态字节可以附加在RX FIFO
个人笔记,仅供参考

CC430学习笔记----(三).pdf (1.45 MB, 下载次数: 100)
分享到:
回复

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /3 下一条