38 #define EN_RXADDR 0x02
40 #define SETUP_RETR 0x04
44 #define OBSERVE_TX 0x08
46 #define RX_ADDR_P0 0x0A
47 #define RX_ADDR_P1 0x0B
48 #define RX_ADDR_P2 0x0C
49 #define RX_ADDR_P3 0x0D
50 #define RX_ADDR_P4 0x0E
51 #define RX_ADDR_P5 0x0F
59 #define FIFO_STATUS 0x17
105 #define R_REGISTER 0x00
106 #define W_REGISTER 0x20
107 #define REGISTER_MASK 0x1F
108 #define R_RX_PAYLOAD 0x61
109 #define W_TX_PAYLOAD 0xA0
110 #define FLUSH_TX 0xE1
111 #define FLUSH_RX 0xE2
112 #define REUSE_TX_PL 0xE3
120 #define W_TX_PAYLOAD_NO_ACK 0xB0
126 #define RF_PWR_HIGH 2
129 #define mirf_ADDR_LEN 5
153 #define mirf_CONFIG ((1 << MASK_TX_DS) | (1 << EN_CRC) | (0 << CRCO))
uint8_t Nrf24_getDataPipe()
Get pipe number for reading.
Definition: mirf.c:279
void spi_csnLow()
Set CSN Low.
Definition: mirf.c:163
void Nrf24_configRegister(uint8_t reg, uint8_t value)
Clocks only one byte into the given MiRF register.
Definition: mirf.c:317
void Nrf24_ceHi()
Set CE High.
Definition: mirf.c:483
bool spi_read_byte(uint8_t *Datain, uint8_t DataLength)
Reads data from MISO.
Definition: mirf.c:117
void Nrf24_powerUpTx(bool *PTX)
Sets the NRF to TX mode.
Definition: mirf.c:475
void Nrf24_getData(uint8_t *data)
Reads NRF payload bytes into data array.
Definition: mirf.c:296
void Nrf24_powerUpRx(bool *PTX)
Starts up the NRF to be RX, the default.
Definition: mirf.c:457
rf24_pa_dbm_e
Definition: mirf.h:161
@ RF24_PA_ERROR
Definition: mirf.h:166
@ RF24_PA_MIN
Definition: mirf.h:162
@ RF24_PA_LOW
Definition: mirf.h:163
@ RF24_PA_MAX
Definition: mirf.h:165
@ RF24_PA_HIGH
Definition: mirf.h:164
void Nrf24_SetOutputRF_PWR(uint8_t val)
Set TX Power.
Definition: mirf.c:501
bool spi_write_byte(uint8_t *Dataout, uint8_t DataLength)
This function writes data to MOSI. It checks if it is being used.
Definition: mirf.c:87
void Nrf24_config(bool *PTX)
This sends the necessary registers to the NRF. Initially on RX mode.
Definition: mirf.c:169
bool Nrf24_isSending(bool *PTX)
Test if chip is still sending. When sending has finished return chip to listening.
Definition: mirf.c:385
bool Nrf24_dataReady()
Checks if data is available for reading.
Definition: mirf.c:265
void Nrf24_powerDown()
Power down the NRF.
Definition: mirf.c:493
rf24_datarate_e
Definition: mirf.h:175
@ RF24_2MBPS
Definition: mirf.h:177
@ RF24_250KBPS
Definition: mirf.h:178
@ RF24_1MBPS
Definition: mirf.h:176
uint8_t Nrf24_getStatus()
Get the status of the NRF.
Definition: mirf.c:449
void spi_csnHi()
Set CSN High.
Definition: mirf.c:158
ErrorStatus Nrf24_setTADDR(uint8_t *adr)
Sets the transmitting device address.
Definition: mirf.c:208
void Nrf24_writeRegister(uint8_t reg, uint8_t *value, uint8_t len)
Writes an array of bytes into inte the MiRF registers.
Definition: mirf.c:344
bool Nrf24_isSend(int timeout, bool *PTX)
Test if Sending has finished or retry is over.
Definition: mirf.c:406
void Nrf24_addRADDR(uint8_t pipe, uint8_t adr)
Add more device addresses to recieve (NOT TESTED).
Definition: mirf.c:228
void Nrf24_setRetransmitDelay(uint8_t val)
Set Auto Retransmit Delay.
Definition: mirf.c:541
void Nrf24_init()
This function initializes the CE/CS Pins and SPI.
Definition: mirf.c:52
void Nrf24_send(uint8_t *value, bool *PTX)
Sends a data package to the default address. Be sure to send the correct amount of bytes as configure...
Definition: mirf.c:355
uint8_t spi_transfer(uint8_t address)
An SPI "transfer", used in this library to simply send an address or command to the NRF.
Definition: mirf.c:144
void Nrf24_ceLow()
Set CE Low.
Definition: mirf.c:488
ErrorStatus Nrf24_setRADDR(uint8_t *adr)
Sets the recieving address (5) bytes!
Definition: mirf.c:184
void Nrf24_SetSpeedDataRates(uint8_t val)
Select between the high speed data rates.
Definition: mirf.c:516
bool Nrf24_rxFifoEmpty()
Checks if FIFO is empty.
Definition: mirf.c:287
void Nrf24_readRegister(uint8_t reg, uint8_t *value, uint8_t len)
Reads an array of bytes from the given start position in the MiRF registers.
Definition: mirf.c:330
rf24_crclength_e
Definition: mirf.h:187
@ RF24_CRC_16
Definition: mirf.h:190
@ RF24_CRC_DISABLED
Definition: mirf.h:188
@ RF24_CRC_8
Definition: mirf.h:189
void Nrf24_flushRx()
Flushes RX FIFO.
Definition: mirf.c:467