Low-level driver for nrf24l01+ transceiver. More...
Low-level driver for nrf24l01+ transceiver.
Files | |
| file | nrf24l01p.h |
| file | nrf24l01p_settings.h |
| Low-level driver for nrf24l01+ transceiver. | |
| file | nrf24l01p_ng_types.h |
| Definitions of user visible types for the NRF24L01+ (NG) device driver. | |
Data Structures | |
| struct | nrf24l01p_t |
| Structure that represents the hardware setup of the nrf24l01+ transceiver. More... | |
Functions | |
| int | nrf24l01p_read_reg (const nrf24l01p_t *dev, char reg, char *answer) |
| Read one register of the nrf24l01+ transceiver. More... | |
| int | nrf24l01p_write_reg (const nrf24l01p_t *dev, char reg, char write) |
| Write one register to the nrf24l01+ transceiver. More... | |
| int | nrf24l01p_init (nrf24l01p_t *dev, spi_t spi, gpio_t ce, gpio_t csn, gpio_t irq) |
| Initialize the nrf24l01+ transceiver. More... | |
| int | nrf24l01p_on (const nrf24l01p_t *dev) |
| Power on the nrf24l01+ transceiver. More... | |
| int | nrf24l01p_off (const nrf24l01p_t *dev) |
| Power off the nrf24l01+ transceiver. More... | |
| void | nrf24l01p_transmit (const nrf24l01p_t *dev) |
| Transmit payload laying in TX FIFO of the nrf24l01+ transceiver. More... | |
| int | nrf24l01p_read_payload (const nrf24l01p_t *dev, char *answer, unsigned int size) |
| Read payload from RX FIFO of the nrf24l01+ transceiver. More... | |
| void | nrf24l01p_register (nrf24l01p_t *dev, unsigned int *pid) |
| Register a given ID to the nrf24l01+ transceiver. More... | |
| int | nrf24l01p_enable_dynamic_payload (const nrf24l01p_t *dev, nrf24l01p_rx_pipe_t pipe) |
| Enable dynamic payload for the pipe on give nrf24l01+ transceiver. More... | |
| int | nrf24l01p_enable_dynamic_ack (const nrf24l01p_t *dev) |
| Enable dynamic ack for the nrf24l01+ transceiver. More... | |
| int | nrf24l01p_unregister (nrf24l01p_t *dev, unsigned int pid) |
| Unregister the nrf24l01+ transceiver from his ID. More... | |
| void | nrf24l01p_get_id (const nrf24l01p_t *dev, unsigned int *pid) |
| Get ID from the nrf24l01p transceiver. More... | |
| void | nrf24l01p_start (const nrf24l01p_t *dev) |
| Start searching packets while in RX mode. More... | |
| void | nrf24l01p_stop (const nrf24l01p_t *dev) |
| Stop searching packets while in RX mode. More... | |
| int | nrf24l01p_preload (const nrf24l01p_t *dev, char *data, unsigned int size) |
| Preload TX FIFO with payload to transmit. More... | |
| int | nrf24l01p_set_channel (const nrf24l01p_t *dev, uint8_t chan) |
| Set the RF channel for the nrf24l01+ transceiver. More... | |
| int | nrf24l01p_set_address_width (const nrf24l01p_t *dev, nrf24l01p_aw_t aw) |
| Set the address width for the nrf24l01+ transceiver. More... | |
| int | nrf24l01p_set_payload_width (const nrf24l01p_t *dev, nrf24l01p_rx_pipe_t pipe, uint8_t width) |
| Set the RX payload width for the nrf24l01+ transceiver. More... | |
| int | nrf24l01p_set_tx_address (const nrf24l01p_t *dev, const uint8_t *saddr, unsigned int length) |
| Set the TX address for the nrf24l01+ transceiver (byte array). More... | |
| int | nrf24l01p_set_tx_address_long (const nrf24l01p_t *dev, uint64_t saddr, unsigned int length) |
| Set the TX address for the nrf24l01+ transceiver (long int). More... | |
| int | nrf24l01p_set_rx_address (const nrf24l01p_t *dev, nrf24l01p_rx_pipe_t pipe, const uint8_t *saddr, unsigned int length) |
| Set the RX address for the nrf24l01+ transceiver (byte array). More... | |
| int | nrf24l01p_set_rx_address_long (const nrf24l01p_t *dev, nrf24l01p_rx_pipe_t pipe, uint64_t saddr, unsigned int length) |
| Set the RX address for the nrf24l01+ transceiver (long int). More... | |
| uint64_t | nrf24l01p_get_tx_address_long (const nrf24l01p_t *dev) |
| Get the TX address for the nrf24l01+ transceiver (long int). More... | |
| uint64_t | nrf24l01p_get_rx_address_long (const nrf24l01p_t *dev, nrf24l01p_rx_pipe_t pipe) |
| Get the RX address for the nrf24l01+ transceiver (long int). More... | |
| int | nrf24l01p_set_datarate (const nrf24l01p_t *dev, nrf24l01p_dr_t dr) |
| Get the TX address for the nrf24l01+ transceiver (long int). More... | |
| int | nrf24l01p_get_status (const nrf24l01p_t *dev) |
| Get the status (register) of the nrf24l01+ transceiver device. More... | |
| int | nrf24l01p_set_power (const nrf24l01p_t *dev, int pwr) |
| Set the transmit power for the nrf24l01+ transceiver device. More... | |
| int | nrf24l01p_get_power (const nrf24l01p_t *dev) |
| Get the transmit power for the nrf24l01+ transceiver device. More... | |
| int | nrf24l01p_set_txmode (const nrf24l01p_t *dev) |
| Set the nrf24l01+ into TX mode. More... | |
| int | nrf24l01p_set_rxmode (const nrf24l01p_t *dev) |
| Set the nrf24l01+ into RX mode. More... | |
| int | nrf24l01p_reset_all_interrupts (const nrf24l01p_t *dev) |
| Reset all interrupts on the nrf24l01+ transceiver. More... | |
| int | nrf24l01p_reset_interrupts (const nrf24l01p_t *dev, char intrs) |
| Reset interrupts on the nrf24l01+ transceiver. More... | |
| int | nrf24l01p_mask_interrupt (const nrf24l01p_t *dev, char intr) |
| Mask one interrupt on the nrf24l01+ transceiver. More... | |
| int | nrf24l01p_unmask_interrupt (const nrf24l01p_t *dev, char intr) |
| Unmask one interrupt on the nrf24l01+ transceiver. More... | |
| int | nrf24l01p_enable_pipe (const nrf24l01p_t *dev, nrf24l01p_rx_pipe_t pipe) |
| Enable RX datapipe on the nrf24l01+ transceiver. More... | |
| int | nrf24l01p_disable_pipe (const nrf24l01p_t *dev, nrf24l01p_rx_pipe_t pipe) |
| Disable RX datapipe on the nrf24l01+ transceiver. More... | |
| int | nrf24l01p_disable_crc (const nrf24l01p_t *dev) |
| Disable CRC error detection on the nrf24l01+ transceiver. More... | |
| int | nrf24l01p_enable_crc (const nrf24l01p_t *dev, nrf24l01p_crc_t crc) |
| Enable CRC error detection on the nrf24l01+ transceiver. More... | |
| int | nrf24l01p_setup_auto_ack (const nrf24l01p_t *dev, nrf24l01p_rx_pipe_t pipe, nrf24l01p_retransmit_delay_t delay_retrans, char count_retrans) |
| Setup and enable automatic ACK and retransmission on the nrf24l01+ transceiver. More... | |
| int | nrf24l01p_disable_all_auto_ack (const nrf24l01p_t *dev) |
| Disable automatic ACK on the nrf24l01+ transceiver. More... | |
| int | nrf24l01p_flush_tx_fifo (const nrf24l01p_t *dev) |
| Flush TX FIFO on the nrf24l01+ transceiver. More... | |
| int | nrf24l01p_flush_rx_fifo (const nrf24l01p_t *dev) |
| Flush RX FIFO on the nrf24l01+ transceiver. More... | |
| void | nrf24l01p_rx_cb (void *arg) |
| Callback that is called when interrupt occurs on interrupt pin from the nrf24l01+ transceiver. More... | |
| enum nrf24l01p_aw_t |
Defines the address width of the nrf24l01+ transceiver.
| Enumerator | |
|---|---|
| NRF24L01P_AW_3BYTE | address width is 3 Byte |
| NRF24L01P_AW_4BYTE | address width is 4 Byte |
| NRF24L01P_AW_5BYTE | address width is 5 Byte |
Definition at line 48 of file nrf24l01p.h.
| enum nrf24l01p_crc_t |
Defines the error detection encoding scheme for the nrf24l01p transceiver.
| Enumerator | |
|---|---|
| NRF24L01P_CRC_1BYTE | encoding scheme generates 1 Byte redundancy |
| NRF24L01P_CRC_2BYTE | encoding scheme generates 2 Bytes redundancy |
Definition at line 88 of file nrf24l01p.h.
| enum nrf24l01p_dr_t |
Defines the RF datarate.
| Enumerator | |
|---|---|
| NRF24L01P_DR_250KBS | datarate is 250 kbps |
| NRF24L01P_DR_1MBS | datarate is 1 Mbps |
| NRF24L01P_DR_2MBS | datarate is 2 Mbps |
Definition at line 57 of file nrf24l01p.h.
| enum nrf24l01p_pwr_t |
Defines the RF power level.
| Enumerator | |
|---|---|
| NRF24L01P_PWR_N18DBM | power is -18dBm |
| NRF24L01P_PWR_N12DBM | power is -12dBm |
| NRF24L01P_PWR_N6DBM | power is - 6dBm |
| NRF24L01P_PWR_0DBM | power is 0dBm |
Definition at line 66 of file nrf24l01p.h.
Defines the automatic retransmission delay defined from end of transmission to start of next treansmission.
Definition at line 97 of file nrf24l01p.h.
| enum nrf24l01p_rx_event_t |
Defines states for the nrf24l01+ transceiver.
| Enumerator | |
|---|---|
| RCV_PKT_NRF24L01P | transceiver received data |
Definition at line 119 of file nrf24l01p.h.
| enum nrf24l01p_rx_pipe_t |
Defines the datapipe on which the receiver searches for packets.
| Enumerator | |
|---|---|
| NRF24L01P_PIPE0 | RX pipe 0. |
| NRF24L01P_PIPE1 | RX pipe 1. |
| NRF24L01P_PIPE2 | RX pipe 2. |
| NRF24L01P_PIPE3 | RX pipe 3. |
| NRF24L01P_PIPE4 | RX pipe 4. |
| NRF24L01P_PIPE5 | RX pipe 5. |
Definition at line 76 of file nrf24l01p.h.
| int nrf24l01p_disable_all_auto_ack | ( | const nrf24l01p_t * | dev | ) |
Disable automatic ACK on the nrf24l01+ transceiver.
| [in] | dev | Transceiver device to use. |
| int nrf24l01p_disable_crc | ( | const nrf24l01p_t * | dev | ) |
Disable CRC error detection on the nrf24l01+ transceiver.
| [in] | dev | Transceiver device to use. |
| int nrf24l01p_disable_pipe | ( | const nrf24l01p_t * | dev, |
| nrf24l01p_rx_pipe_t | pipe | ||
| ) |
Disable RX datapipe on the nrf24l01+ transceiver.
| [in] | dev | Transceiver device to use. |
| [in] | pipe | RX pipe to disable. |
| int nrf24l01p_enable_crc | ( | const nrf24l01p_t * | dev, |
| nrf24l01p_crc_t | crc | ||
| ) |
Enable CRC error detection on the nrf24l01+ transceiver.
| [in] | dev | Transceiver device to use. |
| [in] | crc | Length of cyclic redundancy check (type nrf24l01p_crc_t). |
| int nrf24l01p_enable_dynamic_ack | ( | const nrf24l01p_t * | dev | ) |
Enable dynamic ack for the nrf24l01+ transceiver.
| [in] | dev | Transceiver device to use. |
| int nrf24l01p_enable_dynamic_payload | ( | const nrf24l01p_t * | dev, |
| nrf24l01p_rx_pipe_t | pipe | ||
| ) |
Enable dynamic payload for the pipe on give nrf24l01+ transceiver.
| [in] | dev | Transceiver device to use. |
| [in] | pipe | RX pipe for which dynamic payload is enabled |
| int nrf24l01p_enable_pipe | ( | const nrf24l01p_t * | dev, |
| nrf24l01p_rx_pipe_t | pipe | ||
| ) |
Enable RX datapipe on the nrf24l01+ transceiver.
| [in] | dev | Transceiver device to use. |
| [in] | pipe | RX pipe to enable. |
| int nrf24l01p_flush_rx_fifo | ( | const nrf24l01p_t * | dev | ) |
Flush RX FIFO on the nrf24l01+ transceiver.
| [in] | dev | Transceiver device to use. |
| int nrf24l01p_flush_tx_fifo | ( | const nrf24l01p_t * | dev | ) |
Flush TX FIFO on the nrf24l01+ transceiver.
| [in] | dev | Transceiver device to use. |
| void nrf24l01p_get_id | ( | const nrf24l01p_t * | dev, |
| unsigned int * | pid | ||
| ) |
Get ID from the nrf24l01p transceiver.
| [in] | dev | Transceiver device to use. |
| [in] | pid | Transceiver ID. |
| int nrf24l01p_get_power | ( | const nrf24l01p_t * | dev | ) |
Get the transmit power for the nrf24l01+ transceiver device.
| [in] | dev | Transceiver device to use. |
| uint64_t nrf24l01p_get_rx_address_long | ( | const nrf24l01p_t * | dev, |
| nrf24l01p_rx_pipe_t | pipe | ||
| ) |
Get the RX address for the nrf24l01+ transceiver (long int).
| [in] | dev | Transceiver device to use. |
| [in] | pipe | RX pipe to get the address from. |
| int nrf24l01p_get_status | ( | const nrf24l01p_t * | dev | ) |
Get the status (register) of the nrf24l01+ transceiver device.
| [in] | dev | Transceiver device to use.s of the. |
| uint64_t nrf24l01p_get_tx_address_long | ( | const nrf24l01p_t * | dev | ) |
Get the TX address for the nrf24l01+ transceiver (long int).
| [in] | dev | Transceiver device to use. |
| int nrf24l01p_init | ( | nrf24l01p_t * | dev, |
| spi_t | spi, | ||
| gpio_t | ce, | ||
| gpio_t | csn, | ||
| gpio_t | irq | ||
| ) |
Initialize the nrf24l01+ transceiver.
@ note This function initializes the transceiver so that it is ready to use.
| [in] | dev | Transceiver device to use. |
| [in] | spi | SPI device to use. |
| [in] | ce | GPIO pin to use for chip enable. |
| [in] | csn | GPIO pin to use for chip select. |
| [in] | irq | GPIO pin to use for interrupt request. |
| int nrf24l01p_mask_interrupt | ( | const nrf24l01p_t * | dev, |
| char | intr | ||
| ) |
Mask one interrupt on the nrf24l01+ transceiver.
| [in] | dev | Transceiver device to use. |
| [in] | intr | Transceiver device to use. |
| int nrf24l01p_off | ( | const nrf24l01p_t * | dev | ) |
Power off the nrf24l01+ transceiver.
| [in] | dev | Transceiver device to use. |
| int nrf24l01p_on | ( | const nrf24l01p_t * | dev | ) |
Power on the nrf24l01+ transceiver.
| [in] | dev | Transceiver device to use. |
| int nrf24l01p_preload | ( | const nrf24l01p_t * | dev, |
| char * | data, | ||
| unsigned int | size | ||
| ) |
Preload TX FIFO with payload to transmit.
| [in] | dev | Transceiver device to use. |
| [in] | data | Buffer to preload. |
| [in] | size | Number of bytes in buffer. For nrf24l01+ e.g. 32 |
| int nrf24l01p_read_payload | ( | const nrf24l01p_t * | dev, |
| char * | answer, | ||
| unsigned int | size | ||
| ) |
Read payload from RX FIFO of the nrf24l01+ transceiver.
| [in] | dev | Transceiver device to use. |
| [in] | answer | Buffer to receive bytes to. |
| [in] | size | Number of bytes to transfer. For nrf24l01+ in general 32. |
| int nrf24l01p_read_reg | ( | const nrf24l01p_t * | dev, |
| char | reg, | ||
| char * | answer | ||
| ) |
Read one register of the nrf24l01+ transceiver.
| [in] | dev | Transceiver device to use. |
| [in] | reg | Register address to read from. |
| [in] | answer | Byte to read. |
| void nrf24l01p_register | ( | nrf24l01p_t * | dev, |
| unsigned int * | pid | ||
| ) |
Register a given ID to the nrf24l01+ transceiver.
| [in] | dev | Transceiver device to use. |
| [in] | pid | ID to register. |
| int nrf24l01p_reset_all_interrupts | ( | const nrf24l01p_t * | dev | ) |
Reset all interrupts on the nrf24l01+ transceiver.
| [in] | dev | Transceiver device to use. |
| int nrf24l01p_reset_interrupts | ( | const nrf24l01p_t * | dev, |
| char | intrs | ||
| ) |
Reset interrupts on the nrf24l01+ transceiver.
| [in] | dev | Transceiver device to use. |
| [in] | intrs | Interrupt mask to reset |
| void nrf24l01p_rx_cb | ( | void * | arg | ) |
Callback that is called when interrupt occurs on interrupt pin from the nrf24l01+ transceiver.
| [in] | arg | Used to pass transceiver device "dev". |
| int nrf24l01p_set_address_width | ( | const nrf24l01p_t * | dev, |
| nrf24l01p_aw_t | aw | ||
| ) |
Set the address width for the nrf24l01+ transceiver.
| [in] | dev | Transceiver device to use. |
| [in] | aw | Address width (type nrf24l01p_aw_t). |
| int nrf24l01p_set_channel | ( | const nrf24l01p_t * | dev, |
| uint8_t | chan | ||
| ) |
Set the RF channel for the nrf24l01+ transceiver.
| [in] | dev | Transceiver device to use. |
| [in] | chan | Buffer to preload. |
| int nrf24l01p_set_datarate | ( | const nrf24l01p_t * | dev, |
| nrf24l01p_dr_t | dr | ||
| ) |
Get the TX address for the nrf24l01+ transceiver (long int).
| [in] | dev | Transceiver device to use. |
| [in] | dr | Datarate (of type nrf24l01p_dr_t). |
| int nrf24l01p_set_payload_width | ( | const nrf24l01p_t * | dev, |
| nrf24l01p_rx_pipe_t | pipe, | ||
| uint8_t | width | ||
| ) |
Set the RX payload width for the nrf24l01+ transceiver.
@ note This function sets the payload width for one packet. If the maximum of 32 bytes is exceeded, this value is set to 32.
| [in] | dev | Transceiver device to use. |
| [in] | pipe | RX pipe to set the payload width. |
| [in] | width | Number of bytes per packet in RX payload. |
| int nrf24l01p_set_power | ( | const nrf24l01p_t * | dev, |
| int | pwr | ||
| ) |
Set the transmit power for the nrf24l01+ transceiver device.
| [in] | dev | Transceiver device to use. |
| [in] | pwr | TX power for the nrf24l01p transceiver. |
| int nrf24l01p_set_rx_address | ( | const nrf24l01p_t * | dev, |
| nrf24l01p_rx_pipe_t | pipe, | ||
| const uint8_t * | saddr, | ||
| unsigned int | length | ||
| ) |
Set the RX address for the nrf24l01+ transceiver (byte array).
| [in] | dev | Transceiver device to use. |
| [in] | pipe | RX pipe to set the address. |
| [in] | saddr | Byte array which holds the RX address. |
| [in] | length | Number of bytes in address array. |
| int nrf24l01p_set_rx_address_long | ( | const nrf24l01p_t * | dev, |
| nrf24l01p_rx_pipe_t | pipe, | ||
| uint64_t | saddr, | ||
| unsigned int | length | ||
| ) |
Set the RX address for the nrf24l01+ transceiver (long int).
| [in] | dev | Transceiver device to use. |
| [in] | pipe | RX pipe to set the address. |
| [in] | saddr | Long integer which holds the RX address in LSBs. |
| [in] | length | Number of relevant bytes in uint64_t. |
| int nrf24l01p_set_rxmode | ( | const nrf24l01p_t * | dev | ) |
Set the nrf24l01+ into RX mode.
| [in] | dev | Transceiver device to use. |
| int nrf24l01p_set_tx_address | ( | const nrf24l01p_t * | dev, |
| const uint8_t * | saddr, | ||
| unsigned int | length | ||
| ) |
Set the TX address for the nrf24l01+ transceiver (byte array).
| [in] | dev | Transceiver device to use. |
| [in] | saddr | Byte array which holds the TX address. |
| [in] | length | Number of bytes in address array. |
| int nrf24l01p_set_tx_address_long | ( | const nrf24l01p_t * | dev, |
| uint64_t | saddr, | ||
| unsigned int | length | ||
| ) |
Set the TX address for the nrf24l01+ transceiver (long int).
| [in] | dev | Transceiver device to use. |
| [in] | saddr | Long integer which holds the TX address in LSBs. |
| [in] | length | Number of relevant bytes in uint64_t. |
| int nrf24l01p_set_txmode | ( | const nrf24l01p_t * | dev | ) |
Set the nrf24l01+ into TX mode.
| [in] | dev | Transceiver device to use. |
| int nrf24l01p_setup_auto_ack | ( | const nrf24l01p_t * | dev, |
| nrf24l01p_rx_pipe_t | pipe, | ||
| nrf24l01p_retransmit_delay_t | delay_retrans, | ||
| char | count_retrans | ||
| ) |
Setup and enable automatic ACK and retransmission on the nrf24l01+ transceiver.
| [in] | dev | Transceiver device to use. |
| [in] | pipe | RX pipe to setup auto ack. |
| [in] | delay_retrans | Automatic retransmission delay (type nrf24l01p_retransmit_delay_t) |
| [in] | count_retrans | Auto retransmit count. |
| void nrf24l01p_start | ( | const nrf24l01p_t * | dev | ) |
Start searching packets while in RX mode.
| [in] | dev | Transceiver device to use. |
| void nrf24l01p_stop | ( | const nrf24l01p_t * | dev | ) |
Stop searching packets while in RX mode.
| [in] | dev | Transceiver device to use. |
| void nrf24l01p_transmit | ( | const nrf24l01p_t * | dev | ) |
Transmit payload laying in TX FIFO of the nrf24l01+ transceiver.
| [in] | dev | Transceiver device to use. |
| int nrf24l01p_unmask_interrupt | ( | const nrf24l01p_t * | dev, |
| char | intr | ||
| ) |
Unmask one interrupt on the nrf24l01+ transceiver.
| [in] | dev | Transceiver device to use. |
| [in] | intr | Transceiver device to use. |
| int nrf24l01p_unregister | ( | nrf24l01p_t * | dev, |
| unsigned int | pid | ||
| ) |
Unregister the nrf24l01+ transceiver from his ID.
| [in] | dev | Transceiver device to use. |
| [in] | pid | Actual ID to unregister. |
| int nrf24l01p_write_reg | ( | const nrf24l01p_t * | dev, |
| char | reg, | ||
| char | write | ||
| ) |
Write one register to the nrf24l01+ transceiver.
| [in] | dev | Transceiver device to use. |
| [in] | reg | Register address to write to. |
| [in] | write | Byte to write. |