1 #if !defined(_RADIOLIB_SX1272_H) 2 #define _RADIOLIB_SX1272_H 4 #include "../../TypeDef.h" 6 #if !defined(RADIOLIB_EXCLUDE_SX127X) 8 #include "../../Module.h" 12 #define SX1272_REG_AGC_REF 0x43 13 #define SX1272_REG_AGC_THRESH_1 0x44 14 #define SX1272_REG_AGC_THRESH_2 0x45 15 #define SX1272_REG_AGC_THRESH_3 0x46 16 #define SX1272_REG_PLL_HOP 0x4B 17 #define SX1272_REG_TCXO 0x58 18 #define SX1272_REG_PA_DAC 0x5A 19 #define SX1272_REG_PLL 0x5C 20 #define SX1272_REG_PLL_LOW_PN 0x5E 21 #define SX1272_REG_FORMER_TEMP 0x6C 22 #define SX1272_REG_BIT_RATE_FRAC 0x70 26 #define SX1272_FRF_MSB 0xE4 // 7 0 carrier frequency setting: f_RF = (F(XOSC) * FRF)/2^19 27 #define SX1272_FRF_MID 0xC0 // 7 0 where F(XOSC) = 32 MHz 28 #define SX1272_FRF_LSB 0x00 // 7 0 FRF = 3 byte value of FRF registers 31 #define SX1272_BW_125_00_KHZ 0b00000000 // 7 6 bandwidth: 125 kHz 32 #define SX1272_BW_250_00_KHZ 0b01000000 // 7 6 250 kHz 33 #define SX1272_BW_500_00_KHZ 0b10000000 // 7 6 500 kHz 34 #define SX1272_CR_4_5 0b00001000 // 5 3 error coding rate: 4/5 35 #define SX1272_CR_4_6 0b00010000 // 5 3 4/6 36 #define SX1272_CR_4_7 0b00011000 // 5 3 4/7 37 #define SX1272_CR_4_8 0b00100000 // 5 3 4/8 38 #define SX1272_HEADER_EXPL_MODE 0b00000000 // 2 2 explicit header mode 39 #define SX1272_HEADER_IMPL_MODE 0b00000100 // 2 2 implicit header mode 40 #define SX1272_RX_CRC_MODE_OFF 0b00000000 // 1 1 CRC disabled 41 #define SX1272_RX_CRC_MODE_ON 0b00000010 // 1 1 CRC enabled 42 #define SX1272_LOW_DATA_RATE_OPT_OFF 0b00000000 // 0 0 low data rate optimization disabled 43 #define SX1272_LOW_DATA_RATE_OPT_ON 0b00000001 // 0 0 low data rate optimization enabled, mandatory for SF 11 and 12 with BW 125 kHz 46 #define SX1272_AGC_AUTO_OFF 0b00000000 // 2 2 LNA gain set by REG_LNA 47 #define SX1272_AGC_AUTO_ON 0b00000100 // 2 2 LNA gain set by internal AGC loop 50 #define SX1272_CHIP_VERSION 0x22 54 #define SX1272_NO_SHAPING 0b00000000 // 4 3 data shaping: no shaping (default) 55 #define SX1272_FSK_GAUSSIAN_1_0 0b00001000 // 4 3 FSK modulation Gaussian filter, BT = 1.0 56 #define SX1272_FSK_GAUSSIAN_0_5 0b00010000 // 4 3 FSK modulation Gaussian filter, BT = 0.5 57 #define SX1272_FSK_GAUSSIAN_0_3 0b00011000 // 4 3 FSK modulation Gaussian filter, BT = 0.3 58 #define SX1272_OOK_FILTER_BR 0b00001000 // 4 3 OOK modulation filter, f_cutoff = BR 59 #define SX1272_OOK_FILTER_2BR 0b00010000 // 4 3 OOK modulation filter, f_cutoff = 2*BR 62 #define SX1272_LOW_PN_TX_PLL_OFF 0b00010000 // 4 4 use standard PLL in transmit mode (default) 63 #define SX1272_LOW_PN_TX_PLL_ON 0b00000000 // 4 4 use lower phase noise PLL in transmit mode 66 #define SX1272_FIFO_FILL_CONDITION_SYNC_ADDRESS 0b00000000 // 3 3 FIFO will be filled when sync address interrupt occurs (default) 67 #define SX1272_FIFO_FILL_CONDITION_ALWAYS 0b00001000 // 3 3 FIFO will be filled as long as this bit is set 70 #define SX1272_AGC_REFERENCE_LEVEL 0x13 // 5 0 floor reference for AGC thresholds: AgcRef = -174 + 10*log(2*RxBw) + 8 + AGC_REFERENCE_LEVEL [dBm] 73 #define SX1272_AGC_STEP_1 0x0E // 4 0 1st AGC threshold 76 #define SX1272_AGC_STEP_2 0x50 // 7 4 2nd AGC threshold 77 #define SX1272_AGC_STEP_3 0x0B // 4 0 3rd AGC threshold 80 #define SX1272_AGC_STEP_4 0xD0 // 7 4 4th AGC threshold 81 #define SX1272_AGC_STEP_5 0x0B // 4 0 5th AGC threshold 84 #define SX1272_PLL_LOW_PN_BANDWIDTH_75_KHZ 0b00000000 // 7 6 low phase noise PLL bandwidth: 75 kHz 85 #define SX1272_PLL_LOW_PN_BANDWIDTH_150_KHZ 0b01000000 // 7 6 150 kHz 86 #define SX1272_PLL_LOW_PN_BANDWIDTH_225_KHZ 0b10000000 // 7 6 225 kHz 87 #define SX1272_PLL_LOW_PN_BANDWIDTH_300_KHZ 0b11000000 // 7 6 300 kHz (default) 133 int16_t
begin(
float freq = 915.0,
float bw = 125.0, uint8_t sf = 9, uint8_t cr = 7, uint8_t syncWord = SX127X_SYNC_WORD, int8_t power = 10, uint16_t preambleLength = 8, uint8_t gain = 0);
155 int16_t
beginFSK(
float freq = 915.0,
float br = 48.0,
float rxBw = 125.0,
float freqDev = 50.0, int8_t power = 10, uint16_t preambleLength = 16,
bool enableOOK =
false);
160 void reset()
override;
254 int16_t
setCRC(
bool enableCRC);
274 #ifndef RADIOLIB_GODMODE 277 int16_t setBandwidthRaw(uint8_t newBandwidth);
278 int16_t setSpreadingFactorRaw(uint8_t newSpreadingFactor);
279 int16_t setCodingRateRaw(uint8_t newCodingRate);
283 #ifndef RADIOLIB_GODMODE 286 bool _ldroAuto =
true;
287 bool _ldroEnabled =
false;
Derived class for SX1272 modules. Also used as base class for SX1273. Both modules use the same basic...
Definition: SX1272.h:95
int16_t setFrequency(float freq)
Sets carrier frequency. Allowed values range from 860.0 MHz to 1020.0 MHz.
Definition: SX1272.cpp:70
Base class for SX127x series. All derived classes for SX127x (e.g. SX1278 or SX1272) inherit from thi...
Definition: SX127x.h:536
int16_t autoLDRO()
Re-enables automatic LDRO configuration. Only available in LoRa mode. After calling this method...
Definition: SX1272.cpp:389
int16_t setGain(uint8_t gain)
Sets gain of receiver LNA (low-noise amplifier). Can be set to any integer in range 1 to 6 where 1 is...
Definition: SX1272.cpp:240
int16_t begin(float freq=915.0, float bw=125.0, uint8_t sf=9, uint8_t cr=7, uint8_t syncWord=SX127X_SYNC_WORD, int8_t power=10, uint16_t preambleLength=8, uint8_t gain=0)
LoRa modem initialization method. Must be called at least once from Arduino sketch to initialize the ...
Definition: SX1272.cpp:8
int16_t setDataShapingOOK(uint8_t sh)
Sets filter cutoff frequency that will be used for data shaping. Allowed values are 1 for frequency e...
Definition: SX1272.cpp:295
int16_t setBandwidth(float bw)
Sets LoRa link bandwidth. Allowed values are 125, 250 and 500 kHz. Only available in LoRa mode...
Definition: SX1272.cpp:81
int16_t beginFSK(float freq=915.0, float br=48.0, float rxBw=125.0, float freqDev=50.0, int8_t power=10, uint16_t preambleLength=16, bool enableOOK=false)
FSK modem initialization method. Must be called at least once from Arduino sketch to initialize the m...
Definition: SX1272.cpp:40
float getRSSI()
Gets recorded signal strength indicator of the latest received packet for LoRa modem, or current RSSI level for FSK modem.
Definition: SX1272.cpp:328
int16_t setOutputPower(int8_t power)
Sets transmission output power. Allowed values range from 2 to 17 dBm.
Definition: SX1272.cpp:211
SX1272(Module *mod)
Default constructor. Called from Arduino sketch when creating new LoRa instance.
Definition: SX1272.cpp:4
int16_t setCRC(bool enableCRC)
Enables/disables CRC check of received packets.
Definition: SX1272.cpp:357
Implements all common low-level SPI/UART/I2C methods to control the wireless module. Every module class contains one private instance of this class.
Definition: Module.h:17
int16_t setCodingRate(uint8_t cr)
Sets LoRa link coding rate denominator. Allowed values range from 5 to 8. Only available in LoRa mode...
Definition: SX1272.cpp:177
int16_t setSpreadingFactor(uint8_t sf)
Sets LoRa link spreading factor. Allowed values range from 6 to 12. Only available in LoRa mode...
Definition: SX1272.cpp:121
int16_t setDataShaping(uint8_t sh) override
Sets Gaussian filter bandwidth-time product that will be used for data shaping. Only available in FSK...
Definition: SX1272.cpp:265
int16_t forceLDRO(bool enable)
Forces LoRa low data rate optimization. Only available in LoRa mode. After calling this method...
Definition: SX1272.cpp:376
void reset() override
Reset method. Will reset the chip to the default state using RST pin.
Definition: SX1272.cpp:62