基于nrf24l01的无线通信模块设计报告正文内容摘要:

0x04 // 自动重发功能设置 define RF_CH 0x05 // 工作频率设置 define RF_SETUP 0x06 // 发射速率、功耗功能设置 define STATUS 0x07 // 状态寄存器 define OBSERVE_TX 0x08 // 发送监测功能 define CD 0x09 // 地址检测 define RX_ADDR_P0 0x0A // 频道 0 接收数据地址 define RX_ADDR_P1 0x0B // 频道 1 接收数据地址 define RX_ADDR_P2 0x0C // 频道 2 接收数据地址 define RX_ADDR_P3 0x0D // 频道 3 接收数据地址 define RX_ADDR_P4 0x0E // 频道 4 接收数据地址 define RX_ADDR_P5 0x0F // 频道 5 接收数据地址 define TX_ADDR 0x10 // 发送地址寄存器 define RX_PW_P0 0x11 // 接收频道 0 接收数据长度 define RX_PW_P1 0x12 // 接收频道 0 接收数据长度 define RX_PW_P2 0x13 // 接收频道 0 接收数据长度 define RX_PW_P3 0x14 // 接收频道 0 接收数据长度 define RX_PW_P4 0x15 // 接收频道 0 接收数据长度 第 21 页 define RX_PW_P5 0x16 // 接收频道 0 接收数据长度 define FIFO_STATUS 0x17 // FIFO 栈入栈出状态寄存器设置 //************************************************************************************** // 函数声明******************************************************************************* /****************************************************************************************/ void write_(unsigned char )。 void write_date(unsigned char date)。 void Delay(unsigned int s)。 void inerDelay_us(unsigned char n)。 void init_nRF24L01(void)。 unsigned int SPI_RW(unsigned int uuchar)。 unsigned char SPI_Read(unsigned char reg)。 void SetRX_Mode(void)。 void tetRX_Mode(void)。 unsigned int SPI_RW_Reg(unsigned char reg, unsigned char value)。 unsigned int SPI_Read_Buf(unsigned char reg, unsigned char *pBuf, unsigned char uchars)。 unsigned char nRF24L01_RxPacket(unsigned char*rx_buf)。 void nRF24L01_TxPacket(unsigned char *tx_buf)。 //*****************************************长延时 void Delay(unsigned int s) { unsigned int i。 for(i=0。 is。 i++)。 for(i=0。 is。 i++)。 } //***************************************************************************** bdata sta。 //状态标志 sbit RX_DR =sta^6。 第 22 页 sbit TX_DS =sta^5。 sbit MAX_RT =sta^4。 /***************************************************************************** /*延时函数 */ void inerDelay_us(unsigned char n) { for(。 n0。 n) _nop_()。 } //*************************************************************************** /*lcd1602 写命令 //***************************************************************************/ void write_(unsigned char ) { lcdrs=0。 P0=。 Delay(5)。 lcden=1。 Delay(5)。 lcden=0。 } //**************************************************************************** /*lcd1602 初始化 //****************************************************************************/ void init() { lcden=0。 write_(0x38)。 第 23 页 write_(0x0c)。 write_(0x06)。 write_(0x01)。 } //*************************************************************************** /*lcd1602 写数据 //***************************************************************************/ void write_date(unsigned char date) { lcdrs=0。 P0=date。 Delay(5)。 lcden=1。 Delay(5)。 lcden=0。 } //***************************************************************************** /*nRF24L01 初始化 //*****************************************************************************/ void init_nRF24L01(void) { inerDelay_us(100)。 CE=0。 // chip enable CSN=1。 // Spi disable SCK=0。 // Spi clock line init high } /****************************************************************************** 第 24 页 /*函数: uint SPI_RW(uint uchar) /*功能: nRF24L01 的 SPI 写时序 /**************************************************************************/ unsigned int SPI_RW(unsigned int uuchar) { unsigned int bit_ctr。 for(bit_ctr=0。 bit_ctr8。 bit_ctr++) // output 8bit { MOSI = (uuchar amp。 0x80)。 // output 39。 uchar39。 , MSB to MOSI uuchar = (uuchar 1)。 // shift next bit into MSB.. SCK = 1。 // Set SCK high.. uuchar |= MISO。 // capture current MISO bit SCK = 0。 // ..then set SCK low again } return(uuchar)。 // return read uchar } /****************************************************************************** /*函数: uchar SPI_Read(uchar reg) /*功能: nRF24L01 的 SPI 时序 /*****************************************************************************/ unsigned char SPI_Read(unsigned char reg) { unsigned char reg_val。 CSN = 0。 // CSN low, initialize SPI munication... SPI_RW(reg)。 // Select register to read from.. reg_val = SPI_RW(0)。 // ..then read registervalue CSN = 1。 // CSN high, terminate SPI munication return(reg_val)。 // return register value } /************************************************************************** 第 25 页 ***/ /*功能: nRF24L01 读写寄存器函数 /*****************************************************************************/ unsigned int SPI_RW_Reg(unsigned char reg, unsigned char value) { unsigned int status。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。