Initial import

This commit is contained in:
2026-03-25 18:14:45 +01:00
commit d074cd2e43
99 changed files with 3781 additions and 0 deletions

View File

@@ -0,0 +1,6 @@
if BOARD_HELTEC_MESHPOCKET
config BOARD
default "heltec_meshpocket"
endif # BOARD_HELTEC_MESHPOCKET

View File

@@ -0,0 +1,2 @@
config BOARD_HELTEC_MESHPOCKET
select SOC_NRF52840_QIAA

View File

@@ -0,0 +1,2 @@
# Heltec MeshPocket — board.cmake
include(${ZEPHYR_BASE}/boards/nordic/common/board.cmake)

View File

@@ -0,0 +1,7 @@
board:
name: heltec_meshpocket
full_name: "Heltec MeshPocket"
vendor: heltec
url: https://heltec.org/project/mesh-pocket/
socs:
- name: nrf52840

View File

@@ -0,0 +1,47 @@
/*
* SPDX-License-Identifier: Apache-2.0
*
* Heltec MeshPocket — pin control definitions
* SoC: nRF52840-QIAA
*/
#include <nordic/nrf52840.dtsi>
#include <dt-bindings/pinctrl/nrf-pinctrl.h>
&pinctrl {
uart0_default: uart0_default {
group1 {
psels = <NRF_PSEL(UART_TX, 0, 6)>;
};
group2 {
psels = <NRF_PSEL(UART_RX, 0, 8)>;
bias-pull-up;
};
};
uart0_sleep: uart0_sleep {
group1 {
psels = <NRF_PSEL(UART_TX, 0, 6)>,
<NRF_PSEL(UART_RX, 0, 8)>;
low-power-enable;
};
};
/* SPI1 for SX1262 */
spi1_default: spi1_default {
group1 {
psels = <NRF_PSEL(SPIM_SCK, 0, 26)>,
<NRF_PSEL(SPIM_MOSI, 0, 27)>,
<NRF_PSEL(SPIM_MISO, 0, 28)>;
};
};
spi1_sleep: spi1_sleep {
group1 {
psels = <NRF_PSEL(SPIM_SCK, 0, 26)>,
<NRF_PSEL(SPIM_MOSI, 0, 27)>,
<NRF_PSEL(SPIM_MISO, 0, 28)>;
low-power-enable;
};
};
};

View File

@@ -0,0 +1,96 @@
/*
* SPDX-License-Identifier: Apache-2.0
*
* Heltec MeshPocket — Device Tree Source
* SoC: nRF52840-QIAA
* Radio: SX1262 (crystal oscillator, no TCXO)
*/
/dts-v1/;
#include <nordic/nrf52840_qiaa.dtsi>
#include "heltec_meshpocket-pinctrl.dtsi"
/ {
model = "Heltec MeshPocket";
compatible = "heltec,meshpocket";
chosen {
zephyr,sram = &sram0;
zephyr,flash = &flash0;
zephyr,console = &uart0;
zephyr,shell-uart = &uart0;
zephyr,code-partition = &slot0_partition;
};
aliases {
lora0 = &lora;
};
};
&uicr {
gpio-as-nreset;
};
&gpiote {
status = "okay";
};
&gpio0 {
status = "okay";
};
&gpio1 {
status = "okay";
};
&uart0 {
compatible = "nordic,nrf-uarte";
status = "okay";
current-speed = <115200>;
pinctrl-0 = <&uart0_default>;
pinctrl-1 = <&uart0_sleep>;
pinctrl-names = "default", "sleep";
};
&spi1 {
compatible = "nordic,nrf-spim";
status = "okay";
pinctrl-0 = <&spi1_default>;
pinctrl-names = "default";
cs-gpios = <&gpio0 24 GPIO_ACTIVE_LOW>;
lora: lora@0 {
compatible = "semtech,sx1262";
reg = <0>;
spi-max-frequency = <1000000>;
reset-gpios = <&gpio0 21 GPIO_ACTIVE_LOW>;
busy-gpios = <&gpio1 3 GPIO_ACTIVE_HIGH>;
dio1-gpios = <&gpio1 4 GPIO_ACTIVE_HIGH>;
dio2-tx-enable;
};
};
&flash0 {
partitions {
compatible = "fixed-partitions";
#address-cells = <1>;
#size-cells = <1>;
boot_partition: partition@0 {
label = "mcuboot";
reg = <0x00000000 0x0000C000>;
};
slot0_partition: partition@c000 {
label = "image-0";
reg = <0x0000C000 0x00067000>;
};
slot1_partition: partition@73000 {
label = "image-1";
reg = <0x00073000 0x00067000>;
};
storage_partition: partition@da000 {
label = "storage";
reg = <0x000da000 0x00006000>;
};
};
};

View File

@@ -0,0 +1,7 @@
CONFIG_SOC_SERIES_NRF52X=y
CONFIG_BOARD_HELTEC_MESHPOCKET=y
CONFIG_FLASH=y
CONFIG_FLASH_MAP=y
CONFIG_UART_CONSOLE=y
CONFIG_SPI=y
CONFIG_GPIO=y

View File

@@ -0,0 +1,6 @@
if BOARD_HELTEC_T114
config BOARD
default "heltec_t114"
endif # BOARD_HELTEC_T114

View File

@@ -0,0 +1,2 @@
config BOARD_HELTEC_T114
select SOC_NRF52840_QIAA

View File

@@ -0,0 +1,7 @@
# Heltec T114 — board.cmake
# Uses nrfjprog or pyocd for flashing via SWD.
# The board exposes a SWD header for programming.
board_runner_args(nrfjprog "--nrf-family=NRF52")
board_runner_args(pyocd "--target=nrf52840")
include(${ZEPHYR_BASE}/boards/common/nrfjprog.board.cmake)
include(${ZEPHYR_BASE}/boards/common/pyocd.board.cmake)

View File

@@ -0,0 +1,7 @@
board:
name: heltec_t114
full_name: "Heltec Mesh Node T114"
vendor: heltec
url: https://heltec.org/project/mesh-node-t114/
socs:
- name: nrf52840

View File

@@ -0,0 +1,46 @@
/*
* SPDX-License-Identifier: Apache-2.0
*
* Heltec T114 — pin control definitions
*/
#include <nordic/nrf52840.dtsi>
#include <dt-bindings/pinctrl/nrf-pinctrl.h>
&pinctrl {
uart1_default: uart1_default {
group1 {
psels = <NRF_PSEL(UART_TX, 0, 10)>;
};
group2 {
psels = <NRF_PSEL(UART_RX, 0, 9)>;
bias-pull-up;
};
};
uart1_sleep: uart1_sleep {
group1 {
psels = <NRF_PSEL(UART_TX, 0, 10)>,
<NRF_PSEL(UART_RX, 0, 9)>;
low-power-enable;
};
};
/* SPI1 for LR1110 */
spi1_default: spi1_default {
group1 {
psels = <NRF_PSEL(SPIM_SCK, 0, 19)>,
<NRF_PSEL(SPIM_MOSI, 0, 22)>,
<NRF_PSEL(SPIM_MISO, 0, 23)>;
};
};
spi1_sleep: spi1_sleep {
group1 {
psels = <NRF_PSEL(SPIM_SCK, 0, 19)>,
<NRF_PSEL(SPIM_MOSI, 0, 22)>,
<NRF_PSEL(SPIM_MISO, 0, 23)>;
low-power-enable;
};
};
};

View File

@@ -0,0 +1,115 @@
/*
* SPDX-License-Identifier: Apache-2.0
*
* Heltec Mesh Node T114 — Device Tree Source
* SoC: nRF52840 QIAAVariant
* Radio: SX1262
*
* NOTE: GPIO pin numbers are placeholders. Verify against the T114
* schematic/documentation before using with real hardware.
* The T114 uses the nRF52840 SoC in a similar form factor to the
* RAK4631, but with different GPIO assignments.
*/
/dts-v1/;
#include <nordic/nrf52840_qiaa.dtsi>
#include "heltec_t114-pinctrl.dtsi"
/ {
model = "Heltec Mesh Node T114";
compatible = "heltec,mesh-node-t114";
chosen {
zephyr,sram = &sram0;
zephyr,flash = &flash0;
zephyr,code-partition = &slot0_partition;
};
aliases {
lora0 = &lora;
led0 = &led0;
};
leds {
compatible = "gpio-leds";
led0: led_0 {
/* TODO: verify LED GPIO from T114 schematic */
gpios = <&gpio0 13 GPIO_ACTIVE_LOW>;
label = "LED 0";
};
};
};
&uicr {
gpio-as-nreset;
};
&gpiote {
status = "okay";
};
&gpio0 {
status = "okay";
};
&gpio1 {
status = "okay";
};
&uart1 {
compatible = "nordic,nrf-uarte";
status = "okay";
current-speed = <115200>;
pinctrl-0 = <&uart1_default>;
pinctrl-1 = <&uart1_sleep>;
pinctrl-names = "default", "sleep";
};
&spi1 {
compatible = "nordic,nrf-spim";
status = "okay";
pinctrl-0 = <&spi1_default>;
pinctrl-names = "default";
lora: lora@0 {
compatible = "semtech,sx1262";
reg = <0>;
spi-max-frequency = <1000000>;
reset-gpios = <&gpio0 25 GPIO_ACTIVE_LOW>;
busy-gpios = <&gpio0 17 GPIO_ACTIVE_HIGH>;
dio1-gpios = <&gpio0 20 GPIO_ACTIVE_HIGH>;
dio2-tx-enable;
dio3-tcxo-voltage = <SX126X_DIO3_TCXO_3V3>;
tcxo-power-startup-delay-ms = <5>;
};
};
zephyr_udc0: &usbd {
compatible = "nordic,nrf-usbd";
status = "okay";
};
&flash0 {
partitions {
compatible = "fixed-partitions";
#address-cells = <1>;
#size-cells = <1>;
boot_partition: partition@0 {
label = "mcuboot";
reg = <0x00000000 0x0000C000>;
};
slot0_partition: partition@c000 {
label = "image-0";
reg = <0x0000C000 0x00067000>;
};
slot1_partition: partition@73000 {
label = "image-1";
reg = <0x00073000 0x00067000>;
};
storage_partition: partition@da000 {
label = "storage";
reg = <0x000da000 0x00006000>;
};
};
};

View File

@@ -0,0 +1,8 @@
CONFIG_SOC_NRF52840_QIAA=y
CONFIG_BOARD_HELTEC_T114=y
CONFIG_FLASH=y
CONFIG_FLASH_MAP=y
CONFIG_GPIO=y
CONFIG_SPI=y
CONFIG_USB_DEVICE_STACK=y
CONFIG_NRFX_POWER=y

View File

@@ -0,0 +1,6 @@
if BOARD_HELTEC_WIFI_LORA32_V3
config BOARD
default "heltec_wifi_lora32_v3"
endif # BOARD_HELTEC_WIFI_LORA32_V3

View File

@@ -0,0 +1,3 @@
config BOARD_HELTEC_WIFI_LORA32_V3
select SOC_ESP32S3_PROCPU if BOARD_HELTEC_WIFI_LORA32_V3_PROCPU
select SOC_ESP32S3_APPCPU if BOARD_HELTEC_WIFI_LORA32_V3_APPCPU

View File

@@ -0,0 +1,3 @@
# Heltec WiFi LoRa 32 V3 — board.cmake
# Uses esptool for flashing over CP2102 USB-UART bridge
include(${ZEPHYR_BASE}/boards/espressif/common/board.cmake)

View File

@@ -0,0 +1,10 @@
board:
name: heltec_wifi_lora32_v3
full_name: "Heltec WiFi LoRa 32 V3"
vendor: heltec
url: https://heltec.org/project/wifi-lora-32-v3/
socs:
- name: esp32s3
variants:
- name: procpu
- name: appcpu

View File

@@ -0,0 +1,34 @@
/*
* SPDX-License-Identifier: Apache-2.0
*
* Heltec WiFi LoRa 32 V3 — pin control definitions
*/
#include <zephyr/dt-bindings/pinctrl/esp-pinctrl-common.h>
#include <dt-bindings/pinctrl/esp32s3-pinctrl.h>
#include <zephyr/dt-bindings/pinctrl/esp32s3-gpio-sigmap.h>
&pinctrl {
uart0_default: uart0_default {
group1 {
pinmux = <UART0_TX_GPIO43>;
output-enable;
};
group2 {
pinmux = <UART0_RX_GPIO44>;
bias-pull-up;
};
};
spim2_default: spim2_default {
group1 {
pinmux = <SPIM2_MISO_GPIO11>,
<SPIM2_SCLK_GPIO9>,
<SPIM2_CSEL_GPIO8>;
};
group2 {
pinmux = <SPIM2_MOSI_GPIO10>;
output-enable;
};
};
};

View File

@@ -0,0 +1,109 @@
/*
* SPDX-License-Identifier: Apache-2.0
*
* Heltec WiFi LoRa 32 V3 — Device Tree Source (PROCPU)
*
* SoC: ESP32-S3
* Radio: SX1262
* Console: UART0 via CP2102 USB-UART bridge (GPIO43=TX, GPIO44=RX)
*/
/dts-v1/;
#include <espressif/esp32s3/esp32s3_fn8r2.dtsi>
#include "heltec_wifi_lora32_v3-pinctrl.dtsi"
#include <zephyr/dt-bindings/input/input-event-codes.h>
/ {
model = "Heltec WiFi LoRa 32 V3 PROCPU";
compatible = "heltec,wifi-lora-32-v3";
chosen {
zephyr,sram = &sram0;
zephyr,flash = &flash0;
zephyr,console = &uart0;
zephyr,shell-uart = &uart0;
zephyr,flash-controller = &flash;
};
aliases {
lora0 = &lora;
led0 = &led_white;
};
leds {
compatible = "gpio-leds";
led_white: led_0 {
gpios = <&gpio0 35 GPIO_ACTIVE_HIGH>;
label = "White LED";
};
};
buttons {
compatible = "gpio-keys";
boot_button: button_0 {
gpios = <&gpio0 0 (GPIO_PULL_UP | GPIO_ACTIVE_LOW)>;
label = "Boot Button";
zephyr,code = <INPUT_KEY_0>;
};
};
};
&uart0 {
status = "okay";
current-speed = <115200>;
pinctrl-0 = <&uart0_default>;
pinctrl-names = "default";
};
&spi2 {
status = "okay";
#address-cells = <1>;
#size-cells = <0>;
pinctrl-0 = <&spim2_default>;
pinctrl-names = "default";
cs-gpios = <&gpio0 8 GPIO_ACTIVE_LOW>;
lora: lora@0 {
compatible = "semtech,sx1262";
reg = <0>;
spi-max-frequency = <4000000>;
reset-gpios = <&gpio0 12 (GPIO_OPEN_DRAIN | GPIO_ACTIVE_LOW)>;
busy-gpios = <&gpio0 13 GPIO_ACTIVE_HIGH>;
dio1-gpios = <&gpio0 14 GPIO_ACTIVE_HIGH>;
dio2-tx-enable;
tcxo-power-startup-delay-ms = <5>;
};
};
&gpio0 {
status = "okay";
};
&gpio1 {
status = "okay";
};
&flash0 {
status = "okay";
partitions {
compatible = "fixed-partitions";
#address-cells = <1>;
#size-cells = <1>;
boot_partition: partition@0 {
label = "mcuboot";
reg = <0x00000000 0x00010000>;
};
slot0_partition: partition@10000 {
label = "image-0";
reg = <0x00010000 0x00300000>;
};
slot1_partition: partition@310000 {
label = "image-1";
reg = <0x00310000 0x00300000>;
};
storage_partition: partition@610000 {
label = "storage";
reg = <0x00610000 0x001f0000>;
};
};
};

View File

@@ -0,0 +1,7 @@
CONFIG_SOC_SERIES_ESP32S3=y
CONFIG_BOARD_HELTEC_WIFI_LORA32_V3=y
CONFIG_FLASH=y
CONFIG_FLASH_MAP=y
CONFIG_UART_CONSOLE=y
CONFIG_SPI=y
CONFIG_GPIO=y

View File

@@ -0,0 +1,6 @@
if BOARD_HELTEC_WIFI_LORA32_V4
config BOARD
default "heltec_wifi_lora32_v4"
endif # BOARD_HELTEC_WIFI_LORA32_V4

View File

@@ -0,0 +1,3 @@
config BOARD_HELTEC_WIFI_LORA32_V4
select SOC_ESP32S3_PROCPU if BOARD_HELTEC_WIFI_LORA32_V4_PROCPU
select SOC_ESP32S3_APPCPU if BOARD_HELTEC_WIFI_LORA32_V4_APPCPU

View File

@@ -0,0 +1,3 @@
# Heltec WiFi LoRa 32 V4 — board.cmake
# Uses esptool for flashing over USB-C (direct ESP32-S3 USB)
include(${ZEPHYR_BASE}/boards/espressif/common/board.cmake)

View File

@@ -0,0 +1,10 @@
board:
name: heltec_wifi_lora32_v4
full_name: "Heltec WiFi LoRa 32 V4"
vendor: heltec
url: https://heltec.org/project/wifi-lora-32-v4/
socs:
- name: esp32s3
variants:
- name: procpu
- name: appcpu

View File

@@ -0,0 +1,23 @@
/*
* SPDX-License-Identifier: Apache-2.0
*
* Heltec WiFi LoRa 32 V4 — pin control definitions
*/
#include <zephyr/dt-bindings/pinctrl/esp-pinctrl-common.h>
#include <dt-bindings/pinctrl/esp32s3-pinctrl.h>
#include <zephyr/dt-bindings/pinctrl/esp32s3-gpio-sigmap.h>
&pinctrl {
spim2_default: spim2_default {
group1 {
pinmux = <SPIM2_MISO_GPIO11>,
<SPIM2_SCLK_GPIO9>,
<SPIM2_CSEL_GPIO8>;
};
group2 {
pinmux = <SPIM2_MOSI_GPIO10>;
output-enable;
};
};
};

View File

@@ -0,0 +1,111 @@
/*
* SPDX-License-Identifier: Apache-2.0
*
* Heltec WiFi LoRa 32 V4 — Device Tree Source (PROCPU)
*
* Based on Heltec WiFi LoRa 32 V3 with the following differences:
* - No CP2102 USB-UART bridge; direct ESP32-S3 USB-C
* - Console routed to usb_serial instead of uart0
*/
/dts-v1/;
#include <espressif/esp32s3/esp32s3_fn8r2.dtsi>
#include "heltec_wifi_lora32_v4-pinctrl.dtsi"
#include <zephyr/dt-bindings/input/input-event-codes.h>
/ {
model = "Heltec WiFi LoRa 32 V4 PROCPU";
compatible = "heltec,wifi-lora-32-v4";
chosen {
zephyr,sram = &sram0;
zephyr,flash = &flash0;
zephyr,console = &usb_serial;
zephyr,shell-uart = &usb_serial;
zephyr,flash-controller = &flash;
};
aliases {
lora0 = &lora;
led0 = &led_white;
};
leds {
compatible = "gpio-leds";
led_white: led_0 {
/* V4 LED pin — verify from schematic */
gpios = <&gpio0 35 GPIO_ACTIVE_HIGH>;
label = "White LED";
};
};
buttons {
compatible = "gpio-keys";
boot_button: button_0 {
gpios = <&gpio0 0 (GPIO_PULL_UP | GPIO_ACTIVE_LOW)>;
label = "Boot Button";
zephyr,code = <INPUT_KEY_0>;
};
};
};
&usb_serial {
status = "okay";
};
&uart0 {
status = "disabled";
};
&spi2 {
status = "okay";
#address-cells = <1>;
#size-cells = <0>;
pinctrl-0 = <&spim2_default>;
pinctrl-names = "default";
cs-gpios = <&gpio0 8 GPIO_ACTIVE_LOW>;
lora: lora@0 {
compatible = "semtech,sx1262";
reg = <0>;
spi-max-frequency = <4000000>;
reset-gpios = <&gpio0 12 (GPIO_OPEN_DRAIN | GPIO_ACTIVE_LOW)>;
busy-gpios = <&gpio0 13 GPIO_ACTIVE_HIGH>;
dio1-gpios = <&gpio0 14 GPIO_ACTIVE_HIGH>;
dio2-tx-enable;
tcxo-power-startup-delay-ms = <5>;
};
};
&gpio0 {
status = "okay";
};
&gpio1 {
status = "okay";
};
&flash0 {
status = "okay";
partitions {
compatible = "fixed-partitions";
#address-cells = <1>;
#size-cells = <1>;
boot_partition: partition@0 {
label = "mcuboot";
reg = <0x00000000 0x00010000>;
};
slot0_partition: partition@10000 {
label = "image-0";
reg = <0x00010000 0x00300000>;
};
slot1_partition: partition@310000 {
label = "image-1";
reg = <0x00310000 0x00300000>;
};
storage_partition: partition@610000 {
label = "storage";
reg = <0x00610000 0x001f0000>;
};
};
};

View File

@@ -0,0 +1,7 @@
CONFIG_SOC_SERIES_ESP32S3=y
CONFIG_BOARD_HELTEC_WIFI_LORA32_V4=y
CONFIG_FLASH=y
CONFIG_FLASH_MAP=y
CONFIG_UART_CONSOLE=y
CONFIG_SPI=y
CONFIG_GPIO=y

10
boards/heltec_t114.conf Normal file
View File

@@ -0,0 +1,10 @@
# Heltec T114 (Mesh Node T114) — nRF52840 + SX1262
# Uses USB CDC-ACM
CONFIG_LORAMODEM_KISS_IFACE_USB=y
CONFIG_USB_DEVICE_STACK=y
CONFIG_USB_CDC_ACM=y
CONFIG_UART_LINE_CTRL=y
# SX1262 driver
CONFIG_LORA_SX12XX=y

View File

@@ -0,0 +1,17 @@
/*
* Heltec T114 (Mesh Node T114) — application DTS overlay
* KISS interface: USB CDC-ACM
* LoRa: SX1262 on SPI1 (defined in custom board DTS)
*/
/ {
chosen {
loramodem,kiss-uart = &cdc_acm_uart0;
};
};
&zephyr_udc0 {
cdc_acm_uart0: cdc_acm_uart0 {
compatible = "zephyr,cdc-acm-uart";
};
};

View File

@@ -0,0 +1,7 @@
# Heltec WiFi LoRa 32 V2 — ESP32 + SX1276
# Uses hardware UART over CP2102 USB-Serial bridge
CONFIG_LORAMODEM_KISS_IFACE_UART=y
# SX1276 driver (via loramac-node)
CONFIG_LORA_SX12XX=y

View File

@@ -0,0 +1,11 @@
/*
* Heltec WiFi LoRa 32 V2 — application DTS overlay
* KISS interface: UART0 (via CP2102 USB-Serial bridge)
* LoRa: SX1276 on SPI2 (already defined in upstream board DTS)
*/
/ {
chosen {
loramodem,kiss-uart = &uart0;
};
};

View File

@@ -0,0 +1,10 @@
# Heltec WiFi LoRa 32 V3 (procpu) — ESP32-S3 + SX1262
# Uses USB CDC-ACM (direct ESP32-S3 USB, no CP2102)
CONFIG_LORAMODEM_KISS_IFACE_USB=y
CONFIG_USB_DEVICE_STACK=y
CONFIG_USB_CDC_ACM=y
CONFIG_UART_LINE_CTRL=y
# SX1262 driver
CONFIG_LORA_SX12XX=y

View File

@@ -0,0 +1,17 @@
/*
* Heltec WiFi LoRa 32 V3 (procpu) — application DTS overlay
* KISS interface: USB CDC-ACM
* LoRa: SX1262 on SPI2 (already defined in upstream board DTS)
*/
/ {
chosen {
loramodem,kiss-uart = &cdc_acm_uart0;
};
};
&zephyr_udc0 {
cdc_acm_uart0: cdc_acm_uart0 {
compatible = "zephyr,cdc-acm-uart";
};
};

View File

@@ -0,0 +1,10 @@
# Heltec WiFi LoRa 32 V4 (procpu) — ESP32-S3 + SX1262
# Uses USB CDC-ACM (direct USB-C, no CP2102)
CONFIG_LORAMODEM_KISS_IFACE_USB=y
CONFIG_USB_DEVICE_STACK=y
CONFIG_USB_CDC_ACM=y
CONFIG_UART_LINE_CTRL=y
# SX1262 driver
CONFIG_LORA_SX12XX=y

View File

@@ -0,0 +1,17 @@
/*
* Heltec WiFi LoRa 32 V4 (procpu) — application DTS overlay
* KISS interface: USB CDC-ACM
* LoRa: SX1262 on SPI2 (defined in custom board DTS)
*/
/ {
chosen {
loramodem,kiss-uart = &cdc_acm_uart0;
};
};
&zephyr_udc0 {
cdc_acm_uart0: cdc_acm_uart0 {
compatible = "zephyr,cdc-acm-uart";
};
};

View File

@@ -0,0 +1,6 @@
if BOARD_LILYGO_TBEAM
config BOARD
default "lilygo_tbeam"
endif # BOARD_LILYGO_TBEAM

View File

@@ -0,0 +1,3 @@
config BOARD_LILYGO_TBEAM
select SOC_ESP32_PROCPU if BOARD_LILYGO_TBEAM_PROCPU
select SOC_ESP32_APPCPU if BOARD_LILYGO_TBEAM_APPCPU

View File

@@ -0,0 +1,3 @@
# LilyGo T-Beam — board.cmake
# Uses esptool for flashing over USB-to-serial (CP2104)
include(${ZEPHYR_BASE}/boards/espressif/common/board.cmake)

View File

@@ -0,0 +1,10 @@
board:
name: lilygo_tbeam
full_name: "LilyGo T-Beam"
vendor: lilygo
url: https://www.lilygo.cc/products/t-beam-v1-1
socs:
- name: esp32
variants:
- name: procpu
- name: appcpu

View File

@@ -0,0 +1,36 @@
/*
* SPDX-License-Identifier: Apache-2.0
*
* LilyGo T-Beam V1.1 — pin control definitions
* SoC: ESP32-D0WD
*/
#include <zephyr/dt-bindings/pinctrl/esp-pinctrl-common.h>
#include <dt-bindings/pinctrl/esp32-pinctrl.h>
#include <zephyr/dt-bindings/pinctrl/esp32-gpio-sigmap.h>
&pinctrl {
uart0_default: uart0_default {
group1 {
pinmux = <UART0_TX_GPIO1>;
output-enable;
};
group2 {
pinmux = <UART0_RX_GPIO3>;
bias-pull-up;
};
};
/* SPI3 (VSPI) for SX1276/SX1278 */
spim3_default: spim3_default {
group1 {
pinmux = <SPIM3_MISO_GPIO19>,
<SPIM3_SCLK_GPIO5>,
<SPIM3_CSEL_GPIO18>;
};
group2 {
pinmux = <SPIM3_MOSI_GPIO27>;
output-enable;
};
};
};

View File

@@ -0,0 +1,102 @@
/*
* SPDX-License-Identifier: Apache-2.0
*
* LilyGo T-Beam V1.1 — Device Tree Source (PROCPU)
*
* SoC: ESP32-D0WD
* Radio: SX1276 / SX1278 (LORA32 module)
* Flash: 4 MB
*
* LoRa: MOSI=27 MISO=19 SCK=5 NSS=18 RST=23 DIO0=26
* UART0: TX=1 RX=3 (via CP2104 USB-serial)
*/
/dts-v1/;
#include <espressif/esp32/esp32_d0wd_v3.dtsi>
#include "lilygo_tbeam-pinctrl.dtsi"
#include <zephyr/dt-bindings/input/input-event-codes.h>
/ {
model = "LilyGo T-Beam V1.1 PROCPU";
compatible = "lilygo,t-beam";
chosen {
zephyr,sram = &sram0;
zephyr,flash = &flash0;
zephyr,console = &uart0;
zephyr,shell-uart = &uart0;
zephyr,flash-controller = &flash;
};
aliases {
lora0 = &lora;
};
buttons {
compatible = "gpio-keys";
boot_button: button_0 {
gpios = <&gpio0 38 (GPIO_PULL_UP | GPIO_ACTIVE_LOW)>;
label = "Boot Button";
zephyr,code = <INPUT_KEY_0>;
};
};
};
&uart0 {
status = "okay";
current-speed = <115200>;
pinctrl-0 = <&uart0_default>;
pinctrl-names = "default";
};
&spi3 {
status = "okay";
#address-cells = <1>;
#size-cells = <0>;
pinctrl-0 = <&spim3_default>;
pinctrl-names = "default";
cs-gpios = <&gpio0 18 GPIO_ACTIVE_LOW>;
lora: lora@0 {
compatible = "semtech,sx1276";
reg = <0>;
spi-max-frequency = <8000000>;
reset-gpios = <&gpio0 23 GPIO_ACTIVE_LOW>;
dio1-gpios = <&gpio0 26 GPIO_ACTIVE_HIGH>;
power-amplifier-output = "pa-boost";
};
};
&gpio0 {
status = "okay";
};
&gpio1 {
status = "okay";
};
&flash0 {
status = "okay";
partitions {
compatible = "fixed-partitions";
#address-cells = <1>;
#size-cells = <1>;
boot_partition: partition@0 {
label = "mcuboot";
reg = <0x00000000 0x00010000>;
};
slot0_partition: partition@10000 {
label = "image-0";
reg = <0x00010000 0x00180000>;
};
slot1_partition: partition@190000 {
label = "image-1";
reg = <0x00190000 0x00180000>;
};
storage_partition: partition@310000 {
label = "storage";
reg = <0x00310000 0x000F0000>;
};
};
};

View File

@@ -0,0 +1,7 @@
CONFIG_SOC_SERIES_ESP32=y
CONFIG_BOARD_LILYGO_TBEAM=y
CONFIG_FLASH=y
CONFIG_FLASH_MAP=y
CONFIG_UART_CONSOLE=y
CONFIG_SPI=y
CONFIG_GPIO=y

View File

@@ -0,0 +1,6 @@
if BOARD_RAK_WISMESH_POCKET
config BOARD
default "rak_wismesh_pocket"
endif # BOARD_RAK_WISMESH_POCKET

View File

@@ -0,0 +1,2 @@
config BOARD_RAK_WISMESH_POCKET
select SOC_NRF52840_QIAA

View File

@@ -0,0 +1,9 @@
# RAK WisMesh Pocket — board.cmake
# Uses nrfjprog or pyocd for flashing via SWD.
# J-Link is the recommended debugger for RAK WisBlock-family boards.
board_runner_args(nrfjprog "--nrf-family=NRF52")
board_runner_args(jlink "--device=nRF52840_xxAA" "--speed=4000" "--reset-after-load")
board_runner_args(pyocd "--target=nrf52840")
include(${ZEPHYR_BASE}/boards/common/nrfjprog.board.cmake)
include(${ZEPHYR_BASE}/boards/common/jlink.board.cmake)
include(${ZEPHYR_BASE}/boards/common/pyocd.board.cmake)

View File

@@ -0,0 +1,7 @@
board:
name: rak_wismesh_pocket
full_name: "RAK WisMesh Pocket"
vendor: rak
url: https://docs.rakwireless.com/Product-Categories/WisMesh/
socs:
- name: nrf52840

View File

@@ -0,0 +1,47 @@
/*
* SPDX-License-Identifier: Apache-2.0
*
* RAK WisMesh Pocket — pin control definitions
* Matches RAK4631 GPIO assignments. Verify from WisMesh Pocket schematic.
*/
#include <nordic/nrf52840.dtsi>
#include <dt-bindings/pinctrl/nrf-pinctrl.h>
&pinctrl {
uart0_default: uart0_default {
group1 {
psels = <NRF_PSEL(UART_TX, 0, 19)>;
};
group2 {
psels = <NRF_PSEL(UART_RX, 0, 18)>;
bias-pull-up;
};
};
uart0_sleep: uart0_sleep {
group1 {
psels = <NRF_PSEL(UART_TX, 0, 19)>,
<NRF_PSEL(UART_RX, 0, 18)>;
low-power-enable;
};
};
/* SPI1 for SX1262 — RAK4631 pin assignments */
spi1_default: spi1_default {
group1 {
psels = <NRF_PSEL(SPIM_SCK, 1, 3)>,
<NRF_PSEL(SPIM_MOSI, 1, 2)>,
<NRF_PSEL(SPIM_MISO, 1, 1)>;
};
};
spi1_sleep: spi1_sleep {
group1 {
psels = <NRF_PSEL(SPIM_SCK, 1, 3)>,
<NRF_PSEL(SPIM_MOSI, 1, 2)>,
<NRF_PSEL(SPIM_MISO, 1, 1)>;
low-power-enable;
};
};
};

View File

@@ -0,0 +1,119 @@
/*
* SPDX-License-Identifier: Apache-2.0
*
* RAK WisMesh Pocket — Device Tree Source
* SoC: nRF52840 (same as RAK4631 WisBlock Core)
* Radio: SX1262
*
* The WisMesh Pocket is derived from the RAK4631 with a different
* form factor optimized for portable deployment. GPIO assignments
* are assumed identical to RAK4631; verify against the WisMesh
* Pocket schematic before using with real hardware.
*/
/dts-v1/;
#include <nordic/nrf52840_qiaa.dtsi>
#include "rak_wismesh_pocket-pinctrl.dtsi"
/ {
model = "RAK WisMesh Pocket";
compatible = "rak,wismesh-pocket";
chosen {
zephyr,sram = &sram0;
zephyr,flash = &flash0;
zephyr,code-partition = &slot0_partition;
};
aliases {
lora0 = &lora;
led0 = &led_green;
};
leds {
compatible = "gpio-leds";
led_green: led_0 {
/* RAK4631 green LED — verify for WisMesh Pocket */
gpios = <&gpio1 1 GPIO_ACTIVE_HIGH>;
label = "Green LED";
};
};
};
&uicr {
gpio-as-nreset;
};
&gpiote {
status = "okay";
};
&gpio0 {
status = "okay";
};
&gpio1 {
status = "okay";
};
&uart0 {
compatible = "nordic,nrf-uarte";
status = "okay";
current-speed = <115200>;
pinctrl-0 = <&uart0_default>;
pinctrl-names = "default";
};
/*
* SX1262 on SPI1
* GPIO assignments match RAK4631 — verify for WisMesh Pocket.
*/
&spi1 {
compatible = "nordic,nrf-spim";
status = "okay";
pinctrl-0 = <&spi1_default>;
pinctrl-names = "default";
cs-gpios = <&gpio1 10 GPIO_ACTIVE_LOW>;
lora: lora@0 {
compatible = "semtech,sx1262";
reg = <0>;
spi-max-frequency = <1000000>;
reset-gpios = <&gpio1 6 GPIO_ACTIVE_LOW>;
busy-gpios = <&gpio1 14 GPIO_ACTIVE_HIGH>;
dio1-gpios = <&gpio1 15 GPIO_ACTIVE_HIGH>;
dio2-tx-enable;
dio3-tcxo-voltage = <SX126X_DIO3_TCXO_3V3>;
tcxo-power-startup-delay-ms = <5>;
};
};
zephyr_udc0: &usbd {
compatible = "nordic,nrf-usbd";
status = "okay";
};
&flash0 {
partitions {
compatible = "fixed-partitions";
#address-cells = <1>;
#size-cells = <1>;
boot_partition: partition@0 {
label = "mcuboot";
reg = <0x00000000 0x0000C000>;
};
slot0_partition: partition@c000 {
label = "image-0";
reg = <0x0000C000 0x00067000>;
};
slot1_partition: partition@73000 {
label = "image-1";
reg = <0x00073000 0x00067000>;
};
storage_partition: partition@da000 {
label = "storage";
reg = <0x000da000 0x00006000>;
};
};
};

View File

@@ -0,0 +1,8 @@
CONFIG_SOC_NRF52840_QIAA=y
CONFIG_BOARD_RAK_WISMESH_POCKET=y
CONFIG_FLASH=y
CONFIG_FLASH_MAP=y
CONFIG_GPIO=y
CONFIG_SPI=y
CONFIG_USB_DEVICE_STACK=y
CONFIG_NRFX_POWER=y

View File

@@ -0,0 +1,6 @@
if BOARD_RAK_WISMESH_TAG
config BOARD
default "rak_wismesh_tag"
endif # BOARD_RAK_WISMESH_TAG

View File

@@ -0,0 +1,2 @@
config BOARD_RAK_WISMESH_TAG
select SOC_NRF52840_QIAA

View File

@@ -0,0 +1,9 @@
# RAK WisMesh Tag — board.cmake
# Uses nrfjprog or pyocd for flashing via SWD.
# J-Link is the recommended debugger for RAK WisBlock-family boards.
board_runner_args(nrfjprog "--nrf-family=NRF52")
board_runner_args(jlink "--device=nRF52840_xxAA" "--speed=4000" "--reset-after-load")
board_runner_args(pyocd "--target=nrf52840")
include(${ZEPHYR_BASE}/boards/common/nrfjprog.board.cmake)
include(${ZEPHYR_BASE}/boards/common/jlink.board.cmake)
include(${ZEPHYR_BASE}/boards/common/pyocd.board.cmake)

View File

@@ -0,0 +1,7 @@
board:
name: rak_wismesh_tag
full_name: "RAK WisMesh Tag"
vendor: rak
url: https://docs.rakwireless.com/Product-Categories/WisMesh/
socs:
- name: nrf52840

View File

@@ -0,0 +1,47 @@
/*
* SPDX-License-Identifier: Apache-2.0
*
* RAK WisMesh Tag — pin control definitions
* Matches RAK4631 GPIO assignments. Verify from WisMesh Tag schematic.
*/
#include <nordic/nrf52840.dtsi>
#include <dt-bindings/pinctrl/nrf-pinctrl.h>
&pinctrl {
uart0_default: uart0_default {
group1 {
psels = <NRF_PSEL(UART_TX, 0, 19)>;
};
group2 {
psels = <NRF_PSEL(UART_RX, 0, 18)>;
bias-pull-up;
};
};
uart0_sleep: uart0_sleep {
group1 {
psels = <NRF_PSEL(UART_TX, 0, 19)>,
<NRF_PSEL(UART_RX, 0, 18)>;
low-power-enable;
};
};
/* SPI1 for SX1262 — RAK4631 pin assignments */
spi1_default: spi1_default {
group1 {
psels = <NRF_PSEL(SPIM_SCK, 1, 3)>,
<NRF_PSEL(SPIM_MOSI, 1, 2)>,
<NRF_PSEL(SPIM_MISO, 1, 1)>;
};
};
spi1_sleep: spi1_sleep {
group1 {
psels = <NRF_PSEL(SPIM_SCK, 1, 3)>,
<NRF_PSEL(SPIM_MOSI, 1, 2)>,
<NRF_PSEL(SPIM_MISO, 1, 1)>;
low-power-enable;
};
};
};

View File

@@ -0,0 +1,119 @@
/*
* SPDX-License-Identifier: Apache-2.0
*
* RAK WisMesh Tag — Device Tree Source
* SoC: nRF52840 (same as RAK4631 WisBlock Core)
* Radio: SX1262
*
* The WisMesh Tag is derived from the RAK4631 with a different
* form factor. GPIO assignments are assumed identical to RAK4631;
* verify against the WisMesh Tag schematic before using with
* real hardware.
*/
/dts-v1/;
#include <nordic/nrf52840_qiaa.dtsi>
#include "rak_wismesh_tag-pinctrl.dtsi"
/ {
model = "RAK WisMesh Tag";
compatible = "rak,wismesh-tag";
chosen {
zephyr,sram = &sram0;
zephyr,flash = &flash0;
zephyr,code-partition = &slot0_partition;
};
aliases {
lora0 = &lora;
led0 = &led_green;
};
leds {
compatible = "gpio-leds";
led_green: led_0 {
/* RAK4631 green LED — verify for WisMesh Tag */
gpios = <&gpio1 1 GPIO_ACTIVE_HIGH>;
label = "Green LED";
};
};
};
&uicr {
gpio-as-nreset;
};
&gpiote {
status = "okay";
};
&gpio0 {
status = "okay";
};
&gpio1 {
status = "okay";
};
&uart0 {
compatible = "nordic,nrf-uarte";
status = "okay";
current-speed = <115200>;
pinctrl-0 = <&uart0_default>;
pinctrl-names = "default";
};
/*
* SX1262 on SPI1
* GPIO assignments match RAK4631 — verify for WisMesh Tag.
*/
&spi1 {
compatible = "nordic,nrf-spim";
status = "okay";
pinctrl-0 = <&spi1_default>;
pinctrl-names = "default";
cs-gpios = <&gpio1 10 GPIO_ACTIVE_LOW>;
lora: lora@0 {
compatible = "semtech,sx1262";
reg = <0>;
spi-max-frequency = <1000000>;
reset-gpios = <&gpio1 6 GPIO_ACTIVE_LOW>;
busy-gpios = <&gpio1 14 GPIO_ACTIVE_HIGH>;
dio1-gpios = <&gpio1 15 GPIO_ACTIVE_HIGH>;
dio2-tx-enable;
dio3-tcxo-voltage = <SX126X_DIO3_TCXO_3V3>;
tcxo-power-startup-delay-ms = <5>;
};
};
zephyr_udc0: &usbd {
compatible = "nordic,nrf-usbd";
status = "okay";
};
&flash0 {
partitions {
compatible = "fixed-partitions";
#address-cells = <1>;
#size-cells = <1>;
boot_partition: partition@0 {
label = "mcuboot";
reg = <0x00000000 0x0000C000>;
};
slot0_partition: partition@c000 {
label = "image-0";
reg = <0x0000C000 0x00067000>;
};
slot1_partition: partition@73000 {
label = "image-1";
reg = <0x00073000 0x00067000>;
};
storage_partition: partition@da000 {
label = "storage";
reg = <0x000da000 0x00006000>;
};
};
};

View File

@@ -0,0 +1,8 @@
CONFIG_SOC_NRF52840_QIAA=y
CONFIG_BOARD_RAK_WISMESH_TAG=y
CONFIG_FLASH=y
CONFIG_FLASH_MAP=y
CONFIG_GPIO=y
CONFIG_SPI=y
CONFIG_USB_DEVICE_STACK=y
CONFIG_NRFX_POWER=y

View File

@@ -0,0 +1,10 @@
# RAK WisBlock (RAK4631) — nRF52840 + SX1262
# Uses USB CDC-ACM
CONFIG_LORAMODEM_KISS_IFACE_USB=y
CONFIG_USB_DEVICE_STACK=y
CONFIG_USB_CDC_ACM=y
CONFIG_UART_LINE_CTRL=y
# SX1262 driver
CONFIG_LORA_SX12XX=y

View File

@@ -0,0 +1,17 @@
/*
* RAK WisBlock (RAK4631 / nRF52840) — application DTS overlay
* KISS interface: USB CDC-ACM
* LoRa: SX1262 on SPI1 (already defined in upstream board DTS)
*/
/ {
chosen {
loramodem,kiss-uart = &cdc_acm_uart0;
};
};
&zephyr_udc0 {
cdc_acm_uart0: cdc_acm_uart0 {
compatible = "zephyr,cdc-acm-uart";
};
};

View File

@@ -0,0 +1,10 @@
# RAK WisMesh Pocket — nRF52840 + SX1262
# Uses USB CDC-ACM
CONFIG_LORAMODEM_KISS_IFACE_USB=y
CONFIG_USB_DEVICE_STACK=y
CONFIG_USB_CDC_ACM=y
CONFIG_UART_LINE_CTRL=y
# SX1262 driver
CONFIG_LORA_SX12XX=y

View File

@@ -0,0 +1,17 @@
/*
* RAK WisMesh Pocket — application DTS overlay
* KISS interface: USB CDC-ACM
* LoRa: SX1262 on SPI1 (defined in custom board DTS)
*/
/ {
chosen {
loramodem,kiss-uart = &cdc_acm_uart0;
};
};
&zephyr_udc0 {
cdc_acm_uart0: cdc_acm_uart0 {
compatible = "zephyr,cdc-acm-uart";
};
};

View File

@@ -0,0 +1,10 @@
# RAK WisMesh Tag — nRF52840 + SX1262
# Uses USB CDC-ACM
CONFIG_LORAMODEM_KISS_IFACE_USB=y
CONFIG_USB_DEVICE_STACK=y
CONFIG_USB_CDC_ACM=y
CONFIG_UART_LINE_CTRL=y
# SX1262 driver
CONFIG_LORA_SX12XX=y

View File

@@ -0,0 +1,17 @@
/*
* RAK WisMesh Tag — application DTS overlay
* KISS interface: USB CDC-ACM
* LoRa: SX1262 on SPI1 (defined in custom board DTS)
*/
/ {
chosen {
loramodem,kiss-uart = &cdc_acm_uart0;
};
};
&zephyr_udc0 {
cdc_acm_uart0: cdc_acm_uart0 {
compatible = "zephyr,cdc-acm-uart";
};
};

View File

@@ -0,0 +1,6 @@
if BOARD_SEEED_WIO_TRACKER
config BOARD
default "seeed_wio_tracker"
endif # BOARD_SEEED_WIO_TRACKER

View File

@@ -0,0 +1,2 @@
config BOARD_SEEED_WIO_TRACKER
select SOC_NRF52840_QIAA

View File

@@ -0,0 +1,6 @@
# Seeed Wio Tracker 1110 — board.cmake
# Uses nrfjprog or pyocd for flashing via SWD.
board_runner_args(nrfjprog "--nrf-family=NRF52")
board_runner_args(pyocd "--target=nrf52840")
include(${ZEPHYR_BASE}/boards/common/nrfjprog.board.cmake)
include(${ZEPHYR_BASE}/boards/common/pyocd.board.cmake)

View File

@@ -0,0 +1,7 @@
board:
name: seeed_wio_tracker
full_name: "Seeed Wio Tracker 1110"
vendor: seeed
url: https://wiki.seeedstudio.com/wio_tracker_1110_intro/
socs:
- name: nrf52840

View File

@@ -0,0 +1,47 @@
/*
* SPDX-License-Identifier: Apache-2.0
*
* Seeed Wio Tracker 1110 — pin control definitions
* NOTE: GPIO numbers are placeholders. Verify from schematic.
*/
#include <nordic/nrf52840.dtsi>
#include <dt-bindings/pinctrl/nrf-pinctrl.h>
&pinctrl {
uart0_default: uart0_default {
group1 {
psels = <NRF_PSEL(UART_TX, 0, 25)>;
};
group2 {
psels = <NRF_PSEL(UART_RX, 0, 24)>;
bias-pull-up;
};
};
uart0_sleep: uart0_sleep {
group1 {
psels = <NRF_PSEL(UART_TX, 0, 25)>,
<NRF_PSEL(UART_RX, 0, 24)>;
low-power-enable;
};
};
/* SPI1 for LR1110 — verify pins from Wio Tracker 1110 schematic */
spi1_default: spi1_default {
group1 {
psels = <NRF_PSEL(SPIM_SCK, 0, 21)>,
<NRF_PSEL(SPIM_MOSI, 0, 22)>,
<NRF_PSEL(SPIM_MISO, 0, 23)>;
};
};
spi1_sleep: spi1_sleep {
group1 {
psels = <NRF_PSEL(SPIM_SCK, 0, 21)>,
<NRF_PSEL(SPIM_MOSI, 0, 22)>,
<NRF_PSEL(SPIM_MISO, 0, 23)>;
low-power-enable;
};
};
};

View File

@@ -0,0 +1,117 @@
/*
* SPDX-License-Identifier: Apache-2.0
*
* Seeed Wio Tracker 1110 — Device Tree Source
* SoC: nRF52840
* Radio: Semtech LR1110 (LoRa + GNSS multi-protocol transceiver)
*
* NOTE: GPIO pin numbers are placeholders. Verify against the
* Wio Tracker 1110 schematic before using with real hardware.
* The LR1110 SPI interface differs from SX126x: it uses 2-byte
* opcodes and requires the BUSY pin to be checked between transactions.
*/
/dts-v1/;
#include <nordic/nrf52840_qiaa.dtsi>
#include "seeed_wio_tracker-pinctrl.dtsi"
/ {
model = "Seeed Wio Tracker 1110";
compatible = "seeed,wio-tracker-1110";
chosen {
zephyr,sram = &sram0;
zephyr,flash = &flash0;
zephyr,code-partition = &slot0_partition;
};
aliases {
lora0 = &lora;
led0 = &led_green;
};
leds {
compatible = "gpio-leds";
led_green: led_0 {
/* TODO: verify LED GPIO from Wio Tracker 1110 schematic */
gpios = <&gpio0 13 GPIO_ACTIVE_LOW>;
label = "Green LED";
};
};
};
&uicr {
gpio-as-nreset;
};
&gpiote {
status = "okay";
};
&gpio0 {
status = "okay";
};
&gpio1 {
status = "okay";
};
&uart0 {
compatible = "nordic,nrf-uarte";
status = "okay";
current-speed = <115200>;
pinctrl-0 = <&uart0_default>;
pinctrl-names = "default";
};
/*
* LR1110 on SPI1
* Pin assignments are placeholders — must be verified from schematic.
* The LR1110 BUSY and EVENT (DIO9) pins are both required by the driver.
*/
&spi1 {
compatible = "nordic,nrf-spim";
status = "okay";
pinctrl-0 = <&spi1_default>;
pinctrl-names = "default";
cs-gpios = <&gpio0 24 GPIO_ACTIVE_LOW>;
lora: lora@0 {
compatible = "semtech,lr11xx";
reg = <0>;
spi-max-frequency = <4000000>;
reset-gpios = <&gpio0 25 GPIO_ACTIVE_LOW>;
busy-gpios = <&gpio0 26 GPIO_ACTIVE_HIGH>;
event-gpios = <&gpio0 27 GPIO_ACTIVE_HIGH>;
};
};
zephyr_udc0: &usbd {
compatible = "nordic,nrf-usbd";
status = "okay";
};
&flash0 {
partitions {
compatible = "fixed-partitions";
#address-cells = <1>;
#size-cells = <1>;
boot_partition: partition@0 {
label = "mcuboot";
reg = <0x00000000 0x0000C000>;
};
slot0_partition: partition@c000 {
label = "image-0";
reg = <0x0000C000 0x00067000>;
};
slot1_partition: partition@73000 {
label = "image-1";
reg = <0x00073000 0x00067000>;
};
storage_partition: partition@da000 {
label = "storage";
reg = <0x000da000 0x00006000>;
};
};
};

View File

@@ -0,0 +1,8 @@
CONFIG_SOC_NRF52840_QIAA=y
CONFIG_BOARD_SEEED_WIO_TRACKER=y
CONFIG_FLASH=y
CONFIG_FLASH_MAP=y
CONFIG_GPIO=y
CONFIG_SPI=y
CONFIG_USB_DEVICE_STACK=y
CONFIG_NRFX_POWER=y

View File

@@ -0,0 +1,10 @@
# Seeed Wio Tracker 1110 — nRF52840 + LR1110
# Uses USB CDC-ACM
CONFIG_LORAMODEM_KISS_IFACE_USB=y
CONFIG_USB_DEVICE_STACK=y
CONFIG_USB_CDC_ACM=y
CONFIG_UART_LINE_CTRL=y
# LR11xx driver (out-of-tree)
CONFIG_LORA_LR11XX=y

View File

@@ -0,0 +1,17 @@
/*
* Seeed Wio Tracker 1110 — application DTS overlay
* KISS interface: USB CDC-ACM
* LoRa: LR1110 on SPI1 (defined in custom board DTS)
*/
/ {
chosen {
loramodem,kiss-uart = &cdc_acm_uart0;
};
};
&zephyr_udc0 {
cdc_acm_uart0: cdc_acm_uart0 {
compatible = "zephyr,cdc-acm-uart";
};
};

View File

@@ -0,0 +1,6 @@
if BOARD_SENSECAP_T1000E
config BOARD
default "sensecap_t1000e"
endif # BOARD_SENSECAP_T1000E

View File

@@ -0,0 +1,2 @@
config BOARD_SENSECAP_T1000E
select SOC_NRF52840_QIAA

View File

@@ -0,0 +1,6 @@
# SenseCAP T1000-E — board.cmake
# Uses nrfjprog or pyocd for flashing via SWD.
board_runner_args(nrfjprog "--nrf-family=NRF52")
board_runner_args(pyocd "--target=nrf52840")
include(${ZEPHYR_BASE}/boards/common/nrfjprog.board.cmake)
include(${ZEPHYR_BASE}/boards/common/pyocd.board.cmake)

View File

@@ -0,0 +1,7 @@
board:
name: sensecap_t1000e
full_name: "SenseCAP T1000-E"
vendor: sensecap
url: https://www.seeedstudio.com/SenseCAP-Card-Tracker-T1000-E-p-5913.html
socs:
- name: nrf52840

View File

@@ -0,0 +1,47 @@
/*
* SPDX-License-Identifier: Apache-2.0
*
* SenseCAP T1000-E — pin control definitions
* NOTE: GPIO numbers are placeholders. Verify from schematic.
*/
#include <nordic/nrf52840.dtsi>
#include <dt-bindings/pinctrl/nrf-pinctrl.h>
&pinctrl {
uart0_default: uart0_default {
group1 {
psels = <NRF_PSEL(UART_TX, 0, 25)>;
};
group2 {
psels = <NRF_PSEL(UART_RX, 0, 24)>;
bias-pull-up;
};
};
uart0_sleep: uart0_sleep {
group1 {
psels = <NRF_PSEL(UART_TX, 0, 25)>,
<NRF_PSEL(UART_RX, 0, 24)>;
low-power-enable;
};
};
/* SPI1 for LR1110 — verify pins from T1000-E schematic */
spi1_default: spi1_default {
group1 {
psels = <NRF_PSEL(SPIM_SCK, 0, 17)>,
<NRF_PSEL(SPIM_MOSI, 0, 18)>,
<NRF_PSEL(SPIM_MISO, 0, 19)>;
};
};
spi1_sleep: spi1_sleep {
group1 {
psels = <NRF_PSEL(SPIM_SCK, 0, 17)>,
<NRF_PSEL(SPIM_MOSI, 0, 18)>,
<NRF_PSEL(SPIM_MISO, 0, 19)>;
low-power-enable;
};
};
};

View File

@@ -0,0 +1,116 @@
/*
* SPDX-License-Identifier: Apache-2.0
*
* SenseCAP T1000-E — Device Tree Source
* SoC: nRF52840
* Radio: Semtech LR1110 (LoRa + GNSS multi-protocol transceiver)
*
* NOTE: GPIO pin numbers are placeholders. Verify against the
* SenseCAP T1000-E schematic before using with real hardware.
* The T1000-E is a different product from the Seeed Wio Tracker 1110,
* despite sharing the same SoC and radio chip.
*/
/dts-v1/;
#include <nordic/nrf52840_qiaa.dtsi>
#include "sensecap_t1000e-pinctrl.dtsi"
/ {
model = "SenseCAP T1000-E";
compatible = "sensecap,t1000e";
chosen {
zephyr,sram = &sram0;
zephyr,flash = &flash0;
zephyr,code-partition = &slot0_partition;
};
aliases {
lora0 = &lora;
led0 = &led_green;
};
leds {
compatible = "gpio-leds";
led_green: led_0 {
/* TODO: verify LED GPIO from T1000-E schematic */
gpios = <&gpio0 14 GPIO_ACTIVE_LOW>;
label = "Green LED";
};
};
};
&uicr {
gpio-as-nreset;
};
&gpiote {
status = "okay";
};
&gpio0 {
status = "okay";
};
&gpio1 {
status = "okay";
};
&uart0 {
compatible = "nordic,nrf-uarte";
status = "okay";
current-speed = <115200>;
pinctrl-0 = <&uart0_default>;
pinctrl-names = "default";
};
/*
* LR1110 on SPI1
* Pin assignments are placeholders — must be verified from schematic.
*/
&spi1 {
compatible = "nordic,nrf-spim";
status = "okay";
pinctrl-0 = <&spi1_default>;
pinctrl-names = "default";
cs-gpios = <&gpio1 0 GPIO_ACTIVE_LOW>;
lora: lora@0 {
compatible = "semtech,lr11xx";
reg = <0>;
spi-max-frequency = <4000000>;
reset-gpios = <&gpio1 1 GPIO_ACTIVE_LOW>;
busy-gpios = <&gpio1 2 GPIO_ACTIVE_HIGH>;
event-gpios = <&gpio1 3 GPIO_ACTIVE_HIGH>;
};
};
zephyr_udc0: &usbd {
compatible = "nordic,nrf-usbd";
status = "okay";
};
&flash0 {
partitions {
compatible = "fixed-partitions";
#address-cells = <1>;
#size-cells = <1>;
boot_partition: partition@0 {
label = "mcuboot";
reg = <0x00000000 0x0000C000>;
};
slot0_partition: partition@c000 {
label = "image-0";
reg = <0x0000C000 0x00067000>;
};
slot1_partition: partition@73000 {
label = "image-1";
reg = <0x00073000 0x00067000>;
};
storage_partition: partition@da000 {
label = "storage";
reg = <0x000da000 0x00006000>;
};
};
};

View File

@@ -0,0 +1,8 @@
CONFIG_SOC_NRF52840_QIAA=y
CONFIG_BOARD_SENSECAP_T1000E=y
CONFIG_FLASH=y
CONFIG_FLASH_MAP=y
CONFIG_GPIO=y
CONFIG_SPI=y
CONFIG_USB_DEVICE_STACK=y
CONFIG_NRFX_POWER=y

View File

@@ -0,0 +1,10 @@
# SenseCAP T1000-E — nRF52840 + LR1110
# Uses USB CDC-ACM
CONFIG_LORAMODEM_KISS_IFACE_USB=y
CONFIG_USB_DEVICE_STACK=y
CONFIG_USB_CDC_ACM=y
CONFIG_UART_LINE_CTRL=y
# LR11xx driver (out-of-tree)
CONFIG_LORA_LR11XX=y

View File

@@ -0,0 +1,17 @@
/*
* SenseCAP T1000-E — application DTS overlay
* KISS interface: USB CDC-ACM
* LoRa: LR1110 on SPI1 (defined in custom board DTS)
*/
/ {
chosen {
loramodem,kiss-uart = &cdc_acm_uart0;
};
};
&zephyr_udc0 {
cdc_acm_uart0: cdc_acm_uart0 {
compatible = "zephyr,cdc-acm-uart";
};
};