µ¥Æ¬»ú¿Î³ÌÉè¼Æ - ͼÎÄ

ÄÏ»ª´óѧµçÆø¹¤³ÌѧԺ¿Î³ÌÉè¼Æ£¨ÂÛÎÄ£©

//nrf24l01.c

#include \#include \#include \#include \

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

uint8_t TX_ADDRESS[TX_ADR_WIDTH]= {0x13,0x31,0x63,0x66,0x85}; //¡À?¦Ì?¦Ì??¡¤ uint8_t RX_ADDRESS[RX_ADR_WIDTH]= {0x13,0x31,0x63,0x66,0x85}; //?¨®¨º?¦Ì??¡¤

uint8_t NRF24L01_RXDATA[32]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}; /*

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

uint8_t NRF_Write_Reg(uint8_t reg, uint8_t value) { uint8_t status; SPI_CSN_L(); status = SPI_RW(reg); SPI_RW(value); /* D¡ä¨ºy?Y */ SPI_CSN_H(); /* ???1???¡Â?t */ return status; } /*

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

uint8_t NRF_Read_Reg(uint8_t reg) { uint8_t reg_val; SPI_CSN_L(); SPI_RW(reg); reg_val = SPI_RW(0); /* ?¨¢¨¨?????¡ä??¡Â¡¤¦Ì??¨ºy?Y */ SPI_CSN_H(); /* ???1???¡Â?t */ return reg_val; } /*

***************************************************************** *****************************************************************

µÚ34Ò³£¬¹²69Ò³

ÄÏ»ª´óѧµçÆø¹¤³ÌѧԺ¿Î³ÌÉè¼Æ£¨ÂÛÎÄ£©

*/

uint8_t NRF_Write_Buf(uint8_t reg, uint8_t *pBuf, uint8_t uchars) { uint8_t i; uint8_t status; SPI_CSN_L(); /* ??¨ª¡§?¡Â?t */ status = SPI_RW(reg); /* D¡ä??¡ä??¡Â¦Ì??¡¤ */ for(i=0; i

*****************************************************************

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

uint8_t NRF_Read_Buf(uint8_t reg, uint8_t *pBuf, uint8_t uchars) { uint8_t i; uint8_t status; SPI_CSN_L(); /* ??¨ª¡§?¡Â?t */ status = SPI_RW(reg); /* D¡ä??¡ä??¡Â¦Ì??¡¤ */ for(i=0; i

/****************************************************************** * D¡ä¨ºy?Y¡ã¨¹

******************************************************************/ void NRF_TxPacket(uint8_t * tx_buf, uint8_t len) { SPI_CE_L(); //StandBy I?¡ê¨º? NRF_Write_Buf(WR_TX_PLOAD, tx_buf, len); // ¡Á¡ã??¨ºy?Y SPI_CE_H(); //????CE¡ê??¡è¡¤¡é¨ºy?Y¡¤¡é?¨ª } /*

*****************************************************************

µÚ35Ò³£¬¹²69Ò³

ÄÏ»ª´óѧµçÆø¹¤³ÌѧԺ¿Î³ÌÉè¼Æ£¨ÂÛÎÄ£©

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

u8 NRF_CHECK(void) { u8 buf[5]={0XA5,0XA5,0XA5,0XA5,0XA5}; u8 i; NRF_Write_Buf(NRF_WRITE_REG+TX_ADDR,buf,5); //?¨°nRF¦Ì???¡ä??¡ÂD¡ä¨¨?????¨ºy¡Á? buf[1] = 0X11; NRF_Read_Buf(TX_ADDR,buf,5); //?¨°nRF¦Ì???¡ä??¡ÂD¡ä¨¨?????¨ºy¡Á? for(i=0;i<5;i++) if(buf[i]!=0XA5) break; if(i!=5)return 0;//?¨°nRF¦Ì???¡ä??¡ÂD¡ä¨¨?????¨ºy¡Á? return 1; }

void NRF24L01_INIT(void) {

SPI_CE_L(); //StandBy I?¡ê¨º? SPI_CE_L(); NRF_Write_Buf(NRF_WRITE_REG+RX_ADDR_P0,RX_ADDRESS,RX_ADR_WIDTH);//D¡äRX?¨²¦Ì?¦Ì??¡¤ NRF_Write_Buf(NRF_WRITE_REG+TX_ADDR,TX_ADDRESS,TX_ADR_WIDTH); //D¡äTX?¨²¦Ì?¦Ì??¡¤ NRF_Write_Reg(NRF_WRITE_REG+EN_AA,0x01); NRF_Write_Reg(NRF_WRITE_REG+EN_RXADDR,0x01) NRF_Write_Reg(NRF_WRITE_REG+SETUP_RETR,0x1a); NRF_Write_Reg(NRF_WRITE_REG+RF_CH,40); //¨¦¨¨??RF¨ª¡§¦Ì¨¤?aCHANAL NRF_Write_Reg(NRF_WRITE_REG+RX_PW_P0,RX_PLOAD_WIDTH);//?? NRF_Write_Reg(NRF_WRITE_REG+RF_SETUP,0x26); NRF_Write_Reg(NRF_WRITE_REG + CONFIG, 0x0f); // IRQ¨º?¡¤¡é¨ª¨º3¨¦?D???¨¬¨®|¡ê?16??CRC¡ê??¡Â¡¤¡é?¨ª SPI_CE_H(); } /*

***************************************************************** * ?¨®¨º??¡ê¨º?

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

void SetRX_Mode(void)

µÚ36Ò³£¬¹²69Ò³

ÄÏ»ª´óѧµçÆø¹¤³ÌѧԺ¿Î³ÌÉè¼Æ£¨ÂÛÎÄ£©

{ SPI_CE_L(); NRF_Write_Reg(NRF_WRITE_REG + CONFIG, 0x0f); // IRQ¨º?¡¤¡é¨ª¨º3¨¦?D???¨¬¨®|¡ê?16??CRC ¡ê??¡Â?¨®¨º? SPI_CE_H(); } /*

***************************************************************** * ¡¤¡é?¨ª?¡ê¨º?

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

void SetTX_Mode(void) { SPI_CE_L(); NRF_Write_Reg(NRF_WRITE_REG + CONFIG, 0x0e); // IRQ¨º?¡¤¡é¨ª¨º3¨¦?D???¨¬¨®|¡ê?16??CRC¡ê??¡Â¡¤¡é?¨ª SPI_CE_H(); }

/*======================================================================*/

void NRF_IRQ(void) { uint8_t sta = NRF_Read_Reg(NRF_READ_REG + NRFRegSTATUS); if(sta & (1<

NRF_Read_Buf(0x61,NRF24L01_RXDATA,32);// read receive payload from RX_FIFO buffer NRF_Write_Reg(0x27, 0xff);//??3ynrf¦Ì??D??¡À¨º???? } if(sta & (1<

void NRF_GPIO_Interrupt_Init(void) //nRF¨º1¨®?¦Ì?¨ªa2??D??¦Ì?¨°y??3?¨º??¡¥ { SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOE);

GPIOPinTypeGPIOInput(GPIO_PORTE_BASE,GPIO_PIN_2); IntEnable(INT_GPIOE);

µÚ37Ò³£¬¹²69Ò³

ÁªÏµ¿Í·þ£º779662525#qq.com(#Ìæ»»Îª@)