Skip to content

Commit d9ebdae

Browse files
committed
Added SX126x missing registers definitions
1 parent fdf855d commit d9ebdae

File tree

3 files changed

+45
-15
lines changed

3 files changed

+45
-15
lines changed

src/radio/sx126x/radio.c

Lines changed: 6 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -735,13 +735,11 @@ void RadioSetRxConfig( RadioModems_t modem, uint32_t bandwidth,
735735
// WORKAROUND - Optimizing the Inverted IQ Operation, see DS_SX1261-2_V1.2 datasheet chapter 15.4
736736
if( SX126x.PacketParams.Params.LoRa.InvertIQ == LORA_IQ_INVERTED )
737737
{
738-
// RegIqPolaritySetup = @address 0x0736
739-
SX126xWriteRegister( 0x0736, SX126xReadRegister( 0x0736 ) & ~( 1 << 2 ) );
738+
SX126xWriteRegister( REG_IQ_POLARITY, SX126xReadRegister( REG_IQ_POLARITY ) & ~( 1 << 2 ) );
740739
}
741740
else
742741
{
743-
// RegIqPolaritySetup @address 0x0736
744-
SX126xWriteRegister( 0x0736, SX126xReadRegister( 0x0736 ) | ( 1 << 2 ) );
742+
SX126xWriteRegister( REG_IQ_POLARITY, SX126xReadRegister( REG_IQ_POLARITY ) | ( 1 << 2 ) );
745743
}
746744
// WORKAROUND END
747745

@@ -844,13 +842,11 @@ void RadioSetTxConfig( RadioModems_t modem, int8_t power, uint32_t fdev,
844842
// WORKAROUND - Modulation Quality with 500 kHz LoRa Bandwidth, see DS_SX1261-2_V1.2 datasheet chapter 15.1
845843
if( ( modem == MODEM_LORA ) && ( SX126x.ModulationParams.Params.LoRa.Bandwidth == LORA_BW_500 ) )
846844
{
847-
// RegTxModulation = @address 0x0889
848-
SX126xWriteRegister( 0x0889, SX126xReadRegister( 0x0889 ) & ~( 1 << 2 ) );
845+
SX126xWriteRegister( REG_TX_MODULATION, SX126xReadRegister( REG_TX_MODULATION ) & ~( 1 << 2 ) );
849846
}
850847
else
851848
{
852-
// RegTxModulation = @address 0x0889
853-
SX126xWriteRegister( 0x0889, SX126xReadRegister( 0x0889 ) | ( 1 << 2 ) );
849+
SX126xWriteRegister( REG_TX_MODULATION, SX126xReadRegister( REG_TX_MODULATION ) | ( 1 << 2 ) );
854850
}
855851
// WORKAROUND END
856852

@@ -1260,10 +1256,8 @@ void RadioIrqProcess( void )
12601256
SX126xSetOperatingMode( MODE_STDBY_RC );
12611257

12621258
// WORKAROUND - Implicit Header Mode Timeout Behavior, see DS_SX1261-2_V1.2 datasheet chapter 15.3
1263-
// RegRtcControl = @address 0x0902
1264-
SX126xWriteRegister( 0x0902, 0x00 );
1265-
// RegEventMask = @address 0x0944
1266-
SX126xWriteRegister( 0x0944, SX126xReadRegister( 0x0944 ) | ( 1 << 1 ) );
1259+
SX126xWriteRegister( REG_RTC_CTRL, 0x00 );
1260+
SX126xWriteRegister( REG_EVT_CLR, SX126xReadRegister( REG_EVT_CLR ) | ( 1 << 1 ) );
12671261
// WORKAROUND END
12681262
}
12691263
SX126xGetPayload( RadioRxPayload, &size , 255 );

src/radio/sx126x/sx126x.c

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -305,6 +305,8 @@ void SX126xSetRx( uint32_t timeout )
305305

306306
SX126xSetOperatingMode( MODE_RX );
307307

308+
SX126xWriteRegister( REG_RX_GAIN, 0x94 ); // default gain
309+
308310
buf[0] = ( uint8_t )( ( timeout >> 16 ) & 0xFF );
309311
buf[1] = ( uint8_t )( ( timeout >> 8 ) & 0xFF );
310312
buf[2] = ( uint8_t )( timeout & 0xFF );
@@ -317,7 +319,7 @@ void SX126xSetRxBoosted( uint32_t timeout )
317319

318320
SX126xSetOperatingMode( MODE_RX );
319321

320-
SX126xWriteRegister( REG_RX_GAIN, 0x96 ); // max LNA gain, increase current by ~2mA for around ~3dB in sensivity
322+
SX126xWriteRegister( REG_RX_GAIN, 0x96 ); // max LNA gain, increase current by ~2mA for around ~3dB in sensitivity
321323

322324
buf[0] = ( uint8_t )( ( timeout >> 16 ) & 0xFF );
323325
buf[1] = ( uint8_t )( ( timeout >> 8 ) & 0xFF );
@@ -549,8 +551,7 @@ void SX126xSetTxParams( int8_t power, RadioRampTimes_t rampTime )
549551
else // sx1262
550552
{
551553
// WORKAROUND - Better Resistance of the SX1262 Tx to Antenna Mismatch, see DS_SX1261-2_V1.2 datasheet chapter 15.2
552-
// RegTxClampConfig = @address 0x08D8
553-
SX126xWriteRegister( 0x08D8, SX126xReadRegister( 0x08D8 ) | ( 0x0F << 1 ) );
554+
SX126xWriteRegister( REG_TX_CLAMP_CFG, SX126xReadRegister( REG_TX_CLAMP_CFG ) | ( 0x0F << 1 ) );
554555
// WORKAROUND END
555556

556557
SX126xSetPaConfig( 0x04, 0x07, 0x00, 0x01 );

src/radio/sx126x/sx126x.h

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -151,6 +151,41 @@ extern "C"
151151
*/
152152
#define REG_OCP 0x08E7
153153

154+
/*!
155+
* \brief Maximum number of register that can be added to the retention list
156+
*/
157+
#define MAX_NB_REG_IN_RETENTION 4
158+
159+
/*!
160+
* \brief Base address of the register retention list
161+
*/
162+
#define REG_RETENTION_LIST_BASE_ADDRESS 0x029F
163+
164+
/*!
165+
* \brief WORKAROUND - Optimizing the Inverted IQ Operation, see DS_SX1261-2_V1.2 datasheet chapter 15.4
166+
*/
167+
#define REG_IQ_POLARITY 0x0736
168+
169+
/*!
170+
* \brief WORKAROUND - Modulation Quality with 500 kHz LoRa Bandwidth, see DS_SX1261-2_V1.2 datasheet chapter 15.1
171+
*/
172+
#define REG_TX_MODULATION 0x0889
173+
174+
/*!
175+
* \brief WORKAROUND - Better resistance to antenna mismatch, see DS_SX1261-2_V1.2 datasheet chapter 15.2
176+
*/
177+
#define REG_TX_CLAMP_CFG 0x08D8
178+
179+
/*!
180+
* \brief RTC control
181+
*/
182+
#define REG_RTC_CTRL 0x0902
183+
184+
/*!
185+
* \brief Event clear
186+
*/
187+
#define REG_EVT_CLR 0x0944
188+
154189
/*!
155190
* \brief Structure describing the radio status
156191
*/

0 commit comments

Comments
 (0)