RadioLib
Universal wireless communication library for Arduino
Loading...
Searching...
No Matches
SX126x_registers.h
1#if !defined(_RADIOLIB_SX126X_REGISTERS_H)
2#define _RADIOLIB_SX126X_REGISTERS_H
3
4#include "../../TypeDef.h"
5
6#if !RADIOLIB_EXCLUDE_SX126X
7
8// SX126X register map
9#define RADIOLIB_SX126X_REG_BPSK_PACKET_PARAMS 0x00F0
10#define RADIOLIB_SX126X_REG_RX_GAIN_RETENTION_0 0x029F // SX1268 datasheet v1.1, section 9.6
11#define RADIOLIB_SX126X_REG_RX_GAIN_RETENTION_1 0x02A0 // SX1268 datasheet v1.1, section 9.6
12#define RADIOLIB_SX126X_REG_RX_GAIN_RETENTION_2 0x02A1 // SX1268 datasheet v1.1, section 9.6
13#define RADIOLIB_SX126X_REG_VERSION_STRING 0x0320
14#define RADIOLIB_SX126X_REG_HOPPING_ENABLE 0x0385
15#define RADIOLIB_SX126X_REG_LR_FHSS_PACKET_LENGTH 0x0386
16#define RADIOLIB_SX126X_REG_LR_FHSS_NUM_HOPPING_BLOCKS 0x0387
17#define RADIOLIB_SX126X_REG_LR_FHSS_NUM_SYMBOLS_FREQX_MSB(X) (0x0388 + (X)*6)
18#define RADIOLIB_SX126X_REG_LR_FHSS_NUM_SYMBOLS_FREQX_LSB(X) (0x0389 + (X)*6)
19#define RADIOLIB_SX126X_REG_LR_FHSS_FREQX_0(X) (0x038A + (X)*6)
20#define RADIOLIB_SX126X_REG_LR_FHSS_FREQX_1(X) (0x038B + (X)*6)
21#define RADIOLIB_SX126X_REG_LR_FHSS_FREQX_2(X) (0x038C + (X)*6)
22#define RADIOLIB_SX126X_REG_LR_FHSS_FREQX_3(X) (0x038D + (X)*6)
23#define RADIOLIB_SX126X_REG_SPECTRAL_SCAN_RESULT 0x0401
24#define RADIOLIB_SX126X_REG_DIOX_OUT_ENABLE 0x0580
25#define RADIOLIB_SX126X_REG_DIOX_DRIVE_STRENGTH 0x0582
26#define RADIOLIB_SX126X_REG_DIOX_IN_ENABLE 0x0583
27#define RADIOLIB_SX126X_REG_DIOX_PULL_UP_CTRL 0x0584
28#define RADIOLIB_SX126X_REG_DIOX_PULL_DOWN_CTRL 0x0585
29#define RADIOLIB_SX126X_REG_TX_BITBANG_ENABLE_0 0x0587
30#define RADIOLIB_SX126X_REG_PATCH_UPDATE_ENABLE 0x0610
31#define RADIOLIB_SX126X_REG_TX_BITBANG_ENABLE_1 0x0680
32#define RADIOLIB_SX126X_REG_WHITENING_INITIAL_MSB 0x06B8
33#define RADIOLIB_SX126X_REG_WHITENING_INITIAL_LSB 0x06B9
34#define RADIOLIB_SX126X_REG_RX_TX_PLD_LEN 0x06BB
35#define RADIOLIB_SX126X_REG_CRC_INITIAL_MSB 0x06BC
36#define RADIOLIB_SX126X_REG_CRC_INITIAL_LSB 0x06BD
37#define RADIOLIB_SX126X_REG_CRC_POLYNOMIAL_MSB 0x06BE
38#define RADIOLIB_SX126X_REG_CRC_POLYNOMIAL_LSB 0x06BF
39#define RADIOLIB_SX126X_REG_SYNC_WORD_0 0x06C0
40#define RADIOLIB_SX126X_REG_SYNC_WORD_1 0x06C1
41#define RADIOLIB_SX126X_REG_SYNC_WORD_2 0x06C2
42#define RADIOLIB_SX126X_REG_SYNC_WORD_3 0x06C3
43#define RADIOLIB_SX126X_REG_SYNC_WORD_4 0x06C4
44#define RADIOLIB_SX126X_REG_SYNC_WORD_5 0x06C5
45#define RADIOLIB_SX126X_REG_SYNC_WORD_6 0x06C6
46#define RADIOLIB_SX126X_REG_SYNC_WORD_7 0x06C7
47#define RADIOLIB_SX126X_REG_NODE_ADDRESS 0x06CD
48#define RADIOLIB_SX126X_REG_BROADCAST_ADDRESS 0x06CE
49#define RADIOLIB_SX126X_REG_PAYLOAD_LENGTH 0x0702
50#define RADIOLIB_SX126X_REG_PACKET_PARAMS 0x0704
51#define RADIOLIB_SX126X_REG_LORA_SYNC_TIMEOUT 0x0706
52#define RADIOLIB_SX126X_REG_IQ_CONFIG 0x0736
53#define RADIOLIB_SX126X_REG_LORA_SYNC_WORD_MSB 0x0740
54#define RADIOLIB_SX126X_REG_LORA_SYNC_WORD_LSB 0x0741
55#define RADIOLIB_SX126X_REG_LORA_RX_CODING_RATE 0x0749
56#define RADIOLIB_SX126X_REG_FREQ_ERROR_RX_CRC 0x076B
57#define RADIOLIB_SX126X_REG_SPECTRAL_SCAN_STATUS 0x07CD
58#define RADIOLIB_SX126X_REG_RX_ADDR_PTR 0x0803
59#define RADIOLIB_SX126X_REG_RANDOM_NUMBER_0 0x0819
60#define RADIOLIB_SX126X_REG_RANDOM_NUMBER_1 0x081A
61#define RADIOLIB_SX126X_REG_RANDOM_NUMBER_2 0x081B
62#define RADIOLIB_SX126X_REG_RANDOM_NUMBER_3 0x081C
63#define RADIOLIB_SX126X_REG_SENSITIVITY_CONFIG 0x0889 // SX1268 datasheet v1.1, section 15.1
64#define RADIOLIB_SX126X_REG_RF_FREQUENCY_0 0x088B
65#define RADIOLIB_SX126X_REG_RF_FREQUENCY_1 0x088C
66#define RADIOLIB_SX126X_REG_RF_FREQUENCY_2 0x088D
67#define RADIOLIB_SX126X_REG_RF_FREQUENCY_3 0x088E
68#define RADIOLIB_SX126X_REG_RSSI_AVG_WINDOW 0x089B
69#define RADIOLIB_SX126X_REG_RX_GAIN 0x08AC
70#define RADIOLIB_SX126X_REG_TX_CLAMP_CONFIG 0x08D8
71#define RADIOLIB_SX126X_REG_ANA_LNA 0x08E2
72#define RADIOLIB_SX126X_REG_LNA_CAP_TUNE_N 0x08E3
73#define RADIOLIB_SX126X_REG_LNA_CAP_TUNE_P 0x08E4
74#define RADIOLIB_SX126X_REG_ANA_MIXER 0x08E5
75#define RADIOLIB_SX126X_REG_OCP_CONFIGURATION 0x08E7
76#define RADIOLIB_SX126X_REG_RTC_CTRL 0x0902
77#define RADIOLIB_SX126X_REG_XTA_TRIM 0x0911
78#define RADIOLIB_SX126X_REG_XTB_TRIM 0x0912
79#define RADIOLIB_SX126X_REG_DIO3_OUT_VOLTAGE_CTRL 0x0920
80#define RADIOLIB_SX126X_REG_EVENT_MASK 0x0944
81#define RADIOLIB_SX126X_REG_PATCH_MEMORY_BASE 0x8000
82
83// SX126X SPI register variables
84//RADIOLIB_SX126X_REG_HOPPING_ENABLE MSB LSB DESCRIPTION
85#define RADIOLIB_SX126X_HOPPING_ENABLED 0b00000001 // 0 0 intra-packet hopping for LR-FHSS: enabled
86#define RADIOLIB_SX126X_HOPPING_DISABLED 0b00000000 // 0 0 (disabled)
87
88//RADIOLIB_SX126X_REG_LORA_SYNC_WORD_MSB + LSB
89#define RADIOLIB_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.
90#define RADIOLIB_SX126X_SYNC_WORD_PRIVATE 0x12 // actually 0x1424 You couldn't make this up if you tried.
91
92// RADIOLIB_SX126X_REG_TX_BITBANG_ENABLE_1
93#define RADIOLIB_SX126X_TX_BITBANG_1_DISABLED 0b00000000 // 6 4 Tx bitbang: disabled (default)
94#define RADIOLIB_SX126X_TX_BITBANG_1_ENABLED 0b00010000 // 6 4 enabled
95
96// RADIOLIB_SX126X_REG_TX_BITBANG_ENABLE_0
97#define RADIOLIB_SX126X_TX_BITBANG_0_DISABLED 0b00000000 // 3 0 Tx bitbang: disabled (default)
98#define RADIOLIB_SX126X_TX_BITBANG_0_ENABLED 0b00001100 // 3 0 enabled
99
100// RADIOLIB_SX126X_REG_DIOX_OUT_ENABLE
101#define RADIOLIB_SX126X_DIO1_OUT_DISABLED 0b00000010 // 1 1 DIO1 output: disabled
102#define RADIOLIB_SX126X_DIO1_OUT_ENABLED 0b00000000 // 1 1 enabled
103#define RADIOLIB_SX126X_DIO2_OUT_DISABLED 0b00000100 // 2 2 DIO2 output: disabled
104#define RADIOLIB_SX126X_DIO2_OUT_ENABLED 0b00000000 // 2 2 enabled
105#define RADIOLIB_SX126X_DIO3_OUT_DISABLED 0b00001000 // 3 3 DIO3 output: disabled
106#define RADIOLIB_SX126X_DIO3_OUT_ENABLED 0b00000000 // 3 3 enabled
107
108// RADIOLIB_SX126X_REG_DIOX_IN_ENABLE
109#define RADIOLIB_SX126X_DIO1_IN_DISABLED 0b00000000 // 1 1 DIO1 input: disabled
110#define RADIOLIB_SX126X_DIO1_IN_ENABLED 0b00000010 // 1 1 enabled
111#define RADIOLIB_SX126X_DIO2_IN_DISABLED 0b00000000 // 2 2 DIO2 input: disabled
112#define RADIOLIB_SX126X_DIO2_IN_ENABLED 0b00000100 // 2 2 enabled
113#define RADIOLIB_SX126X_DIO3_IN_DISABLED 0b00000000 // 3 3 DIO3 input: disabled
114#define RADIOLIB_SX126X_DIO3_IN_ENABLED 0b00001000 // 3 3 enabled
115
116// RADIOLIB_SX126X_REG_RX_GAIN
117#define RADIOLIB_SX126X_RX_GAIN_BOOSTED 0x96 // 7 0 Rx gain: boosted
118#define RADIOLIB_SX126X_RX_GAIN_POWER_SAVING 0x94 // 7 0 power saving
119#define RADIOLIB_SX126X_RX_GAIN_SPECTRAL_SCAN 0xCB // 7 0 spectral scan
120
121// RADIOLIB_SX126X_REG_PATCH_UPDATE_ENABLE
122#define RADIOLIB_SX126X_PATCH_UPDATE_DISABLED 0b00000000 // 4 4 patch update: disabled
123#define RADIOLIB_SX126X_PATCH_UPDATE_ENABLED 0b00010000 // 4 4 enabled
124
125// RADIOLIB_SX126X_REG_SPECTRAL_SCAN_STATUS
126#define RADIOLIB_SX126X_SPECTRAL_SCAN_NONE 0x00 // 7 0 spectral scan status: none
127#define RADIOLIB_SX126X_SPECTRAL_SCAN_ONGOING 0x0F // 7 0 ongoing
128#define RADIOLIB_SX126X_SPECTRAL_SCAN_ABORTED 0xF0 // 7 0 aborted
129#define RADIOLIB_SX126X_SPECTRAL_SCAN_COMPLETED 0xFF // 7 0 completed
130
131// RADIOLIB_SX126X_REG_RSSI_AVG_WINDOW
132#define RADIOLIB_SX126X_SPECTRAL_SCAN_WINDOW_DEFAULT (0x05 << 2) // 7 0 default RSSI average window
133
134// RADIOLIB_SX126X_REG_ANA_LNA
135#define RADIOLIB_SX126X_LNA_RNG_DISABLED 0b00000001 // 0 0 random number: disabled
136#define RADIOLIB_SX126X_LNA_RNG_ENABLED 0b00000000 // 0 0 enabled
137
138// RADIOLIB_SX126X_REG_ANA_MIXER
139#define RADIOLIB_SX126X_MIXER_RNG_DISABLED 0b00000001 // 7 7 random number: disabled
140#define RADIOLIB_SX126X_MIXER_RNG_ENABLED 0b00000000 // 7 7 enabled
141
142// size of the spectral scan result
143#define RADIOLIB_SX126X_SPECTRAL_SCAN_RES_SIZE (33)
144
145// LR-FHSS configuration
146#define RADIOLIB_SX126X_LR_FHSS_CR_5_6 (0x00UL << 0) // 7 0 LR FHSS coding rate: 5/6
147#define RADIOLIB_SX126X_LR_FHSS_CR_2_3 (0x01UL << 0) // 7 0 2/3
148#define RADIOLIB_SX126X_LR_FHSS_CR_1_2 (0x02UL << 0) // 7 0 1/2
149#define RADIOLIB_SX126X_LR_FHSS_CR_1_3 (0x03UL << 0) // 7 0 1/3
150#define RADIOLIB_SX126X_LR_FHSS_MOD_TYPE_GMSK (0x00UL << 0) // 7 0 LR FHSS modulation: GMSK
151#define RADIOLIB_SX126X_LR_FHSS_GRID_STEP_FCC (0x00UL << 0) // 7 0 LR FHSS step size: 25.390625 kHz (FCC)
152#define RADIOLIB_SX126X_LR_FHSS_GRID_STEP_NON_FCC (0x01UL << 0) // 7 0 3.90625 kHz (non-FCC)
153#define RADIOLIB_SX126X_LR_FHSS_HOPPING_DISABLED (0x00UL << 0) // 7 0 LR FHSS hopping: disabled
154#define RADIOLIB_SX126X_LR_FHSS_HOPPING_ENABLED (0x01UL << 0) // 7 0 enabled
155#define RADIOLIB_SX126X_LR_FHSS_BW_39_06 (0x00UL << 0) // 7 0 LR FHSS bandwidth: 39.06 kHz
156#define RADIOLIB_SX126X_LR_FHSS_BW_85_94 (0x01UL << 0) // 7 0 85.94 kHz
157#define RADIOLIB_SX126X_LR_FHSS_BW_136_72 (0x02UL << 0) // 7 0 136.72 kHz
158#define RADIOLIB_SX126X_LR_FHSS_BW_183_59 (0x03UL << 0) // 7 0 183.59 kHz
159#define RADIOLIB_SX126X_LR_FHSS_BW_335_94 (0x04UL << 0) // 7 0 335.94 kHz
160#define RADIOLIB_SX126X_LR_FHSS_BW_386_72 (0x05UL << 0) // 7 0 386.72 kHz
161#define RADIOLIB_SX126X_LR_FHSS_BW_722_66 (0x06UL << 0) // 7 0 722.66 kHz
162#define RADIOLIB_SX126X_LR_FHSS_BW_773_44 (0x07UL << 0) // 7 0 773.44 kHz
163#define RADIOLIB_SX126X_LR_FHSS_BW_1523_4 (0x08UL << 0) // 7 0 1523.4 kHz
164#define RADIOLIB_SX126X_LR_FHSS_BW_1574_2 (0x09UL << 0) // 7 0 1574.2 kHz
165
166#endif
167
168#endif