Browse Source
Initial support of Sparkfun Micromod ecosystem with micromod nrf52840 board, asset tracker shield and micromod header definition. Signed-off-by: Jeronimo Agullo <jeronimoagullo97@gmail.com>pull/74262/head
19 changed files with 872 additions and 0 deletions
@ -0,0 +1,21 @@
@@ -0,0 +1,21 @@
|
||||
# Copyright (c) 2024 Jerónimo Agulló <jeronimoagullo97@gmail.com> |
||||
# SPDX-License-Identifier: Apache-2.0 |
||||
|
||||
if SHIELD_SPARKFUN_CARRIER_ASSET_TRACKER |
||||
|
||||
config SERIAL |
||||
default y |
||||
|
||||
config UART_INTERRUPT_DRIVEN |
||||
default y |
||||
|
||||
config UART_ASYNC_API |
||||
default y |
||||
|
||||
config I2C |
||||
default y |
||||
|
||||
config SPI |
||||
default y |
||||
|
||||
endif # SHIELD_SPARKFUN_CARRIER_ASSET_TRACKER |
@ -0,0 +1,5 @@
@@ -0,0 +1,5 @@
|
||||
# Copyright (c) 2024 Jerónimo Agulló <jeronimoagullo97@gmail.com> |
||||
# SPDX-License-Identifier: Apache-2.0 |
||||
|
||||
config SHIELD_SPARKFUN_CARRIER_ASSET_TRACKER |
||||
def_bool $(shields_list_contains,sparkfun_carrier_asset_tracker) |
After Width: | Height: | Size: 61 KiB |
@ -0,0 +1,117 @@
@@ -0,0 +1,117 @@
|
||||
.. _sparkfun_carrier_asset_tracker: |
||||
|
||||
Sparkfun SparkFun MicroMod Asset Tracker Shield |
||||
############################################### |
||||
|
||||
Overview |
||||
******** |
||||
|
||||
The SparkFun MicroMod Asset Tracker Carrier Shield is part of the Sparkfun |
||||
Micromod standard, a modular interface ecosystem that uses the M.2 standard |
||||
to mix and match your choice of processor with specific Functions Boards. |
||||
|
||||
The Asset Tracker Carrier Shield is built around the u-blox SARA-R510M8S |
||||
module, which offers Secure Cloud LTE-M and NB-IoT data communication for |
||||
multi-regional use and GNSS capabilities via an integrated u-blox M8 GNSS |
||||
receiver for accurate positioning information. |
||||
|
||||
Besides, this shield has an integrated ICM-20948 Inertial Measurement Unit |
||||
(IMU) for Nine Degree-Of-Freedom, a built-in micro-SD card socket for data |
||||
logging as well as a nano SIM card port. |
||||
|
||||
.. figure:: img/sparkfun_carrier_asset_tracker.webp |
||||
:align: center |
||||
:alt: Sparkfun SparkFun MicroMod Asset Tracker Shield |
||||
|
||||
Sparkfun SparkFun MicroMod Asset Tracker Shield (Credit: Sparkfun) |
||||
|
||||
More information about the shield can be found at the `SparkFun MicroMod |
||||
Asset Tracker guide website`_. |
||||
|
||||
Pins Assignment of Sparkfun SparkFun MicroMod Asset Tracker Shield |
||||
================================================================== |
||||
|
||||
The SparkFun MicroMod Asset Tracker Carrier Shield uses a 76 pins M.2 |
||||
connector. The following table depicts the interfaces and pins supported: |
||||
by Zephyr: |
||||
+-----------------------+---------------------------------+ |
||||
| Shield Connector Pin | Function | |
||||
+=======================+=================================+ |
||||
| micromod_1_uart alias | UART 1 (with CTS and RTS pins) | |
||||
+-----------------------+---------------------------------+ |
||||
| micromod_2_uart alias | UART 2 | |
||||
+-----------------------+---------------------------------+ |
||||
| micromod_0_i2c alias | i2c 0 | |
||||
+-----------------------+---------------------------------+ |
||||
| micromod_1_i2c alias | i2c 1 | |
||||
+-----------------------+---------------------------------+ |
||||
| micromod_0_spi alias | SPI 0 | |
||||
+-----------------------+---------------------------------+ |
||||
| A0 | Analog pin | |
||||
+-----------------------+---------------------------------+ |
||||
| A1 | Analog pin | |
||||
+-----------------------+---------------------------------+ |
||||
| D0 | Digital pin | |
||||
+-----------------------+---------------------------------+ |
||||
| D1/CAM_TRIG | Digital pin | |
||||
+-----------------------+---------------------------------+ |
||||
| I2C_INT# | i2c interrupt pin | |
||||
+-----------------------+---------------------------------+ |
||||
| G0/BUS0 | General purpose pin | |
||||
+-----------------------+---------------------------------+ |
||||
| G1/BUS1 | General purpose pin | |
||||
+-----------------------+---------------------------------+ |
||||
| G2/BUS2 | General purpose pin | |
||||
+-----------------------+---------------------------------+ |
||||
| G3/BUS3 | General purpose pin | |
||||
+-----------------------+---------------------------------+ |
||||
| G4/BUS4 | General purpose pin | |
||||
+-----------------------+---------------------------------+ |
||||
| G5/BUS5 | General purpose pin | |
||||
+-----------------------+---------------------------------+ |
||||
| G6/BUS6 | General purpose pin | |
||||
+-----------------------+---------------------------------+ |
||||
| G7/BUS7 | General purpose pin | |
||||
+-----------------------+---------------------------------+ |
||||
| G8 | General purpose pin | |
||||
+-----------------------+---------------------------------+ |
||||
| G9/ADC_D-/CAM_HSYNC | General purpose pin | |
||||
+-----------------------+---------------------------------+ |
||||
| G10/ADC_D+/CAM_VSYNC | General purpose pin | |
||||
+-----------------------+---------------------------------+ |
||||
| G11/SWO | General purpose pin | |
||||
+-----------------------+---------------------------------+ |
||||
| SPI_CS | General purpose pin | |
||||
+-----------------------+---------------------------------+ |
||||
|
||||
A detailed definition of the Micromod standard can be found on the |
||||
`Micromod specification website`_ |
||||
|
||||
Requirements |
||||
************ |
||||
|
||||
This shield can only be used with a board which provides a configuration for |
||||
Micromod connectors and defines node aliases for UART, I2C and SPI interfaces (see |
||||
:ref:`shields` for more details). |
||||
|
||||
Programming |
||||
*********** |
||||
|
||||
Set ``-DSHIELD=sparkfun_carrier_asset_tracker`` when you invoke ``west build``. For |
||||
example: |
||||
|
||||
.. zephyr-app-commands:: |
||||
:zephyr-app: samples/net/cellular_modem/ |
||||
:board: micromod/nrf52840 |
||||
:shield: sparkfun_carrier_asset_tracker |
||||
:goals: build |
||||
|
||||
References |
||||
********** |
||||
|
||||
.. target-notes:: |
||||
|
||||
.. _SparkFun MicroMod Asset Tracker guide website: |
||||
https://learn.sparkfun.com/tutorials/micromod-asset-tracker-carrier-board-hookup-guide |
||||
.. _Micromod specification website: |
||||
https://www.sparkfun.com/micromod |
@ -0,0 +1,50 @@
@@ -0,0 +1,50 @@
|
||||
/* |
||||
* Copyright (c) 2024 Jerónimo Agulló <jeronimoagullo97@gmail.com> |
||||
* |
||||
* SPDX-License-Identifier: Apache-2.0 |
||||
*/ |
||||
|
||||
/ { |
||||
aliases { |
||||
modem-uart = µmod_1_uart; |
||||
modem = &modem; |
||||
}; |
||||
}; |
||||
|
||||
µmod_1_uart { |
||||
current-speed = <115200>; |
||||
hw-flow-control; |
||||
status = "okay"; |
||||
|
||||
modem: sara_r5 { |
||||
compatible = "u-blox,sara-r5"; |
||||
mdm-power-gpios = <µmod_header 7 0>; /* G2 */ |
||||
mdm-reset-gpios = <µmod_header 12 0>; /* D6 */ |
||||
status = "okay"; |
||||
}; |
||||
}; |
||||
|
||||
µmod_0_spi { |
||||
status = "okay"; |
||||
/* G0 (SD_CS) */ |
||||
cs-gpios = <µmod_header 5 GPIO_ACTIVE_LOW>; |
||||
|
||||
sdhc0: sdhc@0 { |
||||
compatible = "zephyr,sdhc-spi-slot"; |
||||
reg = <0>; |
||||
status = "okay"; |
||||
mmc { |
||||
compatible = "zephyr,sdmmc-disk"; |
||||
status = "okay"; |
||||
}; |
||||
spi-max-frequency = <DT_FREQ_M(8)>; |
||||
}; |
||||
}; |
||||
|
||||
µmod_0_i2c { |
||||
max17048: max17048@36 { |
||||
compatible = "maxim,max17048"; |
||||
reg = <0x36>; |
||||
status = "okay"; |
||||
}; |
||||
}; |
@ -0,0 +1,19 @@
@@ -0,0 +1,19 @@
|
||||
# Sparkfun micromod board configuration |
||||
|
||||
# Copyright (c) 2024 Jerónimo Agulló <jeronimoagullo97@gmail.com> |
||||
# SPDX-License-Identifier: Apache-2.0 |
||||
|
||||
if BOARD_MICROMOD_NRF52840 |
||||
|
||||
config BOARD_ENABLE_DCDC |
||||
bool "DCDC mode" |
||||
select SOC_DCDC_NRF52X |
||||
default y |
||||
|
||||
config BOARD_ENABLE_DCDC_HV |
||||
bool "High Voltage DCDC converter" |
||||
select SOC_DCDC_NRF52X_HV |
||||
default y |
||||
depends on SOC_NRF52840_QIAA |
||||
|
||||
endif # BOARD_MICROMOD_NRF52840 |
@ -0,0 +1,11 @@
@@ -0,0 +1,11 @@
|
||||
# Sparkfun micromod board configuration |
||||
|
||||
# Copyright (c) 2024 Jerónimo Agulló <jeronimoagullo97@gmail.com> |
||||
# SPDX-License-Identifier: Apache-2.0 |
||||
|
||||
if BOARD_MICROMOD_NRF52840 |
||||
|
||||
config BT_CTLR |
||||
default BT |
||||
|
||||
endif # BOARD_MICROMOD_NRF52840 |
@ -0,0 +1,5 @@
@@ -0,0 +1,5 @@
|
||||
# Copyright (c) 2024 Jerónimo Agulló <jeronimoagullo97@gmail.com> |
||||
# SPDX-License-Identifier: Apache-2.0 |
||||
|
||||
config BOARD_MICROMOD |
||||
select SOC_NRF52840_QIAA if BOARD_MICROMOD_NRF52840 |
@ -0,0 +1,9 @@
@@ -0,0 +1,9 @@
|
||||
# SPDX-License-Identifier: Apache-2.0 |
||||
|
||||
board_runner_args(jlink "--device=nRF52840_xxAA" "--speed=4000") |
||||
board_runner_args(pyocd "--target=nrf52840" "--frequency=4000000") |
||||
|
||||
include(${ZEPHYR_BASE}/boards/common/nrfjprog.board.cmake) |
||||
include(${ZEPHYR_BASE}/boards/common/openocd-nrf5.board.cmake) |
||||
include(${ZEPHYR_BASE}/boards/common/pyocd.board.cmake) |
||||
include(${ZEPHYR_BASE}/boards/common/jlink.board.cmake) |
@ -0,0 +1,5 @@
@@ -0,0 +1,5 @@
|
||||
board: |
||||
name: micromod |
||||
vendor: sparkfun |
||||
socs: |
||||
- name: nrf52840 |
After Width: | Height: | Size: 48 KiB |
@ -0,0 +1,204 @@
@@ -0,0 +1,204 @@
|
||||
.. _boardname_linkname: |
||||
|
||||
SparkFun MicroMod board Processor |
||||
################################# |
||||
|
||||
Overview |
||||
******** |
||||
|
||||
MicroMod is a solderless, modular interface ecosystem that uses the M.2 standard |
||||
to mix and match your choice of processor with specific Function Boards or |
||||
stand-alone Carrier Boards. A MicroMod processor board is approximately 22x22 mm, |
||||
and can insert into any MicroMod carrier board. More information can be found in |
||||
the `Micromod specification website`_. |
||||
|
||||
All Micromod board targets support the following hardware features: |
||||
|
||||
- USB host mode compliant to 2.0 specification |
||||
- GPIO |
||||
- 2 UART |
||||
- 2 I2C |
||||
- 2 SPI |
||||
- 2 ADC |
||||
- 2 PWM |
||||
- Watchdog Timer (WDT) |
||||
|
||||
.. figure:: img/sparkfun_micromod.webp |
||||
:align: center |
||||
:alt: Sparkfun Micromod board |
||||
|
||||
Sparkfun Micromod board (Credit: https://www.sparkfun.com) |
||||
|
||||
Zephyr currently supports the following SoCs: |
||||
|
||||
- ``micromod/nrf52840`` |
||||
|
||||
SparkFun MicroMod nRF52840 board Processor |
||||
########################################## |
||||
|
||||
Overview |
||||
******** |
||||
|
||||
The ``micromod/nrf52840`` board target features the nRF52840 SoC |
||||
from Nordic Semiconductor, the SparkFun MicroMod nRF52840 Processor offers |
||||
a powerful combination of ARM Cortex-M4 CPU and 2.4 GHz Bluetooth transceiver |
||||
in the MicroMod form-factor. More information can be found in |
||||
the `Micromod nRF52840 guide`_. |
||||
|
||||
Hardware |
||||
******** |
||||
|
||||
The ``micromod/nrf52840`` board target supports the following |
||||
hardware features: |
||||
|
||||
- ARM Cortex-M4 CPU with floating point unit (FPU) |
||||
|
||||
- 1MB internal Flash |
||||
- 256kB internal RAM |
||||
|
||||
- Integrated 2.4GHz radio with support for Bluetooth Low Energy (BLE) and ieee802154 |
||||
- USB 2.0 full speed (12 Mbps) controller |
||||
- QSPI with 128Mb flash memory |
||||
- ARM TrustZone Cryptocell 310 security subsystem |
||||
- USB host mode compliant to 2.0 specification |
||||
- GPIO |
||||
- 2 UART |
||||
- 2 I2C |
||||
- 2 SPI |
||||
- 2 ADC |
||||
- 2 PWM |
||||
- Watchdog Timer (WDT) |
||||
|
||||
Supported Features |
||||
================== |
||||
|
||||
The Zephyr ``micromod/nrf52840`` board target supports the following hardware |
||||
features: |
||||
|
||||
+-----------+------------+-------------------------------------+ |
||||
| Interface | Controller | Driver/Component | |
||||
+===========+============+=====================================+ |
||||
| NVIC | on-chip | nested vector interrupt controller | |
||||
+-----------+------------+-------------------------------------+ |
||||
| SYSTICK | on-chip | system clock | |
||||
+-----------+------------+-------------------------------------+ |
||||
| RADIO | on-chip | Bluetooth, | |
||||
| | | ieee802154 | |
||||
+-----------+------------+-------------------------------------+ |
||||
| UART | on-chip | serial port | |
||||
+-----------+------------+-------------------------------------+ |
||||
| GPIO | on-chip | gpio | |
||||
+-----------+------------+-------------------------------------+ |
||||
| PINMUX | on-chip | pinmux | |
||||
+-----------+------------+-------------------------------------+ |
||||
| FLASH | on-chip | flash | |
||||
+-----------+------------+-------------------------------------+ |
||||
| SPI | on-chip | spi | |
||||
+-----------+------------+-------------------------------------+ |
||||
| I2C | on-chip | i2c | |
||||
+-----------+------------+-------------------------------------+ |
||||
| USB | on-chip | usb | |
||||
+-----------+------------+-------------------------------------+ |
||||
| QSPI | on-chip | nordic,nrf-qspi | |
||||
+-----------+------------+-------------------------------------+ |
||||
|
||||
|
||||
Connections and IOs |
||||
=================== |
||||
|
||||
LED |
||||
--- |
||||
|
||||
* Led0 (blue) = P0.13 |
||||
|
||||
Micromod header |
||||
--------------- |
||||
|
||||
* micromod_1_uart = uart0 |
||||
* micromod_2_uart = uart1 |
||||
* micromod_0_i2c = i2c0 |
||||
* micromod_1_i2c = i2c1 |
||||
* micromod_0_spi = spi2 |
||||
* micromod_header compatible with ``sparkfun,micromod-gpio`` |
||||
|
||||
Programming and Debugging |
||||
************************* |
||||
|
||||
Applications for the ``micromod/nrf52840`` board target can be |
||||
built, flashed, and debugged in the usual way. See |
||||
:ref:`build_an_application` and :ref:`application_run` for more details on |
||||
building and running. |
||||
|
||||
Flashing |
||||
======== |
||||
|
||||
Follow the instructions in the :ref:`nordic_segger` page to install |
||||
and configure all the necessary software. Further information can be |
||||
found in :ref:`nordic_segger_flashing`. Then build and flash |
||||
applications as usual (see :ref:`build_an_application` and |
||||
:ref:`application_run` for more details). |
||||
|
||||
The flashing tool will depend on the carrier used along with the board. |
||||
In the case of `Sparkfun asset tracking carrier`, it is possible to use |
||||
the SWD interface along with a J-Link. |
||||
|
||||
Here is an example for the :ref:`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 nRF52840 DK |
||||
can be found. For example, under Linux, :code:`/dev/ttyACM0`. |
||||
|
||||
Then build and flash the application in the usual way. |
||||
|
||||
.. zephyr-app-commands:: |
||||
:zephyr-app: samples/hello_world |
||||
:board: micromod/nrf52840 |
||||
:goals: build flash |
||||
|
||||
Debugging |
||||
========= |
||||
|
||||
Refer to the :ref:`nordic_segger` page to learn about debugging Nordic boards with a |
||||
Segger IC. |
||||
|
||||
In case of using a Nordic Segger Jlink, it is possible to configure the app to use Segger Real |
||||
Time Transfer (RTT) for debugging. In this case, build your app with the |
||||
:ref:`RTT snippet <snippet-rtt-console>`. |
||||
|
||||
Testing the on-board LED |
||||
************************ |
||||
|
||||
There is a sample that allow you to test the LED on the board is working properly |
||||
with Zephyr: |
||||
|
||||
* :zephyr:code-sample:`blinky` |
||||
|
||||
You can build and flash the example to make sure Zephyr is running correctly on |
||||
your board. The button and LED definitions can be found in |
||||
:zephyr_file:`boards/sparkfun/micromod/micromod_nrf52840.dts`. |
||||
|
||||
Testing the 128Mb qspi memory flash |
||||
*********************************** |
||||
|
||||
The ``micromod/nrf52840`` board target has a built-in NOR flash memory connected |
||||
to the qspi interface. It can be tested with the samples/drivers/jesd216 app. |
||||
|
||||
.. zephyr-app-commands:: |
||||
:zephyr-app: samples/drivers/jesd216 |
||||
:board: micromod/nrf52840 |
||||
:goals: build flash |
||||
|
||||
References |
||||
********** |
||||
|
||||
.. target-notes:: |
||||
|
||||
.. _Micromod specification website: https://www.sparkfun.com/micromod |
||||
.. _Micromod nRF52840 guide: https://learn.sparkfun.com/tutorials/micromod-nrf52840-processor-hookup-guide |
||||
.. _J-Link Software and documentation pack: https://www.segger.com/jlink-software.html |
||||
.. _nRF52840 Product Specification: http://infocenter.nordicsemi.com/pdf/nRF52840_PS_v1.0.pdf |
@ -0,0 +1,116 @@
@@ -0,0 +1,116 @@
|
||||
/* |
||||
* Copyright (c) 2024 Jerónimo Agulló <jeronimoagullo97@gmail.com> |
||||
* |
||||
* SPDX-License-Identifier: Apache-2.0 |
||||
*/ |
||||
|
||||
&pinctrl { |
||||
uart0_default: uart0_default { |
||||
group1 { |
||||
psels = <NRF_PSEL(UART_TX, 1, 3)>, |
||||
<NRF_PSEL(UART_RX, 1, 10)>, |
||||
<NRF_PSEL(UART_RTS, 1, 2)>, |
||||
<NRF_PSEL(UART_CTS, 1, 9)>; |
||||
}; |
||||
}; |
||||
|
||||
uart0_sleep: uart0_sleep { |
||||
group1 { |
||||
psels = <NRF_PSEL(UART_TX, 1, 3)>, |
||||
<NRF_PSEL(UART_RX, 1, 10)>, |
||||
<NRF_PSEL(UART_RTS, 1, 2)>, |
||||
<NRF_PSEL(UART_CTS, 1, 9)>; |
||||
low-power-enable; |
||||
}; |
||||
}; |
||||
|
||||
uart1_default: uart1_default { |
||||
group1 { |
||||
psels = <NRF_PSEL(UART_TX, 1, 7)>, |
||||
<NRF_PSEL(UART_RX, 1, 5)>; |
||||
}; |
||||
}; |
||||
|
||||
uart1_sleep: uart1_sleep { |
||||
group1 { |
||||
psels = <NRF_PSEL(UART_TX, 1, 7)>, |
||||
<NRF_PSEL(UART_RX, 1, 5)>; |
||||
low-power-enable; |
||||
}; |
||||
}; |
||||
|
||||
i2c0_default: i2c0_default { |
||||
group1 { |
||||
psels = <NRF_PSEL(TWIM_SDA, 0, 8)>, |
||||
<NRF_PSEL(TWIM_SCL, 0, 11)>; |
||||
}; |
||||
}; |
||||
|
||||
i2c0_sleep: i2c0_sleep { |
||||
group1 { |
||||
psels = <NRF_PSEL(TWIM_SDA, 0, 8)>, |
||||
<NRF_PSEL(TWIM_SCL, 0, 11)>; |
||||
low-power-enable; |
||||
}; |
||||
}; |
||||
|
||||
i2c1_default: i2c1_default { |
||||
group1 { |
||||
psels = <NRF_PSEL(TWIM_SDA, 1, 1)>, |
||||
<NRF_PSEL(TWIM_SCL, 0, 24)>; |
||||
}; |
||||
}; |
||||
|
||||
i2c1_sleep: i2c1_sleep { |
||||
group1 { |
||||
psels = <NRF_PSEL(TWIM_SDA, 1, 1)>, |
||||
<NRF_PSEL(TWIM_SCL, 0, 24)>; |
||||
low-power-enable; |
||||
}; |
||||
}; |
||||
|
||||
spi0_default: spi0_default { |
||||
group1 { |
||||
psels = <NRF_PSEL(SPIM_SCK, 0, 28)>, |
||||
<NRF_PSEL(SPIM_MOSI, 0, 31)>, |
||||
<NRF_PSEL(SPIM_MISO, 0, 2)>; |
||||
}; |
||||
}; |
||||
|
||||
spi0_sleep: spi0_sleep { |
||||
group1 { |
||||
psels = <NRF_PSEL(SPIM_SCK, 0, 28)>, |
||||
<NRF_PSEL(SPIM_MOSI, 0, 31)>, |
||||
<NRF_PSEL(SPIM_MISO, 0, 2)>; |
||||
low-power-enable; |
||||
}; |
||||
}; |
||||
|
||||
qspi_default: qspi_default { |
||||
group1 { |
||||
psels = <NRF_PSEL(QSPI_SCK, 0, 19)>, |
||||
<NRF_PSEL(QSPI_IO0, 0, 14)>, |
||||
<NRF_PSEL(QSPI_IO1, 0, 21)>, |
||||
<NRF_PSEL(QSPI_IO2, 0, 23)>, |
||||
<NRF_PSEL(QSPI_IO3, 1, 0)>, |
||||
<NRF_PSEL(QSPI_CSN, 0, 12)>; |
||||
nordic,drive-mode = <NRF_DRIVE_H0H1>; |
||||
}; |
||||
}; |
||||
|
||||
qspi_sleep: qspi_sleep { |
||||
group1 { |
||||
psels = <NRF_PSEL(QSPI_SCK, 0, 19)>, |
||||
<NRF_PSEL(QSPI_IO0, 0, 14)>, |
||||
<NRF_PSEL(QSPI_IO1, 0, 21)>, |
||||
<NRF_PSEL(QSPI_IO2, 0, 23)>, |
||||
<NRF_PSEL(QSPI_IO3, 1, 0)>; |
||||
low-power-enable; |
||||
}; |
||||
group2 { |
||||
psels = <NRF_PSEL(QSPI_CSN, 0, 12)>; |
||||
low-power-enable; |
||||
bias-pull-up; |
||||
}; |
||||
}; |
||||
}; |
@ -0,0 +1,200 @@
@@ -0,0 +1,200 @@
|
||||
/* |
||||
* Copyright (c) 2024 Jerónimo Agulló <jeronimoagullo97@gmail.com> |
||||
* |
||||
* SPDX-License-Identifier: Apache-2.0 |
||||
*/ |
||||
|
||||
/dts-v1/; |
||||
#include <nordic/nrf52840_qiaa.dtsi> |
||||
#include "micromod_nrf52840-pinctrl.dtsi" |
||||
#include <zephyr/dt-bindings/input/input-event-codes.h> |
||||
|
||||
/ { |
||||
model = "Sparkfun Micrmod nRF52840 board"; |
||||
compatible = "sparkfun,micromod-nrf52840"; |
||||
|
||||
chosen { |
||||
zephyr,console = &uart0; |
||||
zephyr,sram = &sram0; |
||||
zephyr,flash = &flash0; |
||||
zephyr,code-partition = &slot0_partition; |
||||
zephyr,ieee802154 = &ieee802154; |
||||
}; |
||||
|
||||
/* These aliases are provided for compatibility with samples */ |
||||
aliases { |
||||
led0 = &led0; |
||||
watchdog0 = &wdt0; |
||||
}; |
||||
|
||||
leds { |
||||
compatible = "gpio-leds"; |
||||
led0: led_0 { |
||||
gpios = <&gpio0 13 0>; |
||||
label = "Blue LED"; |
||||
}; |
||||
}; |
||||
|
||||
micromod_header: connector { |
||||
compatible = "sparkfun,micromod-gpio"; |
||||
#gpio-cells = <2>; |
||||
gpio-map-mask = <0xffffffff 0xffffffc0>; |
||||
gpio-map-pass-thru = <0 0x3f>; |
||||
gpio-map = <0 0 &gpio0 4 0>, /* A0 */ |
||||
<1 0 &gpio0 5 0>, /* A1 */ |
||||
<2 0 &gpio0 27 0>, /* D0 */ |
||||
<3 0 &gpio1 8 0>, /* D1/CAM_TRIG */ |
||||
<4 0 &gpio0 15 0>, /* I2C_INT# */ |
||||
<5 0 &gpio0 29 0>, /* G0/BUS0 */ |
||||
<6 0 &gpio0 3 0>, /* G1/BUS1 */ |
||||
<7 0 &gpio1 13 0>, /* G2/BUS2 */ |
||||
<8 0 &gpio1 12 0>, /* G3/BUS3 */ |
||||
<9 0 &gpio1 11 0>, /* G4/BUS4 */ |
||||
<10 0 &gpio0 17 0>, /* G5/BUS5 */ |
||||
<11 0 &gpio1 6 0>, /* G6/BUS6 */ |
||||
<12 0 &gpio1 4 0>, /* G7/BUS7 */ |
||||
<13 0 &gpio1 14 0>, /* G8 */ |
||||
<14 0 &gpio0 9 0>, /* G9/ADC_D-/CAM_HSYNC */ |
||||
<15 0 &gpio0 10 0>, /* G10/ADC_D+/CAM_VSYNC */ |
||||
//<16 NO CONNECTED /* G11/SWO */ |
||||
<17 0 &gpio0 20 0>; /* SPI_CS */ |
||||
}; |
||||
}; |
||||
|
||||
&adc { |
||||
status = "okay"; |
||||
}; |
||||
|
||||
&gpiote { |
||||
status = "okay"; |
||||
}; |
||||
|
||||
&gpio0 { |
||||
status = "okay"; |
||||
}; |
||||
|
||||
&gpio1 { |
||||
status = "okay"; |
||||
}; |
||||
|
||||
&uicr { |
||||
nfct-pins-as-gpios; |
||||
gpio-as-nreset; |
||||
}; |
||||
|
||||
&uart0 { |
||||
compatible = "nordic,nrf-uarte"; |
||||
current-speed = <115200>; |
||||
status = "okay"; |
||||
pinctrl-0 = <&uart0_default>; |
||||
pinctrl-1 = <&uart0_sleep>; |
||||
pinctrl-names = "default", "sleep"; |
||||
}; |
||||
|
||||
&uart1 { |
||||
compatible = "nordic,nrf-uarte"; |
||||
current-speed = <115200>; |
||||
status = "okay"; |
||||
pinctrl-0 = <&uart1_default>; |
||||
pinctrl-1 = <&uart1_sleep>; |
||||
pinctrl-names = "default", "sleep"; |
||||
}; |
||||
|
||||
&i2c0 { |
||||
compatible = "nordic,nrf-twi"; |
||||
status = "okay"; |
||||
pinctrl-0 = <&i2c0_default>; |
||||
pinctrl-1 = <&i2c0_sleep>; |
||||
pinctrl-names = "default", "sleep"; |
||||
}; |
||||
|
||||
&i2c1 { |
||||
compatible = "nordic,nrf-twi"; |
||||
status = "okay"; |
||||
pinctrl-0 = <&i2c1_default>; |
||||
pinctrl-1 = <&i2c1_sleep>; |
||||
pinctrl-names = "default", "sleep"; |
||||
}; |
||||
|
||||
&spi2 { |
||||
compatible = "nordic,nrf-spi"; |
||||
status = "okay"; |
||||
cs-gpios = <&gpio0 20 GPIO_ACTIVE_LOW>; |
||||
pinctrl-0 = <&spi0_default>; |
||||
pinctrl-1 = <&spi0_sleep>; |
||||
pinctrl-names = "default", "sleep"; |
||||
}; |
||||
|
||||
&qspi { |
||||
status = "okay"; |
||||
pinctrl-0 = <&qspi_default>; |
||||
pinctrl-1 = <&qspi_sleep>; |
||||
pinctrl-names = "default", "sleep"; |
||||
w25q128jv: w25q128jv@0 { |
||||
status="okay"; |
||||
compatible = "nordic,qspi-nor"; |
||||
reg = <0>; |
||||
writeoc = "pp4io"; |
||||
readoc = "read4io"; |
||||
sck-frequency = <DT_FREQ_M(32)>; |
||||
jedec-id = [ef 70 18]; |
||||
size = <DT_SIZE_M(128)>; |
||||
has-dpd; |
||||
t-enter-dpd = <3000>; |
||||
t-exit-dpd = <3000>; |
||||
}; |
||||
}; |
||||
|
||||
&ieee802154 { |
||||
status = "okay"; |
||||
}; |
||||
|
||||
&flash0 { |
||||
|
||||
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 0x00076000>; |
||||
}; |
||||
|
||||
slot1_partition: partition@86000 { |
||||
label = "image-1"; |
||||
reg = <0x00086000 0x00074000>; |
||||
}; |
||||
|
||||
/* |
||||
* The flash starting at 0x000f8000 and ending at |
||||
* 0x000fffff is reserved for use by the application. |
||||
*/ |
||||
|
||||
/* |
||||
* Storage partition will be used by FCB/LittleFS/NVS |
||||
* if enabled. |
||||
*/ |
||||
|
||||
storage_partition: partition@fA000 { |
||||
label = "storage"; |
||||
reg = <0x000fA000 0x00006000>; |
||||
}; |
||||
}; |
||||
}; |
||||
|
||||
zephyr_udc0: &usbd { |
||||
compatible = "nordic,nrf-usbd"; |
||||
status = "okay"; |
||||
}; |
||||
|
||||
// Sparkfun Micromod compatible pins |
||||
micromod_1_uart: &uart0 {}; |
||||
micromod_2_uart: &uart1 {}; |
||||
micromod_0_i2c: &i2c0 {}; |
||||
micromod_1_i2c: &i2c1 {}; |
||||
micromod_0_spi: &spi2 {}; |
@ -0,0 +1,26 @@
@@ -0,0 +1,26 @@
|
||||
identifier: micromod/nrf52840 |
||||
name: Sparkfun Micromod nRF52840 board |
||||
type: mcu |
||||
arch: arm |
||||
ram: 256 |
||||
flash: 1024 |
||||
toolchain: |
||||
- zephyr |
||||
- gnuarmemb |
||||
- xtools |
||||
supported: |
||||
- ble |
||||
- gpio |
||||
- spi |
||||
- qspi |
||||
- i2c |
||||
- pwm |
||||
- adc |
||||
- usb_device |
||||
- usb_cdc |
||||
- watchdog |
||||
- micromod_gpio |
||||
- micromod_uart |
||||
- micromod_i2c |
||||
- micromod_spi |
||||
vendor: Sparkfun |
@ -0,0 +1,19 @@
@@ -0,0 +1,19 @@
|
||||
# SPDX-License-Identifier: Apache-2.0 |
||||
|
||||
# Enable MPU |
||||
CONFIG_ARM_MPU=y |
||||
|
||||
# Enable hardware stack protection |
||||
CONFIG_HW_STACK_PROTECTION=y |
||||
|
||||
# Enable RTT |
||||
CONFIG_USE_SEGGER_RTT=y |
||||
|
||||
# Enable GPIO |
||||
CONFIG_GPIO=y |
||||
|
||||
# Enable console |
||||
CONFIG_CONSOLE=y |
||||
|
||||
# Enable UART |
||||
CONFIG_SERIAL=y |
@ -0,0 +1,7 @@
@@ -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") |
@ -0,0 +1,51 @@
@@ -0,0 +1,51 @@
|
||||
# Copyright (c) 2024 Jerónimo Agulló |
||||
# SPDX-License-Identifier: Apache-2.0 |
||||
|
||||
description: | |
||||
GPIO pins exposed on micromod headers. |
||||
|
||||
The micromod standard leverages the M.2 connector with 76 pins for |
||||
swap between a myriad of supported boards and carriers. |
||||
|
||||
The micromod standard consists of two lanes with the following |
||||
supported buses: |
||||
* An 6-pin Power Supply header. No pins on this header are exposed |
||||
by this binding. |
||||
* Reset, Boot pins and SWD pins not exposed by this binding. |
||||
* 2 UART buses. First with RTS and CTS pins, while the 2nd with only |
||||
RX and TX pins. Neither of them are exposed by this binding. |
||||
* 2 i2c buses. Only the corresponding interrupt pin is exposed by |
||||
this binding. |
||||
* 2 SPI buses not exposed by this binding. Only SPI CS control pin |
||||
is exposed by this binding. |
||||
* Audio line not exposed by this binding. |
||||
* 2 analog pins (A0 and A1). |
||||
* 2 digital pins (D0 and D1). |
||||
* 12 General purpose pins (G0 - G11). |
||||
|
||||
This binding provides a nexus mapping for the analog, digital and |
||||
general purpose gpios in the order depicted below: |
||||
|
||||
- 00 -> A0 PIN 34 |
||||
- 01 -> A1 PIN 38 |
||||
- 02 -> D0 PIN 10 |
||||
- 03 -> D1/CAM_TRIG PIN 18 |
||||
- 04 -> I2C_INT# PIN 16 |
||||
- 05 -> G0/BUS0 PIN 40 |
||||
- 06 -> G1/BUS1 PIN 42 |
||||
- 07 -> G2/BUS2 PIN 44 |
||||
- 08 -> G3/BUS3 PIN 46 |
||||
- 09 -> G4/BUS4 PIN 48 |
||||
- 10 -> G5/BUS5 PIN 73 |
||||
- 11 -> G6/BUS6 PIN 71 |
||||
- 12 -> G7/BUS7 PIN 69 |
||||
- 13 -> G8 PIN 67 |
||||
- 14 -> G9/ADC_D-/CAM_HSYNC PIN 65 |
||||
- 15 -> G10/ADC_D+/CAM_VSYNC PIN 63 |
||||
- 16 -> G11/SWO PIN 8 |
||||
- 17 -> SPI_CS PIN 55 |
||||
|
||||
|
||||
compatible: "sparkfun,micromod-gpio" |
||||
|
||||
include: [gpio-nexus.yaml, base.yaml] |
Loading…
Reference in new issue