diff --git a/boards/arm/ubx_evkninab1_nrf52832/Kconfig b/boards/arm/ubx_evkninab1_nrf52832/Kconfig new file mode 100644 index 00000000000..7e93db3f218 --- /dev/null +++ b/boards/arm/ubx_evkninab1_nrf52832/Kconfig @@ -0,0 +1,10 @@ +# u-blox EVK NINA-B1 board configuration +# +# Copyright (c) 2021 u-blox AG +# SPDX-License-Identifier: Apache-2.0 + +config BOARD_ENABLE_DCDC + bool "Enable DCDC mode" + select SOC_DCDC_NRF52X + default y + depends on BOARD_UBX_EVKNINAB1_NRF52832 diff --git a/boards/arm/ubx_evkninab1_nrf52832/Kconfig.board b/boards/arm/ubx_evkninab1_nrf52832/Kconfig.board new file mode 100644 index 00000000000..e97367f358c --- /dev/null +++ b/boards/arm/ubx_evkninab1_nrf52832/Kconfig.board @@ -0,0 +1,8 @@ +# u-blox EVK-NINA-B1 board configuration + +# Copyright (c) 2021 u-blox AG +# SPDX-License-Identifier: Apache-2.0 + +config BOARD_UBX_EVKNINAB1_NRF52832 + bool "u-blox EVK-NINA-B1" + depends on SOC_NRF52832_QFAA diff --git a/boards/arm/ubx_evkninab1_nrf52832/Kconfig.defconfig b/boards/arm/ubx_evkninab1_nrf52832/Kconfig.defconfig new file mode 100644 index 00000000000..408147057d1 --- /dev/null +++ b/boards/arm/ubx_evkninab1_nrf52832/Kconfig.defconfig @@ -0,0 +1,14 @@ +# u-blox EVK-NINA-B1 board configuration + +# Copyright (c) 2021 u-blox AG +# SPDX-License-Identifier: Apache-2.0 + +if BOARD_UBX_EVKNINAB1_NRF52832 + +config BOARD + default "ubx_evkninab1_nrf52832" + +config BT_CTLR + default BT + +endif # BOARD_UBX_EVKNINAB1_NRF52832 diff --git a/boards/arm/ubx_evkninab1_nrf52832/board.cmake b/boards/arm/ubx_evkninab1_nrf52832/board.cmake new file mode 100644 index 00000000000..056e8ca7e28 --- /dev/null +++ b/boards/arm/ubx_evkninab1_nrf52832/board.cmake @@ -0,0 +1,12 @@ +# u-blox EVK-NINA-B1 board configuration + +# Copyright (c) 2021 u-blox AG +# SPDX-License-Identifier: Apache-2.0 + +board_runner_args(nrfjprog "--nrf-family=NRF52") +board_runner_args(jlink "--device=nrf52" "--speed=4000") +board_runner_args(pyocd "--target=nrf52" "--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/ubx_evkninab1_nrf52832/doc/img/EVK-NINA-B1.jpg b/boards/arm/ubx_evkninab1_nrf52832/doc/img/EVK-NINA-B1.jpg new file mode 100644 index 00000000000..cbb8d9b2d96 Binary files /dev/null and b/boards/arm/ubx_evkninab1_nrf52832/doc/img/EVK-NINA-B1.jpg differ diff --git a/boards/arm/ubx_evkninab1_nrf52832/doc/index.rst b/boards/arm/ubx_evkninab1_nrf52832/doc/index.rst new file mode 100644 index 00000000000..ed41ad38125 --- /dev/null +++ b/boards/arm/ubx_evkninab1_nrf52832/doc/index.rst @@ -0,0 +1,178 @@ +.. _ubx_evkninab1_nrf52832: + +u-blox EVK NINA-B11x +#################### + +Overview +******** + +The u-blox NINA-B1 Evaluation Kit hardware is a Bluetooth +low energy module based on the Nordic Semiconductor nRF52832 +ARM Cortex-M4F CPU and has support for the following features: + +* :abbr:`ADC (Analog to Digital Converter)` +* CLOCK +* FLASH +* :abbr:`GPIO (General Purpose Input Output)` +* :abbr:`I2C (Inter-Integrated Circuit)` +* :abbr:`MPU (Memory Protection Unit)` +* :abbr:`NVIC (Nested Vectored Interrupt Controller)` +* :abbr:`PWM (Pulse Width Modulation)` +* RADIO (Bluetooth Low Energy) +* :abbr:`RTC (nRF RTC System Clock)` +* Segger RTT (RTT Console) +* :abbr:`SPI (Serial Peripheral Interface)` +* :abbr:`UART (Universal asynchronous receiver-transmitter)` +* :abbr:`WDT (Watchdog Timer)` + +.. figure:: img/EVK-NINA-B1.jpg + + EVK NINA-B1 + +More information about the NINA-B1 module and the EVK NINA-B1 +can be found at `NINA-B1 product page`_ and +`EVK-NINA-B1 product page`_. + +Supported Features +================== + +The ubx_evkninab1_nrf52832 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 Low Energy | ++-----------+------------+----------------------+ +| RTC | on-chip | system clock | ++-----------+------------+----------------------+ +| RTT | Segger | console | ++-----------+------------+----------------------+ +| SPI(M/S) | on-chip | spi | ++-----------+------------+----------------------+ +| UART | on-chip | serial | ++-----------+------------+----------------------+ +| WDT | on-chip | watchdog | ++-----------+------------+----------------------+ + +.. note:: + Most Arduino interfaces are supported. Arduino pins + D5 and D8 are not available, so arduino_gpio is + disabled. On the EVK-NINA-B1, these pins are + assigned to SWDIO and SWDCLK, respectively. + +Other hardware features are not supported by the Zephyr kernel. +See `EVK-NINA-B1 product page`_ and `NINA-B1 Data Sheet`_ +for a complete list of EVK NINA-B1 hardware features. + +Connections and IOs +=================== + +LED +--- + +* LED0 (red) = P0.08 +* LED1 (green) = P0.16 +* LED2 (blue) = P0.18 + +Push buttons +------------ + +* BUTTON1 = SW1 = P0.16 +* BUTTON2 = SW2 = P0.30 + + +General information on module pin numbering +------------------------------------------- + +The numbering of the pins on the module and EVK do not follow the GPIO +numbering on the nRF52832 SoC. Please see the `NINA-B1 Data Sheet`_ for +information on how to map NINA-B1 pins to the pin numbering on the +nRF52832 SoC. + +The reason for this is the u-blox module family concept where different +modules share the same pinout and can be interchanged, see +`NINA module family Nested design`_. + +Programming and Debugging +************************* + +Applications for the ``ubx_evkninab1_nrf52832`` board configuration can be +built and flashed in the usual way (see :ref:`build_an_application` +and :ref:`application_run` for more details); however, the standard +debugging targets are not currently available. + +Flashing +======== + +Build and flash applications as usual (see +:ref:`build_an_application` and :ref:`application_run` for more details). + +Here is an example for the :ref:`hello_world` application. + +Open a terminal program to the USB Serial Port installed when connecting +the board and listen for output. + +Settings: 115200, 8N1, no flow control. + +Then build and flash the application in the usual way. + +.. zephyr-app-commands:: + :zephyr-app: samples/hello_world + :board: ubx_evkninab1_nrf52832 + :goals: build flash + +Debugging +========= + +Refer to the :ref:`nordic_segger` page to learn about debugging boards +containing a Nordic Semiconductor chip with a Segger IC. + + +Testing the LEDs and buttons in the EVK NINA-B11x +************************************************* + +There are 2 samples that allow you to test that the buttons (switches) +and LEDs on the board are working properly with Zephyr: + +.. code-block:: console + + samples/basic/blinky + samples/basic/button + +You can build and flash the examples to make sure Zephyr is running +correctly on your board. The button and LED definitions can be found in +:zephyr_file:`boards/arm/ubx_evkninab1_nrf52832/ubx_evkninab1_nrf52832.dts`. + +Note that the buttons on the EVK-NINA-B1 are marked SW1 and SW2, which +are named sw0 and sw1 in the dts file. +Also note that the SW1 button and the green LED are connected on HW level. + + +References +********** + +.. target-notes:: + +.. _NINA-B1 product page: https://www.u-blox.com/en/product/nina-b1-series-open-cpu +.. _EVK-NINA-B1 product page: https://www.u-blox.com/en/product/evk-nina-b1 +.. _Nordic Semiconductor Infocenter: https://infocenter.nordicsemi.com +.. _J-Link Software and documentation pack: https://www.segger.com/jlink-software.html +.. _NINA-B1 Data Sheet: https://www.u-blox.com/en/docs/UBX-15019243 +.. _NINA module family Nested design: https://www.u-blox.com/en/docs/UBX-17065600 diff --git a/boards/arm/ubx_evkninab1_nrf52832/ubx_evkninab1_nrf52832.dts b/boards/arm/ubx_evkninab1_nrf52832/ubx_evkninab1_nrf52832.dts new file mode 100644 index 00000000000..4cee2da612b --- /dev/null +++ b/boards/arm/ubx_evkninab1_nrf52832/ubx_evkninab1_nrf52832.dts @@ -0,0 +1,224 @@ +/* + * Copyright (c) 2021 u-blox AG + * + * SPDX-License-Identifier: Apache-2.0 + */ + +/dts-v1/; +#include + +/ { + model = "u-blox EVK-NINA-B1 NRF52832"; + compatible = "u-blox,ubx_evkninab1_nrf52832"; + + 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: led_0 { + /* NINA-B1 GPIO_1 */ + gpios = <&gpio0 8 GPIO_ACTIVE_LOW>; + label = "Red LED"; + }; + led1: led_1 { + /* NINA-B1 GPIO_7 */ + gpios = <&gpio0 16 GPIO_ACTIVE_LOW>; + label = "Green LED"; + }; + led2: led_2 { + /*NINA-B1 GPIO_8 */ + gpios = <&gpio0 18 GPIO_ACTIVE_LOW>; + label = "Blue LED"; + }; + }; + + pwmleds { + compatible = "pwm-leds"; + red_pwm_led: red_pwm_led { + pwms = <&pwm0 8>; + }; + green_pwm_led: green_pwm_led { + pwms = <&pwm0 16>; + }; + blue_pwm_led: blue_pwm_led { + pwms = <&pwm0 18>; + }; + }; + + buttons { + compatible = "gpio-keys"; + button0: button_0 { + /* EVK-NINA-B1 SW1 button */ + gpios = <&gpio0 16 (GPIO_PULL_UP | \ + GPIO_ACTIVE_LOW)>; + label = "Push button switch SW1"; + }; + button1: button_1 { + /* EVK-NINA-B1 SW2 button */ + gpios = <&gpio0 30 (GPIO_PULL_UP | \ + GPIO_ACTIVE_LOW)>; + label = "Push button switch SW2"; + }; + }; + + arduino_header: connector { + compatible = "arduino-header-r3"; + #gpio-cells = <2>; + gpio-map-mask = <0xffffffff 0xffffffc0>; + gpio-map-pass-thru = <0 0x3f>; + gpio-map = <0 0 &gpio0 3 0>, /* A0 */ + <1 0 &gpio0 2 0>, /* A1 */ + <2 0 &gpio0 4 0>, /* A2 */ + <3 0 &gpio0 30 0>, /* A3 */ + <4 0 &gpio0 29 0>, /* A4 */ + <5 0 &gpio0 28 0>, /* A5 */ + <6 0 &gpio0 5 0>, /* D0 */ + <7 0 &gpio0 6 0>, /* D1 */ + <8 0 &gpio0 7 0>, /* D2 */ + <9 0 &gpio0 31 0>, /* D3 */ + <10 0 &gpio0 18 0>, /* D4 */ + /* 11 SWDIO */ /* D5 */ + <12 0 &gpio0 9 0>, /* D6 */ + <13 0 &gpio0 10 0>, /* D7 */ + /* 14 SWDCLK */ /* D8 */ + <15 0 &gpio0 8 0>, /* D9 */ + <16 0 &gpio0 11 0>, /* D10 */ + <17 0 &gpio0 13 0>, /* D11 */ + <18 0 &gpio0 12 0>, /* D12 */ + <19 0 &gpio0 14 0>, /* D13 */ + <20 0 &gpio0 2 0>, /* D14 */ + <21 0 &gpio0 3 0>; /* D15 */ + }; + + arduino_adc: analog-connector { + compatible = "arduino,uno-adc"; + #io-channel-cells = <1>; + io-channel-map = <0 &adc 1>, /* A0 = P0.3 = AIN1 */ + <1 &adc 2>, /* A1 = P0.2 = AIN2 */ + <2 &adc 4>, /* A2 = P0.4 = AIN4 */ + <3 &adc 5>, /* A3 = P0.30 = AIN5 */ + <4 &adc 6>, /* A4 = P0.29 = AIN6 */ + <5 &adc 7>; /* A5 = P0.28 = AIN7 */ + }; + + /* These aliases are provided for compatibility with samples */ + aliases { + led0 = &led0; + led1 = &led1; + led2 = &led2; + pwm-led0 = &red_pwm_led; + pwm-led1 = &green_pwm_led; + pwm-led2 = &blue_pwm_led; + red-pwm-led = &red_pwm_led; + green-pwm-led = &green_pwm_led; + blue-pwm-led = &blue_pwm_led; + sw0 = &button0; + sw1 = &button1; + }; +}; + +&adc { + status = "okay"; +}; + +&gpiote { + status = "okay"; +}; + +&gpio0 { + status = "okay"; +}; + + +&uart0 { + compatible = "nordic,nrf-uarte"; + status = "okay"; + current-speed = <115200>; + tx-pin = <6>; + rx-pin = <5>; + rts-pin = <31>; + cts-pin = <7>; +}; + +arduino_i2c: &i2c0 { + compatible = "nordic,nrf-twi"; + status = "okay"; + sda-pin = <2>; + scl-pin = <3>; +}; + +&i2c1 { + compatible = "nordic,nrf-twi"; + /* Cannot be used together with spi1. */ + /* status = "okay"; */ + sda-pin = <30>; + scl-pin = <29>; +}; + +&pwm0 { + status = "okay"; + ch0-pin = <16>; + ch0-inverted; + status = "okay"; + ch1-pin = <8>; + ch1-inverted; + status = "okay"; + ch2-pin = <18>; + ch2-inverted; +}; + +arduino_spi: &spi0 { + compatible = "nordic,nrf-spi"; + /* Cannot be use simultaneously with i2c0 */ + /* status = "okay"; */ + sck-pin = <14>; /* D13 */ + mosi-pin = <13>; /* D11 */ + miso-pin = <12>; /* D12 */ + cs-gpios = <&arduino_header 16 GPIO_ACTIVE_LOW>; /* D10 */ +}; + +&spi1 { + compatible = "nordic,nrf-spi"; + status = "okay"; + sck-pin = <28>; + mosi-pin = <29>; + miso-pin = <30>; +}; + +&flash0 { + partitions { + compatible = "fixed-partitions"; + #address-cells = <1>; + #size-cells = <1>; + + boot_partition: partition@0 { + label = "mcuboot"; + reg = <0x00000000 0xc000>; + }; + slot0_partition: partition@c000 { + label = "image-0"; + reg = <0x0000C000 0x32000>; + }; + slot1_partition: partition@3e000 { + label = "image-1"; + reg = <0x0003E000 0x32000>; + }; + scratch_partition: partition@70000 { + label = "image-scratch"; + reg = <0x00070000 0xa000>; + }; + storage_partition: partition@7a000 { + label = "storage"; + reg = <0x0007a000 0x00006000>; + }; + }; +}; diff --git a/boards/arm/ubx_evkninab1_nrf52832/ubx_evkninab1_nrf52832.yaml b/boards/arm/ubx_evkninab1_nrf52832/ubx_evkninab1_nrf52832.yaml new file mode 100644 index 00000000000..a5d025a7d1f --- /dev/null +++ b/boards/arm/ubx_evkninab1_nrf52832/ubx_evkninab1_nrf52832.yaml @@ -0,0 +1,21 @@ +identifier: ubx_evkninab1_nrf52832 +name: UBX-EVKNINAB1-NRF52832 +type: mcu +arch: arm +toolchain: + - zephyr + - gnuarmemb + - xtools +ram: 64 +flash: 512 +supported: + - adc + - arduino_i2c + - arduino_spi + - gpio + - counter + - nvs + - i2c + - pwm + - spi + - watchdog diff --git a/boards/arm/ubx_evkninab1_nrf52832/ubx_evkninab1_nrf52832_defconfig b/boards/arm/ubx_evkninab1_nrf52832/ubx_evkninab1_nrf52832_defconfig new file mode 100644 index 00000000000..253a235adff --- /dev/null +++ b/boards/arm/ubx_evkninab1_nrf52832/ubx_evkninab1_nrf52832_defconfig @@ -0,0 +1,30 @@ +# u-blox EVK-NINA-B1 board configuration + +# Copyright (c) 2021 u-blox AG +# SPDX-License-Identifier: Apache-2.0 + +CONFIG_SOC_SERIES_NRF52X=y +CONFIG_SOC_NRF52832_QFAA=y +CONFIG_BOARD_UBX_EVKNINAB1_NRF52832=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/tests/drivers/adc/adc_api/src/test_adc.c b/tests/drivers/adc/adc_api/src/test_adc.c index e64168a3de7..26ca28686c5 100644 --- a/tests/drivers/adc/adc_api/src/test_adc.c +++ b/tests/drivers/adc/adc_api/src/test_adc.c @@ -57,6 +57,7 @@ defined(CONFIG_BOARD_UBX_BMD360EVAL_NRF52811) || \ defined(CONFIG_BOARD_UBX_BMD380EVAL_NRF52840) || \ defined(CONFIG_BOARD_UBX_EVKANNAB1_NRF52832) || \ + defined(CONFIG_BOARD_UBX_EVKNINAB1_NRF52832) || \ defined(CONFIG_BOARD_UBX_EVKNINAB3_NRF52840) #include