mirror of
https://github.com/markqvist/RNode_Firmware.git
synced 2024-10-01 03:15:39 -04:00
WIP: Booting and display working, Lora32 V3, debug and some
checks bypassed.
This commit is contained in:
parent
262518efef
commit
36ab438625
52
Boards.h
52
Boards.h
@ -36,12 +36,21 @@
|
||||
#define BOARD_LORA32_V2_1 0x37
|
||||
#define BOARD_LORA32_V1_0 0x39
|
||||
#define BOARD_HELTEC32_V2 0x38
|
||||
#define BOARD_HELTEC_LORA32_V3 0x3a
|
||||
#define BOARD_RNODE_NG_20 0x40
|
||||
#define BOARD_RNODE_NG_21 0x41
|
||||
#define BOARD_RNODE_NG_22 0x42
|
||||
#define BOARD_GENERIC_NRF52 0x50
|
||||
#define BOARD_RAK4630 0x51
|
||||
|
||||
|
||||
// -----------------------------------
|
||||
// override for local compile
|
||||
//#define BOARD_MODEL BOARD_LORA32_V1_0
|
||||
#define BOARD_MODEL BOARD_HELTEC_LORA32_V3
|
||||
// -----------------------------------
|
||||
|
||||
|
||||
#if defined(__AVR_ATmega1284P__)
|
||||
#define PLATFORM PLATFORM_AVR
|
||||
#define MCU_VARIANT MCU_1284P
|
||||
@ -71,6 +80,7 @@
|
||||
|
||||
#define HAS_DISPLAY false
|
||||
#define HAS_BLUETOOTH false
|
||||
#define HAS_BLE false
|
||||
#define HAS_TCXO false
|
||||
#define HAS_PMU false
|
||||
#define HAS_NP false
|
||||
@ -143,6 +153,7 @@
|
||||
#define HAS_DISPLAY true
|
||||
#define HAS_PMU true
|
||||
#define HAS_BLUETOOTH true
|
||||
#define HAS_BLE true
|
||||
#define HAS_CONSOLE true
|
||||
#define HAS_SD false
|
||||
#define HAS_EEPROM true
|
||||
@ -178,6 +189,7 @@
|
||||
#elif BOARD_MODEL == BOARD_LORA32_V1_0
|
||||
#define HAS_DISPLAY true
|
||||
#define HAS_BLUETOOTH true
|
||||
#define HAS_BLE true
|
||||
#define HAS_CONSOLE true
|
||||
#define HAS_EEPROM true
|
||||
const int pin_cs = 18;
|
||||
@ -194,6 +206,7 @@
|
||||
#elif BOARD_MODEL == BOARD_LORA32_V2_0
|
||||
#define HAS_DISPLAY true
|
||||
#define HAS_BLUETOOTH true
|
||||
#define HAS_BLE true
|
||||
#define HAS_CONSOLE true
|
||||
#define HAS_EEPROM true
|
||||
const int pin_cs = 18;
|
||||
@ -210,6 +223,7 @@
|
||||
#elif BOARD_MODEL == BOARD_LORA32_V2_1
|
||||
#define HAS_DISPLAY true
|
||||
#define HAS_BLUETOOTH true
|
||||
#define HAS_BLE true
|
||||
#define HAS_PMU true
|
||||
#define HAS_CONSOLE true
|
||||
#define HAS_EEPROM true
|
||||
@ -243,6 +257,44 @@
|
||||
const int pin_led_tx = 25;
|
||||
#endif
|
||||
|
||||
#elif BOARD_MODEL == BOARD_HELTEC_LORA32_V3
|
||||
#define IS_ESP32S3 true
|
||||
#define HAS_DISPLAY true
|
||||
//ESP32-S3 no bluetooth classic
|
||||
//#define HAS_BLUETOOTH true
|
||||
#define HAS_BLUETOOTH false
|
||||
//#define HAS_BLE true
|
||||
// TODO BLE
|
||||
#define HAS_BLE false
|
||||
// Cannot run wifi and BLE at same time?
|
||||
#define HAS_CONSOLE false
|
||||
#define HAS_EEPROM true
|
||||
#if defined(EXTERNAL_LEDS)
|
||||
const int pin_led_rx = 35;
|
||||
const int pin_led_tx = 2;
|
||||
#else
|
||||
const int pin_led_rx = 2;
|
||||
const int pin_led_tx = 2;
|
||||
#endif
|
||||
|
||||
#define MODEM SX1262
|
||||
//#define HAS_TCXO true
|
||||
#define HAS_TCXO false
|
||||
#define HAS_BUSY true
|
||||
#define DIO2_AS_RF_SWITCH true
|
||||
const int pin_tcxo_enable = -1;
|
||||
|
||||
// following pins are for the sx1262
|
||||
const int pin_cs = 8;
|
||||
const int pin_busy = 13;
|
||||
const int pin_dio = 14;
|
||||
const int pin_reset = 12;
|
||||
const int pin_mosi = 10;
|
||||
const int pin_miso = 11;
|
||||
const int pin_sclk = 9;
|
||||
|
||||
|
||||
|
||||
#elif BOARD_MODEL == BOARD_RNODE_NG_20
|
||||
#define HAS_DISPLAY true
|
||||
#define HAS_BLUETOOTH true
|
||||
|
46
Display.h
46
Display.h
@ -32,6 +32,12 @@
|
||||
#define DISP_ADDR 0x3C
|
||||
#define SCL_OLED 15
|
||||
#define SDA_OLED 4
|
||||
#elif BOARD_MODEL == BOARD_HELTEC_LORA32_V3
|
||||
#define DISP_RST 21
|
||||
//#define DISP_RST -1
|
||||
#define DISP_ADDR 0x3C
|
||||
#define SCL_OLED 18
|
||||
#define SDA_OLED 17
|
||||
#elif BOARD_MODEL == BOARD_RNODE_NG_21
|
||||
#define DISP_RST -1
|
||||
#define DISP_ADDR 0x3C
|
||||
@ -108,6 +114,29 @@ bool display_init() {
|
||||
Wire.begin(SDA_OLED, SCL_OLED);
|
||||
#elif BOARD_MODEL == BOARD_HELTEC32_V2
|
||||
Wire.begin(SDA_OLED, SCL_OLED);
|
||||
#elif BOARD_MODEL == BOARD_HELTEC_LORA32_V3
|
||||
Serial.println("display - 1 ");
|
||||
// vext
|
||||
pinMode(Vext, OUTPUT);
|
||||
//digitalWrite(36, LOW);
|
||||
digitalWrite(Vext, LOW);
|
||||
delay(500);
|
||||
Serial.println("display - 2 ");
|
||||
//Serial.print("vext ");
|
||||
//Serial.println(Vext);
|
||||
int pin_display_en = 21;
|
||||
//digitalWrite(pin_display_en, HIGH);
|
||||
//delay(50);
|
||||
pinMode(pin_display_en, OUTPUT);
|
||||
digitalWrite(pin_display_en, LOW);
|
||||
delay(50);
|
||||
digitalWrite(pin_display_en, HIGH);
|
||||
delay(50);
|
||||
Wire.begin(SDA_OLED, SCL_OLED);
|
||||
// ble debug
|
||||
//Serial.println("Setup display pins LORA32 V3");
|
||||
Serial.println("vext ");
|
||||
Serial.println(Vext);
|
||||
#elif BOARD_MODEL == BOARD_LORA32_V1_0
|
||||
int pin_display_en = 16;
|
||||
digitalWrite(pin_display_en, LOW);
|
||||
@ -149,6 +178,10 @@ bool display_init() {
|
||||
#elif BOARD_MODEL == BOARD_HELTEC32_V2
|
||||
disp_mode = DISP_MODE_PORTRAIT;
|
||||
display.setRotation(1);
|
||||
#elif BOARD_MODEL == BOARD_HELTEC_LORA32_V3
|
||||
disp_mode = DISP_MODE_PORTRAIT;
|
||||
display.setRotation(1);
|
||||
//display.setRotation(3);
|
||||
#else
|
||||
disp_mode = DISP_MODE_PORTRAIT;
|
||||
display.setRotation(3);
|
||||
@ -165,7 +198,14 @@ bool display_init() {
|
||||
disp_area.cp437(true);
|
||||
display.cp437(true);
|
||||
|
||||
Serial.print("(1)display int= ");
|
||||
Serial.println(display_intensity);
|
||||
display_intensity = EEPROM.read(eeprom_addr(ADDR_CONF_DINT));
|
||||
Serial.print("(2)display int= ");
|
||||
Serial.println(display_intensity);
|
||||
display_intensity = 100;
|
||||
Serial.print("(2)display int= ");
|
||||
Serial.println(display_intensity);
|
||||
|
||||
return true;
|
||||
}
|
||||
@ -349,7 +389,9 @@ void draw_stat_area() {
|
||||
}
|
||||
|
||||
void update_stat_area() {
|
||||
if (eeprom_ok && !firmware_update_mode && !console_active) {
|
||||
// override eeprom check for BLE
|
||||
//if (eeprom_ok && !firmware_update_mode && !console_active) {
|
||||
if ( !firmware_update_mode && !console_active) {
|
||||
|
||||
draw_stat_area();
|
||||
if (disp_mode == DISP_MODE_PORTRAIT) {
|
||||
@ -524,6 +566,8 @@ void draw_disp_area() {
|
||||
}
|
||||
|
||||
void update_disp_area() {
|
||||
// ble debug
|
||||
Serial.println("...update disp area...");
|
||||
draw_disp_area();
|
||||
display.drawBitmap(p_ad_x, p_ad_y, disp_area.getBuffer(), disp_area.width(), disp_area.height(), SSD1306_WHITE, SSD1306_BLACK);
|
||||
if (disp_mode == DISP_MODE_LANDSCAPE) {
|
||||
|
10
Makefile
10
Makefile
@ -93,6 +93,9 @@ firmware-heltec32_v2:
|
||||
firmware-heltec32_v2_extled:
|
||||
arduino-cli compile --fqbn esp32:esp32:heltec_wifi_lora_32_V2 -e --build-property "build.partitions=no_ota" --build-property "upload.maximum_size=2097152" --build-property "compiler.cpp.extra_flags=\"-DBOARD_MODEL=0x38\" \"-DEXTERNAL_LEDS=true\""
|
||||
|
||||
firmware-heltec32_v3:
|
||||
arduino-cli compile --fqbn esp32:esp32:heltec_wifi_lora_32_V3 -e --build-property "build.partitions=no_ota" --build-property "upload.maximum_size=2097152" --build-property "compiler.cpp.extra_flags=\"-DBOARD_MODEL=0x39\""
|
||||
|
||||
firmware-rnode_ng_20:
|
||||
arduino-cli compile --fqbn esp32:esp32:ttgo-lora32 -e --build-property "build.partitions=no_ota" --build-property "upload.maximum_size=2097152" --build-property "compiler.cpp.extra_flags=\"-DBOARD_MODEL=0x40\""
|
||||
|
||||
@ -149,6 +152,13 @@ upload-heltec32_v2:
|
||||
@sleep 3
|
||||
python ./Release/esptool/esptool.py --chip esp32 --port /dev/ttyUSB0 --baud 921600 --before default_reset --after hard_reset write_flash -z --flash_mode dio --flash_freq 80m --flash_size 4MB 0x210000 ./Release/console_image.bin
|
||||
|
||||
upload-heltec32_v3:
|
||||
arduino-cli upload -p COM3 --fqbn esp32:esp32:heltec_wifi_lora_32_V3
|
||||
@sleep 1
|
||||
rnodeconf COM3 --firmware-hash $$(./partition_hashes ./build/esp32.esp32.heltec_wifi_lora_32_V3/RNode_Firmware.ino.bin)
|
||||
@sleep 3
|
||||
python ./Release/esptool/esptool.py --chip esp32-s3 --port COM3 --baud 921600 --before default_reset --after hard_reset write_flash -z --flash_mode dio --flash_freq 80m --flash_size 4MB 0x210000 ./Release/console_image.bin
|
||||
|
||||
upload-rnode_ng_20:
|
||||
arduino-cli upload -p /dev/ttyUSB0 --fqbn esp32:esp32:ttgo-lora32
|
||||
@sleep 1
|
||||
|
@ -143,6 +143,9 @@ void setup() {
|
||||
eeprom_update(eeprom_addr(ADDR_CONF_DINT), 0xFF);
|
||||
}
|
||||
disp_ready = display_init();
|
||||
// ble debug
|
||||
Serial.print("disp ready = ");
|
||||
Serial.println(disp_ready);
|
||||
update_display();
|
||||
#endif
|
||||
|
||||
@ -380,6 +383,10 @@ void stopRadio() {
|
||||
}
|
||||
|
||||
void update_radio_lock() {
|
||||
// ble debug
|
||||
//static char lock[40];
|
||||
//sprintf(lock, "lock chk %d %d %x %d", lora_freq, lora_bw, lora_txp, lora_sf);
|
||||
//Serial.println(lock);
|
||||
if (lora_freq != 0 && lora_bw != 0 && lora_txp != 0xFF && lora_sf != 0) {
|
||||
radio_locked = false;
|
||||
} else {
|
||||
@ -605,6 +612,9 @@ void serialCallback(uint8_t sbyte) {
|
||||
lora_freq = freq;
|
||||
if (op_mode == MODE_HOST) setFrequency();
|
||||
kiss_indicate_frequency();
|
||||
// ble debug
|
||||
//Serial.print("freq ");
|
||||
//Serial.println(lora_freq);
|
||||
}
|
||||
}
|
||||
} else if (command == CMD_BANDWIDTH) {
|
||||
@ -690,6 +700,8 @@ void serialCallback(uint8_t sbyte) {
|
||||
} else if (sbyte == 0x01) {
|
||||
startRadio();
|
||||
kiss_indicate_radiostate();
|
||||
// ble debug
|
||||
//Serial.println("start radio");
|
||||
}
|
||||
} else if (command == CMD_ST_ALOCK) {
|
||||
if (sbyte == FESC) {
|
||||
@ -1063,6 +1075,11 @@ void validate_status() {
|
||||
uint8_t F_WDR = 0x01;
|
||||
#endif
|
||||
|
||||
// ble debug
|
||||
Serial.print("hw_ready ");
|
||||
Serial.print(hw_ready);
|
||||
Serial.print(" device init done ");
|
||||
Serial.println(device_init_done);
|
||||
if (hw_ready || device_init_done) {
|
||||
hw_ready = false;
|
||||
Serial.write("Error, invalid hardware check state\r\n");
|
||||
@ -1093,22 +1110,31 @@ void validate_status() {
|
||||
}
|
||||
|
||||
if (boot_vector == START_FROM_BOOTLOADER || boot_vector == START_FROM_POWERON) {
|
||||
if (eeprom_lock_set()) {
|
||||
//if (eeprom_lock_set()) {
|
||||
if (1) {
|
||||
if (eeprom_product_valid() && eeprom_model_valid() && eeprom_hwrev_valid()) {
|
||||
if (eeprom_checksum_valid()) {
|
||||
eeprom_ok = true;
|
||||
if (modem_installed) {
|
||||
#if PLATFORM == PLATFORM_ESP32
|
||||
if (device_init()) {
|
||||
// ble debug
|
||||
Serial.println("hw ready 1");
|
||||
hw_ready = true;
|
||||
} else {
|
||||
hw_ready = false;
|
||||
// ble debug
|
||||
Serial.println("hw ! ready 1");
|
||||
}
|
||||
#else
|
||||
hw_ready = true;
|
||||
// ble debug
|
||||
Serial.println("hw ready 2");
|
||||
#endif
|
||||
} else {
|
||||
hw_ready = false;
|
||||
// ble debug
|
||||
Serial.println("hw ! ready 3");
|
||||
Serial.write("No valid radio module found\r\n");
|
||||
#if HAS_DISPLAY
|
||||
if (disp_ready) {
|
||||
@ -1122,9 +1148,14 @@ void validate_status() {
|
||||
eeprom_conf_load();
|
||||
op_mode = MODE_TNC;
|
||||
startRadio();
|
||||
// ble debug
|
||||
Serial.println("hw ready - start radio");
|
||||
|
||||
}
|
||||
} else {
|
||||
hw_ready = false;
|
||||
// ble debug
|
||||
Serial.println("hw ! ready 4");
|
||||
#if HAS_DISPLAY
|
||||
if (disp_ready) {
|
||||
device_init_done = true;
|
||||
@ -1134,15 +1165,26 @@ void validate_status() {
|
||||
}
|
||||
} else {
|
||||
hw_ready = false;
|
||||
// ble debug
|
||||
Serial.println("hw ! ready 5 - override - TODO");
|
||||
|
||||
// override eeprom flags - ble debug
|
||||
hw_ready = true;
|
||||
//
|
||||
|
||||
#if HAS_DISPLAY
|
||||
if (disp_ready) {
|
||||
device_init_done = true;
|
||||
update_display();
|
||||
// ble debug
|
||||
Serial.println("update display called");
|
||||
}
|
||||
#endif
|
||||
}
|
||||
} else {
|
||||
hw_ready = false;
|
||||
// ble debug
|
||||
Serial.println("hw ! ready 6");
|
||||
#if HAS_DISPLAY
|
||||
if (disp_ready) {
|
||||
device_init_done = true;
|
||||
@ -1152,6 +1194,8 @@ void validate_status() {
|
||||
}
|
||||
} else {
|
||||
hw_ready = false;
|
||||
// ble debug
|
||||
Serial.println("hw ! ready 7 - bad boot vector");
|
||||
Serial.write("Error, incorrect boot vector\r\n");
|
||||
#if HAS_DISPLAY
|
||||
if (disp_ready) {
|
||||
|
14
Utilities.h
14
Utilities.h
@ -60,9 +60,12 @@ sx128x *LoRa = &sx128x_modem;
|
||||
#include "Device.h"
|
||||
#endif
|
||||
#if MCU_VARIANT == MCU_ESP32
|
||||
#if BOARD_MODEL != BOARD_RNODE_NG_22
|
||||
#include "soc/rtc_wdt.h"
|
||||
#endif
|
||||
//#if BOARD_MODEL != BOARD_RNODE_NG_22 && BOARD_MODEL != BOARD_HELTEC_LORA32_V3
|
||||
// #include "soc/rtc_wdt.h"
|
||||
//#else
|
||||
//https://github.com/espressif/esp-idf/issues/8855
|
||||
#include "hal/wdt_hal.h"
|
||||
//#endif
|
||||
#define ISR_VECT IRAM_ATTR
|
||||
#else
|
||||
#define ISR_VECT
|
||||
@ -192,6 +195,11 @@ uint8_t boot_vector = 0x00;
|
||||
void led_tx_on() { digitalWrite(pin_led_tx, HIGH); }
|
||||
void led_tx_off() { digitalWrite(pin_led_tx, LOW); }
|
||||
#endif
|
||||
#elif BOARD_MODEL == BOARD_HELTEC_LORA32_V3
|
||||
void led_rx_on() { digitalWrite(pin_led_rx, HIGH); }
|
||||
void led_rx_off() { digitalWrite(pin_led_rx, LOW); }
|
||||
void led_tx_on() { digitalWrite(pin_led_tx, HIGH); }
|
||||
void led_tx_off() { digitalWrite(pin_led_tx, LOW); }
|
||||
#elif BOARD_MODEL == BOARD_LORA32_V2_1
|
||||
void led_rx_on() { digitalWrite(pin_led_rx, HIGH); }
|
||||
void led_rx_off() { digitalWrite(pin_led_rx, LOW); }
|
||||
|
Loading…
Reference in New Issue
Block a user