From 436f56646bec3eafce99b7de426e42a301ff4e5e Mon Sep 17 00:00:00 2001 From: Jeronimo Agullo Date: Tue, 14 May 2024 09:43:48 +0200 Subject: [PATCH] boards: sparkfun: Add micromod nrf52840 board and asset tracker shield Initial support of Sparkfun Micromod ecosystem with micromod nrf52840 board, asset tracker shield and micromod header definition. Signed-off-by: Jeronimo Agullo --- .../Kconfig.defconfig | 21 ++ .../Kconfig.shield | 5 + .../img/sparkfun_carrier_asset_tracker.webp | Bin 0 -> 62538 bytes .../doc/index.rst | 117 ++++++++++ .../sparkfun_carrier_asset_tracker.overlay | 50 +++++ boards/sparkfun/micromod/Kconfig | 19 ++ boards/sparkfun/micromod/Kconfig.defconfig | 11 + boards/sparkfun/micromod/Kconfig.micromod | 5 + boards/sparkfun/micromod/board.cmake | 9 + boards/sparkfun/micromod/board.yml | 5 + .../micromod/doc/img/sparkfun_micromod.webp | Bin 0 -> 49510 bytes boards/sparkfun/micromod/doc/index.rst | 204 ++++++++++++++++++ .../micromod/micromod_nrf52840-pinctrl.dtsi | 116 ++++++++++ .../sparkfun/micromod/micromod_nrf52840.dts | 200 +++++++++++++++++ .../sparkfun/micromod/micromod_nrf52840.yaml | 26 +++ .../micromod/micromod_nrf52840_defconfig | 19 ++ boards/sparkfun/micromod/pre_dt_board.cmake | 7 + dts/bindings/gpio/sparkfun,micromod-gpio.yaml | 51 +++++ .../adc_api/boards/micromod_nrf52840.overlay | 7 + 19 files changed, 872 insertions(+) create mode 100644 boards/shields/sparkfun_carrier_asset_tracker/Kconfig.defconfig create mode 100644 boards/shields/sparkfun_carrier_asset_tracker/Kconfig.shield create mode 100644 boards/shields/sparkfun_carrier_asset_tracker/doc/img/sparkfun_carrier_asset_tracker.webp create mode 100644 boards/shields/sparkfun_carrier_asset_tracker/doc/index.rst create mode 100644 boards/shields/sparkfun_carrier_asset_tracker/sparkfun_carrier_asset_tracker.overlay create mode 100644 boards/sparkfun/micromod/Kconfig create mode 100644 boards/sparkfun/micromod/Kconfig.defconfig create mode 100644 boards/sparkfun/micromod/Kconfig.micromod create mode 100644 boards/sparkfun/micromod/board.cmake create mode 100644 boards/sparkfun/micromod/board.yml create mode 100644 boards/sparkfun/micromod/doc/img/sparkfun_micromod.webp create mode 100644 boards/sparkfun/micromod/doc/index.rst create mode 100644 boards/sparkfun/micromod/micromod_nrf52840-pinctrl.dtsi create mode 100644 boards/sparkfun/micromod/micromod_nrf52840.dts create mode 100644 boards/sparkfun/micromod/micromod_nrf52840.yaml create mode 100644 boards/sparkfun/micromod/micromod_nrf52840_defconfig create mode 100644 boards/sparkfun/micromod/pre_dt_board.cmake create mode 100644 dts/bindings/gpio/sparkfun,micromod-gpio.yaml create mode 100644 tests/drivers/adc/adc_api/boards/micromod_nrf52840.overlay diff --git a/boards/shields/sparkfun_carrier_asset_tracker/Kconfig.defconfig b/boards/shields/sparkfun_carrier_asset_tracker/Kconfig.defconfig new file mode 100644 index 00000000000..da44e62a05f --- /dev/null +++ b/boards/shields/sparkfun_carrier_asset_tracker/Kconfig.defconfig @@ -0,0 +1,21 @@ +# Copyright (c) 2024 Jerónimo Agulló +# 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 diff --git a/boards/shields/sparkfun_carrier_asset_tracker/Kconfig.shield b/boards/shields/sparkfun_carrier_asset_tracker/Kconfig.shield new file mode 100644 index 00000000000..71cff267351 --- /dev/null +++ b/boards/shields/sparkfun_carrier_asset_tracker/Kconfig.shield @@ -0,0 +1,5 @@ +# Copyright (c) 2024 Jerónimo Agulló +# SPDX-License-Identifier: Apache-2.0 + +config SHIELD_SPARKFUN_CARRIER_ASSET_TRACKER + def_bool $(shields_list_contains,sparkfun_carrier_asset_tracker) diff --git a/boards/shields/sparkfun_carrier_asset_tracker/doc/img/sparkfun_carrier_asset_tracker.webp b/boards/shields/sparkfun_carrier_asset_tracker/doc/img/sparkfun_carrier_asset_tracker.webp new file mode 100644 index 0000000000000000000000000000000000000000..a76682a0cef848a3d5217b4ac809eb6c3753893a GIT binary patch literal 62538 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 z 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 + * + * 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 = ; + }; +}; + +µmod_0_i2c { + max17048: max17048@36 { + compatible = "maxim,max17048"; + reg = <0x36>; + status = "okay"; + }; +}; diff --git a/boards/sparkfun/micromod/Kconfig b/boards/sparkfun/micromod/Kconfig new file mode 100644 index 00000000000..c85ad61572f --- /dev/null +++ b/boards/sparkfun/micromod/Kconfig @@ -0,0 +1,19 @@ +# Sparkfun micromod board configuration + +# Copyright (c) 2024 Jerónimo Agulló +# 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 diff --git a/boards/sparkfun/micromod/Kconfig.defconfig b/boards/sparkfun/micromod/Kconfig.defconfig new file mode 100644 index 00000000000..50f6c3f582a --- /dev/null +++ b/boards/sparkfun/micromod/Kconfig.defconfig @@ -0,0 +1,11 @@ +# Sparkfun micromod board configuration + +# Copyright (c) 2024 Jerónimo Agulló +# SPDX-License-Identifier: Apache-2.0 + +if BOARD_MICROMOD_NRF52840 + +config BT_CTLR + default BT + +endif # BOARD_MICROMOD_NRF52840 diff --git a/boards/sparkfun/micromod/Kconfig.micromod b/boards/sparkfun/micromod/Kconfig.micromod new file mode 100644 index 00000000000..ea40f13ad1a --- /dev/null +++ b/boards/sparkfun/micromod/Kconfig.micromod @@ -0,0 +1,5 @@ +# Copyright (c) 2024 Jerónimo Agulló +# SPDX-License-Identifier: Apache-2.0 + +config BOARD_MICROMOD + select SOC_NRF52840_QIAA if BOARD_MICROMOD_NRF52840 diff --git a/boards/sparkfun/micromod/board.cmake b/boards/sparkfun/micromod/board.cmake new file mode 100644 index 00000000000..55900ba5975 --- /dev/null +++ b/boards/sparkfun/micromod/board.cmake @@ -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) diff --git a/boards/sparkfun/micromod/board.yml b/boards/sparkfun/micromod/board.yml new file mode 100644 index 00000000000..851ac345bc5 --- /dev/null +++ b/boards/sparkfun/micromod/board.yml @@ -0,0 +1,5 @@ +board: + name: micromod + vendor: sparkfun + socs: + - name: nrf52840 diff --git a/boards/sparkfun/micromod/doc/img/sparkfun_micromod.webp b/boards/sparkfun/micromod/doc/img/sparkfun_micromod.webp new file mode 100644 index 0000000000000000000000000000000000000000..423c7a3d0f6afd5b5efaebb16f4962018a5b090d GIT binary patch literal 49510 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�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 literal 0 HcmV?d00001 diff --git a/boards/sparkfun/micromod/doc/index.rst b/boards/sparkfun/micromod/doc/index.rst new file mode 100644 index 00000000000..0ba4c37bbef --- /dev/null +++ b/boards/sparkfun/micromod/doc/index.rst @@ -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 -b 115200 + +Replace :code:`` 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 `. + +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 diff --git a/boards/sparkfun/micromod/micromod_nrf52840-pinctrl.dtsi b/boards/sparkfun/micromod/micromod_nrf52840-pinctrl.dtsi new file mode 100644 index 00000000000..4cba8a1d098 --- /dev/null +++ b/boards/sparkfun/micromod/micromod_nrf52840-pinctrl.dtsi @@ -0,0 +1,116 @@ +/* + * Copyright (c) 2024 Jerónimo Agulló + * + * SPDX-License-Identifier: Apache-2.0 + */ + +&pinctrl { + uart0_default: uart0_default { + group1 { + psels = , + , + , + ; + }; + }; + + uart0_sleep: uart0_sleep { + group1 { + psels = , + , + , + ; + low-power-enable; + }; + }; + + uart1_default: uart1_default { + group1 { + psels = , + ; + }; + }; + + uart1_sleep: uart1_sleep { + group1 { + psels = , + ; + low-power-enable; + }; + }; + + i2c0_default: i2c0_default { + group1 { + psels = , + ; + }; + }; + + i2c0_sleep: i2c0_sleep { + group1 { + psels = , + ; + low-power-enable; + }; + }; + + i2c1_default: i2c1_default { + group1 { + psels = , + ; + }; + }; + + i2c1_sleep: i2c1_sleep { + group1 { + psels = , + ; + low-power-enable; + }; + }; + + spi0_default: spi0_default { + group1 { + psels = , + , + ; + }; + }; + + spi0_sleep: spi0_sleep { + group1 { + psels = , + , + ; + low-power-enable; + }; + }; + + qspi_default: qspi_default { + group1 { + psels = , + , + , + , + , + ; + nordic,drive-mode = ; + }; + }; + + qspi_sleep: qspi_sleep { + group1 { + psels = , + , + , + , + ; + low-power-enable; + }; + group2 { + psels = ; + low-power-enable; + bias-pull-up; + }; + }; +}; diff --git a/boards/sparkfun/micromod/micromod_nrf52840.dts b/boards/sparkfun/micromod/micromod_nrf52840.dts new file mode 100644 index 00000000000..345714a5cd3 --- /dev/null +++ b/boards/sparkfun/micromod/micromod_nrf52840.dts @@ -0,0 +1,200 @@ +/* + * Copyright (c) 2024 Jerónimo Agulló + * + * SPDX-License-Identifier: Apache-2.0 + */ + +/dts-v1/; +#include +#include "micromod_nrf52840-pinctrl.dtsi" +#include + +/ { + 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 = ; + jedec-id = [ef 70 18]; + size = ; + 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 {}; diff --git a/boards/sparkfun/micromod/micromod_nrf52840.yaml b/boards/sparkfun/micromod/micromod_nrf52840.yaml new file mode 100644 index 00000000000..3afd6269313 --- /dev/null +++ b/boards/sparkfun/micromod/micromod_nrf52840.yaml @@ -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 diff --git a/boards/sparkfun/micromod/micromod_nrf52840_defconfig b/boards/sparkfun/micromod/micromod_nrf52840_defconfig new file mode 100644 index 00000000000..f8f1759f51c --- /dev/null +++ b/boards/sparkfun/micromod/micromod_nrf52840_defconfig @@ -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 diff --git a/boards/sparkfun/micromod/pre_dt_board.cmake b/boards/sparkfun/micromod/pre_dt_board.cmake new file mode 100644 index 00000000000..3369c21d3af --- /dev/null +++ b/boards/sparkfun/micromod/pre_dt_board.cmake @@ -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") diff --git a/dts/bindings/gpio/sparkfun,micromod-gpio.yaml b/dts/bindings/gpio/sparkfun,micromod-gpio.yaml new file mode 100644 index 00000000000..ae0c290aee3 --- /dev/null +++ b/dts/bindings/gpio/sparkfun,micromod-gpio.yaml @@ -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] diff --git a/tests/drivers/adc/adc_api/boards/micromod_nrf52840.overlay b/tests/drivers/adc/adc_api/boards/micromod_nrf52840.overlay new file mode 100644 index 00000000000..cbc9b08e0e8 --- /dev/null +++ b/tests/drivers/adc/adc_api/boards/micromod_nrf52840.overlay @@ -0,0 +1,7 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * + * Copyright (c) 2024 Jerónimo Agulló + */ + +#include "nordic,nrf-saadc-common.dtsi"