diff --git a/CODEOWNERS b/CODEOWNERS index 55fdf2766bc..106f9d10a47 100644 --- a/CODEOWNERS +++ b/CODEOWNERS @@ -87,7 +87,6 @@ /boards/arm/arduino_due/ @ioannisg /boards/arm/blackpill_f401ce/ @coderkalyan /boards/arm/blackpill_f411ce/ @coderkalyan -/boards/arm/bmd_345_eval/ @Navin-Sankar /boards/arm/cc1352r1_launchxl/ @bwitherspoon /boards/arm/cc26x2r1_launchxl/ @bwitherspoon /boards/arm/cc3220sf_launchxl/ @vanti @@ -134,6 +133,7 @@ /boards/arm/stm32f3_disco/ @ydamigos /boards/arm/stm32*_eval/ @erwango @ABOSTM @FRASTM /boards/arm/rcar_h3ulcb/ @julien-massot +/boards/arm/ubx_bmd345eval_nrf52840/ @Navin-Sankar @brec-u-blox /boards/common/ @mbolivar-nordic /boards/deprecated.cmake @tejlmand /boards/nios2/ @nashif diff --git a/boards/arm/bmd_345_eval/Kconfig b/boards/arm/bmd_345_eval/Kconfig deleted file mode 100644 index 40ac9973286..00000000000 --- a/boards/arm/bmd_345_eval/Kconfig +++ /dev/null @@ -1,8 +0,0 @@ -# Copyright (c) 2021 Linumiz -# SPDX-License-Identifier: Apache-2.0 - -config BOARD_ENABLE_DCDC - bool "Enable DCDC mode" - select SOC_DCDC_NRF52X - default y - depends on BOARD_BMD_345_EVAL diff --git a/boards/arm/bmd_345_eval/Kconfig.board b/boards/arm/bmd_345_eval/Kconfig.board deleted file mode 100644 index 18daf441ae2..00000000000 --- a/boards/arm/bmd_345_eval/Kconfig.board +++ /dev/null @@ -1,6 +0,0 @@ -# Copyright (c) 2021 Linumiz -# SPDX-License-Identifier: Apache-2.0 - -config BOARD_BMD_345_EVAL - bool "BMD 345 EVAL" - depends on SOC_NRF52840_QIAA diff --git a/boards/arm/bmd_345_eval/board.c b/boards/arm/bmd_345_eval/board.c deleted file mode 100644 index de544c927f4..00000000000 --- a/boards/arm/bmd_345_eval/board.c +++ /dev/null @@ -1,42 +0,0 @@ -/* - * Copyright (c) 2021 Linumiz - * - * SPDX-License-Identifier: Apache-2.0 - */ - -#include -#include -#include - -#define MODE_PIN 36 /* P1.04 */ -#define A_SEL_PIN 34 /* P1.02 */ - -static int bmd_345_eval_pa_lna_init(const struct device *dev) -{ - ARG_UNUSED(dev); - - int ret; - const struct device *mode_asel_port_dev; - - mode_asel_port_dev = device_get_binding(DT_LABEL(DT_NODELABEL(gpio1))); - if (!mode_asel_port_dev) { - return -EIO; - } - - ret = gpio_pin_configure(mode_asel_port_dev, MODE_PIN, - GPIO_OUTPUT_INACTIVE); - if (ret < 0) { - return ret; - } - - ret = gpio_pin_configure(mode_asel_port_dev, A_SEL_PIN, - GPIO_OUTPUT_INACTIVE); - if (ret < 0) { - return ret; - } - - return 0; -} - -SYS_INIT(bmd_345_eval_pa_lna_init, POST_KERNEL, - CONFIG_KERNEL_INIT_PRIORITY_DEVICE); diff --git a/boards/arm/bmd_345_eval/board.cmake b/boards/arm/bmd_345_eval/board.cmake deleted file mode 100644 index 7238c7117d3..00000000000 --- a/boards/arm/bmd_345_eval/board.cmake +++ /dev/null @@ -1,6 +0,0 @@ -# SPDX-License-Identifier: Apache-2.0 - -board_runner_args(jlink "--device=nrf52" "--speed=4000") -board_runner_args(jlink "--target=nrf52840" "--frequency=4000000") -include(${ZEPHYR_BASE}/boards/common/nrfjprog.board.cmake) -include(${ZEPHYR_BASE}/boards/common/jlink.board.cmake) diff --git a/boards/arm/bmd_345_eval/doc/img/bmd_345_eval.png b/boards/arm/bmd_345_eval/doc/img/bmd_345_eval.png deleted file mode 100644 index 289c4156f17..00000000000 Binary files a/boards/arm/bmd_345_eval/doc/img/bmd_345_eval.png and /dev/null differ diff --git a/boards/arm/bmd_345_eval/doc/index.rst b/boards/arm/bmd_345_eval/doc/index.rst deleted file mode 100644 index 02734f12e29..00000000000 --- a/boards/arm/bmd_345_eval/doc/index.rst +++ /dev/null @@ -1,228 +0,0 @@ -.. _bmd_345_eval: - -BMD 345 EVAL -############ - -Overview -******** - -The BMD-345-EVAL hardware provides support for the u-blox BMD-345 Bluetooth 5.0 -with PA/LNA, based on the Nordic Semiconductor nRF52840 ARM Cortex-M4F CPU -and the following devices: - -* :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:`USB (Universal Serial Bus)` -* :abbr:`WDT (Watchdog Timer)` - -.. figure:: img/bmd_345_eval.png - :width: 442px - :align: center - :alt: BMD 345 EVAL - - BMD-345-EVAL (Credit: ublox AG) - -Hardware -******** - -BMD-345 on the BMD-345-EVAL board has an internal high frequency oscillator -at 32MHz and external slow frequency oscillator at 32.768kHz. - -Front End Module -================ - -BMD-345 utilizes the skyworks RFX2411 front end module (FEM) also known as PA/LNA. -The FEM provides higher output power and better sensitivity. - -Supported Features -================== - -The bmd_345_eval 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 | -+-----------+------------+----------------------+ -| RTC | on-chip | system clock | -+-----------+------------+----------------------+ -| RTT | Segger | console | -+-----------+------------+----------------------+ -| SPI(M/S) | on-chip | spi | -+-----------+------------+----------------------+ -| UART | on-chip | serial | -+-----------+------------+----------------------+ -| USB | on-chip | usb | -+-----------+------------+----------------------+ -| WDT | on-chip | watchdog | -+-----------+------------+----------------------+ - -Other hardware features are not supported by the Zephyr kernel. -See `bmd345eval_datasheet`_ datasheet for a complete list of -BMD 345 EVAL board hardware features. - -Connections and IOs -=================== - -LED ---- - -* LED1 (green) = P0.13 -* LED2 (green) = P0.14 -* LED3 (green) = P0.15 -* LED4 (green) = P0.16 - -Push buttons ------------- - -* BUTTON1 = SW1 = P0.11 -* BUTTON2 = SW2 = P0.12 -* BUTTON3 = SW3 = P0.24 -* BUTTON4 = SW4 = P0.25 -* BOOT = SW5 = boot/reset - -Front End Module ----------------- - -* TX_EN (PA Tx Enable) = P1.05 -* RX_EN (LNA Rx Enable) = P1.06 -* PA_MODE (FEM Mode) = P1.04 -* A-SEL (FEM Switch) = P1.02 - -Programming and Debugging -************************* - -Applications for the ``bmd_345_eval`` board configuration can be -built and flashed in the usual way (see :ref:`build_an_application` -and :ref:`application_run` for more details). - -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). - -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: bmd_345_eval - :goals: build flash - -Debugging -========= - -Refer to the :ref:`nordic_segger` page to learn about debugging Nordic boards with a -Segger IC. - - -Testing the LEDs and buttons in the BMD 345 EVAL -************************************************ - -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/bmd_345_eval/bmd_345_eval.dts`. - -Using UART1 -*********** - -The following approach can be used when an application needs to use -more than one UART for connecting peripheral devices: - -1. Add devicetree overlay file to the main directory of your application: - - .. code-block:: console - - $ cat bmd_345_eval.overlay - &uart1 { - compatible = "nordic,nrf-uarte"; - current-speed = <115200>; - status = "okay"; - tx-pin = <14>; - rx-pin = <16>; - }; - - In the overlay file above, pin P0.16 is used for RX and P0.14 is used for TX - -2. Use the UART1 as ``device_get_binding(DT_LABEL(DT_NODELABEL(uart1)))`` - -See :ref:`set-devicetree-overlays` for further details. - -Selecting the pins -================== -To select the pin numbers for tx-pin and rx-pin: - -.. code-block:: console - - tx-pin = - -Open the `nRF52840 Product Specification`_, chapter 7 'Hardware and Layout'. -In the table 7.1.1 'aQFN73 ball assignments' select the pins marked -'General purpose I/O'. Note that pins marked as 'low frequency I/O only' can only be used -in under-10KHz applications. They are not suitable for 115200 speed of UART. - -Translate the 'Pin' into number for devicetree by using the following formula:: - - pin_no = b\*32 + a - -where ``a`` and ``b`` are from the Pin value in the table (Pb.a). -For example, for P0.1, ``pin_no = 1`` and for P1.0, ``pin_no = 32``. - -References -********** - -.. target-notes:: - -.. _bmd345eval_datasheet: https://www.u-blox.com/sites/default/files/BMD-345_DataSheet_%28UBX-19039908%29_C1-Public.pdf -.. _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/arm/ubx_bmd345eval_nrf52840/CMakeLists.txt b/boards/arm/ubx_bmd345eval_nrf52840/CMakeLists.txt new file mode 100644 index 00000000000..a1a37ef53ae --- /dev/null +++ b/boards/arm/ubx_bmd345eval_nrf52840/CMakeLists.txt @@ -0,0 +1,7 @@ +# BMD-345-EVAL board configuration + +# Copyright (c) 2021 u-blox AG +# SPDX-License-Identifier: Apache-2.0 + +zephyr_library() +zephyr_library_sources(board.c) diff --git a/boards/arm/ubx_bmd345eval_nrf52840/Kconfig b/boards/arm/ubx_bmd345eval_nrf52840/Kconfig new file mode 100644 index 00000000000..5888e99eac4 --- /dev/null +++ b/boards/arm/ubx_bmd345eval_nrf52840/Kconfig @@ -0,0 +1,8 @@ +# BMD-345-EVAL board configuration + +# Copyright (c) 2021 u-blox AG +# Copyright (c) 2021 Linumiz +# SPDX-License-Identifier: Apache-2.0 + +# No special configuration is required. +# The BMD-345 does not include DCDC components diff --git a/boards/arm/ubx_bmd345eval_nrf52840/Kconfig.board b/boards/arm/ubx_bmd345eval_nrf52840/Kconfig.board new file mode 100644 index 00000000000..9f6b6acc0eb --- /dev/null +++ b/boards/arm/ubx_bmd345eval_nrf52840/Kconfig.board @@ -0,0 +1,9 @@ +# BMD-340-EVAL board configuration + +# Copyright (c) 2021 u-blox AG +# Copyright (c) 2021 Linumiz +# SPDX-License-Identifier: Apache-2.0 + +config BOARD_UBX_BMD345EVAL_NRF52840 + bool "u-blox BMD-345-EVAL" + depends on SOC_NRF52840_QIAA diff --git a/boards/arm/bmd_345_eval/Kconfig.defconfig b/boards/arm/ubx_bmd345eval_nrf52840/Kconfig.defconfig similarity index 53% rename from boards/arm/bmd_345_eval/Kconfig.defconfig rename to boards/arm/ubx_bmd345eval_nrf52840/Kconfig.defconfig index ed13ae2be26..9362471fe1e 100644 --- a/boards/arm/bmd_345_eval/Kconfig.defconfig +++ b/boards/arm/ubx_bmd345eval_nrf52840/Kconfig.defconfig @@ -1,12 +1,13 @@ -# EVK BMD 345 board configuration +# BMD-345-EVAL board configuration +# Copyright (c) 2021 u-blox AG # Copyright (c) 2021 Linumiz # SPDX-License-Identifier: Apache-2.0 -if BOARD_BMD_345_EVAL +if BOARD_UBX_BMD345EVAL_NRF52840 config BOARD - default "bmd_345_eval" + default "ubx_bmd345eval_nrf52840" if USB @@ -21,4 +22,4 @@ endif # USB config BT_CTLR default BT -endif # BOARD_BMD_345_EVAL +endif # BOARD_UBX_BMD345EVAL_NRF52840 diff --git a/boards/arm/ubx_bmd345eval_nrf52840/board.c b/boards/arm/ubx_bmd345eval_nrf52840/board.c new file mode 100644 index 00000000000..78e4e6613e7 --- /dev/null +++ b/boards/arm/ubx_bmd345eval_nrf52840/board.c @@ -0,0 +1,40 @@ +/* + * Copyright (c) 2021 u-blox AG + * Copyright (c) 2021 Linumiz + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#include +#include + +#define MODE_PIN 4 /* P1.04 */ +#define A_SEL_PIN 2 /* P1.02 */ + +static int bmd345_fem_init(const struct device *dev) +{ + ARG_UNUSED(dev); + + int ret; + const struct device *mode_asel_port_dev; + + mode_asel_port_dev = device_get_binding(DT_LABEL(DT_NODELABEL(gpio1))); + + if (!mode_asel_port_dev) { + return -ENODEV; + } + + ret = gpio_pin_configure(mode_asel_port_dev, MODE_PIN, GPIO_OUTPUT_LOW); + if (ret < 0) { + return ret; + } + + ret = gpio_pin_configure(mode_asel_port_dev, A_SEL_PIN, GPIO_OUTPUT_LOW); + if (ret < 0) { + return ret; + } + + return 0; +} + +SYS_INIT(bmd345_fem_init, APPLICATION, CONFIG_KERNEL_INIT_PRIORITY_DEFAULT); diff --git a/boards/arm/ubx_bmd345eval_nrf52840/board.cmake b/boards/arm/ubx_bmd345eval_nrf52840/board.cmake new file mode 100644 index 00000000000..52bde6c7382 --- /dev/null +++ b/boards/arm/ubx_bmd345eval_nrf52840/board.cmake @@ -0,0 +1,12 @@ +# BMD-345-EVAL 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=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/ubx_bmd345eval_nrf52840/doc/img/bmd-345-eval_features.png b/boards/arm/ubx_bmd345eval_nrf52840/doc/img/bmd-345-eval_features.png new file mode 100644 index 00000000000..463c31ab761 Binary files /dev/null and b/boards/arm/ubx_bmd345eval_nrf52840/doc/img/bmd-345-eval_features.png differ diff --git a/boards/arm/ubx_bmd345eval_nrf52840/doc/img/bmd-345-eval_pin_out.png b/boards/arm/ubx_bmd345eval_nrf52840/doc/img/bmd-345-eval_pin_out.png new file mode 100644 index 00000000000..6fef4df1e8e Binary files /dev/null and b/boards/arm/ubx_bmd345eval_nrf52840/doc/img/bmd-345-eval_pin_out.png differ diff --git a/boards/arm/ubx_bmd345eval_nrf52840/doc/index.rst b/boards/arm/ubx_bmd345eval_nrf52840/doc/index.rst new file mode 100644 index 00000000000..1bce88db8cc --- /dev/null +++ b/boards/arm/ubx_bmd345eval_nrf52840/doc/index.rst @@ -0,0 +1,530 @@ +.. _ubx_bmd345eval_nrf52840: + +u-blox EVK-BMD-34/38: BMD-345-EVAL +################################## + +Overview +******** + +The BMD-345-EVALhardware provides support for the u-blox BMD-345 +Bluetooth 5.0 modules, based on the Nordic Semiconductor nRF52840 +ARM Cortex-M4F CPU and Skyworks RFX2411 Front End Module (FEM), +also known as a Power Amplifier / Low Noise Amplifier (PA/LNA). +Both support the following devices: + +* :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 and 802.15.4) +* :abbr:`RTC (nRF RTC System Clock)` +* Segger RTT (RTT Console) +* :abbr:`SPI (Serial Peripheral Interface)` +* :abbr:`UART (Universal asynchronous receiver-transmitter)` +* :abbr:`USB (Universal Serial Bus)` +* :abbr:`WDT (Watchdog Timer)` + +.. figure:: img/bmd-345-eval_features.png + :width: 442px + :align: center + :alt: BMD 345 EVAL + + BMD-345-EVAL (Credit: ublox AG) + +More information about the BMD-345-EVAL and BMD-345 module can be +found at the `u-blox website`_. + + +Hardware +******** + +The BMD-345 on the BMD-345-EVAL contains an internal high-frequency +oscillator at 32MHz. There is also a low frequency (slow) +oscillator of 32.768kHz. The BMD-345 does not include the slow +crystal; however, the BMD-345-EVAL does. + +.. note:: + + When targeting a custom design without a slow crystal, be sure + to modify code to utilize the internal RC oscillator for the + slow clock. + +Front End Module +================ + +BMD-345 utilizes the Skyworks RFX2411 front end module (FEM). +The FEM provides higher output power and better sensitivity. + +FEM pin assignments +------------------- + ++-------------+--------------+----------+--------+----------+---------+ +| GPIO Number | Signal Name | Shutdown | Bypass | Transmit | Receive | ++=============+==============+==========+========+==========+=========+ +| P1.05 | TX_EN | Low | Low | High | Low | ++-------------+--------------+----------+--------+----------+---------+ +| P1.06 | RX_EN | Low | Low | Low | High | ++-------------+--------------+----------+--------+----------+---------+ +| P1.04 | MODE | Low | High | Low | Low | ++-------------+--------------+----------+--------+----------+---------+ +| P1.02 | A_SEL | Low | Low | Low | Low | ++-------------+--------------+----------+--------+----------+---------+ + +Supported Features +================== + +The BMD-345-EVAL 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, | +| | | IEEE 802.15.4 | ++-----------+------------+----------------------+ +| RTC | on-chip | system clock | ++-----------+------------+----------------------+ +| RTT | Segger | console | ++-----------+------------+----------------------+ +| SPI(M/S) | on-chip | spi | ++-----------+------------+----------------------+ +| UART | on-chip | serial | ++-----------+------------+----------------------+ +| USB | on-chip | usb | ++-----------+------------+----------------------+ +| WDT | on-chip | watchdog | ++-----------+------------+----------------------+ + +Other hardware features are not supported by the Zephyr kernel. +See the `u-blox website`_ for a complete list of BMD-345-EVAL +hardware features. + +Connections and IOs +=================== + +LED +--- + +* LED1 (red) = P0.13 +* LED2 (red) = P0.14 +* LED3 (green) = P0.15 +* LED4 (green) = P0.16 +* D5 (red) = OB LED 1 +* D6 (green) = OB LED 2 + +Push buttons +------------ + +* BUTTON1 = SW1 = P0.11 +* BUTTON2 = SW2 = P0.12 +* BUTTON3 = SW3 = P0.24 +* BUTTON4 = SW4 = P0.25 +* BOOT = SW5 = boot/reset + +External Connectors +------------------- + +.. figure:: img/bmd-345-eval_pin_out.png + :width: 819px + :align: center + :alt: BMD-345-EVAL pin-out + +.. note:: + The pin numbers noted below are referenced to + the pin 1 markings on the BMD-340-EVAL or + BMD-341-EVAL for each header + +J-Link Prog Connector (J2) + ++-------+--------------+ +| PIN # | Signal Name | ++=======+==============+ +| 1 | VDD | ++-------+--------------+ +| 2 | IMCU_TMSS | ++-------+--------------+ +| 3 | GND | ++-------+--------------+ +| 4 | IMCU_TCKS | ++-------+--------------+ +| 5 | V5V | ++-------+--------------+ +| 6 | IMCU_TDOS | ++-------+--------------+ +| 7 | Cut off | ++-------+--------------+ +| 8 | IMCU_TDIS | ++-------+--------------+ +| 9 | Cut off | ++-------+--------------+ +| 10 | IMCU_RESET | ++-------+--------------+ + +Debug OUT (J3) + ++-------+----------------+ +| PIN # | Signal Name | ++=======+================+ +| 1 | EXT_VTG | ++-------+----------------+ +| 2 | EXT_SWDIO | ++-------+----------------+ +| 3 | GND | ++-------+----------------+ +| 4 | EXT_SWDCLK | ++-------+----------------+ +| 5 | GND | ++-------+----------------+ +| 6 | EXT_SWO | ++-------+----------------+ +| 7 | N/C | ++-------+----------------+ +| 8 | N/C | ++-------+----------------+ +| 9 | EXT_GND_DETECT | ++-------+----------------+ +| 10 | EXT_RESET | ++-------+----------------+ + +Debug IN (J26) + ++-------+----------------+ +| PIN # | Signal Name | ++=======+================+ +| 1 | BMD-340_VCC | ++-------+----------------+ +| 2 | BMD-340_SWDIO | ++-------+----------------+ +| 3 | GND | ++-------+----------------+ +| 4 | BMD-340_SWDCLK | ++-------+----------------+ +| 5 | GND | ++-------+----------------+ +| 6 | BMD-340_SWO | ++-------+----------------+ +| 7 | N/C | ++-------+----------------+ +| 8 | N/C | ++-------+----------------+ +| 9 | GND | ++-------+----------------+ +| 10 | BMD-340_RESET | ++-------+----------------+ + +Auxiliary (J9) + ++-------+----------------+ +| PIN # | Signal Name | ++=======+================+ +| 1 | P0.10 / NFC2 | ++-------+----------------+ +| 2 | P0.09 / NFC1 | ++-------+----------------+ +| 3 | P0.08 | ++-------+----------------+ +| 4 | P0.07 | ++-------+----------------+ +| 5 | P0.06 | ++-------+----------------+ +| 6 | P0.05 / AIN3 | ++-------+----------------+ +| 7 | P0.01 / XL2 | ++-------+----------------+ +| 8 | P0.00 / XL1 | ++-------+----------------+ + +Auxiliary (J10) + ++-------+-------------------+ +| PIN # | Signal Name | ++=======+===================+ +| 1 | P0.11 / TRACED[2] | ++-------+-------------------+ +| 2 | P0.12 / TRACED[1] | ++-------+-------------------+ +| 3 | P0.13 | ++-------+-------------------+ +| 4 | P0.14 | ++-------+-------------------+ +| 5 | P0.15 | ++-------+-------------------+ +| 6 | P0.16 | ++-------+-------------------+ +| 7 | P0.17 / QSPI_CS | ++-------+-------------------+ +| 8 | P0.18 / RESET | ++-------+-------------------+ +| 9 | P0.19 / QSPI_CLK | ++-------+-------------------+ +| 10 | P0.20 / QSPI_D0 | ++-------+-------------------+ +| 11 | P0.21 / QSPI_D1 | ++-------+-------------------+ +| 12 | P0.22 / QSPI_D2 | ++-------+-------------------+ +| 13 | P0.23 / QSPI_D3 | ++-------+-------------------+ +| 14 | P0.24 | ++-------+-------------------+ +| 15 | P0.25 | ++-------+-------------------+ +| 16 | P1.00 / TRACED[0] | ++-------+-------------------+ +| 17 | P1.09 / TRACED[3] | ++-------+-------------------+ +| 18 | No connection | ++-------+-------------------+ + +Arduino Headers +--------------- + +Power (J5) + ++-------+--------------+-------------------------+ +| PIN # | Signal Name | BMD-345 Functions | ++=======+==============+=========================+ +| 1 | VSHLD | N/A | ++-------+--------------+-------------------------+ +| 2 | VSHLD | N/A | ++-------+--------------+-------------------------+ +| 3 | RESET | P0.18 / RESET | ++-------+--------------+-------------------------+ +| 4 | VSHLD | N/A | ++-------+--------------+-------------------------+ +| 5 | V5V | N/A | ++-------+--------------+-------------------------+ +| 6 | GND | N/A | ++-------+--------------+-------------------------+ +| 7 | GND | N/A | ++-------+--------------+-------------------------+ +| 8 | N/C | N/A | ++-------+--------------+-------------------------+ + +Analog in (J8) + ++-------+--------------+-------------------------+ +| PIN # | Signal Name | BMD-345 Functions | ++=======+==============+=========================+ +| 1 | A0 | P0.03 / AIN1 | ++-------+--------------+-------------------------+ +| 2 | A1 | P0.04 / AIN2 | ++-------+--------------+-------------------------+ +| 3 | A2 | P0.28 / AIN4 | ++-------+--------------+-------------------------+ +| 4 | A3 | P0.29 / AIN5 | ++-------+--------------+-------------------------+ +| 5 | A4 | P0.30 / AIN6 | ++-------+--------------+-------------------------+ +| 6 | A5 | P0.31 / AIN7 | ++-------+--------------+-------------------------+ + +Digital I/O (J7) + ++-------+--------------+-------------------------+ +| PIN # | Signal Name | BMD-345 Functions | ++=======+==============+=========================+ +| 1 | D7 | P1.08 | ++-------+--------------+-------------------------+ +| 2 | D6 | P1.07 | ++-------+--------------+-------------------------+ +| 3 | N/C | N/A | ++-------+--------------+-------------------------+ +| 4 | N/C | N/A | ++-------+--------------+-------------------------+ +| 5 | N/C | N/A | ++-------+--------------+-------------------------+ +| 6 | D2 | P1.03 | ++-------+--------------+-------------------------+ +| 7 | N/C | N/A | ++-------+--------------+-------------------------+ +| 8 | D0 (RX) | P1.01 | ++-------+--------------+-------------------------+ + +Digital I/O (J6) + ++-------+--------------+-------------------------+ +| PIN # | Signal Name | BMD-345 Functions | ++=======+==============+=========================+ +| 1 | SCL | P0.27 | ++-------+--------------+-------------------------+ +| 2 | SDA | P0.26 | ++-------+--------------+-------------------------+ +| 3 | AREF | P0.02 / AIN0 | ++-------+--------------+-------------------------+ +| 4 | GND | N/A | ++-------+--------------+-------------------------+ +| 5 | D13 (SCK) | P1.15 | ++-------+--------------+-------------------------+ +| 6 | D12 (MISO) | P1.14 | ++-------+--------------+-------------------------+ +| 7 | D11 (MOSI) | P1.13 | ++-------+--------------+-------------------------+ +| 8 | D10 (SS) | P1.12 | ++-------+--------------+-------------------------+ +| 9 | D9 | P1.11 | ++-------+--------------+-------------------------+ +| 10 | D8 | P1.10 | ++-------+--------------+-------------------------+ + +J11 + ++-------+--------------+-------------------------+ +| PIN # | Signal Name | BMD-345 Functions | ++=======+==============+=========================+ +| 1 | D12 (MISO) | P0.14 | ++-------+--------------+-------------------------+ +| 2 | V5V | N/A | ++-------+--------------+-------------------------+ +| 3 | D13 (SCK) | P0.15 | ++-------+--------------+-------------------------+ +| 4 | D11 (MOSI) | P0.13 | ++-------+--------------+-------------------------+ +| 5 | RESET | N/A | ++-------+--------------+-------------------------+ +| 6 | N/A | N/A | ++-------+--------------+-------------------------+ + +Programming and Debugging +************************* + +Applications for the BMD-345-EVAL board +configurations 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 +======== + +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). + +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 BMD-345-EVAL +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: ubx_bmd345eval_nrf52840 + :goals: build flash + +Debugging +========= + +Refer to the :ref:`nordic_segger` page to learn about debugging +u-blox boards with a Segger J-LINK-OB IC. + + +Testing the LEDs and buttons in the BMD-345-EVAL +***************************************************************** + +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_bmd340eval_nrf52840/ubx_bmd345eval_nrf52840.dts`. + +Using UART1 +*********** + +The following approach can be used when an application needs to use +more than one UART for connecting peripheral devices: + +1. Add device tree overlay file to the main directory of your + application: + + .. code-block:: console + + $ cat ubx_bmd345eval_nrf52840.overlay + &uart1 { + compatible = "nordic,nrf-uarte"; + current-speed = <115200>; + status = "okay"; + tx-pin = <14>; + rx-pin = <16>; + }; + + In the overlay file above, pin P0.16 is used for RX and P0.14 is + used for TX + +2. Use the UART1 as ``device_get_binding("UART_1")`` + +Overlay file naming +=================== + +The file has to be named ``.overlay`` and placed in the app +main directory to be picked up automatically by the device tree +compiler. + +Selecting the pins +================== +To select the pin numbers for tx-pin and rx-pin: + +.. code-block:: console + + tx-pin = + +Open the data sheet for the BMD-345 at the `u-blox website`_, Section 2 +'Pin definition'. In the table 3 select the pins marked 'GPIO'. +Note that pins marked as 'Standard drive, low frequency I/O only +(<10 kH' can only be used in under-10KHz applications. +They are not suitable for 115200 speed of UART. + +Translate 'Pin' into number for Device tree by using the following +formula:: + + pin_no = b\*32 + a + +where ``a`` and ``b`` are from the Pin value in the table (Pb.a). +For example, for P0.1, ``pin_no = 1`` and for P1.0, ``pin_no = 32``. + +.. note: + Pins are defined according to the "nRF52" pin number, not the module + pad number. + +References +********** + +.. target-notes:: + +.. _u-blox website: https://www.u-blox.com/en/product/bmd-34-series-open-cpu diff --git a/boards/arm/bmd_345_eval/bmd_345_eval.dts b/boards/arm/ubx_bmd345eval_nrf52840/ubx_bmd345eval_nrf52840.dts similarity index 67% rename from boards/arm/bmd_345_eval/bmd_345_eval.dts rename to boards/arm/ubx_bmd345eval_nrf52840/ubx_bmd345eval_nrf52840.dts index 8fca7629529..8ee5e6630c5 100644 --- a/boards/arm/bmd_345_eval/bmd_345_eval.dts +++ b/boards/arm/ubx_bmd345eval_nrf52840/ubx_bmd345eval_nrf52840.dts @@ -1,4 +1,6 @@ /* + * BMD-340-EVAL board configuration + * Copyright (c) 2021 u-blox AG * Copyright (c) 2021 Linumiz * * SPDX-License-Identifier: Apache-2.0 @@ -8,8 +10,8 @@ #include / { - model = "Ublox BMD 345 EVAL"; - compatible = "Ublox,BMD 345 EVAL"; + model = "u-blox BMD-345-EVAL EVK nRF52840"; + compatible = "u-blox, ubx_bmd345eval_nrf52840"; chosen { zephyr,console = &uart0; @@ -26,19 +28,19 @@ compatible = "gpio-leds"; led0: led_0 { gpios = <&gpio0 13 GPIO_ACTIVE_LOW>; - label = "User LD0"; + label = "Red LED 0"; }; led1: led_1 { gpios = <&gpio0 14 GPIO_ACTIVE_LOW>; - label = "User LD1"; + label = "Red LED 1"; }; led2: led_2 { gpios = <&gpio0 15 GPIO_ACTIVE_LOW>; - label = "User LD2"; + label = "Green LED 2"; }; led3: led_3 { gpios = <&gpio0 16 GPIO_ACTIVE_LOW>; - label = "User LD3"; + label = "Green LED 3"; }; }; @@ -49,22 +51,26 @@ }; }; - gpio_keys { + buttons { compatible = "gpio-keys"; button0: button_0 { - gpios = <&gpio0 11 (GPIO_PULL_UP | GPIO_ACTIVE_LOW)>; + gpios = <&gpio0 11 (GPIO_PULL_UP | \ + GPIO_ACTIVE_LOW)>; label = "Push button switch 0"; }; button1: button_1 { - gpios = <&gpio0 12 (GPIO_PULL_UP | GPIO_ACTIVE_LOW)>; + gpios = <&gpio0 12 (GPIO_PULL_UP | \ + GPIO_ACTIVE_LOW)>; label = "Push button switch 1"; }; button2: button_2 { - gpios = <&gpio0 24 (GPIO_PULL_UP | GPIO_ACTIVE_LOW)>; + gpios = <&gpio0 24 (GPIO_PULL_UP | \ + GPIO_ACTIVE_LOW)>; label = "Push button switch 2"; }; button3: button_3 { - gpios = <&gpio0 25 (GPIO_PULL_UP | GPIO_ACTIVE_LOW)>; + gpios = <&gpio0 25 (GPIO_PULL_UP | \ + GPIO_ACTIVE_LOW)>; label = "Push button switch 3"; }; }; @@ -74,35 +80,39 @@ #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 4 0>, /* A1 */ - <2 0 &gpio0 28 0>, /* A2 */ - <3 0 &gpio0 29 0>, /* A3 */ - <4 0 &gpio0 30 0>, /* A4 */ - <5 0 &gpio0 31 0>, /* A5 */ - <6 0 &gpio1 1 0>, /* D0 */ - <8 0 &gpio1 3 0>, /* D2 */ - <12 0 &gpio1 7 0>, /* D6 */ - <13 0 &gpio1 8 0>, /* D7 */ - <14 0 &gpio1 10 0>, /* D8 */ - <15 0 &gpio1 11 0>, /* D9 */ - <16 0 &gpio1 12 0>, /* D10 */ - <17 0 &gpio1 13 0>, /* D11 */ - <18 0 &gpio1 14 0>, /* D12 */ - <19 0 &gpio1 15 0>, /* D13 */ - <20 0 &gpio0 26 0>, /* D14 */ - <21 0 &gpio0 27 0>; /* D15 */ + gpio-map = <0 0 &gpio0 3 0>, /* A0 */ + <1 0 &gpio0 4 0>, /* A1 */ + <2 0 &gpio0 28 0>, /* A2 */ + <3 0 &gpio0 29 0>, /* A3 */ + <4 0 &gpio0 30 0>, /* A4 */ + <5 0 &gpio0 31 0>, /* A5 */ + <6 0 &gpio1 1 0>, /* D0 */ + /* not present */ /* D1 */ + <8 0 &gpio1 3 0>, /* D2 */ + /* not present */ /* D3 */ + /* not present */ /* D4 */ + /* not present */ /* D5 */ + <12 0 &gpio1 7 0>, /* D6 */ + <13 0 &gpio1 8 0>, /* D7 */ + <14 0 &gpio1 10 0>, /* D8 */ + <15 0 &gpio1 11 0>, /* D9 */ + <16 0 &gpio1 12 0>, /* D10 */ + <17 0 &gpio1 13 0>, /* D11 */ + <18 0 &gpio1 14 0>, /* D12 */ + <19 0 &gpio1 15 0>, /* D13 */ + <20 0 &gpio0 26 0>, /* D14 */ + <21 0 &gpio0 27 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.4 = AIN2 */ - <2 &adc 4>, /* A2 = P0.28 = AIN4 */ - <3 &adc 5>, /* A3 = P0.29 = AIN5 */ - <4 &adc 6>, /* A4 = P0.30 = AIN6 */ - <5 &adc 7>; /* A5 = P0.31 = AIN7 */ + io-channel-map = <0 &adc 1>, /* A0 = P0.3 = AIN1 */ + <1 &adc 2>, /* A1 = P0.4 = AIN2 */ + <2 &adc 4>, /* A2 = P0.28 = AIN4 */ + <3 &adc 5>, /* A3 = P0.29 = AIN5 */ + <4 &adc 6>, /* A4 = P0.30 = AIN6 */ + <5 &adc 7>; /* A5 = P0.31 = AIN7 */ }; /* These aliases are provided for compatibility with samples */ @@ -116,6 +126,7 @@ sw1 = &button1; sw2 = &button2; sw3 = &button3; + bootloader-led0 = &led0; }; }; @@ -135,12 +146,6 @@ status = "okay"; }; -&pwm0 { - status = "okay"; - ch0-pin = <13>; - ch0-inverted; -}; - &uart0 { compatible = "nordic,nrf-uarte"; status = "okay"; @@ -166,6 +171,12 @@ arduino_i2c: &i2c0 { scl-pin = <31>; }; +&pwm0 { + status = "okay"; + ch0-pin = <13>; + ch0-inverted; +}; + &spi0 { compatible = "nordic,nrf-spi"; /* Cannot be used together with i2c0. */ @@ -175,6 +186,14 @@ arduino_i2c: &i2c0 { miso-pin = <29>; }; +&spi1 { + compatible = "nordic,nrf-spi"; + status = "okay"; + sck-pin = <31>; + mosi-pin = <30>; + miso-pin = <40>; +}; + &spi2 { compatible = "nordic,nrf-spi"; status = "disabled"; @@ -183,6 +202,14 @@ arduino_i2c: &i2c0 { miso-pin = <21>; }; +arduino_spi: &spi3 { + status = "okay"; + sck-pin = <47>; + miso-pin = <46>; + mosi-pin = <45>; + cs-gpios = <&arduino_header 16 GPIO_ACTIVE_LOW>; /* D10 */ +}; + &qspi { status = "okay"; sck-pin = <19>; @@ -199,10 +226,14 @@ arduino_i2c: &i2c0 { label = "MX25R64"; jedec-id = [c2 28 17]; sfdp-bfp = [ - e5 20 f1 ff ff ff ff 03 44 eb 08 6b 08 3b 04 bb - ee ff ff ff ff ff 00 ff ff ff 00 ff 0c 20 0f 52 - 10 d8 00 ff 23 72 f5 00 82 ed 04 cc 44 83 68 44 - 30 b0 30 b0 f7 c4 d5 5c 00 be 29 ff f0 d0 ff ff + e5 20 f1 ff ff ff ff 03 + 44 eb 08 6b 08 3b 04 bb + ee ff ff ff ff ff 00 ff + ff ff 00 ff 0c 20 0f 52 + 10 d8 00 ff 23 72 f5 00 + 82 ed 04 cc 44 83 68 44 + 30 b0 30 b0 f7 c4 d5 5c + 00 be 29 ff f0 d0 ff ff ]; size = <67108864>; has-dpd; @@ -211,14 +242,6 @@ arduino_i2c: &i2c0 { }; }; -arduino_spi: &spi3 { - status = "okay"; - sck-pin = <47>; - miso-pin = <46>; - mosi-pin = <45>; - cs-gpios = <&arduino_header 16 GPIO_ACTIVE_LOW>; /* D10 */ -}; - &flash0 { partitions { diff --git a/boards/arm/bmd_345_eval/bmd_345_eval.yaml b/boards/arm/ubx_bmd345eval_nrf52840/ubx_bmd345eval_nrf52840.yaml similarity index 60% rename from boards/arm/bmd_345_eval/bmd_345_eval.yaml rename to boards/arm/ubx_bmd345eval_nrf52840/ubx_bmd345eval_nrf52840.yaml index f0f289d8f9d..d30e08e6f90 100644 --- a/boards/arm/bmd_345_eval/bmd_345_eval.yaml +++ b/boards/arm/ubx_bmd345eval_nrf52840/ubx_bmd345eval_nrf52840.yaml @@ -1,5 +1,5 @@ -identifier: bmd_345_eval -name: Bmd-345-Eval +identifier: ubx_bmd345eval_nrf52840 +name: BMD-345-EVAL type: mcu arch: arm ram: 256 @@ -10,12 +10,17 @@ toolchain: - xtools supported: - adc + - arduino_i2c + - arduino_spi - ble - counter - gpio - i2c + - ieee802154 - pwm - spi + - qspi - usb_cdc - usb_device - watchdog + - netif:openthread diff --git a/boards/arm/bmd_345_eval/bmd_345_eval_defconfig b/boards/arm/ubx_bmd345eval_nrf52840/ubx_bmd345eval_nrf52840_defconfig similarity index 83% rename from boards/arm/bmd_345_eval/bmd_345_eval_defconfig rename to boards/arm/ubx_bmd345eval_nrf52840/ubx_bmd345eval_nrf52840_defconfig index 779f99b7c49..ffd7ced78b4 100644 --- a/boards/arm/bmd_345_eval/bmd_345_eval_defconfig +++ b/boards/arm/ubx_bmd345eval_nrf52840/ubx_bmd345eval_nrf52840_defconfig @@ -1,8 +1,11 @@ +# BMD-345-EVAL board configuration + +# Copyright (c) 2021 u-blox AG # SPDX-License-Identifier: Apache-2.0 CONFIG_SOC_SERIES_NRF52X=y CONFIG_SOC_NRF52840_QIAA=y -CONFIG_BOARD_BMD_345_EVAL=y +CONFIG_BOARD_UBX_BMD345EVAL_NRF52840=y # Enable MPU CONFIG_ARM_MPU=y diff --git a/tests/drivers/adc/adc_api/src/test_adc.c b/tests/drivers/adc/adc_api/src/test_adc.c index c1b293d0527..913cce3a568 100644 --- a/tests/drivers/adc/adc_api/src/test_adc.c +++ b/tests/drivers/adc/adc_api/src/test_adc.c @@ -51,10 +51,10 @@ defined(CONFIG_BOARD_BT510) || \ defined(CONFIG_BOARD_PINNACLE_100_DVK) || \ defined(CONFIG_BOARD_ARDUINO_NANO_33_BLE) || \ - defined(CONFIG_BOARD_BMD_345_EVAL) || \ defined(CONFIG_BOARD_UBX_BMD300EVAL_NRF52832) || \ defined(CONFIG_BOARD_UBX_BMD330EVAL_NRF52810) || \ defined(CONFIG_BOARD_UBX_BMD340EVAL_NRF52840) || \ + defined(CONFIG_BOARD_UBX_BMD345EVAL_NRF52840) || \ defined(CONFIG_BOARD_UBX_BMD360EVAL_NRF52811) || \ defined(CONFIG_BOARD_UBX_BMD380EVAL_NRF52840) || \ defined(CONFIG_BOARD_UBX_EVKANNAB1_NRF52832) || \