突破渴望

(原创)24L01收发数据-续1

0
阅读(3915)

接着上一个话题,24L01作为飞思卡尔汽车设计大赛必不可少的一个原件,我就24L01收发数据的问题做进一步的扩充。

24L01无论何时收到确认,都会认为上一个数据包发送成功,这个数据包将被从发送缓冲区清除,并且把TX_DS IRQ置为高。

每次开始spi写,读回来的都是状态字。

射频收发工作在2.4~2.4835G

收发共用天线接口

GFSK调制

250k,1M,2M的空中速率

发射输出功率最高0dBm,即1mW

6路1对6星型网络(使用6个data pipe)

增强型ShockBurst包格式

 

前置域1byte

地址域3-5byte

包控制域9bit

载荷0-32字节

CRC1-2字节

地址域是接收机地址

包控制域

 

载荷长度6bit

Pid2bit

NO_ACK1bit

载荷长度6bit说明最多32字节

Pid用于包编号,用于确定是重发包还是新包

NO_ACK用于表示是否自动应答,如为1则表示无需自动应答

自动应答的延时和重发次数是可编程的。

/********************************************************************************/

/*函数:void SetRX_Mode(void)

/*功能:数据接收配置

/********************************************************************************/

void SetRX_Mode(void)

{

         NRFCE=0; 

         SPI_RW_Reg(WRITE_REG + CONFIG, 0x0f);                  // IRQ收发完成中断响应,16位CRC,主接收  

         NRFCE = 1;

         Dly_10us(15);                     //old is '130'

}

将00001111写入config寄存器

以下是config寄存器说明

 

保留,为0

MASK_RX_DR

MASK_TX_DS

MASK_MAX_RT

EN_CRC

CRCO

PWR_UP

PRIM_RX

 

MASK_RX_DR  和MASK_TX_DS和MASK_MAX_RT 主要用于设置status寄存器中的这三位表示的事件发生时是否通过IRQ引脚来反映,1,不反映在IRQ上,0反映在IRQ上。

EN_CRC:1,启用CRC校验,0不启用

CRCO:0:1个字节crc,1:两个字节crc

PWR_UP:1:powerup  0:powerdown

PRIM_RX:1:PRX  0:PTX

 确实,学习电子的同学都知道,格式控制最繁琐,也是电子的核心之所在,希望大家能对24L01有更加深入的认识,希望大家能共同探讨,共同进步!