RadioLib
Universal wireless communication library for Arduino
AX5243.h
1 #if !defined(_RADIOLIB_AX5243_H) && !defined(RADIOLIB_EXCLUDE_AX5243)
2 #define _RADIOLIB_AX5243_H
3 
4 #include "../../TypeDef.h"
5 #include "../../Module.h"
6 
7 #include "../../protocols/PhysicalLayer/PhysicalLayer.h"
8 
9 // AX5243 physical layer properties
10 #define AX5243_FREQUENCY_STEP_SIZE (0.98)
11 #define AX5243_MAX_PACKET_LENGTH (256)
12 
13 // AX5243 register map
14 #define AX5243_REG_REVISION (0x0000)
15 #define AX5243_REG_SCRATCH (0x0001)
16 #define AX5243_REG_PWR_MODE (0x0002)
17 #define AX5243_REG_POW_STAT (0x0003)
18 #define AX5243_REG_POW_STICKY_STAT (0x0004)
19 #define AX5243_REG_POW_IRQ_MASK (0x0005)
20 #define AX5243_REG_IRQ_MASK_1 (0x0006)
21 #define AX5243_REG_IRQ_MASK_0 (0x0007)
22 #define AX5243_REG_RADIO_EVENTS_MASK_1 (0x0008)
23 #define AX5243_REG_RADIO_EVENTS_MASK_0 (0x0009)
24 #define AX5243_REG_IRQ_INVERSION_1 (0x000A)
25 #define AX5243_REG_IRQ_INVERSION_0 (0x000B)
26 #define AX5243_REG_IRQ_REQUEST_1 (0x000C)
27 #define AX5243_REG_IRQ_REQUEST_0 (0x000D)
28 #define AX5243_REG_RADIO_EVENT_REQ_1 (0x000E)
29 #define AX5243_REG_RADIO_EVENT_REQ_0 (0x000F)
30 #define AX5243_REG_MODULATION (0x0010)
31 #define AX5243_REG_ENCODING (0x0011)
32 #define AX5243_REG_FRAMING (0x0012)
33 #define AX5243_REG_CRC_INIT_3 (0x0014)
34 #define AX5243_REG_CRC_INIT_2 (0x0015)
35 #define AX5243_REG_CRC_INIT_1 (0x0016)
36 #define AX5243_REG_CRC_INIT_0 (0x0017)
37 #define AX5243_REG_FEC (0x0018)
38 #define AX5243_REG_FEC_SYNC (0x0019)
39 #define AX5243_REG_FEC_STATUS (0x001A)
40 #define AX5243_REG_RADIO_STATE (0x001C)
41 #define AX5243_REG_XTAL_STATUS (0x001D)
42 #define AX5243_REG_PIN_STATE (0x0020)
43 #define AX5243_REG_PIN_FUNC_SYSCLK (0x0021)
44 #define AX5243_REG_PIN_FUNC_DCLK (0x0022)
45 #define AX5243_REG_PIN_FUNC_DATA (0x0023)
46 #define AX5243_REG_PIN_FUNC_IRQ (0x0024)
47 #define AX5243_REG_PIN_FUNC_ANTSEL (0x0025)
48 #define AX5243_REG_PIN_FUNC_PWRAMP (0x0026)
49 #define AX5243_REG_PWRAMP (0x0027)
50 #define AX5243_REG_FIFO_STAT (0x0028)
51 #define AX5243_REG_FIFO_DATA (0x0029)
52 #define AX5243_REG_FIFO_COUNT_1 (0x002A)
53 #define AX5243_REG_FIFO_COUNT_0 (0x002B)
54 #define AX5243_REG_FIFO_FREE_1 (0x002C)
55 #define AX5243_REG_FIFO_FREE_0 (0x002D)
56 #define AX5243_REG_FIFO_THRESH_1 (0x002E)
57 #define AX5243_REG_FIFO_THRESH_0 (0x002F)
58 #define AX5243_REG_PLL_LOOP (0x0030)
59 #define AX5243_REG_PLL_CPI (0x0031)
60 #define AX5243_REG_PLL_VCO_DIV (0x0032)
61 #define AX5243_REG_PLL_RANGING_A (0x0033)
62 #define AX5243_REG_FREQ_A_3 (0x0034)
63 #define AX5243_REG_FREQ_A_2 (0x0035)
64 #define AX5243_REG_FREQ_A_1 (0x0036)
65 #define AX5243_REG_FREQ_A_0 (0x0037)
66 #define AX5243_REG_PLL_LOOP_BOOST (0x0038)
67 #define AX5243_REG_PLL_CPI_BOOST (0x0039)
68 #define AX5243_REG_PLL_RANGING_B (0x003B)
69 #define AX5243_REG_FREQ_B_3 (0x003C)
70 #define AX5243_REG_FREQ_B_2 (0x003D)
71 #define AX5243_REG_FREQ_B_1 (0x003E)
72 #define AX5243_REG_FREQ_B_0 (0x003F)
73 #define AX5243_REG_RSSI (0x0040)
74 #define AX5243_REG_BGND_RSSI (0x0041)
75 #define AX5243_REG_DIVERSITY (0x0042)
76 #define AX5243_REG_AGC_COUNTER (0x0043)
77 #define AX5243_REG_TRK_DATARATE_2 (0x0045)
78 #define AX5243_REG_TRK_DATARATE_1 (0x0046)
79 #define AX5243_REG_TRK_DATARATE_0 (0x0047)
80 #define AX5243_REG_TRK_AMPL_1 (0x0048)
81 #define AX5243_REG_TRK_AMPL_0 (0x0049)
82 #define AX5243_REG_TRK_PHASE_1 (0x004A)
83 #define AX5243_REG_TRK_PHASE_0 (0x004B)
84 #define AX5243_REG_TRK_RF_FREQ_2 (0x004D)
85 #define AX5243_REG_TRK_RF_FREQ_1 (0x004E)
86 #define AX5243_REG_TRK_RF_FREQ_0 (0x004F)
87 #define AX5243_REG_TRK_FREQ_2 (0x0050)
88 #define AX5243_REG_TRK_FREQ_1 (0x0051)
89 #define AX5243_REG_TRK_FSK_DEMOD_1 (0x0052)
90 #define AX5243_REG_TRK_FSK_DEMOD_0 (0x0053)
91 #define AX5243_REG_TIMER_2 (0x0059)
92 #define AX5243_REG_TIMER_1 (0x005A)
93 #define AX5243_REG_TIMER_0 (0x005B)
94 #define AX5243_REG_WAKEUP_TIMER_1 (0x0068)
95 #define AX5243_REG_WAKEUP_TIMER_0 (0x0069)
96 #define AX5243_REG_WAKEUP_1 (0x006A)
97 #define AX5243_REG_WAKEUP_0 (0x006B)
98 #define AX5243_REG_WAKEUP_FREQ_1 (0x006C)
99 #define AX5243_REG_WAKEUP_FREQ_0 (0x006D)
100 #define AX5243_REG_WAKEUP_XO_EARLY (0x006E)
101 #define AX5243_REG_IF_FREQ_1 (0x0100)
102 #define AX5243_REG_IF_FREQ_0 (0x0101)
103 #define AX5243_REG_DECIMATION (0x0102)
104 #define AX5243_REG_RX_DATA_RATE_2 (0x0103)
105 #define AX5243_REG_RX_DATA_RATE_1 (0x0104)
106 #define AX5243_REG_RX_DATA_RATE_0 (0x0105)
107 #define AX5243_REG_MAX_DR_OFFSET_2 (0x0106)
108 #define AX5243_REG_MAX_DR_OFFSET_1 (0x0107)
109 #define AX5243_REG_MAX_DR_OFFSET_0 (0x0108)
110 #define AX5243_REG_MAX_RF_OFFSET_2 (0x0109)
111 #define AX5243_REG_MAX_RF_OFFSET_1 (0x010A)
112 #define AX5243_REG_MAX_RF_OFFSET_0 (0x010B)
113 #define AX5243_REG_FSK_DMAX_1 (0x010C)
114 #define AX5243_REG_FSK_DMAX_0 (0x010D)
115 #define AX5243_REG_FSK_DMIN_1 (0x010E)
116 #define AX5243_REG_FSK_DMIN_0 (0x010F)
117 #define AX5243_REG_AFSK_SPACE_1 (0x0110)
118 #define AX5243_REG_AFSK_SPACE_0 (0x0111)
119 #define AX5243_REG_AFSK_MARK_1 (0x0112)
120 #define AX5243_REG_AFSK_MARK_0 (0x0113)
121 #define AX5243_REG_AFSK_CTRL (0x0114)
122 #define AX5243_REG_AMPL_FILTER (0x0115)
123 #define AX5243_REG_FREQUENCY_LEAK (0x0116)
124 #define AX5243_REG_RX_PARAM_SETS (0x0117)
125 #define AX5243_REG_RX_PARAM_CUR_SET (0x0118)
126 #define AX5243_REG_RX_PARAM_SET_0 (0x0120)
127 #define AX5243_REG_RX_PARAM_SET_1 (0x0130)
128 #define AX5243_REG_RX_PARAM_SET_2 (0x0140)
129 #define AX5243_REG_RX_PARAM_SET_3 (0x0150)
130 #define AX5243_REG_RXPAR_AGC_GAIN (0x0000)
131 #define AX5243_REG_RXPAR_AGC_TARGET (0x0001)
132 #define AX5243_REG_RXPAR_AGC_HYST (0x0002)
133 #define AX5243_REG_RXPAR_AGC_MIN_MAX (0x0003)
134 #define AX5243_REG_RXPAR_TIME_GAIN (0x0004)
135 #define AX5243_REG_RXPAR_DR_GAIN (0x0005)
136 #define AX5243_REG_RXPAR_PHASE_GAIN (0x0006)
137 #define AX5243_REG_RXPAR_FREQ_GAIN_A (0x0007)
138 #define AX5243_REG_RXPAR_FREQ_GAIN_B (0x0008)
139 #define AX5243_REG_RXPAR_FREQ_GAIN_C (0x0009)
140 #define AX5243_REG_RXPAR_FREQ_GAIN_D (0x000A)
141 #define AX5243_REG_RXPAR_AMPL_GAIN (0x000B)
142 #define AX5243_REG_RXPAR_FREQ_DEV_1 (0x000C)
143 #define AX5243_REG_RXPAR_FREQ_DEV_0 (0x000D)
144 #define AX5243_REG_RXPAR_FOUR_FSK (0x000E)
145 #define AX5243_REG_RXPAR_BB_OFFS_RES (0x000F)
146 #define AX5243_REG_MOD_CFG_F (0x0160)
147 #define AX5243_REG_FSK_DEV_2 (0x0161)
148 #define AX5243_REG_FSK_DEV_1 (0x0162)
149 #define AX5243_REG_FSK_DEV_0 (0x0163)
150 #define AX5243_REG_MOD_CFG_A (0x0164)
151 #define AX5243_REG_TX_RATE_2 (0x0165)
152 #define AX5243_REG_TX_RATE_1 (0x0166)
153 #define AX5243_REG_TX_RATE_0 (0x0167)
154 #define AX5243_REG_TX_PWR_COEFF_A_1 (0x0168)
155 #define AX5243_REG_TX_PWR_COEFF_A_0 (0x0169)
156 #define AX5243_REG_TX_PWR_COEFF_B_1 (0x016A)
157 #define AX5243_REG_TX_PWR_COEFF_B_0 (0x016B)
158 #define AX5243_REG_TX_PWR_COEFF_C_1 (0x016C)
159 #define AX5243_REG_TX_PWR_COEFF_C_0 (0x016D)
160 #define AX5243_REG_TX_PWR_COEFF_D_1 (0x016E)
161 #define AX5243_REG_TX_PWR_COEFF_D_0 (0x016F)
162 #define AX5243_REG_TX_PWR_COEFF_E_1 (0x0170)
163 #define AX5243_REG_TX_PWR_COEFF_E_0 (0x0171)
164 #define AX5243_REG_PLL_VCO_I (0x0180)
165 #define AX5243_REG_PLL_VCO_IR (0x0181)
166 #define AX5243_REG_PLL_LOCK_DET (0x0182)
167 #define AX5243_REG_PLL_RNG_CLK (0x0183)
168 #define AX5243_REG_XTAL_CAP (0x0184)
169 #define AX5243_REG_BB_TUNE (0x0188)
170 #define AX5243_REG_BB_OFFS_CAP (0x0189)
171 #define AX5243_REG_PKT_ADDR_CFG (0x0200)
172 #define AX5243_REG_PKT_LEN_CFG (0x0201)
173 #define AX5243_REG_PKT_LEN_OFFSET (0x0202)
174 #define AX5243_REG_PKT_MAX_LEN (0x0203)
175 #define AX5243_REG_PKT_ADDR_3 (0x0204)
176 #define AX5243_REG_PKT_ADDR_2 (0x0205)
177 #define AX5243_REG_PKT_ADDR_1 (0x0206)
178 #define AX5243_REG_PKT_ADDR_0 (0x0207)
179 #define AX5243_REG_PKT_ADDR_MASK_3 (0x0208)
180 #define AX5243_REG_PKT_ADDR_MASK_2 (0x0209)
181 #define AX5243_REG_PKT_ADDR_MASK_1 (0x020A)
182 #define AX5243_REG_PKT_ADDR_MASK_0 (0x020B)
183 #define AX5243_REG_MATCH_0_PAT_3 (0x0210)
184 #define AX5243_REG_MATCH_0_PAT_2 (0x0211)
185 #define AX5243_REG_MATCH_0_PAT_1 (0x0212)
186 #define AX5243_REG_MATCH_0_PAT_0 (0x0213)
187 #define AX5243_REG_MATCH_0_LEN (0x0214)
188 #define AX5243_REG_MATCH_0_MIN (0x0215)
189 #define AX5243_REG_MATCH_0_MAX (0x0216)
190 #define AX5243_REG_MATCH_1_PAT_1 (0x0218)
191 #define AX5243_REG_MATCH_1_PAT_0 (0x0219)
192 #define AX5243_REG_MATCH_1_LEN (0x021C)
193 #define AX5243_REG_MATCH_1_MIN (0x021D)
194 #define AX5243_REG_MATCH_1_MAX (0x021E)
195 #define AX5243_REG_TMG_TX_BOOST (0x0220)
196 #define AX5243_REG_TMG_TX_SETTLE (0x0221)
197 #define AX5243_REG_TMG_RX_BOOST (0x0223)
198 #define AX5243_REG_TMG_RX_SETTLE (0x0224)
199 #define AX5243_REG_TMG_RX_OFFS_ACQ (0x0225)
200 #define AX5243_REG_TMG_RX_COARSE_ACQ (0x0226)
201 #define AX5243_REG_TMG_RX_AGC (0x0227)
202 #define AX5243_REG_TMG_RX_RSSI (0x0228)
203 #define AX5243_REG_TMG_RX_PREAMBLE_1 (0x0229)
204 #define AX5243_REG_TMG_RX_PREAMBLE_2 (0x022A)
205 #define AX5243_REG_TMG_RX_PREAMBLE_3 (0x022B)
206 #define AX5243_REG_RSSI_REFERENCE (0x022C)
207 #define AX5243_REG_RSSI_ABS_THR (0x022D)
208 #define AX5243_REG_BGND_RSSI_GAIN (0x022E)
209 #define AX5243_REG_BGND_RSSI_THR (0x022F)
210 #define AX5243_REG_PKT_CHUNK_SIZE (0x0230)
211 #define AX5243_REG_PKT_MISC_FLAGS (0x0231)
212 #define AX5243_REG_PKT_STORE_FLAGS (0x0232)
213 #define AX5243_REG_PKT_ACCEPT_FLAGS (0x0233)
214 #define AX5243_REG_GP_ADC_CTRL (0x0300)
215 #define AX5243_REG_GP_ADC_PERIOD (0x0301)
216 #define AX5243_REG_GP_ADC_13_VALUE_1 (0x0308)
217 #define AX5243_REG_GP_ADC_13_VALUE_0 (0x0309)
218 #define AX5243_REG_LP_OSC_CONFIG (0x0310)
219 #define AX5243_REG_LP_OSC_STATUS (0x0311)
220 #define AX5243_REG_LP_OSC_FILTER_1 (0x0312)
221 #define AX5243_REG_LP_OSC_FILTER_0 (0x0313)
222 #define AX5243_REG_LP_OSC_REF_1 (0x0314)
223 #define AX5243_REG_LP_OSC_REF_0 (0x0315)
224 #define AX5243_REG_LP_OSC_FREQ_1 (0x0316)
225 #define AX5243_REG_LP_OSC_FREQ_0 (0x0317)
226 #define AX5243_REG_LP_OSC_PER_1 (0x0318)
227 #define AX5243_REG_LP_OSC_PER_0 (0x0319)
228 #define AX5243_REG_DAC_VALUE_1 (0x0330)
229 #define AX5243_REG_DAC_VALUE_0 (0x0331)
230 #define AX5243_REG_DAC_CONFIG (0x0332)
231 
237 class AX5243: public PhysicalLayer {
238  public:
239  // introduce PhysicalLayer overloads
244 
250  AX5243(Module* module);
251 
252  // basic methods
253 
254  int16_t begin();
255 
256 #ifndef RADIOLIB_GODMODE
257  private:
258 #endif
259  Module* _mod;
260 
261 };
262 
263 #endif
AX5243(Module *module)
Default constructor.
Definition: AX5243.cpp:4
int16_t startTransmit(String &str, uint8_t addr=0)
Interrupt-driven Arduino String transmit method. Unlike the standard transmit method, this one is non-blocking. Interrupt pin will be activated when transmission finishes.
Definition: PhysicalLayer.cpp:49
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 transmit(__FlashStringHelper *fstr, uint8_t addr=0)
Arduino Flash String transmit method.
Definition: PhysicalLayer.cpp:8
int16_t receive(String &str, size_t len=0)
Arduino String receive method.
Definition: PhysicalLayer.cpp:98
Control class for AX5243 module.
Definition: AX5243.h:237
Provides common interface for protocols that run on LoRa/FSK modules, such as RTTY or LoRaWAN...
Definition: PhysicalLayer.h:13
int16_t readData(String &str, size_t len=0)
Reads data that was received after calling startReceive method.
Definition: PhysicalLayer.cpp:57