mirror of
https://github.com/sandeepmistry/arduino-LoRa.git
synced 2025-04-20 23:47:47 +03:00
sx127x 20dBm support (#153)
This commit is contained in:
parent
4db4095f92
commit
884769e206
2
API.md
2
API.md
@ -249,7 +249,7 @@ LoRa.setTxPower(txPower, outputPin);
|
|||||||
* `txPower` - TX power in dB, defaults to `17`
|
* `txPower` - TX power in dB, defaults to `17`
|
||||||
* `outputPin` - (optional) PA output pin, supported values are `PA_OUTPUT_RFO_PIN` and `PA_OUTPUT_PA_BOOST_PIN`, defaults to `PA_OUTPUT_PA_BOOST_PIN`.
|
* `outputPin` - (optional) PA output pin, supported values are `PA_OUTPUT_RFO_PIN` and `PA_OUTPUT_PA_BOOST_PIN`, defaults to `PA_OUTPUT_PA_BOOST_PIN`.
|
||||||
|
|
||||||
Supported values are between `2` and `17` for `PA_OUTPUT_PA_BOOST_PIN`, `0` and `14` for `PA_OUTPUT_RFO_PIN`.
|
Supported values are `2` to `20` for `PA_OUTPUT_PA_BOOST_PIN`, and `0` to `14` for `PA_OUTPUT_RFO_PIN`.
|
||||||
|
|
||||||
Most modules have the PA output pin connected to PA BOOST,
|
Most modules have the PA output pin connected to PA BOOST,
|
||||||
|
|
||||||
|
33
src/LoRa.cpp
33
src/LoRa.cpp
@ -10,6 +10,7 @@
|
|||||||
#define REG_FRF_MID 0x07
|
#define REG_FRF_MID 0x07
|
||||||
#define REG_FRF_LSB 0x08
|
#define REG_FRF_LSB 0x08
|
||||||
#define REG_PA_CONFIG 0x09
|
#define REG_PA_CONFIG 0x09
|
||||||
|
#define REG_OCP 0x0b
|
||||||
#define REG_LNA 0x0c
|
#define REG_LNA 0x0c
|
||||||
#define REG_FIFO_ADDR_PTR 0x0d
|
#define REG_FIFO_ADDR_PTR 0x0d
|
||||||
#define REG_FIFO_TX_BASE_ADDR 0x0e
|
#define REG_FIFO_TX_BASE_ADDR 0x0e
|
||||||
@ -34,6 +35,7 @@
|
|||||||
#define REG_SYNC_WORD 0x39
|
#define REG_SYNC_WORD 0x39
|
||||||
#define REG_DIO_MAPPING_1 0x40
|
#define REG_DIO_MAPPING_1 0x40
|
||||||
#define REG_VERSION 0x42
|
#define REG_VERSION 0x42
|
||||||
|
#define REG_PA_DAC 0x4d
|
||||||
|
|
||||||
// modes
|
// modes
|
||||||
#define MODE_LONG_RANGE_MODE 0x80
|
#define MODE_LONG_RANGE_MODE 0x80
|
||||||
@ -372,10 +374,24 @@ void LoRaClass::setTxPower(int level, int outputPin)
|
|||||||
writeRegister(REG_PA_CONFIG, 0x70 | level);
|
writeRegister(REG_PA_CONFIG, 0x70 | level);
|
||||||
} else {
|
} else {
|
||||||
// PA BOOST
|
// PA BOOST
|
||||||
|
if (level > 17) {
|
||||||
|
if (level > 20) {
|
||||||
|
level = 20;
|
||||||
|
}
|
||||||
|
|
||||||
|
// subtract 3 from level, so 18 - 20 maps to 15 - 17
|
||||||
|
level -= 3;
|
||||||
|
|
||||||
|
// High Power +20 dBm Operation (Semtech SX1276/77/78/79 5.4.3.)
|
||||||
|
writeRegister(REG_PA_DAC, 0x87);
|
||||||
|
setOCP(140);
|
||||||
|
} else {
|
||||||
if (level < 2) {
|
if (level < 2) {
|
||||||
level = 2;
|
level = 2;
|
||||||
} else if (level > 17) {
|
}
|
||||||
level = 17;
|
//Default value PA_HF/LF or +17dBm
|
||||||
|
writeRegister(REG_PA_DAC, 0x84);
|
||||||
|
setOCP(100);
|
||||||
}
|
}
|
||||||
|
|
||||||
writeRegister(REG_PA_CONFIG, PA_BOOST | (level - 2));
|
writeRegister(REG_PA_CONFIG, PA_BOOST | (level - 2));
|
||||||
@ -512,6 +528,19 @@ void LoRaClass::disableCrc()
|
|||||||
writeRegister(REG_MODEM_CONFIG_2, readRegister(REG_MODEM_CONFIG_2) & 0xfb);
|
writeRegister(REG_MODEM_CONFIG_2, readRegister(REG_MODEM_CONFIG_2) & 0xfb);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void LoRaClass::setOCP(uint8_t mA)
|
||||||
|
{
|
||||||
|
uint8_t ocpTrim = 27;
|
||||||
|
|
||||||
|
if (mA <= 120) {
|
||||||
|
ocpTrim = (mA - 45) / 5;
|
||||||
|
} else if (mA <=240) {
|
||||||
|
ocpTrim = (mA + 30) / 10;
|
||||||
|
}
|
||||||
|
|
||||||
|
writeRegister(REG_OCP, 0x20 | (0x1F & ocpTrim));
|
||||||
|
}
|
||||||
|
|
||||||
byte LoRaClass::random()
|
byte LoRaClass::random()
|
||||||
{
|
{
|
||||||
return readRegister(REG_RSSI_WIDEBAND);
|
return readRegister(REG_RSSI_WIDEBAND);
|
||||||
|
@ -66,6 +66,7 @@ public:
|
|||||||
void setSyncWord(int sw);
|
void setSyncWord(int sw);
|
||||||
void enableCrc();
|
void enableCrc();
|
||||||
void disableCrc();
|
void disableCrc();
|
||||||
|
void setOCP(uint8_t mA); // Over Current Protection control
|
||||||
|
|
||||||
// deprecated
|
// deprecated
|
||||||
void crc() { enableCrc(); }
|
void crc() { enableCrc(); }
|
||||||
|
Loading…
x
Reference in New Issue
Block a user