系统级RF芯片nRF24E1收发原理与应用编程
ShockBurst数据包的总位数最多不能超过256位,可通过式(1)计算有效数据的最大位数。
DATAx_W(bits)=256-ADDR_W-CRC (1)
其中:ADDR_W为配置字中B[32:18]所设置的接收地址的长度,8位~40位;CRC为配置字B[17]所设置的校验字,8位或16位。4位或8位前缀是自动加进去的,不占用数据包的位数。由式(1)可知,要想在每个数据包中得到更长的有效数据,可减少地址和CRC校验位。
3.3 收发常用的配置
在两个接收频道的方式下,nRF24E1同时接收来自两个不同频率频道的数据。第一个频道的频率在配置字B[7-1]中设置,第二个频道通常比第一个频道的频率高8MHz。RX2_EN(B[15])为第二个频道的使能位:RX2_EN=0时,第二个频道不工作;RX2_EN=1时,第二个频道使能。RFDR_SB为收发速率设置位:RFDR_SB(B[13])=0时,收发速率为250kbps;RFDR_SB=1时,收发速率为1Mbps。16MHz晶振时,250kbps的收发灵敏度比1Mbps的高10dB。XO_F(B[12-10])为晶振选择位。RF_PWR(B[9-8])设置nRF24E1射频输出功率。
RF_CH#(B[7-1])设置nRF24E1的工作频率,可通过式(2)计算发射频率和频道1的接收频率,通过式(3)计算频道2的接收频率。RXEN为收发切换位。
ChannelRF=2400MHz+RF_CH#×1.0MHz (2)
ChannelRF=2400MHz+RF_CH#×1.0MHz+8MHz (3)
4 数据包描述
完整的射频数据包由四部分组成:前缀、地址、有效数据和CRC。前缀一般是8位,也要吧设置为4位,由地址的首位决定。如果地址的首位是0,前缀为01010101;如果地址的首位是1,前缀为10101010。ShockBurst方式,前缀、地址和CRC都是在接收器收到数据包后自动移去只留有效数据。
5 应用中的程序
下面所述的程序都是在Keil C51 V7.07下调试通过的。限于篇幅,只分析其中的主要函数代码。
(1)系统初始化函数
void Init(void){
//配置I/O口
P0_ALT=0x06;//P0_ALT=00000110B,P0.1为RXD,P0.2为TXD
P0_DIR=0x09;//P0_DIR=00001001B,P0.0和P0.3设为输入
P1_DIR=0x03;//P1_DIR=00000011B,P1.0和P1.1设为输入
…………//其它I/O口配置
PWR_UP=1;//开Radio,读时不用,写时为电源
SPICLK=0;//SPI时钟为XTAL/8
SPI_CTRL=0x02;//把SPI与第一收发通道(CH1)相连
…………//串口配置、A/D配置等,或自己系统相关的一些配置
}
《系统级RF芯片nRF24E1收发原理与应用编程(第3页)》