ATY_LIB V2_102_230218
ATY_LIB for general devices or ALGO
 
Loading...
Searching...
No Matches
nrf24l01.c File Reference
#include "nrf24l01.h"

Go to the source code of this file.

Functions

void NRF24L01_WriteReg (uint8_t reg, uint8_t value)
 
uint8_t NRF24L01_ReadReg (uint8_t reg)
 
void NRF24L01_ReadToBuf (uint8_t reg, uint8_t len)
 
void NRF24L01_WriteFromBuf (uint8_t reg, const uint8_t *pBuf, uint8_t len)
 
void NRF24L01_PrintBuf (void)
 
void NRF24L01_FlushRX (void)
 
void NRF24L01_FlushTX (void)
 
void NRF24L01_CheckFlag (void)
 
uint8_t NRF24L01_HandelIrqFlag (void)
 
void NRF24L01_Tx (uint8_t *pBuf)
 
void NRF24L01_StartFastWrite (const void *pBuf)
 
uint8_t NRF24L01_WriteFast (const void *pBuf)
 
void NRF24L01_ResetTX (void)
 
uint8_t NRF24L01_Check (void)
 
void NRF24L01_Init (NRF24_MODE mode)
 

Variables

uint8_t __IDATA NRF24L01_xbuf [NRF24_PLOAD_WIDTH+1]
 
uint8_tNRF24L01_xbuf_data = NRF24L01_xbuf + 1
 
uint16_t NRF24L01_rxsn = 0
 
const uint8_t RX_ADDRESS [NRF24_ADDR_WIDTH] = {0x32,0x4E,0x6F,0x64,0x22}
 
const uint8_t TX_ADDRESS [NRF24_ADDR_WIDTH] = {0x32,0x4E,0x6F,0x64,0x65}
 

Function Documentation

◆ NRF24L01_Check()

uint8_t NRF24L01_Check ( void  )

Definition at line 144 of file nrf24l01.c.

145{
146 uint8_t i;
147 const uint8_t *ptr = (const uint8_t *)NRF24_TEST_ADDR;
150 for (i = 0; i < NRF24_ADDR_WIDTH; i++) {
152 if (*(NRF24L01_xbuf_data + i) != *ptr++) return 1;
153 }
154 return 0;
155}
unsigned char uint8_t
Definition: fw_types.h:18
void UART1_TxHex(uint8_t hex)
Definition: fw_uart.c:79
uint8_t __XDATA i
void NRF24L01_WriteFromBuf(uint8_t reg, const uint8_t *pBuf, uint8_t len)
Definition: nrf24l01.c:52
void NRF24L01_ReadToBuf(uint8_t reg, uint8_t len)
Definition: nrf24l01.c:43
#define NRF24_TEST_ADDR
Definition: nrf24l01.h:102
#define NRF24_CMD_W_REGISTER
Definition: nrf24l01.h:31
#define NRF24_ADDR_WIDTH
Definition: nrf24l01.h:100
#define NRF24_CMD_R_REGISTER
Definition: nrf24l01.h:30
#define NRF24_REG_TX_ADDR
Definition: nrf24l01.h:62
uint8_t * NRF24L01_xbuf_data
Definition: nrf24l01.c:18

◆ NRF24L01_CheckFlag()

void NRF24L01_CheckFlag ( void  )

Definition at line 87 of file nrf24l01.c.

88{
89 // Read the status & reset the flags
91}
void NRF24L01_WriteReg(uint8_t reg, uint8_t value)
Definition: nrf24l01.c:24
#define NRF24_FLAG_MAX_RT
Definition: nrf24l01.h:81
#define NRF24_FLAG_RX_DREADY
Definition: nrf24l01.h:79
#define NRF24_REG_STATUS
Definition: nrf24l01.h:53
#define NRF24_FLAG_TX_DSENT
Definition: nrf24l01.h:80

◆ NRF24L01_FlushRX()

void NRF24L01_FlushRX ( void  )

Flush the RX FIFO

Definition at line 74 of file nrf24l01.c.

75{
77}
#define NRF24_CMD_NOP
Definition: nrf24l01.h:40
#define NRF24_CMD_FLUSH_RX
Definition: nrf24l01.h:35

◆ NRF24L01_FlushTX()

void NRF24L01_FlushTX ( void  )

Flush the TX FIFO

Definition at line 82 of file nrf24l01.c.

83{
85}
#define NRF24_CMD_FLUSH_TX
Definition: nrf24l01.h:34

◆ NRF24L01_HandelIrqFlag()

uint8_t NRF24L01_HandelIrqFlag ( void  )

Definition at line 93 of file nrf24l01.c.

94{
95 uint8_t status, tx_ds, max_rt, rx_dr, pipe_num;
97 status = NRF24L01_xbuf[0];
98 pipe_num = (status >> 1) & 0x07;
99 if (pipe_num != 0x07)
100 {
103 }
104 return status;
105}
uint16_t NRF24L01_rxsn
Definition: nrf24l01.c:19
#define NRF24_CMD_R_RX_PAYLOAD
Definition: nrf24l01.h:32
#define NRF24_PLOAD_WIDTH
Definition: nrf24l01.h:101
void NRF24L01_CheckFlag(void)
Definition: nrf24l01.c:87
uint8_t __IDATA NRF24L01_xbuf[NRF24_PLOAD_WIDTH+1]
Definition: nrf24l01.c:17

◆ NRF24L01_Init()

void NRF24L01_Init ( NRF24_MODE  mode)

Definition at line 157 of file nrf24l01.c.

158{
159 NRF_CE = 0;
170 switch (mode)
171 {
172 case NRF24_MODE_TX:
174 break;
175 case NRF24_MODE_RX:
176 default:
178 break;
179 }
180 NRF_CE = 1;
181}
const uint8_t TX_ADDRESS[NRF24_ADDR_WIDTH]
Definition: nrf24l01.c:21
const uint8_t RX_ADDRESS[NRF24_ADDR_WIDTH]
Definition: nrf24l01.c:22
#define NRF24_REG_CONFIG
Definition: nrf24l01.h:46
#define NRF24_REG_RF_SETUP
Definition: nrf24l01.h:52
#define NRF24_REG_EN_RXADDR
Definition: nrf24l01.h:48
#define NRF24_REG_RF_CH
Definition: nrf24l01.h:51
#define NRF_CE
Definition: nrf24l01.h:26
@ NRF24_MODE_TX
Definition: nrf24l01.h:107
@ NRF24_MODE_RX
Definition: nrf24l01.h:106
#define NRF24_REG_EN_AA
Definition: nrf24l01.h:47
#define NRF24_REG_RX_ADDR_P0
Definition: nrf24l01.h:56
#define NRF24_REG_RX_PW_P1
Definition: nrf24l01.h:64
#define NRF24_REG_RX_ADDR_P1
Definition: nrf24l01.h:57
#define NRF24_REG_RX_PW_P0
Definition: nrf24l01.h:63
#define NRF24_REG_SETUP_RETR
Definition: nrf24l01.h:50

◆ NRF24L01_PrintBuf()

void NRF24L01_PrintBuf ( void  )

Definition at line 61 of file nrf24l01.c.

62{
63 uint8_t i;
64 for (i = 0; i < NRF24_PLOAD_WIDTH + 1; i++)
65 {
67 }
68 UART1_TxString("\r\n");
69}
void UART1_TxString(uint8_t *str)
Definition: fw_uart.c:85

◆ NRF24L01_ReadReg()

uint8_t NRF24L01_ReadReg ( uint8_t  reg)

Definition at line 33 of file nrf24l01.c.

34{
35 NRF_CSN = 0;
36 NRF24L01_xbuf[0] = reg;
39 NRF_CSN = 1;
40 return NRF24L01_xbuf[1];
41}
void SPI_TxRxBytes(uint8_t *pBuf, uint8_t len)
Definition: fw_spi.c:28
#define NRF_CSN
Definition: nrf24l01.h:21

◆ NRF24L01_ReadToBuf()

void NRF24L01_ReadToBuf ( uint8_t  reg,
uint8_t  len 
)

Definition at line 43 of file nrf24l01.c.

44{
45 NRF_CSN = 0;
47 NRF24L01_xbuf[0] = reg;
49 NRF_CSN = 1;
50}

◆ NRF24L01_ResetTX()

void NRF24L01_ResetTX ( void  )

Definition at line 137 of file nrf24l01.c.

138{
140 NRF_CE = 0;
141 NRF_CE = 1;
142}

◆ NRF24L01_StartFastWrite()

void NRF24L01_StartFastWrite ( const void *  pBuf)

Definition at line 119 of file nrf24l01.c.

120{
122 NRF_CE = 1;
123}
#define NRF24_CMD_W_TX_PAYLOAD
Definition: nrf24l01.h:33

◆ NRF24L01_Tx()

void NRF24L01_Tx ( uint8_t pBuf)

Definition at line 107 of file nrf24l01.c.

108{
109 NRF_CE = 0;
112 NRF_CE = 1;
113 SYS_Delay(10); // for reliable DS state when SETUP_RETR is 0x13
114 NRF_CE = 0;
116 NRF_CE = 1;
117}
void SYS_Delay(uint16_t t)
Definition: fw_sys.c:65

◆ NRF24L01_WriteFast()

uint8_t NRF24L01_WriteFast ( const void *  pBuf)

Definition at line 125 of file nrf24l01.c.

126{
127 //Blocking only if FIFO is full. This will loop and block until TX is successful or fail
130 return 0;
131 }
132 }
134 return 1;
135}
uint8_t NRF24L01_ReadReg(uint8_t reg)
Definition: nrf24l01.c:33
void NRF24L01_StartFastWrite(const void *pBuf)
Definition: nrf24l01.c:143
#define NRF24_FLAG_TX_FULL
Definition: nrf24l01.h:82

◆ NRF24L01_WriteFromBuf()

void NRF24L01_WriteFromBuf ( uint8_t  reg,
const uint8_t pBuf,
uint8_t  len 
)

Definition at line 52 of file nrf24l01.c.

53{
54 NRF_CSN = 0;
55 NRF24L01_xbuf[0] = reg;
56 memcpy(NRF24L01_xbuf_data, pBuf, len);
58 NRF_CSN = 1;
59}

◆ NRF24L01_WriteReg()

void NRF24L01_WriteReg ( uint8_t  reg,
uint8_t  value 
)

Definition at line 24 of file nrf24l01.c.

25{
26 NRF_CSN = 0;
27 NRF24L01_xbuf[0] = reg;
30 NRF_CSN = 1;
31}
value
Definition: DS18B20_ATY.c:216

Variable Documentation

◆ NRF24L01_rxsn

uint16_t NRF24L01_rxsn = 0

Definition at line 19 of file nrf24l01.c.

◆ NRF24L01_xbuf

uint8_t __IDATA NRF24L01_xbuf[NRF24_PLOAD_WIDTH+1]

Definition at line 17 of file nrf24l01.c.

◆ NRF24L01_xbuf_data

uint8_t* NRF24L01_xbuf_data = NRF24L01_xbuf + 1

Definition at line 18 of file nrf24l01.c.

◆ RX_ADDRESS

const uint8_t RX_ADDRESS[NRF24_ADDR_WIDTH] = {0x32,0x4E,0x6F,0x64,0x22}

Definition at line 21 of file nrf24l01.c.

◆ TX_ADDRESS

const uint8_t TX_ADDRESS[NRF24_ADDR_WIDTH] = {0x32,0x4E,0x6F,0x64,0x65}

Definition at line 22 of file nrf24l01.c.