微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > STM32+NRF24L01无线

STM32+NRF24L01无线

时间:11-19 来源:互联网 点击:

{ i=2; while(i--); } } ///**************************************************************************************** ///*NRF24L01初始化 ///***************************************************************************************/ void init_NRF24L01(void) { u8 buf[5]={0}; Delay_us(100); CE_L(); // chip enable CSN_H(); // Spi disable SPI_Read_Buf(TX_ADDR, buf, TX_ADR_WIDTH);//debug 测试原来的本地地址:复位值是:0xE7 0xE7 0xE7 0xE7 0xE7 // SPI_Write_Buf(WRITE_REG + TX_ADDR, TX_ADDRESS, TX_ADR_WIDTH); // 写本地地址 // SPI_Write_Buf(WRITE_REG + RX_ADDR_P0, RX_ADDRESS, RX_ADR_WIDTH); // 写接收端地址 // // SPI_WR_Reg(WRITE_REG + EN_AA, 0x01); // 频道0自动 ACK应答允许 // SPI_WR_Reg(WRITE_REG + EN_RXADDR, 0x01); // 允许接收地址只有频道0,如果需要多频道可以参考Page21 // SPI_WR_Reg(WRITE_REG + SETUP_RETR, 0x1a); // 设置自动重发时间和次数:500us + 86us, 10 retrans... // SPI_WR_Reg(WRITE_REG + RF_CH, 22); // 设置信道工作为2.4GHZ,收发必须一致 // SPI_WR_Reg(WRITE_REG + RX_PW_P0, RX_PLOAD_WIDTH); //设置接收数据长度,本次设置为32字节 // SPI_WR_Reg(WRITE_REG + RF_SETUP, 0x07); //设置发射速率为1MHZ,发射功率为最大值0dB // // SPI_RD_Reg(WRITE_REG + EN_AA); // SPI_RD_Reg(WRITE_REG + EN_RXADDR); // SPI_RD_Reg(WRITE_REG + RF_CH); // SPI_RD_Reg(WRITE_REG + RX_PW_P0); // SPI_RD_Reg(WRITE_REG + RF_SETUP); } ///**************************************************************************************************** ///*函数:uchar SPI_Read(u8 reg) ///*功能:NRF24L01的SPI时序 ///****************************************************************************************************/ u8 SPI_RD_Reg(u8 reg) { u8 reg_val; CSN_L(); // CSN low, initialize SPI communication... NRF24SPI_Send_Byte(reg); // Select register to read from.. reg_val = NRF24SPI_Send_Byte(0); // ..then read registervalue CSN_H(); // CSN high, terminate SPI communication return(reg_val); // return register value } //****************************************************************************************************/ //*功能:NRF24L01读写寄存器函数 //****************************************************************************************************/ u8 SPI_WR_Reg(u8 reg, u8 value) { u8 status; CSN_L(); // CSN low, init SPI transaction status = NRF24SPI_Send_Byte(reg);// select register NRF24SPI_Send_Byte(value); // ..and write value to it.. CSN_H(); // CSN high again return(status); // return nRF24L01 status u8 } ///****************************************************************************************************/ //*函数:uint SPI_Read_Buf(u8 reg, u8 *pBuf, u8 Len) //*功能: 用于读数据,reg:为寄存器地址,pBuf:为待读出数据地址,uchars:读出数据的个数 //****************************************************************************************************/ u8 SPI_Read_Buf(u8 reg, u8 *pBuf, u8 Len) { uint status,i; CSN_L(); // Set CSN low, init SPI tranaction status = NRF24SPI_Send_Byte(reg); // Select register to write to and read status u8 for(i=0;i

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top