Skip to content

Commit f792be2

Browse files
committed
[RK35] add some logic to identify Luckfox Lyra Zero W target
1 parent 92293eb commit f792be2

4 files changed

Lines changed: 66 additions & 20 deletions

File tree

software/firmware/source/SoftRF/src/platform/RK35.cpp

Lines changed: 48 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -597,6 +597,30 @@ void RK35_SerialNumber(void)
597597

598598
static void RK35_setup()
599599
{
600+
FILE *fp = fopen("/sys/firmware/devicetree/base/model", "r");
601+
602+
if (fp == NULL)
603+
{
604+
perror("/sys/firmware/devicetree/base/model");
605+
exit(EXIT_FAILURE);
606+
}
607+
608+
char value[80];
609+
610+
if (fgets(value, sizeof(value), fp) != NULL)
611+
{
612+
if (strncmp(value, "Luckfox Lyra Zero W", sizeof(value)) == 0 ||
613+
strncmp(value, "Luckfox Lyra Zero", sizeof(value)) == 0) {
614+
RK35_board = RK35_LUCKFOX_LYRA_ZW;
615+
RK35_hat = RK35_WAVESHARE_HAT_LORA_GNSS;
616+
} else if (strncmp(value, "Luckfox Lyra Plus", sizeof(value)) == 0 ||
617+
strncmp(value, "Luckfox Lyra", sizeof(value)) == 0) {
618+
RK35_board = RK35_LUCKFOX_LYRA_B;
619+
}
620+
}
621+
622+
fclose(fp);
623+
600624
#if defined(EXCLUDE_EEPROM)
601625
eeprom_block.field.magic = SOFTRF_EEPROM_MAGIC;
602626
eeprom_block.field.version = SOFTRF_EEPROM_VERSION;
@@ -632,9 +656,30 @@ static void RK35_setup()
632656

633657
RK35_SerialNumber();
634658

635-
#if defined(USE_RADIOLIB)
636-
lmic_pins.dio[0] = SOC_GPIO_PIN_DIO0;
637-
#endif /* USE_RADIOLIB */
659+
switch (RK35_board)
660+
{
661+
case RK35_LUCKFOX_LYRA_ZW:
662+
lmic_pins.nss = SOC_GPIO_PIN_HAT_SS;
663+
lmic_pins.rst = SOC_GPIO_PIN_HAT_RST;
664+
lmic_pins.busy = SOC_GPIO_PIN_HAT_BUSY;
665+
#if defined(USE_RADIOLIB) || defined(USE_RADIOHEAD)
666+
lmic_pins.dio[0] = SOC_GPIO_PIN_HAT_DIO;
667+
#endif /* USE_RADIOLIB || USE_RADIOHEAD */
668+
break;
669+
case RK35_LUCKFOX_LYRA_B:
670+
default:
671+
lmic_pins.nss = SOC_GPIO_PIN_SS;
672+
lmic_pins.rst = SOC_GPIO_PIN_RST;
673+
lmic_pins.busy = SOC_GPIO_PIN_BUSY;
674+
#if defined(USE_RADIOLIB) || defined(USE_RADIOHEAD)
675+
lmic_pins.dio[0] = SOC_GPIO_PIN_DIO0;
676+
#endif /* USE_RADIOLIB || USE_RADIOHEAD */
677+
break;
678+
}
679+
680+
if (RK35_hat == RK35_WAVESHARE_HAT_LORA_GNSS) {
681+
lmic_pins.tcxo = lmic_pins.rst; /* SX1262 with XTAL */
682+
}
638683
}
639684

640685
static void RK35_post_init()

software/firmware/source/SoftRF/src/platform/RK35.h

Lines changed: 15 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -110,20 +110,21 @@ struct rst_info {
110110
#define SOC_GPIO_PIN_NEOPIXEL 4 // RMIO4
111111
#define SOC_GPIO_PIN_LED SOC_GPIO_PIN_NEOPIXEL
112112
#define SOC_GPIO_PIN_STATUS SOC_UNUSED_PIN
113-
#define SOC_GPIO_PIN_BUZZER 8 // RMIO8
114-
115-
// Luckfox Lyra Zero W with Waveshare SX1262-L76K HAT
116-
#define SOC_GPIO_PIN_HAT_MOSI 0 RMIO6
117-
#define SOC_GPIO_PIN_HAT_MISO 0 RMIO7
118-
#define SOC_GPIO_PIN_HAT_SCK 0 RMIO8
119-
#define SOC_GPIO_PIN_HAT_SS 0 // RMIO18
120-
#define SOC_GPIO_PIN_HAT_RST 0 // RMIO14
121-
#define SOC_GPIO_PIN_HAT_DIO 0 // RMIO29
122-
#define SOC_GPIO_PIN_HAT_BUSY 0 // RMIO17
123-
#define SOC_GPIO_PIN_HAT_SDA RMIO0
124-
#define SOC_GPIO_PIN_HAT_SCL RMIO1
125-
#define SOC_GPIO_PIN_HAT_GNSS_RX RMIO23
126-
#define SOC_GPIO_PIN_HAT_GNSS_TX RMIO22
113+
#define SOC_GPIO_PIN_BUZZER (RK35_board == RK35_LUCKFOX_LYRA_B ? \
114+
8 /* RMIO8 */ : SOC_UNUSED_PIN)
115+
116+
// Luckfox Lyra Zero W with Waveshare SX1262+L76K HAT
117+
#define SOC_GPIO_PIN_HAT_MOSI 6 // RMIO6
118+
#define SOC_GPIO_PIN_HAT_MISO 7 // RMIO7
119+
#define SOC_GPIO_PIN_HAT_SCK 8 // RMIO8
120+
#define SOC_GPIO_PIN_HAT_SS 18 // RMIO18
121+
#define SOC_GPIO_PIN_HAT_RST 14 // RMIO14
122+
#define SOC_GPIO_PIN_HAT_DIO 29 // RMIO29
123+
#define SOC_GPIO_PIN_HAT_BUSY 17 // RMIO17
124+
#define SOC_GPIO_PIN_HAT_SDA 0 // RMIO0
125+
#define SOC_GPIO_PIN_HAT_SCL 1 // RMIO1
126+
#define SOC_GPIO_PIN_HAT_GNSS_RX 23 // RMIO23
127+
#define SOC_GPIO_PIN_HAT_GNSS_TX 22 // RMIO22
127128
#define SOC_GPIO_PIN_HAT_GNSS_PPS SOC_UNUSED_PIN
128129

129130
#define HTTP_SRV_PORT 8081 /* port 8080 can cause conflict with dump1090 */

software/firmware/source/libraries/arduino-basicmac/src/hal/hal.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -283,7 +283,7 @@ void hal_pin_tcxo_init()
283283
#endif /* ARDUINO_NUCLEO_L073RZ */
284284

285285
bool hal_pin_tcxo (u1_t val) {
286-
#if !defined(__ASR6501__) && !defined(RASPBERRY_PI)
286+
#if !defined(__ASR6501__) && !defined(RASPBERRY_PI) && !defined(LUCKFOX_LYRA)
287287
if (lmic_pins.tcxo == LMIC_UNUSED_PIN)
288288
return false;
289289

software/firmware/source/libraries/arduino-basicmac/src/lmic/radio-sx126x.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -314,8 +314,8 @@ static void SetDIO3AsTcxoCtrl (uint8_t voltage) {
314314
uint32_t timeout = 320;
315315
uint8_t data[] = {voltage, (timeout >> 16) & 0xff, (timeout >> 8) & 0xff, timeout & 0xff };
316316

317-
#if defined(__ASR6501__) || defined(ARDUINO_GENERIC_WLE5CCUX) || \
318-
defined(RASPBERRY_PI)
317+
#if defined(__ASR6501__) || defined(ARDUINO_GENERIC_WLE5CCUX) || \
318+
defined(RASPBERRY_PI) || defined(LUCKFOX_LYRA)
319319
if (hal_pin_tcxo(voltage))
320320
#elif defined(ARDUINO_ARCH_ASR6601)
321321
if (LORAC->CR1 & 0x1)

0 commit comments

Comments
 (0)