Revert SPI to hardware on ESP32 platforms
This commit is contained in:
parent
a304b892b7
commit
fcba036c01
11
Config.h
11
Config.h
@ -297,6 +297,7 @@
|
|||||||
#define HAS_NP false
|
#define HAS_NP false
|
||||||
#define HAS_SD false
|
#define HAS_SD false
|
||||||
#define HAS_TCXO true
|
#define HAS_TCXO true
|
||||||
|
#define HAS_RXEN_BUSY true
|
||||||
#define MODEM SX1262
|
#define MODEM SX1262
|
||||||
|
|
||||||
#define CONFIG_UART_BUFFER_SIZE 6144
|
#define CONFIG_UART_BUFFER_SIZE 6144
|
||||||
@ -329,12 +330,14 @@
|
|||||||
#define PMU_IRQ 35
|
#define PMU_IRQ 35
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
#define eeprom_addr(a) (a+EEPROM_OFFSET)
|
#define eeprom_addr(a) (a+EEPROM_OFFSET)
|
||||||
|
|
||||||
#if MODEM == SX1276 || MODEM == SX1278
|
#ifndef HAS_RXEN_BUSY
|
||||||
SPIClass spiModem(pin_miso, pin_sclk, pin_mosi);
|
const int pin_rxen = -1;
|
||||||
#elif MODEM == SX1262
|
const int pin_busy = -1;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if MODEM == SX1262
|
||||||
SPIClass spiModem(NRF_SPIM2, pin_miso, pin_sclk, pin_mosi);
|
SPIClass spiModem(NRF_SPIM2, pin_miso, pin_sclk, pin_mosi);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
76
LoRa.cpp
76
LoRa.cpp
@ -89,6 +89,8 @@
|
|||||||
int fifo_tx_addr_ptr = 0;
|
int fifo_tx_addr_ptr = 0;
|
||||||
int fifo_rx_addr_ptr = 0;
|
int fifo_rx_addr_ptr = 0;
|
||||||
uint8_t packet[256] = {0};
|
uint8_t packet[256] = {0};
|
||||||
|
extern SPIClass spiModem;
|
||||||
|
#define SPI spiModem
|
||||||
|
|
||||||
|
|
||||||
#elif MODEM == SX1276 || MODEM == SX1278
|
#elif MODEM == SX1276 || MODEM == SX1278
|
||||||
@ -150,7 +152,7 @@
|
|||||||
|
|
||||||
#define MAX_PKT_LENGTH 255
|
#define MAX_PKT_LENGTH 255
|
||||||
|
|
||||||
extern SPIClass spiModem;
|
extern SPIClass SPI;
|
||||||
|
|
||||||
bool lora_preinit_done = false;
|
bool lora_preinit_done = false;
|
||||||
|
|
||||||
@ -180,7 +182,7 @@ bool LoRaClass::preInit() {
|
|||||||
// set SS high
|
// set SS high
|
||||||
digitalWrite(_ss, HIGH);
|
digitalWrite(_ss, HIGH);
|
||||||
|
|
||||||
spiModem.begin();
|
SPI.begin();
|
||||||
|
|
||||||
// check version (retry for up to 2 seconds)
|
// check version (retry for up to 2 seconds)
|
||||||
#if MODEM == SX1276 || MODEM == SX1278
|
#if MODEM == SX1276 || MODEM == SX1278
|
||||||
@ -239,10 +241,10 @@ bool LoRaClass::preInit() {
|
|||||||
|
|
||||||
digitalWrite(_ss, LOW);
|
digitalWrite(_ss, LOW);
|
||||||
|
|
||||||
spiModem.beginTransaction(_spiSettings);
|
SPI.beginTransaction(_spiSettings);
|
||||||
spiModem.transfer(address);
|
SPI.transfer(address);
|
||||||
response = spiModem.transfer(value);
|
response = SPI.transfer(value);
|
||||||
spiModem.endTransaction();
|
SPI.endTransaction();
|
||||||
|
|
||||||
digitalWrite(_ss, HIGH);
|
digitalWrite(_ss, HIGH);
|
||||||
|
|
||||||
@ -267,15 +269,15 @@ bool LoRaClass::preInit() {
|
|||||||
|
|
||||||
digitalWrite(_ss, LOW);
|
digitalWrite(_ss, LOW);
|
||||||
|
|
||||||
spiModem.beginTransaction(_spiSettings);
|
SPI.beginTransaction(_spiSettings);
|
||||||
spiModem.transfer(opcode);
|
SPI.transfer(opcode);
|
||||||
spiModem.transfer((address & 0xFF00) >> 8);
|
SPI.transfer((address & 0xFF00) >> 8);
|
||||||
spiModem.transfer(address & 0x00FF);
|
SPI.transfer(address & 0x00FF);
|
||||||
if (opcode == OP_READ_REGISTER) {
|
if (opcode == OP_READ_REGISTER) {
|
||||||
spiModem.transfer(0x00);
|
SPI.transfer(0x00);
|
||||||
}
|
}
|
||||||
response = spiModem.transfer(value);
|
response = SPI.transfer(value);
|
||||||
spiModem.endTransaction();
|
SPI.endTransaction();
|
||||||
|
|
||||||
digitalWrite(_ss, HIGH);
|
digitalWrite(_ss, HIGH);
|
||||||
|
|
||||||
@ -316,15 +318,15 @@ bool LoRaClass::preInit() {
|
|||||||
|
|
||||||
digitalWrite(_ss, LOW);
|
digitalWrite(_ss, LOW);
|
||||||
|
|
||||||
spiModem.beginTransaction(_spiSettings);
|
SPI.beginTransaction(_spiSettings);
|
||||||
spiModem.transfer(opcode);
|
SPI.transfer(opcode);
|
||||||
|
|
||||||
for (int i = 0; i < size; i++)
|
for (int i = 0; i < size; i++)
|
||||||
{
|
{
|
||||||
spiModem.transfer(buffer[i]);
|
SPI.transfer(buffer[i]);
|
||||||
}
|
}
|
||||||
|
|
||||||
spiModem.endTransaction();
|
SPI.endTransaction();
|
||||||
|
|
||||||
digitalWrite(_ss, HIGH);
|
digitalWrite(_ss, HIGH);
|
||||||
}
|
}
|
||||||
@ -335,16 +337,16 @@ bool LoRaClass::preInit() {
|
|||||||
|
|
||||||
digitalWrite(_ss, LOW);
|
digitalWrite(_ss, LOW);
|
||||||
|
|
||||||
spiModem.beginTransaction(_spiSettings);
|
SPI.beginTransaction(_spiSettings);
|
||||||
spiModem.transfer(opcode);
|
SPI.transfer(opcode);
|
||||||
spiModem.transfer(0x00);
|
SPI.transfer(0x00);
|
||||||
|
|
||||||
for (int i = 0; i < size; i++)
|
for (int i = 0; i < size; i++)
|
||||||
{
|
{
|
||||||
buffer[i] = spiModem.transfer(0x00);
|
buffer[i] = SPI.transfer(0x00);
|
||||||
}
|
}
|
||||||
|
|
||||||
spiModem.endTransaction();
|
SPI.endTransaction();
|
||||||
|
|
||||||
digitalWrite(_ss, HIGH);
|
digitalWrite(_ss, HIGH);
|
||||||
}
|
}
|
||||||
@ -355,17 +357,17 @@ bool LoRaClass::preInit() {
|
|||||||
|
|
||||||
digitalWrite(_ss, LOW);
|
digitalWrite(_ss, LOW);
|
||||||
|
|
||||||
spiModem.beginTransaction(_spiSettings);
|
SPI.beginTransaction(_spiSettings);
|
||||||
spiModem.transfer(OP_FIFO_WRITE);
|
SPI.transfer(OP_FIFO_WRITE);
|
||||||
spiModem.transfer(fifo_tx_addr_ptr);
|
SPI.transfer(fifo_tx_addr_ptr);
|
||||||
|
|
||||||
for (int i = 0; i < size; i++)
|
for (int i = 0; i < size; i++)
|
||||||
{
|
{
|
||||||
spiModem.transfer(buffer[i]);
|
SPI.transfer(buffer[i]);
|
||||||
fifo_tx_addr_ptr++;
|
fifo_tx_addr_ptr++;
|
||||||
}
|
}
|
||||||
|
|
||||||
spiModem.endTransaction();
|
SPI.endTransaction();
|
||||||
|
|
||||||
digitalWrite(_ss, HIGH);
|
digitalWrite(_ss, HIGH);
|
||||||
}
|
}
|
||||||
@ -376,17 +378,17 @@ bool LoRaClass::preInit() {
|
|||||||
|
|
||||||
digitalWrite(_ss, LOW);
|
digitalWrite(_ss, LOW);
|
||||||
|
|
||||||
spiModem.beginTransaction(_spiSettings);
|
SPI.beginTransaction(_spiSettings);
|
||||||
spiModem.transfer(OP_FIFO_READ);
|
SPI.transfer(OP_FIFO_READ);
|
||||||
spiModem.transfer(fifo_rx_addr_ptr);
|
SPI.transfer(fifo_rx_addr_ptr);
|
||||||
spiModem.transfer(0x00);
|
SPI.transfer(0x00);
|
||||||
|
|
||||||
for (int i = 0; i < size; i++)
|
for (int i = 0; i < size; i++)
|
||||||
{
|
{
|
||||||
buffer[i] = spiModem.transfer(0x00);
|
buffer[i] = SPI.transfer(0x00);
|
||||||
}
|
}
|
||||||
|
|
||||||
spiModem.endTransaction();
|
SPI.endTransaction();
|
||||||
|
|
||||||
digitalWrite(_ss, HIGH);
|
digitalWrite(_ss, HIGH);
|
||||||
}
|
}
|
||||||
@ -516,8 +518,8 @@ void LoRaClass::end()
|
|||||||
// put in sleep mode
|
// put in sleep mode
|
||||||
sleep();
|
sleep();
|
||||||
|
|
||||||
// stop spiModem
|
// stop SPI
|
||||||
spiModem.end();
|
SPI.end();
|
||||||
|
|
||||||
lora_preinit_done = false;
|
lora_preinit_done = false;
|
||||||
}
|
}
|
||||||
@ -964,13 +966,13 @@ void LoRaClass::onReceive(void(*callback)(int))
|
|||||||
executeOpcode(OP_SET_IRQ_FLAGS, buf, 8);
|
executeOpcode(OP_SET_IRQ_FLAGS, buf, 8);
|
||||||
#endif
|
#endif
|
||||||
#ifdef SPI_HAS_NOTUSINGINTERRUPT
|
#ifdef SPI_HAS_NOTUSINGINTERRUPT
|
||||||
spiModem.usingInterrupt(digitalPinToInterrupt(_dio0));
|
SPI.usingInterrupt(digitalPinToInterrupt(_dio0));
|
||||||
#endif
|
#endif
|
||||||
attachInterrupt(digitalPinToInterrupt(_dio0), LoRaClass::onDio0Rise, RISING);
|
attachInterrupt(digitalPinToInterrupt(_dio0), LoRaClass::onDio0Rise, RISING);
|
||||||
} else {
|
} else {
|
||||||
detachInterrupt(digitalPinToInterrupt(_dio0));
|
detachInterrupt(digitalPinToInterrupt(_dio0));
|
||||||
#ifdef SPI_HAS_NOTUSINGINTERRUPT
|
#ifdef SPI_HAS_NOTUSINGINTERRUPT
|
||||||
spiModem.notUsingInterrupt(digitalPinToInterrupt(_dio0));
|
SPI.notUsingInterrupt(digitalPinToInterrupt(_dio0));
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
2
Makefile
2
Makefile
@ -93,7 +93,7 @@ firmware-featheresp32:
|
|||||||
arduino-cli compile --fqbn esp32:esp32:featheresp32 -e --build-property "build.partitions=no_ota" --build-property "upload.maximum_size=2097152" --build-property "compiler.cpp.extra_flags=\"-DBOARD_MODEL=0x34\""
|
arduino-cli compile --fqbn esp32:esp32:featheresp32 -e --build-property "build.partitions=no_ota" --build-property "upload.maximum_size=2097152" --build-property "compiler.cpp.extra_flags=\"-DBOARD_MODEL=0x34\""
|
||||||
|
|
||||||
firmware-genericesp32:
|
firmware-genericesp32:
|
||||||
arduino-cli compile --fqbn esp32:esp32:esp32 -e --build-property "build.partitions=no_ota" --build-property "upload.maximum_size=2097152" --build-property "compiler.cpp.extra_flags=\"-DBOARD_MODEL=0x35\""
|
arduino-cli compile --fqbn esp32:esp32:esp32 -e --build-property "build.partitions=no_ota" --build-property "upload.maximum_size=2097152" --build-property "compiler.cpp.extra_flags=\"-DBOARD_MODEL=0x35\" \"-DMODEM=0x01\""
|
||||||
|
|
||||||
firmware-rak4630:
|
firmware-rak4630:
|
||||||
arduino-cli compile --fqbn rakwireless:nrf52:WisCoreRAK4631Board -e --build-property "build.partitions=no_ota" --build-property "upload.maximum_size=2097152" --build-property "compiler.cpp.extra_flags=\"-DBOARD_MODEL=0x51\" \"-DMODEM=0x03\""
|
arduino-cli compile --fqbn rakwireless:nrf52:WisCoreRAK4631Board -e --build-property "build.partitions=no_ota" --build-property "upload.maximum_size=2097152" --build-property "compiler.cpp.extra_flags=\"-DBOARD_MODEL=0x51\" \"-DMODEM=0x03\""
|
||||||
|
@ -13,6 +13,8 @@
|
|||||||
// You should have received a copy of the GNU General Public License
|
// You should have received a copy of the GNU General Public License
|
||||||
// along with this program. If not, see <https://www.gnu.org/licenses/>.
|
// along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
#include "Config.h"
|
||||||
|
|
||||||
#if HAS_EEPROM
|
#if HAS_EEPROM
|
||||||
#include <EEPROM.h>
|
#include <EEPROM.h>
|
||||||
#elif PLATFORM == PLATFORM_NRF52
|
#elif PLATFORM == PLATFORM_NRF52
|
||||||
@ -20,7 +22,6 @@
|
|||||||
int written_bytes = 0;
|
int written_bytes = 0;
|
||||||
#endif
|
#endif
|
||||||
#include <stddef.h>
|
#include <stddef.h>
|
||||||
#include "Config.h"
|
|
||||||
#include "LoRa.h"
|
#include "LoRa.h"
|
||||||
#include "ROM.h"
|
#include "ROM.h"
|
||||||
#include "Framing.h"
|
#include "Framing.h"
|
||||||
|
Loading…
Reference in New Issue
Block a user