From d3d789d7ee2d4c692515e0c6c7c2133981ccc986 Mon Sep 17 00:00:00 2001 From: Guillaume Paquet Date: Mon, 5 Apr 2021 20:11:45 +0200 Subject: [PATCH] boards: arm: Add RAK4631 Wisblock Core LPWAN board Add rak4631 board from RAKWireless based on nrf52840 and SX1262. Board Documentation is completed Signed-off-by: Guillaume Paquet --- CODEOWNERS | 1 + boards/arm/rak4631_nrf52840/Kconfig.board | 8 + boards/arm/rak4631_nrf52840/Kconfig.defconfig | 24 +++ boards/arm/rak4631_nrf52840/board.cmake | 9 + .../doc/img/rak4631-front-parts.jpg | Bin 0 -> 77325 bytes boards/arm/rak4631_nrf52840/doc/index.rst | 156 ++++++++++++++++ .../arm/rak4631_nrf52840/rak4631_nrf52840.dts | 166 ++++++++++++++++++ .../rak4631_nrf52840/rak4631_nrf52840.yaml | 20 +++ .../rak4631_nrf52840_defconfig | 26 +++ samples/drivers/lora/receive/sample.yaml | 1 + samples/drivers/lora/send/sample.yaml | 1 + tests/drivers/adc/adc_api/src/test_adc.c | 1 + 12 files changed, 413 insertions(+) create mode 100644 boards/arm/rak4631_nrf52840/Kconfig.board create mode 100644 boards/arm/rak4631_nrf52840/Kconfig.defconfig create mode 100644 boards/arm/rak4631_nrf52840/board.cmake create mode 100644 boards/arm/rak4631_nrf52840/doc/img/rak4631-front-parts.jpg create mode 100644 boards/arm/rak4631_nrf52840/doc/index.rst create mode 100644 boards/arm/rak4631_nrf52840/rak4631_nrf52840.dts create mode 100644 boards/arm/rak4631_nrf52840/rak4631_nrf52840.yaml create mode 100644 boards/arm/rak4631_nrf52840/rak4631_nrf52840_defconfig diff --git a/CODEOWNERS b/CODEOWNERS index 8bd3c9872cf..e1ac4c1e32b 100644 --- a/CODEOWNERS +++ b/CODEOWNERS @@ -112,6 +112,7 @@ /boards/arm/qemu_cortex_r*/ @stephanosio /boards/arm/qemu_cortex_m*/ @ioannisg /boards/arm/quick_feather/ @kowalewskijan @kgugala +/boards/arm/rak4631_nrf52840/ @gpaquet85 /boards/arm/rak5010_nrf52840/ @gpaquet85 /boards/arm/ronoth_lodev/ @NorthernDean /boards/arm/xmc45_relax_kit/ @parthitce diff --git a/boards/arm/rak4631_nrf52840/Kconfig.board b/boards/arm/rak4631_nrf52840/Kconfig.board new file mode 100644 index 00000000000..f5db0172189 --- /dev/null +++ b/boards/arm/rak4631_nrf52840/Kconfig.board @@ -0,0 +1,8 @@ +# RAKWIRELESS RAK4631 selection + +# Copyright (c) 2021 Guillaume Paquet +# SPDX-License-Identifier: Apache-2.0 + +config BOARD_RAK4631_NRF52840 + bool "RAK4631 DK NRF52840" + depends on SOC_NRF52840_QIAA diff --git a/boards/arm/rak4631_nrf52840/Kconfig.defconfig b/boards/arm/rak4631_nrf52840/Kconfig.defconfig new file mode 100644 index 00000000000..46d127f3001 --- /dev/null +++ b/boards/arm/rak4631_nrf52840/Kconfig.defconfig @@ -0,0 +1,24 @@ +# RAKWIRELESS RAK4631 Board configuration + +# Copyright (c) 2021 Guillaume Paquet +# SPDX-License-Identifier: Apache-2.0 + +if BOARD_RAK4631_NRF52840 + +config BOARD + default "rak4631_nrf52840" + +if USB + +config USB_NRFX + default y + +config USB_DEVICE_STACK + default y + +endif # USB + +config BT_CTLR + default BT + +endif # BOARD_RAK4631_NRF52840 diff --git a/boards/arm/rak4631_nrf52840/board.cmake b/boards/arm/rak4631_nrf52840/board.cmake new file mode 100644 index 00000000000..e15baec6761 --- /dev/null +++ b/boards/arm/rak4631_nrf52840/board.cmake @@ -0,0 +1,9 @@ +# Copyright (c) 2021 Guillaume Paquet +# SPDX-License-Identifier: Apache-2.0 + +board_runner_args(jlink "--device=nrf52" "--speed=4000") +board_runner_args(pyocd "--target=nrf52840" "--frequency=4000000") +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-nrf5.board.cmake) diff --git a/boards/arm/rak4631_nrf52840/doc/img/rak4631-front-parts.jpg b/boards/arm/rak4631_nrf52840/doc/img/rak4631-front-parts.jpg new file mode 100644 index 0000000000000000000000000000000000000000..4ee9193bad5cd87fa88b5ef4e508eaf539d95a9f GIT binary patch literal 77325 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 C4P^}g literal 0 HcmV?d00001 diff --git a/boards/arm/rak4631_nrf52840/doc/index.rst b/boards/arm/rak4631_nrf52840/doc/index.rst new file mode 100644 index 00000000000..475f4aea163 --- /dev/null +++ b/boards/arm/rak4631_nrf52840/doc/index.rst @@ -0,0 +1,156 @@ +.. _rak4631_nrf52840: + +RAK4631 +####### + +Overview +******** + +RAK4631 is a WisBlock Core module for RAK WisBlock. +It extends the WisBlock series with a powerful +Nordic nRF52840 MCU that supports Bluetooth 5.0 +(Bluetooth Low Energy) and the newest LoRa transceiver +from Semtech, the SX1262. The Semtech SX1262 has compared +to the older SX127x series a lower power consumption at +the same TX power. This makes the RAK4631 an ultra-low +power communication solution. RAK4631 can be comfortably +programmed with ZephyrRTOS. + +.. image:: img/rak4631-front-parts.jpg + :width: 500px + :align: center + :alt: RAK4631-NRF52840 + +Hardware +******** + +To use a RAK4631, you need at least a WisBlock Base +to plug the module in. WisBlock Base is the power +supply for the RAK4631 module and has the +programming/debug interface. + +- nRF52840 ARM Cortex-M4F Processor +- 64 MHz CPU clock +- 1 Micro-AB USB OTG host/device +- Semtech SX1262 low power high range LoRa transceiver +- iPEX connectors for the LORA antenna and BLE antenna. +- Multiple interfaces, I2C, UART, GPIO, ADC +- 2 user LEDs on RAK5005 mother Board +- Powered by either Micro USB, 3.7V rechargeable battery or a 5V Solar Panel Port + +Supported Features +================== + +The rak4631_nrf52840 board configuration supports the following hardware features: + ++-----------+------------+----------------------+ +| Interface | Controller | Driver/Component | ++===========+============+======================+ +| ADC | on-chip | adc | ++-----------+------------+----------------------+ +| CLOCK | on-chip | clock_control | ++-----------+------------+----------------------+ +| FLASH | on-chip | flash | ++-----------+------------+----------------------+ +| GPIO | on-chip | gpio | ++-----------+------------+----------------------+ +| I2C(M) | on-chip | i2c | ++-----------+------------+----------------------+ +| MPU | on-chip | arch/arm | ++-----------+------------+----------------------+ +| NVIC | on-chip | arch/arm | ++-----------+------------+----------------------+ +| PWM | on-chip | pwm | ++-----------+------------+----------------------+ +| RADIO | on-chip | Bluetooth, | +| | | ieee802154 | ++-----------+------------+----------------------+ +| RADIO | on-board | LoRa (SX1262) | ++-----------+------------+----------------------+ +| RTC | on-chip | system clock | ++-----------+------------+----------------------+ +| SPI(M/S) | on-chip | spi | ++-----------+------------+----------------------+ +| UART | on-chip | serial | ++-----------+------------+----------------------+ +| USB | on-chip | usb | ++-----------+------------+----------------------+ +| WDT | on-chip | watchdog | ++-----------+------------+----------------------+ + +The default board configuration can be found in the defconfig file: + + ``boards/arm/rak4631_nrf52840/rak4631_nrf52840_defconfig`` + +Connections and IOs +=================== + +LED +--- + +* LED1 (green) = P1.3 +* LED2 (blue) = P1.4 + +Programming and Debugging +************************* + +The RAK4631 board shall be connected to a Segger Embedded Debugger Unit +`J-Link OB `_. This provides a debug +interface to the NRF52840 chip. You can use JLink to communicate with +the NRF52840. + +Flashing +======== + +#. Download JLink from the Segger `JLink Downloads Page`_. Go to the section + "J-Link Software and Documentation Pack" and install the "J-Link Software + and Documentation pack for Linux". The application JLinkExe needs to be + accessible from your path. + +#. Run your favorite terminal program to listen for output. Under Linux the + terminal should be :code:`/dev/ttyACM0`. For example: + + .. code-block:: console + + $ minicom -D /dev/ttyACM0 -o + + The -o option tells minicom not to send the modem initialization string. + Connection should be configured as follows: + + - Speed: 115200 + - Data: 8 bits + - Parity: None + - Stop bits: 1 + +#. Connect the RAK4631 board to your host computer using the USB debug port. +Then build and flash the :ref:`hello_world` application. + + .. zephyr-app-commands:: + :zephyr-app: samples/hello_world + :board: rak4631_nrf52840 + :goals: build flash + + You should see "Hello World! rak4631_nrf52840" in your terminal. + +Debugging +========= + +You can debug an application in the usual way. Here is an example for the +:ref:`hello_world` application. + +.. zephyr-app-commands:: + :zephyr-app: samples/hello_world + :board: rak4631_nrf52840 + :maybe-skip-config: + :goals: debug + +References +********** + +.. target-notes:: + +.. _RAK4631 Product Description: + https://docs.rakwireless.com/Product-Categories/WisBlock/RAK4631/Datasheet/#overview + +.. _JLink Downloads Page: + https://www.segger.com/downloads/jlink diff --git a/boards/arm/rak4631_nrf52840/rak4631_nrf52840.dts b/boards/arm/rak4631_nrf52840/rak4631_nrf52840.dts new file mode 100644 index 00000000000..983b2998dcf --- /dev/null +++ b/boards/arm/rak4631_nrf52840/rak4631_nrf52840.dts @@ -0,0 +1,166 @@ +/* + * Copyright (c) 2021 Guillaume Paquet + * + * SPDX-License-Identifier: Apache-2.0 + */ + +/dts-v1/; +#include +#include + +/ { + model = "RAKWireless RAK4631 WisBlock LPWAN Module with a Nordic NRF52840 SoC"; + compatible = "nordic,rak4631_nrf52840"; + + chosen { + zephyr,console = &uart1; + zephyr,shell-uart = &uart1; + zephyr,uart-mcumgr = &uart1; + zephyr,bt-mon-uart = &uart1; + zephyr,bt-c2h-uart = &uart1; + zephyr,sram = &sram0; + zephyr,flash = &flash0; + zephyr,code-partition = &slot0_partition; + }; + + leds { + compatible = "gpio-leds"; + blue_led: led_2 { + gpios = <&gpio1 4 GPIO_ACTIVE_LOW>; + label = "Blue LED"; + }; + green_led: led_1 { + gpios = <&gpio1 3 GPIO_ACTIVE_LOW>; + label = "Green LED"; + }; + }; + + /* Declaration of aliases */ + aliases { + led0 = &blue_led; + lora0 = &lora; + }; +}; + +&adc { + status = "okay"; +}; + +&gpiote { + status = "okay"; +}; + +&gpio0 { + status = "okay"; +}; + +&gpio1 { + status = "okay"; +}; + +&uart0 { + compatible = "nordic,nrf-uart"; + status = "okay"; + current-speed = <115200>; + tx-pin = <20>; + rx-pin = <19>; +}; + +&uart1 { + compatible = "nordic,nrf-uarte"; + current-speed = <115200>; + status = "okay"; + tx-pin = <16>; + rx-pin = <15>; +}; + +&i2c0 { + compatible = "nordic,nrf-twi"; + status = "okay"; + sda-gpios = <&gpio0 13 0>; + scl-gpios = <&gpio0 14 0>; +}; + +&i2c1 { + compatible = "nordic,nrf-twi"; + /* Cannot be used together with spi1. */ + /* status = "okay"; */ + sda-gpios = <&gpio0 24 0>; + scl-gpios = <&gpio0 25 0>; +}; + +&spi1 { + compatible = "nordic,nrf-spi"; + status = "okay"; + sck-pin = <43>; + mosi-pin = <44>; + miso-pin = <45>; + cs-gpios = <&gpio1 10 GPIO_ACTIVE_LOW>; + + lora: sx1262@0 { + compatible = "semtech,sx1262"; + reg = <0>; + label = "sx1262"; + reset-gpios = <&gpio1 6 GPIO_ACTIVE_LOW>; + busy-gpios = <&gpio1 14 GPIO_ACTIVE_HIGH>; + tx-enable-gpios = <&gpio1 7 GPIO_ACTIVE_LOW>; + rx-enable-gpios = <&gpio1 5 GPIO_ACTIVE_LOW>; + dio1-gpios = <&gpio1 15 GPIO_ACTIVE_LOW>; + dio2-tx-enable; + dio3-tcxo-voltage = ; + tcxo-power-startup-delay-ms = <5>; + spi-max-frequency = <1000000>; + }; +}; + +&qspi { + status = "okay"; + sck-pin = <3>; + io-pins = <30>, <29>, <28>, <2>; + csn-pins = <26>; +}; + +&flash0 { + + 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/rak4631_nrf52840/rak4631_nrf52840.yaml b/boards/arm/rak4631_nrf52840/rak4631_nrf52840.yaml new file mode 100644 index 00000000000..a8635c8fe48 --- /dev/null +++ b/boards/arm/rak4631_nrf52840/rak4631_nrf52840.yaml @@ -0,0 +1,20 @@ +identifier: rak4631_nrf52840 +name: RAK4631-NRF52840 +type: mcu +arch: arm +flash: 1024 +ram: 256 +toolchain: + - zephyr + - gnuarmemb + - xtools +supported: + - adc + - ble + - counter + - gpio + - i2c + - pwm + - usb_cdc + - usb_device + - watchdog diff --git a/boards/arm/rak4631_nrf52840/rak4631_nrf52840_defconfig b/boards/arm/rak4631_nrf52840/rak4631_nrf52840_defconfig new file mode 100644 index 00000000000..a1d21db3092 --- /dev/null +++ b/boards/arm/rak4631_nrf52840/rak4631_nrf52840_defconfig @@ -0,0 +1,26 @@ +# SPDX-License-Identifier: Apache-2.0 +CONFIG_SOC_SERIES_NRF52X=y +CONFIG_SOC_NRF52840_QIAA=y +CONFIG_BOARD_RAK4631_NRF52840=y + +# 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 uart driver +CONFIG_SERIAL=y + +# enable console +CONFIG_CONSOLE=y +CONFIG_UART_CONSOLE=y + +# additional board options +CONFIG_GPIO_AS_PINRESET=y diff --git a/samples/drivers/lora/receive/sample.yaml b/samples/drivers/lora/receive/sample.yaml index d74b10c5cb4..80503e45ec1 100644 --- a/samples/drivers/lora/receive/sample.yaml +++ b/samples/drivers/lora/receive/sample.yaml @@ -6,3 +6,4 @@ sample: tests: sample.driver.lora.receive: platform_allow: 96b_wistrio + platform_allow: rak4631_nrf52840 diff --git a/samples/drivers/lora/send/sample.yaml b/samples/drivers/lora/send/sample.yaml index ff4bbac8117..aca6f1924f8 100644 --- a/samples/drivers/lora/send/sample.yaml +++ b/samples/drivers/lora/send/sample.yaml @@ -6,3 +6,4 @@ sample: tests: sample.driver.lora.send: platform_allow: 96b_wistrio + platform_allow: rak4631_nrf52840 diff --git a/tests/drivers/adc/adc_api/src/test_adc.c b/tests/drivers/adc/adc_api/src/test_adc.c index e71ef453200..9bd3c0f4022 100644 --- a/tests/drivers/adc/adc_api/src/test_adc.c +++ b/tests/drivers/adc/adc_api/src/test_adc.c @@ -35,6 +35,7 @@ #elif defined(CONFIG_BOARD_NRF21540DK_NRF52840) || \ defined(CONFIG_BOARD_NRF52DK_NRF52832) || \ defined(CONFIG_BOARD_NRF52840DK_NRF52840) || \ + defined(CONFIG_BOARD_RAK4631_NRF52840) || \ defined(CONFIG_BOARD_RAK5010_NRF52840) || \ defined(CONFIG_BOARD_NRF52840DONGLE_NRF52840) || \ defined(CONFIG_BOARD_NRF52840_BLIP) || \