ARM和WinCE6.0下nRF24L01的驱动设计

为了方便映射虚拟地址,在本驱动中将所用到的特殊功能寄存器的虚拟地址由自定义类CS3c2440SFR来进行组织。其中“sfr”是类CS3c2440SFR的实例,D()是一个自定义宏,其源码为“#define D(v_add)(*(volatile unsigned long*)v_add)”。
(2)NRF_Open()函数
NRF Open()函数主要实现了对初始化是否成功的判断及对nRF24L01进行初始配制。核心代码如下:
SPI_Write_Bur(WRITE REG+TX_ADDR,TX_ADDRESS,TX_ADR_WIDTH); //写本地默认地址
SPI_Write_Buf(WRITE_REG+RX_ADDR_P0,RX_ADDRESS,RX_ADR_WIDTH); //写接收端默认地址
SPI_RW_Reg(WRITE_REG+EN_AA,0x01);
SPI_RW_Reg(WRITE_REG+EN_RXADDR,0x01);
SPI_RW_Reg(WRITE_REG+RF_CH,0);//设置信道工作为2.4 GHz,收发必须一致
SPI_RW_Reg(WRITE_REG+RX_PW_P0,RX_PLOADWIDTH); //设置接收数据长度
SPI_RW_Reg(WRITE_REG+RF_SETUP,0x07);//设置发射速率为1 MHz,发射功率为最大值0 dB
(3)NRF_Read()函数
NRE_Read()函数实现了对接收缓冲区的读取并传送至应用程序。由于nRF24L01一次最多能接收32个字节的信息,所以该函数一次最多能传送32字节的信息。主要核心代码如下:
(4)NRF_Write()函数
NRE_Write()函数主要实现发送数据写入发送缓冲区并发送的功能。主要核心代码如下:
评论