网友juring作品
这篇笔记写的是RF1A的各种寄存器和指令,还有CC1101的数据包格式等。 指令:Command Strobes SRES 复位radio core SFSTXON 启用和校准频率合成器 SXOFF radio core进入睡眠状态 SCAL 校准频率合成器,并把它关掉 SRX 使能接收 STX 使能发送 SIDLE 退出RX / TX,关闭频率合成器,并退出WOR模式 SWOR 启动自动RX轮询序列(唤醒Radio,WOR) 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则将状态字返回至状态寄存中,状态字的定义如下图所示。
Bit7是radio core准备好标志位,0表示准备就绪;1表示内核还未准备好。 Bit6-4是radio core状态机的当前状态,分别是IDLE态、接收状态、发送状态、快速TX就绪、频率合成器校准中、PLL正在建立、RX FIFO溢出、TX FIFO溢出。 Bit3-0表示在RX FIFO或TX FIFO中可用的字节数。
Radio Core寄存器 Radio core有47个配置寄存器(从地址0x00~0x2E),如下图所示:
通过这些寄存器可以配置所需要的参数,比如版本号、同步字、信道,只有配置好了才可以按照期望工作,芯片上电或者复位之后,所有寄存器的值均恢复到芯片预定义的值,所以必须重新配置,也就是常说的初始化。 对着数据手册计算每个寄存器的值然后配置是一个繁琐的过程,为了避免这一过程,TI推出了SmartRF Studio软件,具有良好的人机交互界面,可以直接访问到芯片寄存器,用户只需要出入所需要的要求和功能参数,软件可以自动计算并生成各个主要寄存器的最佳配置(下一篇笔记会讲到SmartRF Studio的使用)。 而且这47个寄存器大多数仅用来测试,一般使用并不需要理会这些用不到的寄存器。 头文件中的定义:
Radio core还有12个状态寄存器,如下图:
这些寄存器都是只读型的,它们包含了radio core的状态信息。 比如当前版本号、解调器估计链路质量LQI、接受信号强度指示RSSI等。 头文件中的定义:
功率放大表PATABLE的存取 地址0x3E用于存取PATABLE,PATABLE是用来选择PA功率设置,即输出功率的大小。 PATABLE是一个8字节表,其定义了PA控制设置,PATABLE保存了8个PA功率值。一般用一个就够了,用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.”、还有两个数据0xff和0xac就是下面要说的RSSI和LQI。
RSSI和LQI
RSSI(接收信号强度指示)、LQI(链路质量指示)和CRC 状态的两个状态字节可以附加在RX FIFO。 个人笔记,仅供参考
|