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 (uint8_t *tx_ds, uint8_t *max_rt, uint8_t *rx_dr)
 
uint8_t NRF24L01_RxAvailable (uint8_t *pipe_num)
 
void 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 xbuf [NRF24_PLOAD_WIDTH+1]
 
uint8_txbuf_data = xbuf + 1
 
uint16_t NRF24L01_rxsn = 0
 
const uint8_t TX_ADDRESS [NRF24_ADDR_WIDTH] = {0x32,0x4E,0x6F,0x64,0x22}
 
const uint8_t RX_ADDRESS [NRF24_ADDR_WIDTH] = {0x32,0x4E,0x6F,0x64,0x65}
 

Function Documentation

◆ NRF24L01_Check()

uint8_t NRF24L01_Check ( void  )

Definition at line 168 of file nrf24l01.c.

169{
170 uint8_t i;
171 const uint8_t *ptr = (const uint8_t *)NRF24_TEST_ADDR;
174 for (i = 0; i < NRF24_ADDR_WIDTH; i++) {
175 UART1_TxHex(*(xbuf_data + i));
176 if (*(xbuf_data + i) != *ptr++) return 1;
177 }
178 return 0;
179}
unsigned char uint8_t
Definition: fw_types.h:18
void UART1_TxHex(uint8_t hex)
Definition: fw_uart.c:79
uint8_t __XDATA i
uint8_t * xbuf_data
Definition: nrf24l01.c:18
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

◆ NRF24L01_CheckFlag()

void NRF24L01_CheckFlag ( uint8_t tx_ds,
uint8_t max_rt,
uint8_t rx_dr 
)

Definition at line 87 of file nrf24l01.c.

88{
89 // Read the status & reset the status in one easy call
91 // Report to the user what happened
92 *tx_ds = xbuf[0] & NRF24_FLAG_TX_DSENT;
93 *max_rt = xbuf[0] & NRF24_FLAG_MAX_RT;
94 *rx_dr = xbuf[0] & NRF24_FLAG_RX_DREADY;
95}
void NRF24L01_WriteReg(uint8_t reg, uint8_t value)
Definition: nrf24l01.c:24
uint8_t __IDATA xbuf[NRF24_PLOAD_WIDTH+1]
Definition: nrf24l01.c:17
#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()

void NRF24L01_HandelIrqFlag ( void  )

Definition at line 111 of file nrf24l01.c.

112{
113 uint8_t tx_ds, max_rt, rx_dr, pipe_num;
114 NRF24L01_CheckFlag(&tx_ds, &max_rt, &rx_dr);
115 if (NRF24L01_RxAvailable(&pipe_num) == 1)
116 {
119 }
120 UART1_TxHex(tx_ds);
121 UART1_TxChar(' ');
122 UART1_TxHex(max_rt);
123 UART1_TxChar(' ');
124 UART1_TxHex(rx_dr);
125 UART1_TxChar(' ');
126 UART1_TxHex(pipe_num);
127 UART1_TxString("\r\n");
129}
void UART1_TxChar(char dat)
Definition: fw_uart.c:72
void UART1_TxString(uint8_t *str)
Definition: fw_uart.c:85
uint16_t NRF24L01_rxsn
Definition: nrf24l01.c:19
void NRF24L01_PrintBuf(void)
Definition: nrf24l01.c:61
uint8_t NRF24L01_RxAvailable(uint8_t *pipe_num)
Definition: nrf24l01.c:97
#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

◆ NRF24L01_Init()

void NRF24L01_Init ( NRF24_MODE  mode)

Definition at line 181 of file nrf24l01.c.

182{
183 NRF_CE = 0;
194 switch (mode)
195 {
196 case NRF24_MODE_TX:
198 break;
199 case NRF24_MODE_RX:
200 default:
202 break;
203 }
204 NRF_CE = 1;
205}
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}

◆ NRF24L01_ReadReg()

uint8_t NRF24L01_ReadReg ( uint8_t  reg)

Definition at line 33 of file nrf24l01.c.

34{
35 NRF_CSN = 0;
36 xbuf[0] = reg;
39 NRF_CSN = 1;
40 return 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 xbuf[0] = reg;
48 SPI_TxRxBytes(xbuf, len + 1);
49 NRF_CSN = 1;
50}

◆ NRF24L01_ResetTX()

void NRF24L01_ResetTX ( void  )

Definition at line 161 of file nrf24l01.c.

162{
164 NRF_CE = 0;
165 NRF_CE = 1;
166}

◆ NRF24L01_RxAvailable()

uint8_t NRF24L01_RxAvailable ( uint8_t pipe_num)

Definition at line 97 of file nrf24l01.c.

98{
99 uint8_t pipe;
101 pipe = (xbuf[0] >> 1) & 0x07;
102 if (pipe > 5)
103 return 0;
104 // If the caller wants the pipe number, include that
105 if (pipe_num)
106 *pipe_num = pipe;
107
108 return 1;
109}
uint8_t NRF24L01_ReadReg(uint8_t reg)
Definition: nrf24l01.c:33

◆ NRF24L01_StartFastWrite()

void NRF24L01_StartFastWrite ( const void *  pBuf)

Definition at line 143 of file nrf24l01.c.

144{
146 NRF_CE = 1;
147}
#define NRF24_CMD_W_TX_PAYLOAD
Definition: nrf24l01.h:33

◆ NRF24L01_Tx()

void NRF24L01_Tx ( uint8_t pBuf)

Definition at line 131 of file nrf24l01.c.

132{
133 NRF_CE = 0;
136 NRF_CE = 1;
137 SYS_Delay(10); // for reliable DS state when SETUP_RETR is 0x13
138 NRF_CE = 0;
140 NRF_CE = 1;
141}
void SYS_Delay(uint16_t t)
Definition: fw_sys.c:65

◆ NRF24L01_WriteFast()

uint8_t NRF24L01_WriteFast ( const void *  pBuf)

Definition at line 149 of file nrf24l01.c.

150{
151 //Blocking only if FIFO is full. This will loop and block until TX is successful or fail
153 if (xbuf[0] & NRF24_FLAG_MAX_RT) {
154 return 0;
155 }
156 }
158 return 1;
159}
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 xbuf[0] = reg;
56 memcpy(xbuf_data, pBuf, len);
57 SPI_TxRxBytes(xbuf, len + 1);
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 xbuf[0] = reg;
28 xbuf[1] = value;
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.

◆ RX_ADDRESS

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

Definition at line 22 of file nrf24l01.c.

◆ TX_ADDRESS

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

Definition at line 21 of file nrf24l01.c.

◆ xbuf

uint8_t __IDATA xbuf[NRF24_PLOAD_WIDTH+1]

Definition at line 17 of file nrf24l01.c.

◆ xbuf_data

uint8_t* xbuf_data = xbuf + 1

Definition at line 18 of file nrf24l01.c.