#include "driver/spi_master.h"
#include "esp_err.h"
#include <stdbool.h>
#include <stdint.h>
Go to the source code of this file.
|
| int | sx1276_init (const sx1276_config_t *config) |
| | Initialize SX1276: GPIOs, SPI, reset chip, switch to LoRa and standby.
|
| |
| int | sx1276_configure_lora (const sx1276_lora_config_t *config) |
| | Set LoRa parameters: frequency, SF, BW, TX power, sync word.
|
| |
| int | sx1276_set_mode (uint8_t mode) |
| | Set operating mode (standby, TX, RX, etc.)
|
| |
| int | sx1276_transmit (const uint8_t *data, uint8_t len) |
| | Load payload into FIFO and start transmit.
|
| |
| int | sx1276_start_receive (void) |
| | Start continuous receive mode.
|
| |
| int | sx1276_read_received (uint8_t *data, uint8_t *len, uint8_t max_len) |
| | Copy last received packet into buffer.
|
| |
| bool | sx1276_is_tx_done (void) |
| | Check if last transmit has finished.
|
| |
| bool | sx1276_is_rx_done (void) |
| | Check if a packet has been received.
|
| |
| void | sx1276_clear_irq (void) |
| | Clear all IRQ flags.
|
| |
| uint8_t | sx1276_get_irq_flags (void) |
| | Read raw IRQ flags register.
|
| |
| uint8_t | sx1276_read_reg (uint8_t reg) |
| | Read one SX1276 register (low-level)
|
| |
| void | sx1276_write_reg (uint8_t reg, uint8_t value) |
| | Write one SX1276 register (low-level)
|
| |
| void | sx1276_reset (void) |
| | Hardware reset via RST pin.
|
| |
◆ SX1276_IRQ_CAD_DETECTED
| #define SX1276_IRQ_CAD_DETECTED 0x01 |
◆ SX1276_IRQ_CAD_DONE
| #define SX1276_IRQ_CAD_DONE 0x04 |
◆ SX1276_IRQ_FHSS_CHANGE_CHANNEL
| #define SX1276_IRQ_FHSS_CHANGE_CHANNEL 0x02 |
◆ SX1276_IRQ_PAYLOAD_CRC_ERROR
| #define SX1276_IRQ_PAYLOAD_CRC_ERROR 0x20 |
◆ SX1276_IRQ_RX_DONE
| #define SX1276_IRQ_RX_DONE 0x40 |
◆ SX1276_IRQ_RX_TIMEOUT
| #define SX1276_IRQ_RX_TIMEOUT 0x80 |
◆ SX1276_IRQ_TX_DONE
| #define SX1276_IRQ_TX_DONE 0x08 |
◆ SX1276_IRQ_VALID_HEADER
| #define SX1276_IRQ_VALID_HEADER 0x10 |
◆ SX1276_MODE_CAD
| #define SX1276_MODE_CAD 0x07 |
◆ SX1276_MODE_FSRX
| #define SX1276_MODE_FSRX 0x04 |
◆ SX1276_MODE_FSTX
| #define SX1276_MODE_FSTX 0x02 |
◆ SX1276_MODE_LORA
| #define SX1276_MODE_LORA 0x80 |
◆ SX1276_MODE_RX_CONTINUOUS
| #define SX1276_MODE_RX_CONTINUOUS 0x05 |
◆ SX1276_MODE_RX_SINGLE
| #define SX1276_MODE_RX_SINGLE 0x06 |
◆ SX1276_MODE_SLEEP
| #define SX1276_MODE_SLEEP 0x00 |
◆ SX1276_MODE_STDBY
| #define SX1276_MODE_STDBY 0x01 |
◆ SX1276_MODE_TX
| #define SX1276_MODE_TX 0x03 |
◆ SX1276_REG_DETECTION_OPTIMIZE
| #define SX1276_REG_DETECTION_OPTIMIZE 0x31 |
◆ SX1276_REG_DETECTION_THRESHOLD
| #define SX1276_REG_DETECTION_THRESHOLD 0x37 |
◆ SX1276_REG_DIO_MAPPING_1
| #define SX1276_REG_DIO_MAPPING_1 0x40 |
◆ SX1276_REG_DIO_MAPPING_2
| #define SX1276_REG_DIO_MAPPING_2 0x41 |
◆ SX1276_REG_FIFO
| #define SX1276_REG_FIFO 0x00 |
◆ SX1276_REG_FIFO_ADDR_PTR
| #define SX1276_REG_FIFO_ADDR_PTR 0x0D |
◆ SX1276_REG_FIFO_RX_BASE_ADDR
| #define SX1276_REG_FIFO_RX_BASE_ADDR 0x0F |
◆ SX1276_REG_FIFO_RX_BYTE_ADDR
| #define SX1276_REG_FIFO_RX_BYTE_ADDR 0x25 |
◆ SX1276_REG_FIFO_RX_CURRENT_ADDR
| #define SX1276_REG_FIFO_RX_CURRENT_ADDR 0x10 |
◆ SX1276_REG_FIFO_TX_BASE_ADDR
| #define SX1276_REG_FIFO_TX_BASE_ADDR 0x0E |
◆ SX1276_REG_FRF_LSB
| #define SX1276_REG_FRF_LSB 0x08 |
◆ SX1276_REG_FRF_MID
| #define SX1276_REG_FRF_MID 0x07 |
◆ SX1276_REG_FRF_MSB
| #define SX1276_REG_FRF_MSB 0x06 |
◆ SX1276_REG_HOP_PERIOD
| #define SX1276_REG_HOP_PERIOD 0x24 |
◆ SX1276_REG_IRQ_FLAGS
| #define SX1276_REG_IRQ_FLAGS 0x12 |
◆ SX1276_REG_IRQ_FLAGS_MASK
| #define SX1276_REG_IRQ_FLAGS_MASK 0x11 |
◆ SX1276_REG_LNA
| #define SX1276_REG_LNA 0x0C |
◆ SX1276_REG_MAX_PAYLOAD_LENGTH
| #define SX1276_REG_MAX_PAYLOAD_LENGTH 0x23 |
◆ SX1276_REG_MODEM_CONFIG_1
| #define SX1276_REG_MODEM_CONFIG_1 0x1D |
◆ SX1276_REG_MODEM_CONFIG_2
| #define SX1276_REG_MODEM_CONFIG_2 0x1E |
◆ SX1276_REG_MODEM_CONFIG_3
| #define SX1276_REG_MODEM_CONFIG_3 0x26 |
◆ SX1276_REG_OCP
| #define SX1276_REG_OCP 0x0B |
◆ SX1276_REG_OP_MODE
| #define SX1276_REG_OP_MODE 0x01 |
◆ SX1276_REG_PA_CONFIG
| #define SX1276_REG_PA_CONFIG 0x09 |
◆ SX1276_REG_PA_DAC
| #define SX1276_REG_PA_DAC 0x4D |
◆ SX1276_REG_PA_RAMP
| #define SX1276_REG_PA_RAMP 0x0A |
◆ SX1276_REG_PAYLOAD_LENGTH
| #define SX1276_REG_PAYLOAD_LENGTH 0x22 |
◆ SX1276_REG_PKT_RSSI_VALUE
| #define SX1276_REG_PKT_RSSI_VALUE 0x1A |
◆ SX1276_REG_PKT_SNR_VALUE
| #define SX1276_REG_PKT_SNR_VALUE 0x19 |
◆ SX1276_REG_PREAMBLE_LSB
| #define SX1276_REG_PREAMBLE_LSB 0x21 |
◆ SX1276_REG_PREAMBLE_MSB
| #define SX1276_REG_PREAMBLE_MSB 0x20 |
◆ SX1276_REG_RX_NB_BYTES
| #define SX1276_REG_RX_NB_BYTES 0x13 |
◆ SX1276_REG_SYMB_TIMEOUT_LSB
| #define SX1276_REG_SYMB_TIMEOUT_LSB 0x1F |
◆ SX1276_REG_SYNC_WORD
| #define SX1276_REG_SYNC_WORD 0x39 |
◆ SX1276_REG_VERSION
| #define SX1276_REG_VERSION 0x42 |
◆ sx1276_clear_irq()
| void sx1276_clear_irq |
( |
void |
| ) |
|
Clear all IRQ flags.
Call after handling TX done, RX done, or CRC error.
◆ sx1276_configure_lora()
Set LoRa parameters: frequency, SF, BW, TX power, sync word.
Call after sx1276_init() before transmit or receive.
- Parameters
-
| config | LoRa modulation and RF parameters |
- Returns
- ESP_OK on success, error code otherwise
◆ sx1276_get_irq_flags()
| uint8_t sx1276_get_irq_flags |
( |
void |
| ) |
|
Read raw IRQ flags register.
- Returns
- IRQ flags (e.g. SX1276_IRQ_PAYLOAD_CRC_ERROR, SX1276_IRQ_RX_DONE)
◆ sx1276_init()
Initialize SX1276: GPIOs, SPI, reset chip, switch to LoRa and standby.
- Parameters
-
| config | Pin and SPI host configuration |
- Returns
- ESP_OK on success (version check passes), error code otherwise
◆ sx1276_is_rx_done()
| bool sx1276_is_rx_done |
( |
void |
| ) |
|
Check if a packet has been received.
- Returns
- true when a packet is available (call sx1276_read_received), false otherwise
◆ sx1276_is_tx_done()
| bool sx1276_is_tx_done |
( |
void |
| ) |
|
Check if last transmit has finished.
- Returns
- true when TX is done, false otherwise
◆ sx1276_read_received()
| int sx1276_read_received |
( |
uint8_t * |
data, |
|
|
uint8_t * |
len, |
|
|
uint8_t |
max_len |
|
) |
| |
Copy last received packet into buffer.
Call only after sx1276_is_rx_done() returns true.
- Parameters
-
| data | Output buffer for payload |
| len | On input: max_len; on output: actual received length |
| max_len | Maximum bytes to copy |
- Returns
- ESP_OK on success, error code otherwise
◆ sx1276_read_reg()
| uint8_t sx1276_read_reg |
( |
uint8_t |
reg | ) |
|
Read one SX1276 register (low-level)
- Parameters
-
- Returns
- Register value
◆ sx1276_reset()
| void sx1276_reset |
( |
void |
| ) |
|
Hardware reset via RST pin.
Holds RST low then high; use before or during init.
◆ sx1276_set_mode()
| int sx1276_set_mode |
( |
uint8_t |
mode | ) |
|
Set operating mode (standby, TX, RX, etc.)
- Parameters
-
| mode | One of SX1276_MODE_STDBY, SX1276_MODE_TX, SX1276_MODE_RX_CONTINUOUS, etc. |
- Returns
- ESP_OK on success, error code otherwise
◆ sx1276_start_receive()
| int sx1276_start_receive |
( |
void |
| ) |
|
◆ sx1276_transmit()
| int sx1276_transmit |
( |
const uint8_t * |
data, |
|
|
uint8_t |
len |
|
) |
| |
Load payload into FIFO and start transmit.
Poll sx1276_is_tx_done() for completion.
- Parameters
-
| data | Payload bytes |
| len | Payload length (bytes) |
- Returns
- ESP_OK on success, error code otherwise
◆ sx1276_write_reg()
| void sx1276_write_reg |
( |
uint8_t |
reg, |
|
|
uint8_t |
value |
|
) |
| |
Write one SX1276 register (low-level)
- Parameters
-
| reg | Register address |
| value | Value to write |