diff --git a/boards/arm/nrf52840_mdk_dongle/Kconfig b/boards/arm/nrf52840_mdk_dongle/Kconfig new file mode 100644 index 0000000000000..9d4a35599dc53 --- /dev/null +++ b/boards/arm/nrf52840_mdk_dongle/Kconfig @@ -0,0 +1,10 @@ +# nRF52840-MDK board configuration + +# Copyright (c) 2021 Adam BZH (bzhthedeveloper@gmail.com) +# SPDX-License-Identifier: Apache-2.0 + +config BOARD_ENABLE_DCDC + bool "Enable DCDC mode" + select SOC_DCDC_NRF52X + default y + depends on BOARD_NRF52840_MDK_DONGLE diff --git a/boards/arm/nrf52840_mdk_dongle/Kconfig.board b/boards/arm/nrf52840_mdk_dongle/Kconfig.board new file mode 100644 index 0000000000000..3c72a86016dd4 --- /dev/null +++ b/boards/arm/nrf52840_mdk_dongle/Kconfig.board @@ -0,0 +1,8 @@ +# nRF52840-MDK-dongle board configuration + +# Copyright (c) 2021 Adam BZH (bzhthedeveloper@gmail.com) +# SPDX-License-Identifier: Apache-2.0 + +config BOARD_NRF52840_MDK_DONGLE + bool "NRF52840-MDK-dongle" + depends on SOC_NRF52840_QIAA diff --git a/boards/arm/nrf52840_mdk_dongle/Kconfig.defconfig b/boards/arm/nrf52840_mdk_dongle/Kconfig.defconfig new file mode 100644 index 0000000000000..8be34ea726b65 --- /dev/null +++ b/boards/arm/nrf52840_mdk_dongle/Kconfig.defconfig @@ -0,0 +1,24 @@ +# nRF52840-MDK board configuration + +# Copyright (c) 2021 Adam BZH (bzhthedeveloper@gmail.com) +# SPDX-License-Identifier: Apache-2.0 + +if BOARD_NRF52840_MDK_DONGLE + +config BOARD + default "nrf52840_mdk_dongle" + +if USB + +config USB_NRFX + default y + +config USB_DEVICE_STACK + default y + +endif # USB + +config BT_CTLR + default BT + +endif # BOARD_NRF52840_MDK_DONGLE diff --git a/boards/arm/nrf52840_mdk_dongle/board.cmake b/boards/arm/nrf52840_mdk_dongle/board.cmake new file mode 100644 index 0000000000000..9254acbed476a --- /dev/null +++ b/boards/arm/nrf52840_mdk_dongle/board.cmake @@ -0,0 +1,8 @@ +# SPDX-License-Identifier: Apache-2.0 + +board_runner_args(jlink "--device=nrf52" "--speed=4000") +board_runner_args(pyocd "--target=nrf52840" "--frequency=4000000") +board_runner_args(blackmagicprobe "--gdb-serial=/dev/ttyBmpGdb") +include(${ZEPHYR_BASE}/boards/common/jlink.board.cmake) +include(${ZEPHYR_BASE}/boards/common/pyocd.board.cmake) +include(${ZEPHYR_BASE}/boards/common/blackmagicprobe.board.cmake) diff --git a/boards/arm/nrf52840_mdk_dongle/doc/index.rst b/boards/arm/nrf52840_mdk_dongle/doc/index.rst new file mode 100644 index 0000000000000..5d7671337aea5 --- /dev/null +++ b/boards/arm/nrf52840_mdk_dongle/doc/index.rst @@ -0,0 +1,24 @@ +.. _nrf52840_mdk_dongle: + +nRF52840-mdk-dongle +################### + +Overview +******** + +The nRF52840-MDK USB Dongle is a versatile, easy-to-use IoT hardware platform for +Bluetooth 5, Bluetooth Mesh, Thread, IEEE 802.15.4, ANT and 2.4GHz proprietary +applications using the nRF52840 SoC. + +The kit features programmable user button, RGB LED, up to 12 GPIOs, antenna +selection for custom applications. + +See `nRF52840-mdk-dongle website`_ for more information about the development +board and `nRF52840 website`_ for the official reference on the IC itself. + +References +********** +.. target-notes:: + +.. _nRF52840 website: https://www.nordicsemi.com/Products/Low-power-short-range-wireless/nRF52840 +.. _nRF52840-mdk-dongle website: https://wiki.makerdiary.com/nrf52840-mdk-usb-dongle/ diff --git a/boards/arm/nrf52840_mdk_dongle/nrf52840_mdk_dongle.dts b/boards/arm/nrf52840_mdk_dongle/nrf52840_mdk_dongle.dts new file mode 100644 index 0000000000000..d1ebc6acd64fe --- /dev/null +++ b/boards/arm/nrf52840_mdk_dongle/nrf52840_mdk_dongle.dts @@ -0,0 +1,179 @@ +/* + * Copyright (c) 2021 Adam BZH (bzhthedeveloper@gmail.com) + * + * SPDX-License-Identifier: Apache-2.0 + */ + +/dts-v1/; +#include + +/ { + model = "nRF52840-MDK-dongle Dev Kit"; + compatible = "nordic,nRF52840-MDK-dongle"; + + chosen { + zephyr,console = &uart0; + zephyr,shell-uart = &uart0; + zephyr,uart-mcumgr = &uart0; + zephyr,bt-mon-uart = &uart0; + zephyr,bt-c2h-uart = &uart0; + zephyr,sram = &sram0; + zephyr,flash = &flash0; + zephyr,code-partition = &slot0_partition; + }; + + leds { + compatible = "gpio-leds"; + led0_green: led_0 { + gpios = <&gpio0 22 GPIO_ACTIVE_LOW>; + label = "Green LED 0"; + }; + led1_red: led_1 { + gpios = <&gpio0 23 GPIO_ACTIVE_LOW>; + label = "Red LED 1"; + }; + led2_blue: led_2 { + gpios = <&gpio0 24 GPIO_ACTIVE_LOW>; + label = "Blue LED 2"; + }; + }; + + pwmleds { + compatible = "pwm-leds"; + pwm_led0_green: pwm_led_0 { + pwms = <&pwm0 22>; + label = "Green PWM LED 0"; + }; + pwm_led1_red: pwm_led_1 { + pwms = <&pwm0 23>; + label = "Red PWM LED 1"; + }; + pwm_led2_blue: pwm_led_2 { + pwms = <&pwm0 24>; + label = "Blue PWM LED 2"; + }; + }; + + buttons { + compatible = "gpio-keys"; + button0: button_0 { + gpios = <&gpio0 18 (GPIO_PULL_UP | GPIO_ACTIVE_LOW)>; + label = "Push button switch 0"; + }; + }; + + /* These aliases are provided for compatibility with samples */ + aliases { + sw0 = &button0; + led0 = &led0_green; + led1 = &led1_red; + led2 = &led2_blue; + led0-green = &led0_green; + led1-red = &led1_red; + led1-blue = &led2_blue; + pwm-led0 = &pwm_led0_green; + pwm-led1 = &pwm_led1_red; + pwm-led2 = &pwm_led2_blue; + green-pwm-led = &pwm_led0_green; + red-pwm-led = &pwm_led1_red; + blue-pwm-led = &pwm_led2_blue; + }; +}; + +&adc { + status = "okay"; +}; + +&gpiote { + status = "okay"; +}; + +&gpio0 { + status = "okay"; +}; + +&gpio1 { + status = "okay"; +}; + +&uart0 { + compatible = "nordic,nrf-uart"; + current-speed = <115200>; + status = "okay"; + tx-pin = <20>; + rx-pin = <19>; + rts-pin = <2>; + cts-pin = <3>; +}; + +&i2c0 { + compatible = "nordic,nrf-twi"; + status = "okay"; + sda-pin = <6>; + scl-pin = <7>; +}; + +&i2c1 { + compatible = "nordic,nrf-twi"; + status = "okay"; + sda-pin = <8>; + scl-pin = <21>; +}; + +&pwm0 { + status = "okay"; + ch0-pin = <22>; + ch0-inverted; + ch1-pin = <23>; + ch1-inverted; + ch2-pin = <24>; + ch2-inverted; +}; + +&flash0 { + /* + * For more information, see: + * https://docs.zephyrproject.org/latest/reference/devicetree/bindings/fixed-partitions.html + */ + partitions { + compatible = "fixed-partitions"; + #address-cells = <1>; + #size-cells = <1>; + + boot_partition: partition@0 { + label = "mcuboot"; + reg = <0x000000000 0x0000C000>; + }; + slot0_partition: partition@c000 { + label = "image-0"; + reg = <0x0000C000 0x00067000>; + }; + slot1_partition: partition@73000 { + label = "image-1"; + reg = <0x00073000 0x00067000>; + }; + scratch_partition: partition@da000 { + label = "image-scratch"; + reg = <0x000da000 0x0001e000>; + }; + + /* + * 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@f8000 { + label = "storage"; + reg = <0x000f8000 0x00008000>; + }; + }; +}; + +&usbd { + compatible = "nordic,nrf-usbd"; + status = "okay"; +}; diff --git a/boards/arm/nrf52840_mdk_dongle/nrf52840_mdk_dongle.yaml b/boards/arm/nrf52840_mdk_dongle/nrf52840_mdk_dongle.yaml new file mode 100644 index 0000000000000..663d299f3fcdb --- /dev/null +++ b/boards/arm/nrf52840_mdk_dongle/nrf52840_mdk_dongle.yaml @@ -0,0 +1,13 @@ +identifier: nrf52840_mdk_dongle +name: nRF52840-MDK-dongle +type: mcu +arch: arm +toolchain: + - zephyr + - gnuarmemb + - xtools +supported: + - usb_device + - ble + - ieee802154 + - pwm diff --git a/boards/arm/nrf52840_mdk_dongle/nrf52840_mdk_dongle_defconfig b/boards/arm/nrf52840_mdk_dongle/nrf52840_mdk_dongle_defconfig new file mode 100644 index 0000000000000..600c8799cf31c --- /dev/null +++ b/boards/arm/nrf52840_mdk_dongle/nrf52840_mdk_dongle_defconfig @@ -0,0 +1,21 @@ +# SPDX-License-Identifier: Apache-2.0 + +CONFIG_SOC_SERIES_NRF52X=y +CONFIG_SOC_NRF52840_QIAA=y +CONFIG_BOARD_NRF52840_MDK_DONGLE=y + +# Enable MPU +CONFIG_ARM_MPU=y + +# enable GPIO +CONFIG_GPIO=y + +# enable uart driver +CONFIG_SERIAL=y + +# enable console +CONFIG_CONSOLE=y +CONFIG_UART_CONSOLE=y + +# additional board options +CONFIG_GPIO_AS_PINRESET=n