Macros | Enumerations | Functions
rf.h File Reference
#include <stdint.h>

Go to the source code of this file.

Macros

#define NRF_STATUS_TX_FULL   (1<<0)
 
#define NRF_STATUS_RX_P_NO   (1<<1 | 1<<2 | 1<<3)
 
#define NRF_STATUS_MAX_RT   (1<<4)
 
#define NRF_STATUS_TX_DS   (1<<5)
 
#define NRF_STATUS_RX_DR   (1<<6)
 
#define NRF_STATUS_IRQ   (NRF_STATUS_MAX_RT | NRF_STATUS_TX_DS | NRF_STATUS_RX_DR)
 
#define NRF_STATUS_GET_TX_FULL(s)   (s & NRF_STATUS_TX_FULL)
 
#define NRF_STATUS_GET_RX_P_NO(s)   ((s & NRF_STATUS_RX_P_NO) >> 1)
 
#define NRF_STATUS_GET_MAX_RT(s)   ((s & NRF_STATUS_MAX_RT) >> 4)
 
#define NRF_STATUS_GET_TX_DS(s)   ((s & NRF_STATUS_TX_DS) >> 5)
 
#define NRF_STATUS_GET_RX_DR(s)   ((s & NRF_STATUS_RX_DR) >> 6)
 
#define NRF_FIFO_RX_EMPTY   (1<<0)
 
#define NRF_FIFO_RX_FULL   (1<<1)
 
#define NRF_FIFO_TX_EMPTY   (1<<4)
 
#define NRF_FIFO_TX_FULL   (1<<5)
 
#define NRF_CONFIG_PRIM_RX   (1<<0)
 
#define NRF_CONFIG_PWR_UP   (1<<1)
 
#define NRF_CONFIG_CRCO   (1<<2)
 
#define NRF_CONFIG_EN_CRC   (1<<3)
 
#define NRF_CONFIG_MASK_MAX_RT   (1<<4)
 
#define NRF_CONFIG_MASK_TX_DS   (1<<5)
 
#define NRF_CONFIG_MASK_RX_DR   (1<<6)
 
#define NRF_FEATURE_DYN_ACK   (1<<0)
 
#define NRF_FEATURE_ACK_PAYLOAD   (1<<1)
 
#define NRF_FEATURE_DPL   (1<<2)
 
#define NRF_RF_SETUP_RF_DR_LOW   (1<<5)
 
#define NRF_RF_SETUP_RF_DR_HIGH   (1<<3)
 
#define NRF_RF_SETUP_RF_PWR   (1<<1 | 1<<2)
 
#define NRF_SETUP_RETR_ARC   (1<<0 | 1<<1 | 1<<2 | 1<<3)
 
#define NRF_SETUP_RETR_ARD   (1<<4 | 1<<5 | 1<<6 | 1<<7)
 
#define NRF_MASK_PIPE0   (1<<0)
 
#define NRF_MASK_PIPE1   (1<<1)
 
#define NRF_MASK_PIPE2   (1<<2)
 
#define NRF_MASK_PIPE3   (1<<3)
 
#define NRF_MASK_PIPE4   (1<<4)
 
#define NRF_MASK_PIPE5   (1<<5)
 
#define NRF_CMD_READ_REGISTER   0b00000000
 
#define NRF_CMD_WRITE_REGISTER   0b00100000
 
#define NRF_CMD_READ_RX_PAYLOAD   0b01100001
 
#define NRF_CMD_WRITE_TX_PAYLOAD   0b10100000
 
#define NRF_CMD_FLUSH_TX   0b11100001
 
#define NRF_CMD_FLUSH_RX   0b11100010
 
#define NRF_CMD_REUSE_TX   0b11100011
 
#define NRF_CMD_ACTIVATE   0b01010000
 
#define NRF_CMD_READ_RX_PAYLOAD_WIDTH   0b01100000
 
#define NRF_CMD_WRITE_ACK_PAYLOAD   0b10101000
 
#define NRF_CMD_WRITE_TX_PAYLOAD_NO_ACK   0b10110000
 
#define NRF_CMD_NOP   0b11111111
 
#define NRF_REG_CONFIG   0x00
 
#define NRF_REG_EN_AA   0x01
 
#define NRF_REG_EN_RXADDR   0x02
 
#define NRF_REG_SETUP_AW   0x03
 
#define NRF_REG_SETUP_RETR   0x04
 
#define NRF_REG_RF_CH   0x05
 
#define NRF_REG_RF_SETUP   0x06
 
#define NRF_REG_STATUS   0x07
 
#define NRF_REG_OBSERVE_TX   0x08
 
#define NRF_REG_RPD   0x09
 
#define NRF_REG_RX_ADDR_P0   0x0A
 
#define NRF_REG_RX_ADDR_P1   0x0B
 
#define NRF_REG_RX_ADDR_P2   0x0C
 
#define NRF_REG_RX_ADDR_P3   0x0D
 
#define NRF_REG_RX_ADDR_P4   0x0E
 
#define NRF_REG_RX_ADDR_P5   0x0F
 
#define NRF_REG_TX_ADDR   0x10
 
#define NRF_REG_RX_PW_P0   0x11
 
#define NRF_REG_RX_PW_P1   0x12
 
#define NRF_REG_RX_PW_P2   0x13
 
#define NRF_REG_RX_PW_P3   0x14
 
#define NRF_REG_RX_PW_P4   0x15
 
#define NRF_REG_RX_PW_P5   0x16
 
#define NRF_REG_FIFO_STATUS   0x17
 
#define NRF_REG_DYNPD   0x1C
 
#define NRF_REG_FEATURE   0x1D
 

Enumerations

enum  NRF_SPEED { NRF_SPEED_250K = 0, NRF_SPEED_1M, NRF_SPEED_2M }
 
enum  NRF_POWER { NRF_POWER_M18DBM = 0, NRF_POWER_M12DBM, NRF_POWER_M6DBM, NRF_POWER_0DBM }
 
enum  NRF_AW { NRF_AW_3 = 0, NRF_AW_4, NRF_AW_5 }
 
enum  NRF_CRC { NRF_CRC_DISABLED = 0, NRF_CRC_1B, NRF_CRC_2B }
 
enum  NRF_RETR_DELAY {
  NRF_RETR_DELAY_250US = 0, NRF_RETR_DELAY_500US, NRF_RETR_DELAY_750US, NRF_RETR_DELAY_1000US,
  NRF_RETR_DELAY_1250US, NRF_RETR_DELAY_1500US, NRF_RETR_DELAY_1750US, NRF_RETR_DELAY_2000US,
  NRF_RETR_DELAY_2250US, NRF_RETR_DELAY_2500US, NRF_RETR_DELAY_2750US, NRF_RETR_DELAY_3000US,
  NRF_RETR_DELAY_3250US, NRF_RETR_DELAY_3500US, NRF_RETR_DELAY_3750US, NRF_RETR_DELAY_4000US
}
 

Functions

void rf_init (void)
 
void rf_set_speed (NRF_SPEED speed)
 
void rf_set_power (NRF_POWER power)
 
void rf_set_address_width (NRF_AW aw)
 
void rf_set_crc_type (NRF_CRC crc_type)
 
void rf_set_retr_retries (int retries)
 
void rf_set_retr_delay (NRF_RETR_DELAY delay)
 
void rf_set_rx_addr (int pipe, const char *address, int addr_len)
 
void rf_set_tx_addr (const char *address, int addr_len)
 
void rf_write_tx_payload (const char *data, int length)
 
void rf_write_tx_payload_no_ack (const char *data, int length)
 
void rf_write_ack_payload (int pipe, const char *data, int length)
 
void rf_read_rx_payload (char *data, int length)
 
void rf_set_frequency (int freq)
 
int rf_get_frequency (void)
 
int rf_get_address_width (void)
 
void rf_power_up (void)
 
void rf_power_down (void)
 
void rf_mode_tx (void)
 
void rf_mode_rx (void)
 
void rf_enable_pipe_autoack (int pipes)
 
void rf_enable_pipe_address (int pipes)
 
void rf_enable_pipe_dlp (int pipes)
 
void rf_enable_features (int features)
 
void rf_flush_tx (void)
 
void rf_flush_rx (void)
 
void rf_flush_all (void)
 
void rf_clear_irq (void)
 
void rf_clear_rx_irq (void)
 
void rf_clear_tx_irq (void)
 
void rf_clear_maxrt_irq (void)
 
int rf_get_payload_width (void)
 
int rf_status (void)
 
int rf_fifo_status (void)
 
int rf_rx_power_detect (void)
 
void rf_write_reg (int reg, const char *data, int len)
 
void rf_write_reg_byte (int reg, char value)
 
void rf_read_reg (int reg, char *data, int len)
 
char rf_read_reg_byte (int reg)
 

Macro Definition Documentation

#define NRF_CMD_ACTIVATE   0b01010000
#define NRF_CMD_FLUSH_RX   0b11100010
#define NRF_CMD_FLUSH_TX   0b11100001
#define NRF_CMD_NOP   0b11111111
#define NRF_CMD_READ_REGISTER   0b00000000
#define NRF_CMD_READ_RX_PAYLOAD   0b01100001
#define NRF_CMD_READ_RX_PAYLOAD_WIDTH   0b01100000
#define NRF_CMD_REUSE_TX   0b11100011
#define NRF_CMD_WRITE_ACK_PAYLOAD   0b10101000
#define NRF_CMD_WRITE_REGISTER   0b00100000
#define NRF_CMD_WRITE_TX_PAYLOAD   0b10100000
#define NRF_CMD_WRITE_TX_PAYLOAD_NO_ACK   0b10110000
#define NRF_CONFIG_CRCO   (1<<2)
#define NRF_CONFIG_EN_CRC   (1<<3)
#define NRF_CONFIG_MASK_MAX_RT   (1<<4)
#define NRF_CONFIG_MASK_RX_DR   (1<<6)
#define NRF_CONFIG_MASK_TX_DS   (1<<5)
#define NRF_CONFIG_PRIM_RX   (1<<0)
#define NRF_CONFIG_PWR_UP   (1<<1)
#define NRF_FEATURE_ACK_PAYLOAD   (1<<1)
#define NRF_FEATURE_DPL   (1<<2)
#define NRF_FEATURE_DYN_ACK   (1<<0)
#define NRF_FIFO_RX_EMPTY   (1<<0)
#define NRF_FIFO_RX_FULL   (1<<1)
#define NRF_FIFO_TX_EMPTY   (1<<4)
#define NRF_FIFO_TX_FULL   (1<<5)
#define NRF_MASK_PIPE0   (1<<0)
#define NRF_MASK_PIPE1   (1<<1)
#define NRF_MASK_PIPE2   (1<<2)
#define NRF_MASK_PIPE3   (1<<3)
#define NRF_MASK_PIPE4   (1<<4)
#define NRF_MASK_PIPE5   (1<<5)
#define NRF_REG_CONFIG   0x00
#define NRF_REG_DYNPD   0x1C
#define NRF_REG_EN_AA   0x01
#define NRF_REG_EN_RXADDR   0x02
#define NRF_REG_FEATURE   0x1D
#define NRF_REG_FIFO_STATUS   0x17
#define NRF_REG_OBSERVE_TX   0x08
#define NRF_REG_RF_CH   0x05
#define NRF_REG_RF_SETUP   0x06
#define NRF_REG_RPD   0x09
#define NRF_REG_RX_ADDR_P0   0x0A
#define NRF_REG_RX_ADDR_P1   0x0B
#define NRF_REG_RX_ADDR_P2   0x0C
#define NRF_REG_RX_ADDR_P3   0x0D
#define NRF_REG_RX_ADDR_P4   0x0E
#define NRF_REG_RX_ADDR_P5   0x0F
#define NRF_REG_RX_PW_P0   0x11
#define NRF_REG_RX_PW_P1   0x12
#define NRF_REG_RX_PW_P2   0x13
#define NRF_REG_RX_PW_P3   0x14
#define NRF_REG_RX_PW_P4   0x15
#define NRF_REG_RX_PW_P5   0x16
#define NRF_REG_SETUP_AW   0x03
#define NRF_REG_SETUP_RETR   0x04
#define NRF_REG_STATUS   0x07
#define NRF_REG_TX_ADDR   0x10
#define NRF_RF_SETUP_RF_DR_HIGH   (1<<3)
#define NRF_RF_SETUP_RF_DR_LOW   (1<<5)
#define NRF_RF_SETUP_RF_PWR   (1<<1 | 1<<2)
#define NRF_SETUP_RETR_ARC   (1<<0 | 1<<1 | 1<<2 | 1<<3)
#define NRF_SETUP_RETR_ARD   (1<<4 | 1<<5 | 1<<6 | 1<<7)
#define NRF_STATUS_GET_MAX_RT (   s)    ((s & NRF_STATUS_MAX_RT) >> 4)
#define NRF_STATUS_GET_RX_DR (   s)    ((s & NRF_STATUS_RX_DR) >> 6)
#define NRF_STATUS_GET_RX_P_NO (   s)    ((s & NRF_STATUS_RX_P_NO) >> 1)
#define NRF_STATUS_GET_TX_DS (   s)    ((s & NRF_STATUS_TX_DS) >> 5)
#define NRF_STATUS_GET_TX_FULL (   s)    (s & NRF_STATUS_TX_FULL)
#define NRF_STATUS_IRQ   (NRF_STATUS_MAX_RT | NRF_STATUS_TX_DS | NRF_STATUS_RX_DR)
#define NRF_STATUS_MAX_RT   (1<<4)
#define NRF_STATUS_RX_DR   (1<<6)
#define NRF_STATUS_RX_P_NO   (1<<1 | 1<<2 | 1<<3)
#define NRF_STATUS_TX_DS   (1<<5)
#define NRF_STATUS_TX_FULL   (1<<0)

Enumeration Type Documentation

enum NRF_AW
Enumerator
NRF_AW_3 
NRF_AW_4 
NRF_AW_5 
enum NRF_CRC
Enumerator
NRF_CRC_DISABLED 
NRF_CRC_1B 
NRF_CRC_2B 
enum NRF_POWER
Enumerator
NRF_POWER_M18DBM 
NRF_POWER_M12DBM 
NRF_POWER_M6DBM 
NRF_POWER_0DBM 
Enumerator
NRF_RETR_DELAY_250US 
NRF_RETR_DELAY_500US 
NRF_RETR_DELAY_750US 
NRF_RETR_DELAY_1000US 
NRF_RETR_DELAY_1250US 
NRF_RETR_DELAY_1500US 
NRF_RETR_DELAY_1750US 
NRF_RETR_DELAY_2000US 
NRF_RETR_DELAY_2250US 
NRF_RETR_DELAY_2500US 
NRF_RETR_DELAY_2750US 
NRF_RETR_DELAY_3000US 
NRF_RETR_DELAY_3250US 
NRF_RETR_DELAY_3500US 
NRF_RETR_DELAY_3750US 
NRF_RETR_DELAY_4000US 
enum NRF_SPEED
Enumerator
NRF_SPEED_250K 
NRF_SPEED_1M 
NRF_SPEED_2M 

Function Documentation

void rf_clear_irq ( void  )
void rf_clear_maxrt_irq ( void  )
void rf_clear_rx_irq ( void  )
void rf_clear_tx_irq ( void  )
void rf_enable_features ( int  features)
void rf_enable_pipe_address ( int  pipes)
void rf_enable_pipe_autoack ( int  pipes)
void rf_enable_pipe_dlp ( int  pipes)
int rf_fifo_status ( void  )
void rf_flush_all ( void  )
void rf_flush_rx ( void  )
void rf_flush_tx ( void  )
int rf_get_address_width ( void  )
int rf_get_frequency ( void  )
int rf_get_payload_width ( void  )
void rf_init ( void  )
void rf_mode_rx ( void  )
void rf_mode_tx ( void  )
void rf_power_down ( void  )
void rf_power_up ( void  )
void rf_read_reg ( int  reg,
char *  data,
int  len 
)
char rf_read_reg_byte ( int  reg)
void rf_read_rx_payload ( char *  data,
int  length 
)
int rf_rx_power_detect ( void  )
void rf_set_address_width ( NRF_AW  aw)
void rf_set_crc_type ( NRF_CRC  crc_type)
void rf_set_frequency ( int  freq)
void rf_set_power ( NRF_POWER  power)
void rf_set_retr_delay ( NRF_RETR_DELAY  delay)
void rf_set_retr_retries ( int  retries)
void rf_set_rx_addr ( int  pipe,
const char *  address,
int  addr_len 
)
void rf_set_speed ( NRF_SPEED  speed)
void rf_set_tx_addr ( const char *  address,
int  addr_len 
)
int rf_status ( void  )
void rf_write_ack_payload ( int  pipe,
const char *  data,
int  length 
)
void rf_write_reg ( int  reg,
const char *  data,
int  len 
)
void rf_write_reg_byte ( int  reg,
char  value 
)
void rf_write_tx_payload ( const char *  data,
int  length 
)
void rf_write_tx_payload_no_ack ( const char *  data,
int  length 
)