-
Notifications
You must be signed in to change notification settings - Fork 7.8k
boards: fobe: add FoBE Quill nRF52840 Mesh board #94292
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Open
chihosin
wants to merge
1
commit into
zephyrproject-rtos:main
Choose a base branch
from
fobe-projects:board/fobe_quill_nrf52840_mesh
base: main
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
+656
−0
Open
Changes from all commits
Commits
File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,10 @@ | ||
.. _boards-fobe: | ||
|
||
FoBE Studio | ||
########### | ||
|
||
.. toctree:: | ||
:maxdepth: 1 | ||
:glob: | ||
|
||
**/* |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,10 @@ | ||
# QUILL NRF52840 MESH board configuration | ||
|
||
# Copyright (c) 2025 Chiho Sin | ||
# SPDX-License-Identifier: Apache-2.0 | ||
|
||
if BOARD_QUILL_NRF52840_MESH | ||
|
||
source "boards/common/usb/Kconfig.cdc_acm_serial.defconfig" | ||
|
||
endif # BOARD_QUILL_NRF52840_MESH |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
# QUILL NRF52840 MESH board configuration | ||
|
||
# Copyright (c) 2025 Chiho Sin | ||
# SPDX-License-Identifier: Apache-2.0 | ||
|
||
config BOARD_QUILL_NRF52840_MESH | ||
select SOC_NRF52840_QIAA |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,13 @@ | ||
# SPDX-License-Identifier: Apache-2.0 | ||
|
||
board_runner_args(nrfjprog "--nrf-family=NRF52") | ||
board_runner_args(jlink "--device=nRF52840_xxAA" "--speed=4000") | ||
board_runner_args(pyocd "--target=nrf52840" "--frequency=4000000") | ||
board_runner_args(uf2 "--board-id=nRF52840-FoBEF1101-rev1a") | ||
include(${ZEPHYR_BASE}/boards/common/nrfutil.board.cmake) | ||
include(${ZEPHYR_BASE}/boards/common/nrfjprog.board.cmake) | ||
include(${ZEPHYR_BASE}/boards/common/jlink.board.cmake) | ||
include(${ZEPHYR_BASE}/boards/common/pyocd.board.cmake) | ||
include(${ZEPHYR_BASE}/boards/common/openocd.board.cmake) | ||
include(${ZEPHYR_BASE}/boards/common/uf2.board.cmake) | ||
include(${ZEPHYR_BASE}/boards/common/blackmagicprobe.board.cmake) |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,6 @@ | ||
board: | ||
name: quill_nrf52840_mesh | ||
full_name: Quill nRF52840 Mesh | ||
vendor: fobe | ||
socs: | ||
- name: nrf52840 |
Binary file not shown.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,156 @@ | ||
.. zephyr:board:: quill_nrf52840_mesh | ||
|
||
Overview | ||
******** | ||
|
||
The FoBE Quill nRF52840 Mesh is a development kit featuring the nRF52840 SoC and an integrated | ||
SX1262 LoRa® transceiver. | ||
|
||
For more details see the `FoBE Quill nRF52840 Mesh`_ documentation page. | ||
|
||
Hardware | ||
******** | ||
|
||
The FoBE Quill nRF52840 Mesh is a compact and versatile development platform for IoT solutions. | ||
It combines Nordic's high-end multiprotocol SoC, the nRF52840, with Semtech's ultra-low-power | ||
sub-GHz radio transceiver, the SX1262 (packaged using SiP technology). | ||
Designed for IoT applications, it offers a comprehensive wireless connectivity solution, | ||
supporting protocols such as Bluetooth 5, Thread, Zigbee, IEEE 802.15.4, and LoRa®. | ||
|
||
This development board is feature-rich, including a battery charger, | ||
dedicated power path management, an ultra-low quiescent current DC-DC converter, | ||
a 1.14-inch color IPS display, user-programmable LEDs and buttons, an MFP expansion connector, | ||
a reversible USB-C connector, and header sockets for easy expansion. | ||
|
||
Supported Features | ||
================== | ||
|
||
.. zephyr:board-supported-hw:: | ||
|
||
Connections and IOs | ||
=================== | ||
|
||
The `FoBE Quill nRF52840 Mesh`_ Documentation has detailed information about board | ||
connections. | ||
|
||
Programming and Debugging | ||
************************* | ||
|
||
.. zephyr:board-supported-runners:: | ||
|
||
The Quill nRF52840 Mesh ships with the `FoBE nRF52 Bootloader`_ which supports flashing | ||
using `UF2`_. Doing so allows easy flashing of new images, but does not support debugging the | ||
device. For debugging please use `External Debugger`_. | ||
|
||
UF2 Flashing | ||
============ | ||
|
||
To enter the bootloader, connect the USB port of the Quill nRF52840 Mesh to your host, | ||
and double tap the reset button. A mass storage device named ``FOBEBOOT`` should appear | ||
on the host. Using the command line, or your file manager copy the :file:`zephyr/zephyr.uf2` | ||
file from your build to the base of the ``FOBEBOOT`` mass storage device. The board will | ||
automatically reset and launch the newly flashed application. | ||
|
||
External Debugger | ||
================= | ||
|
||
In order to support debugging the device, instead of using the bootloader, you can use an | ||
:ref:`External Debug Probe <debug-probes>`. To flash and debug Zephyr applications you need to | ||
connect an SWD debugger to the SWD pins on the board. | ||
|
||
For Segger J-Link debug probes, follow the instructions in the :ref:`jlink-external-debug-probe` | ||
page to install and configure all the necessary software. | ||
|
||
Building & Flashing | ||
******************* | ||
|
||
Simple build and flash | ||
====================== | ||
|
||
Build and flash applications as usual (see :ref:`build_an_application` and :ref:`application_run` | ||
for more details). | ||
|
||
.. zephyr-app-commands:: | ||
:zephyr-app: samples/hello_world | ||
:board: quill_nrf52840_mesh | ||
:goals: build | ||
|
||
The usual ``flash`` target will work with the ``quill_nrf52840_mesh`` board configuration. | ||
Here is an example for the :zephyr:code-sample:`hello_world` application. | ||
|
||
.. zephyr-app-commands:: | ||
:zephyr-app: samples/hello_world | ||
:board: quill_nrf52840_mesh | ||
:goals: flash | ||
|
||
Flashing with External Debugger | ||
-------------------------------- | ||
|
||
Setup and connect a supported debug probe (JLink, instructions at | ||
:ref:`jlink-external-debug-probe` or BlackMagic Probe). Then build and flash applications as usual. | ||
|
||
Here is an example for the :zephyr:code-sample:`hello_world` application. | ||
|
||
First, run your favorite terminal program to listen for output. | ||
|
||
.. code-block:: console | ||
|
||
$ minicom -D <tty_device> -b 115200 | ||
|
||
Replace :code:`<tty_device>` with the port where the board can be found. For example, | ||
under Linux, :code:`/dev/ttyACM0`. | ||
|
||
Then build and flash the application. Just add ``CONFIG_BOOT_DELAY=5000`` to the configuration, | ||
so that USB CDC ACM is initialized before any text is printed: | ||
|
||
.. zephyr-app-commands:: | ||
:zephyr-app: samples/hello_world | ||
:board: quill_nrf52840_mesh | ||
:goals: build flash | ||
:gen-args: -DCONFIG_BOOT_DELAY=5000 | ||
|
||
Debugging | ||
********* | ||
|
||
Refer to the :ref:`jlink-external-debug-probe` page to learn about debugging | ||
boards with a Segger IC. | ||
|
||
Debugging using a BlackMagic Probe is also supported. | ||
|
||
Here is an example for building and debugging the :zephyr:code-sample:`hello_world` application. | ||
|
||
.. zephyr-app-commands:: | ||
:zephyr-app: samples/hello_world | ||
:board: quill_nrf52840_mesh | ||
:goals: debug | ||
|
||
Testing the LEDs | ||
***************** | ||
|
||
There is a sample that allows to test that LEDs on the board are working properly with Zephyr: | ||
|
||
.. zephyr-app-commands:: | ||
:zephyr-app: samples/basic/blinky | ||
:board: quill_nrf52840_mesh | ||
:goals: build flash | ||
|
||
You can build and flash the examples to make sure Zephyr is running correctly on your board. | ||
|
||
Testing shell over USB | ||
*********************** | ||
|
||
There is a sample that allows to test shell interface over USB CDC ACM interface with Zephyr: | ||
|
||
.. zephyr-app-commands:: | ||
:zephyr-app: samples/subsys/shell/shell_module | ||
:board: quill_nrf52840_mesh | ||
:goals: build flash | ||
|
||
References | ||
********** | ||
|
||
.. target-notes:: | ||
|
||
.. _`FoBE Quill nRF52840 Mesh`: https://docs.fobestudio.com/product/f1101 | ||
.. _`FoBE nRF52 Bootloader`: https://github.com/fobe-projects/fobe-nrf52-bootloader | ||
.. _`UF2`: https://github.com/microsoft/uf2 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,39 @@ | ||
/* | ||
* Copyright (c) 2025 Chiho Sin | ||
* | ||
* SPDX-License-Identifier: Apache-2.0 | ||
*/ | ||
|
||
/ { | ||
quill_header: connector { | ||
compatible = "fobe,quill-header"; | ||
#gpio-cells = <2>; | ||
gpio-map-mask = <0xffffffff 0xffffffc0>; | ||
gpio-map-pass-thru = <0 0x3f>; | ||
gpio-map = <0 0 &gpio1 12 0>, /* D0 */ | ||
<1 0 &gpio1 11 0>, /* D1 */ | ||
<2 0 &gpio1 14 0>, /* D2 */ | ||
<3 0 &gpio1 0 0>, /* D3 */ | ||
<4 0 &gpio0 24 0>, /* D4 */ | ||
<5 0 &gpio0 22 0>, /* D5 */ | ||
<6 0 &gpio0 20 0>, /* D6 */ | ||
<7 0 &gpio0 17 0>, /* D7 */ | ||
<8 0 &gpio0 15 0>, /* D8 */ | ||
<9 0 &gpio0 13 0>, /* D9 */ | ||
<10 0 &gpio0 16 0>, /* D10 */ | ||
<11 0 &gpio0 14 0>, /* D11 */ | ||
<12 0 &gpio0 11 0>, /* D12 */ | ||
<13 0 &gpio1 8 0>, /* D13 */ | ||
<14 0 &gpio0 3 0>, /* A0 */ | ||
<15 0 &gpio0 28 0>, /* A1 */ | ||
<16 0 &gpio0 2 0>, /* A2 */ | ||
<17 0 &gpio0 29 0>, /* A3 */ | ||
<18 0 &gpio0 31 0>, /* A4 */ | ||
<19 0 &gpio0 30 0>; /* A5 */ | ||
}; | ||
}; | ||
|
||
quill_spi: &spi2 {}; | ||
quill_i2c: &i2c0 {}; | ||
quill_serial: &uart0 {}; | ||
quill_adc: &adc {}; |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
# Copyright (c) 2022 Nordic Semiconductor | ||
# SPDX-License-Identifier: Apache-2.0 | ||
|
||
# Suppress "unique_unit_address_if_enabled" to handle the following overlaps: | ||
# - power@40000000 & clock@40000000 & bprot@40000000 | ||
# - acl@4001e000 & flash-controller@4001e000 | ||
list(APPEND EXTRA_DTC_FLAGS "-Wno-unique_unit_address_if_enabled") |
87 changes: 87 additions & 0 deletions
87
boards/fobe/quill_nrf52840_mesh/quill_nrf52840_mesh-pinctrl.dtsi
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,87 @@ | ||
/* | ||
* Copyright (c) 2025 Chiho Sin | ||
* | ||
* SPDX-License-Identifier: Apache-2.0 | ||
*/ | ||
|
||
&pinctrl { | ||
uart0_default: uart0_default { | ||
group1 { | ||
psels = <NRF_PSEL(UART_TX, 1, 12)>; | ||
}; | ||
|
||
group2 { | ||
psels = <NRF_PSEL(UART_RX, 1, 11)>; | ||
bias-pull-up; | ||
}; | ||
}; | ||
|
||
uart0_sleep: uart0_sleep { | ||
group1 { | ||
psels = <NRF_PSEL(UART_TX, 1, 12)>, | ||
<NRF_PSEL(UART_RX, 1, 11)>; | ||
low-power-enable; | ||
}; | ||
}; | ||
|
||
i2c0_default: i2c0_default { | ||
group1 { | ||
psels = <NRF_PSEL(TWIM_SDA, 0, 22)>, | ||
<NRF_PSEL(TWIM_SCL, 0, 24)>; | ||
}; | ||
}; | ||
|
||
i2c0_sleep: i2c0_sleep { | ||
group1 { | ||
psels = <NRF_PSEL(TWIM_SDA, 0, 22)>, | ||
<NRF_PSEL(TWIM_SCL, 0, 24)>; | ||
low-power-enable; | ||
}; | ||
}; | ||
|
||
pwm0_default: pwm0_default { | ||
group1 { | ||
psels = <NRF_PSEL(PWM_OUT0, 1, 15)>; | ||
nordic,invert; | ||
}; | ||
}; | ||
|
||
pwm0_sleep: pwm0_sleep { | ||
group1 { | ||
psels = <NRF_PSEL(PWM_OUT0, 1, 15)>; | ||
low-power-enable; | ||
}; | ||
}; | ||
|
||
spi2_default: spi2_default { | ||
group1 { | ||
psels = <NRF_PSEL(SPIM_SCK, 0, 23)>, | ||
<NRF_PSEL(SPIM_MOSI, 0, 21)>, | ||
<NRF_PSEL(SPIM_MISO, 0, 19)>; | ||
}; | ||
}; | ||
|
||
spi2_sleep: spi2_sleep { | ||
group1 { | ||
psels = <NRF_PSEL(SPIM_SCK, 0, 23)>, | ||
<NRF_PSEL(SPIM_MOSI, 0, 21)>, | ||
<NRF_PSEL(SPIM_MISO, 0, 19)>; | ||
low-power-enable; | ||
}; | ||
}; | ||
|
||
spi3_default: spi3_default { | ||
group1 { | ||
psels = <NRF_PSEL(SPIM_SCK, 1, 9)>, | ||
<NRF_PSEL(SPIM_MOSI, 0, 8)>; | ||
}; | ||
}; | ||
|
||
spi3_sleep: spi3_sleep { | ||
group1 { | ||
psels = <NRF_PSEL(SPIM_SCK, 1, 9)>, | ||
<NRF_PSEL(SPIM_MOSI, 0, 8)>; | ||
low-power-enable; | ||
}; | ||
}; | ||
}; |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,13 @@ | ||
/* | ||
* Copyright (c) 2025 Chiho Sin | ||
* | ||
* SPDX-License-Identifier: Apache-2.0 | ||
*/ | ||
|
||
/dts-v1/; | ||
#include "quill_nrf52840_mesh_common.dtsi" | ||
|
||
/ { | ||
model = "FoBE Quill nRF52840 Mesh"; | ||
compatible = "fobe,quill-nrf52840-mesh"; | ||
}; |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,23 @@ | ||
identifier: quill_nrf52840_mesh | ||
name: Quill nRF52840 Mesh | ||
type: mcu | ||
arch: arm | ||
ram: 256 | ||
flash: 1024 | ||
toolchain: | ||
- zephyr | ||
- gnuarmemb | ||
supported: | ||
- adc | ||
- ble | ||
- counter | ||
- gpio | ||
- lora | ||
- i2c | ||
- i2s | ||
- pwm | ||
- spi | ||
- usb_device | ||
- watchdog | ||
- netif:openthread | ||
vendor: fobe |
Oops, something went wrong.
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.