1 #if !defined(_RADIOLIB_SX126X_H) 2 #define _RADIOLIB_SX126X_H 4 #include "../../TypeDef.h" 6 #if !defined(RADIOLIB_EXCLUDE_SX126X) 8 #include "../../Module.h" 10 #include "../../protocols/PhysicalLayer/PhysicalLayer.h" 13 #define SX126X_FREQUENCY_STEP_SIZE 0.9536743164 14 #define SX126X_MAX_PACKET_LENGTH 255 15 #define SX126X_CRYSTAL_FREQ 32.0 16 #define SX126X_DIV_EXPONENT 25 20 #define SX126X_CMD_NOP 0x00 21 #define SX126X_CMD_SET_SLEEP 0x84 22 #define SX126X_CMD_SET_STANDBY 0x80 23 #define SX126X_CMD_SET_FS 0xC1 24 #define SX126X_CMD_SET_TX 0x83 25 #define SX126X_CMD_SET_RX 0x82 26 #define SX126X_CMD_STOP_TIMER_ON_PREAMBLE 0x9F 27 #define SX126X_CMD_SET_RX_DUTY_CYCLE 0x94 28 #define SX126X_CMD_SET_CAD 0xC5 29 #define SX126X_CMD_SET_TX_CONTINUOUS_WAVE 0xD1 30 #define SX126X_CMD_SET_TX_INFINITE_PREAMBLE 0xD2 31 #define SX126X_CMD_SET_REGULATOR_MODE 0x96 32 #define SX126X_CMD_CALIBRATE 0x89 33 #define SX126X_CMD_CALIBRATE_IMAGE 0x98 34 #define SX126X_CMD_SET_PA_CONFIG 0x95 35 #define SX126X_CMD_SET_RX_TX_FALLBACK_MODE 0x93 38 #define SX126X_CMD_WRITE_REGISTER 0x0D 39 #define SX126X_CMD_READ_REGISTER 0x1D 40 #define SX126X_CMD_WRITE_BUFFER 0x0E 41 #define SX126X_CMD_READ_BUFFER 0x1E 44 #define SX126X_CMD_SET_DIO_IRQ_PARAMS 0x08 45 #define SX126X_CMD_GET_IRQ_STATUS 0x12 46 #define SX126X_CMD_CLEAR_IRQ_STATUS 0x02 47 #define SX126X_CMD_SET_DIO2_AS_RF_SWITCH_CTRL 0x9D 48 #define SX126X_CMD_SET_DIO3_AS_TCXO_CTRL 0x97 51 #define SX126X_CMD_SET_RF_FREQUENCY 0x86 52 #define SX126X_CMD_SET_PACKET_TYPE 0x8A 53 #define SX126X_CMD_GET_PACKET_TYPE 0x11 54 #define SX126X_CMD_SET_TX_PARAMS 0x8E 55 #define SX126X_CMD_SET_MODULATION_PARAMS 0x8B 56 #define SX126X_CMD_SET_PACKET_PARAMS 0x8C 57 #define SX126X_CMD_SET_CAD_PARAMS 0x88 58 #define SX126X_CMD_SET_BUFFER_BASE_ADDRESS 0x8F 59 #define SX126X_CMD_SET_LORA_SYMB_NUM_TIMEOUT 0x0A 62 #define SX126X_CMD_GET_STATUS 0xC0 63 #define SX126X_CMD_GET_RSSI_INST 0x15 64 #define SX126X_CMD_GET_RX_BUFFER_STATUS 0x13 65 #define SX126X_CMD_GET_PACKET_STATUS 0x14 66 #define SX126X_CMD_GET_DEVICE_ERRORS 0x17 67 #define SX126X_CMD_CLEAR_DEVICE_ERRORS 0x07 68 #define SX126X_CMD_GET_STATS 0x10 69 #define SX126X_CMD_RESET_STATS 0x00 73 #define SX126X_REG_WHITENING_INITIAL_MSB 0x06B8 74 #define SX126X_REG_WHITENING_INITIAL_LSB 0x06B9 75 #define SX126X_REG_CRC_INITIAL_MSB 0x06BC 76 #define SX126X_REG_CRC_INITIAL_LSB 0x06BD 77 #define SX126X_REG_CRC_POLYNOMIAL_MSB 0x06BE 78 #define SX126X_REG_CRC_POLYNOMIAL_LSB 0x06BF 79 #define SX126X_REG_SYNC_WORD_0 0x06C0 80 #define SX126X_REG_SYNC_WORD_1 0x06C1 81 #define SX126X_REG_SYNC_WORD_2 0x06C2 82 #define SX126X_REG_SYNC_WORD_3 0x06C3 83 #define SX126X_REG_SYNC_WORD_4 0x06C4 84 #define SX126X_REG_SYNC_WORD_5 0x06C5 85 #define SX126X_REG_SYNC_WORD_6 0x06C6 86 #define SX126X_REG_SYNC_WORD_7 0x06C7 87 #define SX126X_REG_NODE_ADDRESS 0x06CD 88 #define SX126X_REG_BROADCAST_ADDRESS 0x06CE 89 #define SX126X_REG_LORA_SYNC_WORD_MSB 0x0740 90 #define SX126X_REG_LORA_SYNC_WORD_LSB 0x0741 91 #define SX126X_REG_RANDOM_NUMBER_0 0x0819 92 #define SX126X_REG_RANDOM_NUMBER_1 0x081A 93 #define SX126X_REG_RANDOM_NUMBER_2 0x081B 94 #define SX126X_REG_RANDOM_NUMBER_3 0x081C 95 #define SX126X_REG_RX_GAIN 0x08AC 96 #define SX126X_REG_OCP_CONFIGURATION 0x08E7 97 #define SX126X_REG_XTA_TRIM 0x0911 98 #define SX126X_REG_XTB_TRIM 0x0912 101 #define SX126X_REG_SENSITIVITY_CONFIG 0x0889 // SX1268 datasheet v1.1, section 15.1 102 #define SX126X_REG_TX_CLAMP_CONFIG 0x08D8 // SX1268 datasheet v1.1, section 15.2 103 #define SX126X_REG_RTC_STOP 0x0920 // SX1268 datasheet v1.1, section 15.3 104 #define SX126X_REG_RTC_EVENT 0x0944 // SX1268 datasheet v1.1, section 15.3 105 #define SX126X_REG_IQ_CONFIG 0x0736 // SX1268 datasheet v1.1, section 15.4 106 #define SX126X_REG_RX_GAIN_RETENTION_0 0x029F // SX1268 datasheet v1.1, section 9.6 107 #define SX126X_REG_RX_GAIN_RETENTION_1 0x02A0 // SX1268 datasheet v1.1, section 9.6 108 #define SX126X_REG_RX_GAIN_RETENTION_2 0x02A1 // SX1268 datasheet v1.1, section 9.6 113 #define SX126X_SLEEP_START_COLD 0b00000000 // 2 2 sleep mode: cold start, configuration is lost (default) 114 #define SX126X_SLEEP_START_WARM 0b00000100 // 2 2 warm start, configuration is retained 115 #define SX126X_SLEEP_RTC_OFF 0b00000000 // 0 0 wake on RTC timeout: disabled 116 #define SX126X_SLEEP_RTC_ON 0b00000001 // 0 0 enabled 119 #define SX126X_STANDBY_RC 0x00 // 7 0 standby mode: 13 MHz RC oscillator 120 #define SX126X_STANDBY_XOSC 0x01 // 7 0 32 MHz crystal oscillator 123 #define SX126X_RX_TIMEOUT_NONE 0x000000 // 23 0 Rx timeout duration: no timeout (Rx single mode) 124 #define SX126X_RX_TIMEOUT_INF 0xFFFFFF // 23 0 infinite (Rx continuous mode) 127 #define SX126X_TX_TIMEOUT_NONE 0x000000 // 23 0 Tx timeout duration: no timeout (Tx single mode) 130 #define SX126X_STOP_ON_PREAMBLE_OFF 0x00 // 7 0 stop timer on: sync word or header (default) 131 #define SX126X_STOP_ON_PREAMBLE_ON 0x01 // 7 0 preamble detection 134 #define SX126X_REGULATOR_LDO 0x00 // 7 0 set regulator mode: LDO (default) 135 #define SX126X_REGULATOR_DC_DC 0x01 // 7 0 DC-DC 138 #define SX126X_CALIBRATE_IMAGE_OFF 0b00000000 // 6 6 image calibration: disabled 139 #define SX126X_CALIBRATE_IMAGE_ON 0b01000000 // 6 6 enabled 140 #define SX126X_CALIBRATE_ADC_BULK_P_OFF 0b00000000 // 5 5 ADC bulk P calibration: disabled 141 #define SX126X_CALIBRATE_ADC_BULK_P_ON 0b00100000 // 5 5 enabled 142 #define SX126X_CALIBRATE_ADC_BULK_N_OFF 0b00000000 // 4 4 ADC bulk N calibration: disabled 143 #define SX126X_CALIBRATE_ADC_BULK_N_ON 0b00010000 // 4 4 enabled 144 #define SX126X_CALIBRATE_ADC_PULSE_OFF 0b00000000 // 3 3 ADC pulse calibration: disabled 145 #define SX126X_CALIBRATE_ADC_PULSE_ON 0b00001000 // 3 3 enabled 146 #define SX126X_CALIBRATE_PLL_OFF 0b00000000 // 2 2 PLL calibration: disabled 147 #define SX126X_CALIBRATE_PLL_ON 0b00000100 // 2 2 enabled 148 #define SX126X_CALIBRATE_RC13M_OFF 0b00000000 // 1 1 13 MHz RC osc. calibration: disabled 149 #define SX126X_CALIBRATE_RC13M_ON 0b00000010 // 1 1 enabled 150 #define SX126X_CALIBRATE_RC64K_OFF 0b00000000 // 0 0 64 kHz RC osc. calibration: disabled 151 #define SX126X_CALIBRATE_RC64K_ON 0b00000001 // 0 0 enabled 152 #define SX126X_CALIBRATE_ALL 0b01111111 // 6 0 calibrate all blocks 155 #define SX126X_CAL_IMG_430_MHZ_1 0x6B 156 #define SX126X_CAL_IMG_430_MHZ_2 0x6F 157 #define SX126X_CAL_IMG_470_MHZ_1 0x75 158 #define SX126X_CAL_IMG_470_MHZ_2 0x81 159 #define SX126X_CAL_IMG_779_MHZ_1 0xC1 160 #define SX126X_CAL_IMG_779_MHZ_2 0xC5 161 #define SX126X_CAL_IMG_863_MHZ_1 0xD7 162 #define SX126X_CAL_IMG_863_MHZ_2 0xDB 163 #define SX126X_CAL_IMG_902_MHZ_1 0xE1 164 #define SX126X_CAL_IMG_902_MHZ_2 0xE9 167 #define SX126X_PA_CONFIG_HP_MAX 0x07 168 #define SX126X_PA_CONFIG_PA_LUT 0x01 169 #define SX126X_PA_CONFIG_SX1262_8 0x00 172 #define SX126X_RX_TX_FALLBACK_MODE_FS 0x40 // 7 0 after Rx/Tx go to: FS mode 173 #define SX126X_RX_TX_FALLBACK_MODE_STDBY_XOSC 0x30 // 7 0 standby with crystal oscillator 174 #define SX126X_RX_TX_FALLBACK_MODE_STDBY_RC 0x20 // 7 0 standby with RC oscillator (default) 177 #define SX126X_IRQ_TIMEOUT 0b1000000000 // 9 9 Rx or Tx timeout 178 #define SX126X_IRQ_CAD_DETECTED 0b0100000000 // 8 8 channel activity detected 179 #define SX126X_IRQ_CAD_DONE 0b0010000000 // 7 7 channel activity detection finished 180 #define SX126X_IRQ_CRC_ERR 0b0001000000 // 6 6 wrong CRC received 181 #define SX126X_IRQ_HEADER_ERR 0b0000100000 // 5 5 LoRa header CRC error 182 #define SX126X_IRQ_HEADER_VALID 0b0000010000 // 4 4 valid LoRa header received 183 #define SX126X_IRQ_SYNC_WORD_VALID 0b0000001000 // 3 3 valid sync word detected 184 #define SX126X_IRQ_PREAMBLE_DETECTED 0b0000000100 // 2 2 preamble detected 185 #define SX126X_IRQ_RX_DONE 0b0000000010 // 1 1 packet received 186 #define SX126X_IRQ_TX_DONE 0b0000000001 // 0 0 packet transmission completed 187 #define SX126X_IRQ_ALL 0b1111111111 // 9 0 all interrupts 188 #define SX126X_IRQ_NONE 0b0000000000 // 9 0 no interrupts 191 #define SX126X_DIO2_AS_IRQ 0x00 // 7 0 DIO2 configuration: IRQ 192 #define SX126X_DIO2_AS_RF_SWITCH 0x01 // 7 0 RF switch control 195 #define SX126X_DIO3_OUTPUT_1_6 0x00 // 7 0 DIO3 voltage output for TCXO: 1.6 V 196 #define SX126X_DIO3_OUTPUT_1_7 0x01 // 7 0 1.7 V 197 #define SX126X_DIO3_OUTPUT_1_8 0x02 // 7 0 1.8 V 198 #define SX126X_DIO3_OUTPUT_2_2 0x03 // 7 0 2.2 V 199 #define SX126X_DIO3_OUTPUT_2_4 0x04 // 7 0 2.4 V 200 #define SX126X_DIO3_OUTPUT_2_7 0x05 // 7 0 2.7 V 201 #define SX126X_DIO3_OUTPUT_3_0 0x06 // 7 0 3.0 V 202 #define SX126X_DIO3_OUTPUT_3_3 0x07 // 7 0 3.3 V 205 #define SX126X_PACKET_TYPE_GFSK 0x00 // 7 0 packet type: GFSK 206 #define SX126X_PACKET_TYPE_LORA 0x01 // 7 0 LoRa 209 #define SX126X_PA_RAMP_10U 0x00 // 7 0 ramp time: 10 us 210 #define SX126X_PA_RAMP_20U 0x01 // 7 0 20 us 211 #define SX126X_PA_RAMP_40U 0x02 // 7 0 40 us 212 #define SX126X_PA_RAMP_80U 0x03 // 7 0 80 us 213 #define SX126X_PA_RAMP_200U 0x04 // 7 0 200 us 214 #define SX126X_PA_RAMP_800U 0x05 // 7 0 800 us 215 #define SX126X_PA_RAMP_1700U 0x06 // 7 0 1700 us 216 #define SX126X_PA_RAMP_3400U 0x07 // 7 0 3400 us 219 #define SX126X_GFSK_FILTER_NONE 0x00 // 7 0 GFSK filter: none 220 #define SX126X_GFSK_FILTER_GAUSS_0_3 0x08 // 7 0 Gaussian, BT = 0.3 221 #define SX126X_GFSK_FILTER_GAUSS_0_5 0x09 // 7 0 Gaussian, BT = 0.5 222 #define SX126X_GFSK_FILTER_GAUSS_0_7 0x0A // 7 0 Gaussian, BT = 0.7 223 #define SX126X_GFSK_FILTER_GAUSS_1 0x0B // 7 0 Gaussian, BT = 1 224 #define SX126X_GFSK_RX_BW_4_8 0x1F // 7 0 GFSK Rx bandwidth: 4.8 kHz 225 #define SX126X_GFSK_RX_BW_5_8 0x17 // 7 0 5.8 kHz 226 #define SX126X_GFSK_RX_BW_7_3 0x0F // 7 0 7.3 kHz 227 #define SX126X_GFSK_RX_BW_9_7 0x1E // 7 0 9.7 kHz 228 #define SX126X_GFSK_RX_BW_11_7 0x16 // 7 0 11.7 kHz 229 #define SX126X_GFSK_RX_BW_14_6 0x0E // 7 0 14.6 kHz 230 #define SX126X_GFSK_RX_BW_19_5 0x1D // 7 0 19.5 kHz 231 #define SX126X_GFSK_RX_BW_23_4 0x15 // 7 0 23.4 kHz 232 #define SX126X_GFSK_RX_BW_29_3 0x0D // 7 0 29.3 kHz 233 #define SX126X_GFSK_RX_BW_39_0 0x1C // 7 0 39.0 kHz 234 #define SX126X_GFSK_RX_BW_46_9 0x14 // 7 0 46.9 kHz 235 #define SX126X_GFSK_RX_BW_58_6 0x0C // 7 0 58.6 kHz 236 #define SX126X_GFSK_RX_BW_78_2 0x1B // 7 0 78.2 kHz 237 #define SX126X_GFSK_RX_BW_93_8 0x13 // 7 0 93.8 kHz 238 #define SX126X_GFSK_RX_BW_117_3 0x0B // 7 0 117.3 kHz 239 #define SX126X_GFSK_RX_BW_156_2 0x1A // 7 0 156.2 kHz 240 #define SX126X_GFSK_RX_BW_187_2 0x12 // 7 0 187.2 kHz 241 #define SX126X_GFSK_RX_BW_234_3 0x0A // 7 0 234.3 kHz 242 #define SX126X_GFSK_RX_BW_312_0 0x19 // 7 0 312.0 kHz 243 #define SX126X_GFSK_RX_BW_373_6 0x11 // 7 0 373.6 kHz 244 #define SX126X_GFSK_RX_BW_467_0 0x09 // 7 0 467.0 kHz 245 #define SX126X_LORA_BW_7_8 0x00 // 7 0 LoRa bandwidth: 7.8 kHz 246 #define SX126X_LORA_BW_10_4 0x08 // 7 0 10.4 kHz 247 #define SX126X_LORA_BW_15_6 0x01 // 7 0 15.6 kHz 248 #define SX126X_LORA_BW_20_8 0x09 // 7 0 20.8 kHz 249 #define SX126X_LORA_BW_31_25 0x02 // 7 0 31.25 kHz 250 #define SX126X_LORA_BW_41_7 0x0A // 7 0 41.7 kHz 251 #define SX126X_LORA_BW_62_5 0x03 // 7 0 62.5 kHz 252 #define SX126X_LORA_BW_125_0 0x04 // 7 0 125.0 kHz 253 #define SX126X_LORA_BW_250_0 0x05 // 7 0 250.0 kHz 254 #define SX126X_LORA_BW_500_0 0x06 // 7 0 500.0 kHz 255 #define SX126X_LORA_CR_4_5 0x01 // 7 0 LoRa coding rate: 4/5 256 #define SX126X_LORA_CR_4_6 0x02 // 7 0 4/6 257 #define SX126X_LORA_CR_4_7 0x03 // 7 0 4/7 258 #define SX126X_LORA_CR_4_8 0x04 // 7 0 4/8 259 #define SX126X_LORA_LOW_DATA_RATE_OPTIMIZE_OFF 0x00 // 7 0 LoRa low data rate optimization: disabled 260 #define SX126X_LORA_LOW_DATA_RATE_OPTIMIZE_ON 0x01 // 7 0 enabled 263 #define SX126X_GFSK_PREAMBLE_DETECT_OFF 0x00 // 7 0 GFSK minimum preamble length before reception starts: detector disabled 264 #define SX126X_GFSK_PREAMBLE_DETECT_8 0x04 // 7 0 8 bits 265 #define SX126X_GFSK_PREAMBLE_DETECT_16 0x05 // 7 0 16 bits 266 #define SX126X_GFSK_PREAMBLE_DETECT_24 0x06 // 7 0 24 bits 267 #define SX126X_GFSK_PREAMBLE_DETECT_32 0x07 // 7 0 32 bits 268 #define SX126X_GFSK_ADDRESS_FILT_OFF 0x00 // 7 0 GFSK address filtering: disabled 269 #define SX126X_GFSK_ADDRESS_FILT_NODE 0x01 // 7 0 node only 270 #define SX126X_GFSK_ADDRESS_FILT_NODE_BROADCAST 0x02 // 7 0 node and broadcast 271 #define SX126X_GFSK_PACKET_FIXED 0x00 // 7 0 GFSK packet type: fixed (payload length known in advance to both sides) 272 #define SX126X_GFSK_PACKET_VARIABLE 0x01 // 7 0 variable (payload length added to packet) 273 #define SX126X_GFSK_CRC_OFF 0x01 // 7 0 GFSK packet CRC: disabled 274 #define SX126X_GFSK_CRC_1_BYTE 0x00 // 7 0 1 byte 275 #define SX126X_GFSK_CRC_2_BYTE 0x02 // 7 0 2 byte 276 #define SX126X_GFSK_CRC_1_BYTE_INV 0x04 // 7 0 1 byte, inverted 277 #define SX126X_GFSK_CRC_2_BYTE_INV 0x06 // 7 0 2 byte, inverted 278 #define SX126X_GFSK_WHITENING_OFF 0x00 // 7 0 GFSK data whitening: disabled 279 #define SX126X_GFSK_WHITENING_ON 0x01 // 7 0 enabled 280 #define SX126X_LORA_HEADER_EXPLICIT 0x00 // 7 0 LoRa header mode: explicit 281 #define SX126X_LORA_HEADER_IMPLICIT 0x01 // 7 0 implicit 282 #define SX126X_LORA_CRC_OFF 0x00 // 7 0 LoRa CRC mode: disabled 283 #define SX126X_LORA_CRC_ON 0x01 // 7 0 enabled 284 #define SX126X_LORA_IQ_STANDARD 0x00 // 7 0 LoRa IQ setup: standard 285 #define SX126X_LORA_IQ_INVERTED 0x01 // 7 0 inverted 288 #define SX126X_CAD_ON_1_SYMB 0x00 // 7 0 number of symbols used for CAD: 1 289 #define SX126X_CAD_ON_2_SYMB 0x01 // 7 0 2 290 #define SX126X_CAD_ON_4_SYMB 0x02 // 7 0 4 291 #define SX126X_CAD_ON_8_SYMB 0x03 // 7 0 8 292 #define SX126X_CAD_ON_16_SYMB 0x04 // 7 0 16 293 #define SX126X_CAD_GOTO_STDBY 0x00 // 7 0 after CAD is done, always go to STDBY_RC mode 294 #define SX126X_CAD_GOTO_RX 0x01 // 7 0 after CAD is done, go to Rx mode if activity is detected 297 #define SX126X_STATUS_MODE_STDBY_RC 0b00100000 // 6 4 current chip mode: STDBY_RC 298 #define SX126X_STATUS_MODE_STDBY_XOSC 0b00110000 // 6 4 STDBY_XOSC 299 #define SX126X_STATUS_MODE_FS 0b01000000 // 6 4 FS 300 #define SX126X_STATUS_MODE_RX 0b01010000 // 6 4 RX 301 #define SX126X_STATUS_MODE_TX 0b01100000 // 6 4 TX 302 #define SX126X_STATUS_DATA_AVAILABLE 0b00000100 // 3 1 command status: packet received and data can be retrieved 303 #define SX126X_STATUS_CMD_TIMEOUT 0b00000110 // 3 1 SPI command timed out 304 #define SX126X_STATUS_CMD_INVALID 0b00001000 // 3 1 invalid SPI command 305 #define SX126X_STATUS_CMD_FAILED 0b00001010 // 3 1 SPI command failed to execute 306 #define SX126X_STATUS_TX_DONE 0b00001100 // 3 1 packet transmission done 307 #define SX126X_STATUS_SPI_FAILED 0b11111111 // 7 0 SPI transaction failed 310 #define SX126X_GFSK_RX_STATUS_PREAMBLE_ERR 0b10000000 // 7 7 GFSK Rx status: preamble error 311 #define SX126X_GFSK_RX_STATUS_SYNC_ERR 0b01000000 // 6 6 sync word error 312 #define SX126X_GFSK_RX_STATUS_ADRS_ERR 0b00100000 // 5 5 address error 313 #define SX126X_GFSK_RX_STATUS_CRC_ERR 0b00010000 // 4 4 CRC error 314 #define SX126X_GFSK_RX_STATUS_LENGTH_ERR 0b00001000 // 3 3 length error 315 #define SX126X_GFSK_RX_STATUS_ABORT_ERR 0b00000100 // 2 2 abort error 316 #define SX126X_GFSK_RX_STATUS_PACKET_RECEIVED 0b00000010 // 2 2 packet received 317 #define SX126X_GFSK_RX_STATUS_PACKET_SENT 0b00000001 // 2 2 packet sent 320 #define SX126X_PA_RAMP_ERR 0b100000000 // 8 8 device errors: PA ramping failed 321 #define SX126X_PLL_LOCK_ERR 0b001000000 // 6 6 PLL failed to lock 322 #define SX126X_XOSC_START_ERR 0b000100000 // 5 5 crystal oscillator failed to start 323 #define SX126X_IMG_CALIB_ERR 0b000010000 // 4 4 image calibration failed 324 #define SX126X_ADC_CALIB_ERR 0b000001000 // 3 3 ADC calibration failed 325 #define SX126X_PLL_CALIB_ERR 0b000000100 // 2 2 PLL calibration failed 326 #define SX126X_RC13M_CALIB_ERR 0b000000010 // 1 1 RC13M calibration failed 327 #define SX126X_RC64K_CALIB_ERR 0b000000001 // 0 0 RC64K calibration failed 332 #define SX126X_SYNC_WORD_PUBLIC 0x34 // actually 0x3444 NOTE: The low nibbles in each byte (0x_4_4) are masked out since apparently, they're reserved. 333 #define SX126X_SYNC_WORD_PRIVATE 0x12 // actually 0x1424 You couldn't make this up if you tried. 378 int16_t
begin(
float bw, uint8_t sf, uint8_t cr, uint8_t syncWord, uint16_t preambleLength,
float tcxoVoltage,
bool useRegulatorLDO =
false);
397 int16_t
beginFSK(
float br,
float freqDev,
float rxBw, uint16_t preambleLength,
float tcxoVoltage,
bool useRegulatorLDO =
false);
407 int16_t
reset(
bool verify =
true);
421 int16_t
transmit(uint8_t* data,
size_t len, uint8_t addr = 0)
override;
433 int16_t
receive(uint8_t* data,
size_t len)
override;
466 int16_t
sleep(
bool retainConfig =
true);
510 int16_t
startTransmit(uint8_t* data,
size_t len, uint8_t addr = 0)
override;
519 int16_t
startReceive(uint32_t timeout = SX126X_RX_TIMEOUT_INF);
555 int16_t
readData(uint8_t* data,
size_t len)
override;
595 int16_t
setSyncWord(uint8_t syncWord, uint8_t controlBits = 0x44);
669 int16_t
setSyncWord(uint8_t* syncWord, uint8_t len);
680 int16_t
setSyncBits(uint8_t *syncWord, uint8_t bitsLen);
720 int16_t
setCRC(uint8_t len, uint16_t initial = 0x1D0F, uint16_t polynomial = 0x1021,
bool inverted =
true);
731 int16_t
setWhitening(
bool enabled, uint16_t initial = 0x0100);
743 int16_t
setTCXO(
float voltage, uint32_t delay = 5000);
883 #ifndef RADIOLIB_GODMODE 887 int16_t setTx(uint32_t timeout = 0);
888 int16_t setRx(uint32_t timeout);
890 int16_t setPaConfig(uint8_t paDutyCycle, uint8_t deviceSel, uint8_t hpMax = SX126X_PA_CONFIG_HP_MAX, uint8_t paLut = SX126X_PA_CONFIG_PA_LUT);
891 int16_t writeRegister(uint16_t addr, uint8_t* data, uint8_t numBytes);
892 int16_t readRegister(uint16_t addr, uint8_t* data, uint8_t numBytes);
893 int16_t writeBuffer(uint8_t* data, uint8_t numBytes, uint8_t offset = 0x00);
894 int16_t readBuffer(uint8_t* data, uint8_t numBytes);
895 int16_t setDioIrqParams(uint16_t irqMask, uint16_t dio1Mask, uint16_t dio2Mask = SX126X_IRQ_NONE, uint16_t dio3Mask = SX126X_IRQ_NONE);
896 uint16_t getIrqStatus();
897 int16_t clearIrqStatus(uint16_t clearIrqParams = SX126X_IRQ_ALL);
898 int16_t setRfFrequency(uint32_t frf);
899 int16_t calibrateImage(uint8_t* data);
900 uint8_t getPacketType();
901 int16_t setTxParams(uint8_t power, uint8_t rampTime = SX126X_PA_RAMP_200U);
902 int16_t setModulationParams(uint8_t sf, uint8_t bw, uint8_t cr, uint8_t ldro);
903 int16_t setModulationParamsFSK(uint32_t br, uint8_t pulseShape, uint8_t rxBw, uint32_t freqDev);
904 int16_t setPacketParams(uint16_t preambleLength, uint8_t crcType, uint8_t payloadLength, uint8_t headerType, uint8_t invertIQ = SX126X_LORA_IQ_STANDARD);
905 int16_t setPacketParamsFSK(uint16_t preambleLength, uint8_t crcType, uint8_t syncWordLength, uint8_t addrComp, uint8_t whitening, uint8_t packetType = SX126X_GFSK_PACKET_VARIABLE, uint8_t payloadLength = 0xFF, uint8_t preambleDetectorLength = SX126X_GFSK_PREAMBLE_DETECT_16);
906 int16_t setBufferBaseAddress(uint8_t txBaseAddress = 0x00, uint8_t rxBaseAddress = 0x00);
907 int16_t setRegulatorMode(uint8_t mode);
909 uint32_t getPacketStatus();
910 uint16_t getDeviceErrors();
911 int16_t clearDeviceErrors();
913 int16_t startReceiveCommon();
914 int16_t setFrequencyRaw(
float freq);
915 int16_t setPacketMode(uint8_t mode, uint8_t len);
916 int16_t setHeaderType(uint8_t headerType,
size_t len = 0xFF);
919 int16_t fixSensitivity();
920 int16_t fixPaClamping();
921 int16_t fixImplicitTimeout();
922 int16_t fixInvertedIQ(uint8_t iqConfig);
924 #ifndef RADIOLIB_GODMODE 929 uint8_t _bw = 0, _sf = 0, _cr = 0, _ldro = 0, _crcType = 0, _headerType = 0;
930 uint16_t _preambleLength = 0;
932 bool _ldroAuto =
true;
934 uint32_t _br = 0, _freqDev = 0;
935 uint8_t _rxBw = 0, _pulseShape = 0, _crcTypeFSK = 0, _syncWordLength = 0, _addrComp = 0, _whitening = 0, _packetType = 0;
936 uint16_t _preambleLengthFSK = 0;
941 uint32_t _tcxoDelay = 0;
943 size_t _implicitLen = 0;
945 int16_t config(uint8_t modem);
948 int16_t SPIwriteCommand(uint8_t cmd, uint8_t* data, uint8_t numBytes,
bool waitForBusy =
true);
949 int16_t SPIwriteCommand(uint8_t* cmd, uint8_t cmdLen, uint8_t* data, uint8_t numBytes,
bool waitForBusy =
true);
950 int16_t SPIreadCommand(uint8_t cmd, uint8_t* data, uint8_t numBytes,
bool waitForBusy =
true);
951 int16_t SPIreadCommand(uint8_t* cmd, uint8_t cmdLen, uint8_t* data, uint8_t numBytes,
bool waitForBusy =
true);
952 int16_t SPItransfer(uint8_t* cmd, uint8_t cmdLen,
bool write, uint8_t* dataOut, uint8_t* dataIn, uint8_t numBytes,
bool waitForBusy, uint32_t timeout = 5000);
void setRfSwitchPins(RADIOLIB_PIN_TYPE rxEn, RADIOLIB_PIN_TYPE txEn)
Some modules contain external RF switch controlled by two pins. This function gives RadioLib control ...
Definition: SX126x.cpp:1151
int16_t setBroadcastAddress(uint8_t broadAddr)
Sets broadcast address. Calling this method will also enable address filtering for node and broadcast...
Definition: SX126x.cpp:930
int16_t setSyncWord(uint8_t syncWord, uint8_t controlBits=0x44)
Sets LoRa sync word.
Definition: SX126x.cpp:682
float getCurrentLimit()
Reads current protection limit.
Definition: SX126x.cpp:706
@@ -94,7 +94,7 @@ $(document).ready(function(){initNavTree('_s_x126x_8h_source.html','');});
int16_t setSyncBits(uint8_t *syncWord, uint8_t bitsLen)
Sets FSK sync word in the form of array of up to 8 bytes.
Definition: SX126x.cpp:886
uint8_t random()
Get one truly random byte from RSSI noise.
Definition: SX126x.cpp:1176
int16_t readData(uint8_t *data, size_t len) override
Reads data received after calling startReceive method.
Definition: SX126x.cpp:574
-
int16_t setDio2AsRfSwitch(bool enable=true)
Set DIO2 to function as RF switch (default in Semtech example designs).
Definition: SX126x.cpp:1240
+
int16_t setDio2AsRfSwitch(bool enable=true)
Set DIO2 to function as RF switch (default in Semtech example designs).
Definition: SX126x.cpp:1245
int16_t setDataShaping(uint8_t sh) override
Sets time-bandwidth product of Gaussian filter applied for shaping. Allowed values are RADIOLIB_SHAPI...
Definition: SX126x.cpp:833
int16_t explicitHeader()
Set explicit header mode for future reception/transmission.
Definition: SX126x.cpp:1135
int16_t setBitRate(float br)
Sets FSK bit rate. Allowed values range from 0.6 to 300.0 kbps.
Definition: SX126x.cpp:749
diff --git a/class_s_x126x.html b/class_s_x126x.html
index 9944504f..70f3bb27 100644
--- a/class_s_x126x.html
+++ b/class_s_x126x.html
@@ -1638,11 +1638,12 @@ void
Parameters
- TCXO | reference voltage in volts. Allowed values are 1.6, 1.7, 1.8, 2.2. 2.4, 2.7, 3.0 and 3.3 V |
- TCXO | timeout in us. Defaults to 5000 us. |
+ TCXO | reference voltage in volts. Allowed values are 1.6, 1.7, 1.8, 2.2. 2.4, 2.7, 3.0 and 3.3 V. Set to 0 to disable TCXO. NOTE: After setting this parameter to 0, the module will be reset (since there's no other way to disable TCXO). |
+ TCXO | timeout in us. Defaults to 5000 us. |
+- Returns
- Status Codes
|