[SX126x] Added missing calls to setPaConfig

This commit is contained in:
jgromes 2020-01-26 18:53:46 +01:00
parent f316920bab
commit b93aa3f38e
5 changed files with 16 additions and 20 deletions

View file

@ -1,7 +1,6 @@
#include "SX1261.h" #include "SX1261.h"
SX1261::SX1261(Module* mod) SX1261::SX1261(Module* mod): SX1262(mod) {
: SX1262(mod) {
} }
@ -16,7 +15,8 @@ int16_t SX1261::setOutputPower(int8_t power) {
int16_t state = readRegister(SX126X_REG_OCP_CONFIGURATION, &ocp, 1); int16_t state = readRegister(SX126X_REG_OCP_CONFIGURATION, &ocp, 1);
RADIOLIB_ASSERT(state); RADIOLIB_ASSERT(state);
state = setOptimalLowPowerPaConfig(&power); // set PA config
state = SX126x::setPaConfig(0x04, SX126X_PA_CONFIG_SX1261, 0x00);
RADIOLIB_ASSERT(state); RADIOLIB_ASSERT(state);
// set output power // set output power
@ -25,20 +25,5 @@ int16_t SX1261::setOutputPower(int8_t power) {
RADIOLIB_ASSERT(state); RADIOLIB_ASSERT(state);
// restore OCP configuration // restore OCP configuration
return writeRegister(SX126X_REG_OCP_CONFIGURATION, &ocp, 1); return(writeRegister(SX126X_REG_OCP_CONFIGURATION, &ocp, 1));
}
int16_t SX1261::setOptimalLowPowerPaConfig(int8_t* inOutPower)
{
int16_t state;
if (*inOutPower > 10) {
state = SX126x::setPaConfig(0x04, SX126X_PA_CONFIG_SX1261, 0x00);
}
else {
state = SX126x::setPaConfig(0x01, SX126X_PA_CONFIG_SX1261, 0x00);
// changing the PaConfig means output power is now scaled so we get 3 dB less than requested.
// see datasheet table 13-21 and comments in setOptimalHiPowerPaConfig.
*inOutPower -= 3;
}
return state;
} }

View file

@ -35,7 +35,7 @@ class SX1261 : public SX1262 {
#ifndef RADIOLIB_GODMODE #ifndef RADIOLIB_GODMODE
private: private:
#endif #endif
int16_t setOptimalLowPowerPaConfig(int8_t* inOutPower);
}; };

View file

@ -84,6 +84,10 @@ int16_t SX1262::setOutputPower(int8_t power) {
int16_t state = readRegister(SX126X_REG_OCP_CONFIGURATION, &ocp, 1); int16_t state = readRegister(SX126X_REG_OCP_CONFIGURATION, &ocp, 1);
RADIOLIB_ASSERT(state); RADIOLIB_ASSERT(state);
// set PA config
state = SX126x::setPaConfig(0x04, SX126X_PA_CONFIG_SX1262);
RADIOLIB_ASSERT(state);
// set output power // set output power
// TODO power ramp time configuration // TODO power ramp time configuration
state = SX126x::setTxParams(power); state = SX126x::setTxParams(power);

View file

@ -5,6 +5,9 @@
#include "../../Module.h" #include "../../Module.h"
#include "SX126x.h" #include "SX126x.h"
//SX126X_CMD_SET_PA_CONFIG
#define SX126X_PA_CONFIG_SX1262 0x00
/*! /*!
\class SX1262 \class SX1262

View file

@ -77,6 +77,10 @@ int16_t SX1268::setOutputPower(int8_t power) {
int16_t state = readRegister(SX126X_REG_OCP_CONFIGURATION, &ocp, 1); int16_t state = readRegister(SX126X_REG_OCP_CONFIGURATION, &ocp, 1);
RADIOLIB_ASSERT(state); RADIOLIB_ASSERT(state);
// set PA config
state = SX126x::setPaConfig(0x04, SX126X_PA_CONFIG_SX1268);
RADIOLIB_ASSERT(state);
// set output power // set output power
// TODO power ramp time configuration // TODO power ramp time configuration
state = SX126x::setTxParams(power); state = SX126x::setTxParams(power);