From 55bb6dbdea6862fdbf882c52b4d45effc4374658 Mon Sep 17 00:00:00 2001 From: Michael Len Date: Wed, 26 Oct 2022 22:50:37 -0700 Subject: [PATCH 1/2] Added a board based on the NRF52 DK Created a self-contained board meant as a sample project on the NRF52 DK. Allows for a super easy starting point for any developer learning ZMK with the development kit. --- .../arm/nrf52dk_nrf52832/CMakeLists.txt | 3 + app/boards/arm/nrf52dk_nrf52832/Kconfig | 13 + app/boards/arm/nrf52dk_nrf52832/Kconfig.board | 11 + .../arm/nrf52dk_nrf52832/Kconfig.defconfig | 19 + app/boards/arm/nrf52dk_nrf52832/README.md | 21 + app/boards/arm/nrf52dk_nrf52832/board.cmake | 8 + .../nrf52dk_nrf52832/custom_runtime_code.c | 136 ++++++ .../doc/img/nrf52dk_nrf52832.jpg | Bin 0 -> 73127 bytes app/boards/arm/nrf52dk_nrf52832/doc/index.rst | 407 ++++++++++++++++++ .../arm/nrf52dk_nrf52832/nrf52dk_nrf52832.dts | 236 ++++++++++ .../nrf52dk_nrf52832/nrf52dk_nrf52832.keymap | 21 + .../nrf52dk_nrf52832/nrf52dk_nrf52832.yaml | 23 + .../nrf52dk_nrf52832.zmk.yaml | 12 + .../nrf52dk_nrf52832_defconfig | 44 ++ 14 files changed, 954 insertions(+) create mode 100644 app/boards/arm/nrf52dk_nrf52832/CMakeLists.txt create mode 100644 app/boards/arm/nrf52dk_nrf52832/Kconfig create mode 100644 app/boards/arm/nrf52dk_nrf52832/Kconfig.board create mode 100644 app/boards/arm/nrf52dk_nrf52832/Kconfig.defconfig create mode 100644 app/boards/arm/nrf52dk_nrf52832/README.md create mode 100644 app/boards/arm/nrf52dk_nrf52832/board.cmake create mode 100644 app/boards/arm/nrf52dk_nrf52832/custom_runtime_code.c create mode 100644 app/boards/arm/nrf52dk_nrf52832/doc/img/nrf52dk_nrf52832.jpg create mode 100644 app/boards/arm/nrf52dk_nrf52832/doc/index.rst create mode 100644 app/boards/arm/nrf52dk_nrf52832/nrf52dk_nrf52832.dts create mode 100644 app/boards/arm/nrf52dk_nrf52832/nrf52dk_nrf52832.keymap create mode 100644 app/boards/arm/nrf52dk_nrf52832/nrf52dk_nrf52832.yaml create mode 100644 app/boards/arm/nrf52dk_nrf52832/nrf52dk_nrf52832.zmk.yaml create mode 100644 app/boards/arm/nrf52dk_nrf52832/nrf52dk_nrf52832_defconfig diff --git a/app/boards/arm/nrf52dk_nrf52832/CMakeLists.txt b/app/boards/arm/nrf52dk_nrf52832/CMakeLists.txt new file mode 100644 index 00000000..8f3f3224 --- /dev/null +++ b/app/boards/arm/nrf52dk_nrf52832/CMakeLists.txt @@ -0,0 +1,3 @@ +zephyr_library() +zephyr_library_sources(custom_runtime_code.c) +zephyr_library_include_directories(${ZEPHYR_BASE}/drivers) \ No newline at end of file diff --git a/app/boards/arm/nrf52dk_nrf52832/Kconfig b/app/boards/arm/nrf52dk_nrf52832/Kconfig new file mode 100644 index 00000000..b8fd339e --- /dev/null +++ b/app/boards/arm/nrf52dk_nrf52832/Kconfig @@ -0,0 +1,13 @@ +# nRF52 DK board configuration + +/* + * Copyright (c) 2022 The ZMK Contributors + * + * SPDX-License-Identifier: MIT + */ + +config BOARD_ENABLE_DCDC + bool "Enable DCDC mode" + select SOC_DCDC_NRF52X + default y + depends on BOARD_NRF52DK_NRF52832 \ No newline at end of file diff --git a/app/boards/arm/nrf52dk_nrf52832/Kconfig.board b/app/boards/arm/nrf52dk_nrf52832/Kconfig.board new file mode 100644 index 00000000..9dae95fb --- /dev/null +++ b/app/boards/arm/nrf52dk_nrf52832/Kconfig.board @@ -0,0 +1,11 @@ +# nRF52 DK NRF52832 board configuration + +/* + * Copyright (c) 2022 The ZMK Contributors + * + * SPDX-License-Identifier: MIT + */ + +config BOARD_NRF52DK_NRF52832 + bool "nRF52 DK NRF52832" + depends on SOC_NRF52832_QFAA diff --git a/app/boards/arm/nrf52dk_nrf52832/Kconfig.defconfig b/app/boards/arm/nrf52dk_nrf52832/Kconfig.defconfig new file mode 100644 index 00000000..6d9451cd --- /dev/null +++ b/app/boards/arm/nrf52dk_nrf52832/Kconfig.defconfig @@ -0,0 +1,19 @@ +# nRF52 DK NRF52832 board configuration + +/* + * Copyright (c) 2022 The ZMK Contributors + * + * SPDX-License-Identifier: MIT + */ + +config BOARD + default "nrf52dk_nrf52832" + +config ZMK_KEYBOARD_NAME + default "nrf52dk_nrf52832" + +config BT_CTLR +default BT + +config ZMK_BLE + default y diff --git a/app/boards/arm/nrf52dk_nrf52832/README.md b/app/boards/arm/nrf52dk_nrf52832/README.md new file mode 100644 index 00000000..79b72aac --- /dev/null +++ b/app/boards/arm/nrf52dk_nrf52832/README.md @@ -0,0 +1,21 @@ +# NRF52 DK + +This is a sample self-contained ZMK board that is built for the ubiquitous NRF52 DK from Nordic. This can help jumpstart new board projects for people by showcasing various features on a known standard + +You should be able to use this by plugging in an NRF52 DK, turning on the power switch, then running the following from the zmk/app folder: + +```` +west build --pristine -b nrf52dk_nrf52832 && west flash +```` + +## Features + +- BLE functionality +- Simple keymap with modifiers +- Direct GPIO kscan +- Additonal custom code alongside ZMK runtime +- Connection LED + +## Other details + +Many of the files are from zmk/zepjhyr/boards/arm/nrf52dk_nrf52832, with additional modifications for ZMK. \ No newline at end of file diff --git a/app/boards/arm/nrf52dk_nrf52832/board.cmake b/app/boards/arm/nrf52dk_nrf52832/board.cmake new file mode 100644 index 00000000..f99446d1 --- /dev/null +++ b/app/boards/arm/nrf52dk_nrf52832/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=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/app/boards/arm/nrf52dk_nrf52832/custom_runtime_code.c b/app/boards/arm/nrf52dk_nrf52832/custom_runtime_code.c new file mode 100644 index 00000000..509847d2 --- /dev/null +++ b/app/boards/arm/nrf52dk_nrf52832/custom_runtime_code.c @@ -0,0 +1,136 @@ +/* + * Copyright (c) 2022 The ZMK Contributors + * + * SPDX-License-Identifier: MIT + */ + +#include +#include +#include +#include +#include +#include +#include + +#define SW0_NODE DT_ALIAS(sw0) +#if !DT_NODE_HAS_STATUS(SW0_NODE, okay) +#error "Unsupported board: sw0 devicetree alias is not defined" +#endif +static const struct gpio_dt_spec _button = GPIO_DT_SPEC_GET_OR(SW0_NODE, gpios, + {0}); +static const struct gpio_dt_spec led_one = GPIO_DT_SPEC_GET_OR(DT_ALIAS(led0), gpios, + {0}); +static const struct gpio_dt_spec led_two = GPIO_DT_SPEC_GET_OR(DT_ALIAS(led1), gpios, + {0}); + +/** + * Set up an LED DT Spec, default off + */ +void configure_led(struct gpio_dt_spec l) { + int ret = 0; + if (l.port && !device_is_ready(l.port)) { + printk("Error %d: LED device %s is not ready; ignoring it\n", + ret, l.port->name); + l.port = NULL; + } + if (l.port) { + ret = gpio_pin_configure_dt(&l, (GPIO_OUTPUT | GPIO_OUTPUT_LOW)); + if (ret != 0) { + printk("Error %d: failed to configure LED device %s pin %d\n", + ret, l.port->name, l.pin); + l.port = NULL; + } else { + printk("Set up LED at %s pin %d\n", l.port->name, l.pin); + } + } +} + +static struct gpio_callback button_cb_data; +/** + * When the button is pressed, toggle an LED + */ +void button_pressed(const struct device *dev, struct gpio_callback *cb, + uint32_t pins) +{ + printk("Button pressed at %" PRIu32 "\n", k_cycle_get_32()); + gpio_pin_toggle_dt(&led_two); +} + +/** + * Configure a button to be clickable and callback to a method + */ +void configure_button(struct gpio_dt_spec button) { + if (!device_is_ready(button.port)) { + printk("Error: button device %s is not ready\n", + button.port->name); + return; + } + + int ret = gpio_pin_configure_dt(&button, GPIO_INPUT); + if (ret != 0) { + printk("Error %d: failed to configure %s pin %d\n", + ret, button.port->name, button.pin); + return; + } + + ret = gpio_pin_interrupt_configure_dt(&button, + GPIO_INT_EDGE_TO_ACTIVE); + if (ret != 0) { + printk("Error %d: failed to configure interrupt on %s pin %d\n", + ret, button.port->name, button.pin); + return; + } + gpio_init_callback(&button_cb_data, button_pressed, BIT(button.pin)); + gpio_add_callback(button.port, &button_cb_data); + printk("Set up button at %s pin %d\n", button.port->name, button.pin); + +} + +/** + * When the BT is connected, turn on an LED + */ +static void connected(struct bt_conn *conn, uint8_t err) +{ + if (err) { + printk("Connection failed (err 0x%02x)\n", err); + int err = gpio_pin_set_dt(&led_one, 0); + if (err) { + printk("LED Set failed (err 0x%02x)\n", err); + } + } else { + int err = gpio_pin_set_dt(&led_one, 1); + if (err) { + printk("LED Set failed (err 0x%02x)\n", err); + } + printk("Connected\n"); + } +} + +/** + * When the BT is disconnected, turn o ff an LED + */ +static void disconnected(struct bt_conn *conn, uint8_t reason) +{ + int err = gpio_pin_set_dt(&led_one, 0); + if (err) { + printk("LED Set failed (err 0x%02x)\n", err); + } + printk("Disconnected (reason 0x%02x)\n", reason); +} + +// Configure the connection callbacks +BT_CONN_CB_DEFINE(conn_callbacks) = { + .connected = connected, + .disconnected = disconnected, +}; + + +static int init(const struct device *port) { + configure_led(led_one); + configure_led(led_two); + configure_button(_button); + + return 0; +} + +SYS_INIT(init, APPLICATION, CONFIG_APPLICATION_INIT_PRIORITY); diff --git a/app/boards/arm/nrf52dk_nrf52832/doc/img/nrf52dk_nrf52832.jpg b/app/boards/arm/nrf52dk_nrf52832/doc/img/nrf52dk_nrf52832.jpg new file mode 100644 index 0000000000000000000000000000000000000000..0e1af257dd08b08db1bc316c559f588f278892ce GIT binary patch literal 73127 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%0AN$YPe@X2(If;uE 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 literal 0 HcmV?d00001 diff --git a/app/boards/arm/nrf52dk_nrf52832/doc/index.rst b/app/boards/arm/nrf52dk_nrf52832/doc/index.rst new file mode 100644 index 00000000..ee5607d7 --- /dev/null +++ b/app/boards/arm/nrf52dk_nrf52832/doc/index.rst @@ -0,0 +1,407 @@ +.. _nrf52dk_nrf52832: + +nRF52 DK +######## + +Overview +******** + +The nRF52 Development Kit (PCA10040) hardware provides +support for the Nordic Semiconductor nRF52832 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:`WDT (Watchdog Timer)` + +.. figure:: img/nrf52dk_nrf52832.jpg + :width: 442px + :align: center + :alt: nRF52 DK + + nRF52 DK (Credit: Nordic Semiconductor) + +More information about the board can be found at the +`nRF52 DK website`_. The `Nordic Semiconductor Infocenter`_ +contains the processor's information and the datasheet. + + +Hardware +******** + +nRF52 DK has two external oscillators. The frequency of +the slow clock is 32.768 kHz. The frequency of the main clock +is 32 MHz. + +Supported Features +================== + +The nrf52dk_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 | ++-----------+------------+----------------------+ +| RTC | on-chip | system clock | ++-----------+------------+----------------------+ +| RTT | Segger | console | ++-----------+------------+----------------------+ +| SPI(M/S) | on-chip | spi | ++-----------+------------+----------------------+ +| UART | on-chip | serial | ++-----------+------------+----------------------+ +| WDT | on-chip | watchdog | ++-----------+------------+----------------------+ + +Other hardware features have not been enabled yet for this board. +See `nRF52 DK website`_ and `Nordic Semiconductor Infocenter`_ +for a complete list of nRF52 Development Kit board hardware features. + +Connections and IOs +=================== + +LED +--- + +* LED1 (green) = P0.17 +* LED2 (green) = P0.18 +* LED3 (green) = P0.19 +* LED4 (green) = P0.20 +* LD5 (red/green) = OB LED 1/2 + +Push buttons +------------ + +* BUTTON1 = SW1 = P0.13 +* BUTTON2 = SW2 = P0.14 +* BUTTON3 = SW3 = P0.15 +* BUTTON4 = SW4 = P0.16 +* BOOT = SW5 = boot/reset + +External Connectors +------------------- + +J-Link Prog Connector + ++-------+--------------+ +| 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 IN + ++-------+--------------+-------------------------+ +| PIN # | Signal Name | NRF52832 Functions | ++=======+==============+=========================+ +| 1 | VDD | N/A | ++-------+--------------+-------------------------+ +| 2 | SWDIO | SWDIO | ++-------+--------------+-------------------------+ +| 3 | GND | N/A | ++-------+--------------+-------------------------+ +| 4 | SWDCLK | SWDCLK | ++-------+--------------+-------------------------+ +| 5 | GND | N/A | ++-------+--------------+-------------------------+ +| 6 | P0.18 | P0.18 / TRACEDATA[0] / | +| | | SWO | ++-------+--------------+-------------------------+ +| 7 | Cut off | N/A | ++-------+--------------+-------------------------+ +| 8 | Cut off | N/A | ++-------+--------------+-------------------------+ +| 9 | GND | N/A | ++-------+--------------+-------------------------+ +| 10 | P0.21 | P0.21 / RESET | ++-------+--------------+-------------------------+ + +Debug OUT + ++-------+----------------+ +| PIN # | Signal Name | ++=======+================+ +| 1 | EXT_VTG | ++-------+----------------+ +| 2 | EXT_SWDIO | ++-------+----------------+ +| 3 | GND | ++-------+----------------+ +| 4 | EXT_SWDCLK | ++-------+----------------+ +| 5 | GND | ++-------+----------------+ +| 6 | EXT_SWO | +| | | ++-------+----------------+ +| 7 | Cut off | ++-------+----------------+ +| 8 | Cut off | ++-------+----------------+ +| 9 | EXT_GND_DETECT | ++-------+----------------+ +| 10 | EXT_RESET | ++-------+----------------+ + +Shield Debug and Current measurement + ++-------+----------------+ +| PIN # | Signal Name | ++=======+================+ +| 1 | VDD_nRF | ++-------+----------------+ +| 2 | VDD | ++-------+----------------+ +| 3 | SH_VTG | ++-------+----------------+ +| 4 | SH_SWDIO | ++-------+----------------+ +| 5 | SH_SWDCLK | ++-------+----------------+ +| 6 | SH_SWO | ++-------+----------------+ +| 7 | SH_RESET | ++-------+----------------+ +| 8 | SH_GND_DETECT | ++-------+----------------+ + +Auxiliary + ++-------+--------------+-------------------------+ +| PIN # | Signal Name | NRF52832 Functions | ++=======+==============+=========================+ +| 1 | P0.00 | P0.00 / XL1 | ++-------+--------------+-------------------------+ +| 2 | P0.01 | P0.01 / XL2 | ++-------+--------------+-------------------------+ +| 3 | P0.21 | P0.21 / RESET | ++-------+--------------+-------------------------+ +| 4 | P0.05_C | P0.05 / AIN3 | ++-------+--------------+-------------------------+ +| 5 | P0.06_C | P0.06 | ++-------+--------------+-------------------------+ +| 6 | P0.07_C | P0.07 | ++-------+--------------+-------------------------+ +| 7 | P0.08_C | P0.08 | ++-------+--------------+-------------------------+ +| 8 | P0.09 | P0.09 / NFC1 | ++-------+--------------+-------------------------+ +| 9 | P0.10 | P0.10 / NFC2 | ++-------+--------------+-------------------------+ + +Arduino Headers +--------------- + +P1/P7 Power + ++-------+--------------+-------------------------+ +| PIN # | Signal Name | NRF52832 Functions | ++=======+==============+=========================+ +| 1 | VDD | N/A | ++-------+--------------+-------------------------+ +| 2 | VDD | N/A | ++-------+--------------+-------------------------+ +| 3 | RESET | P0.21 / RESET | ++-------+--------------+-------------------------+ +| 4 | VDD | N/A | ++-------+--------------+-------------------------+ +| 5 | V5V | N/A | ++-------+--------------+-------------------------+ +| 6 | GND | N/A | ++-------+--------------+-------------------------+ +| 7 | GND | N/A | ++-------+--------------+-------------------------+ +| 8 | VIN | N/A | ++-------+--------------+-------------------------+ + +P2/P8 Analog in + ++-------+--------------+-------------------------+ +| PIN # | Signal Name | NRF52832 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 | ++-------+--------------+-------------------------+ + +P3/P9 Digital I/O + ++-------+--------------+-------------------------+ +| PIN # | Signal Name | NRF52832 Functions | ++=======+==============+=========================+ +| 1 | D0 (RX) | P0.11 | ++-------+--------------+-------------------------+ +| 2 | D1 (TX) | P0.12 | ++-------+--------------+-------------------------+ +| 3 | D2 | P0.13 | ++-------+--------------+-------------------------+ +| 4 | D3 | P0.14 / TRACEDATA[3] | ++-------+--------------+-------------------------+ +| 5 | D4 | P0.15 / TRACEDATA[2] | ++-------+--------------+-------------------------+ +| 6 | D5 | P0.16 / TRACEDATA[1] | ++-------+--------------+-------------------------+ +| 7 | D6 | P0.17 | ++-------+--------------+-------------------------+ +| 8 | D7 | P0.18 / TRACEDATA[3] / | +| | | SWO | ++-------+--------------+-------------------------+ + +P4/P10 Digital I/O + ++-------+--------------+-------------------------+ +| PIN # | Signal Name | NRF52832 Functions | ++=======+==============+=========================+ +| 1 | D8 | P0.19 | ++-------+--------------+-------------------------+ +| 2 | D9 | P0.20 / TRACECLK | ++-------+--------------+-------------------------+ +| 3 | D10 (SS) | P0.22 | ++-------+--------------+-------------------------+ +| 4 | D11 (MOSI) | P0.23 | ++-------+--------------+-------------------------+ +| 5 | D12 (MISO) | P0.24 | ++-------+--------------+-------------------------+ +| 6 | D13 (SCK) | P0.25 | ++-------+--------------+-------------------------+ +| 7 | GND | N/A | ++-------+--------------+-------------------------+ +| 8 | AREF | P0.02 / AIN0 | ++-------+--------------+-------------------------+ +| 9 | SDA | P0.26 | ++-------+--------------+-------------------------+ +| 10 | SCL | P0.27 | ++-------+--------------+-------------------------+ + +P5/P11 + ++-------+--------------+-------------------------+ +| PIN # | Signal Name | NRF52832 Functions | ++=======+==============+=========================+ +| 1 | D12 (MISO) | P0.24 | ++-------+--------------+-------------------------+ +| 2 | V5V | N/A | ++-------+--------------+-------------------------+ +| 3 | D13 (SCK) | P0.25 | ++-------+--------------+-------------------------+ +| 4 | D11 (MOSI) | P0.23 | ++-------+--------------+-------------------------+ +| 5 | RESET | N/A | ++-------+--------------+-------------------------+ +| 6 | N/A | N/A | ++-------+--------------+-------------------------+ + +Programming and Debugging +************************* + +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 nRF52 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: nrf52dk_nrf52832 + :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 nRF52 DK +******************************************** + +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/nrf52dk_nrf52832/nrf52dk_nrf52832.dts`. + +References +********** + +.. target-notes:: + +.. _nRF52 DK website: https://www.nordicsemi.com/Software-and-Tools/Development-Kits/nRF52-DK +.. _Nordic Semiconductor Infocenter: https://infocenter.nordicsemi.com diff --git a/app/boards/arm/nrf52dk_nrf52832/nrf52dk_nrf52832.dts b/app/boards/arm/nrf52dk_nrf52832/nrf52dk_nrf52832.dts new file mode 100644 index 00000000..440e2e80 --- /dev/null +++ b/app/boards/arm/nrf52dk_nrf52832/nrf52dk_nrf52832.dts @@ -0,0 +1,236 @@ +/* + * Copyright (c) 2022 The ZMK Contributors + * + * SPDX-License-Identifier: MIT + */ + +/dts-v1/; +#include + +/ { + model = "Nordic nRF52 DK NRF52832"; + compatible = "nordic,nrf52-dk-nrf52832"; + kscan0: kscan { + compatible = "zmk,kscan-gpio-direct"; + label = "KSCAN"; + + input-gpios + = <&gpio0 13 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)> + , <&gpio0 14 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)> + , <&gpio0 15 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)> + , <&gpio0 16 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)> + ; + }; + + 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; + zmk,kscan = &kscan0; + }; + + leds { + compatible = "gpio-leds"; + led0: led_0 { + gpios = <&gpio0 17 GPIO_ACTIVE_LOW>; + label = "Green LED 0"; + }; + led1: led_1 { + gpios = <&gpio0 18 GPIO_ACTIVE_LOW>; + label = "Green LED 1"; + }; + led2: led_2 { + gpios = <&gpio0 19 GPIO_ACTIVE_LOW>; + label = "Green LED 2"; + }; + led3: led_3 { + gpios = <&gpio0 20 GPIO_ACTIVE_LOW>; + label = "Green LED 3"; + }; + }; + + pwmleds { + compatible = "pwm-leds"; + pwm_led0: pwm_led_0 { + pwms = <&pwm0 17>; + }; + }; + + buttons { + compatible = "gpio-keys"; + button0: button_0 { + gpios = <&gpio0 13 (GPIO_PULL_UP | GPIO_ACTIVE_LOW)>; + label = "Push button switch 0"; + }; + button1: button_1 { + gpios = <&gpio0 14 (GPIO_PULL_UP | GPIO_ACTIVE_LOW)>; + label = "Push button switch 1"; + }; + button2: button_2 { + gpios = <&gpio0 15 (GPIO_PULL_UP | GPIO_ACTIVE_LOW)>; + label = "Push button switch 2"; + }; + button3: button_3 { + gpios = <&gpio0 16 (GPIO_PULL_UP | GPIO_ACTIVE_LOW)>; + label = "Push button switch 3"; + }; + }; + + 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 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 &gpio0 11 0>, /* D0 */ + <7 0 &gpio0 12 0>, /* D1 */ + <8 0 &gpio0 13 0>, /* D2 */ + <9 0 &gpio0 14 0>, /* D3 */ + <10 0 &gpio0 15 0>, /* D4 */ + <11 0 &gpio0 16 0>, /* D5 */ + <12 0 &gpio0 17 0>, /* D6 */ + <13 0 &gpio0 18 0>, /* D7 */ + <14 0 &gpio0 19 0>, /* D8 */ + <15 0 &gpio0 20 0>, /* D9 */ + <16 0 &gpio0 22 0>, /* D10 */ + <17 0 &gpio0 23 0>, /* D11 */ + <18 0 &gpio0 24 0>, /* D12 */ + <19 0 &gpio0 25 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 */ + }; + + /* These aliases are provided for compatibility with samples */ + aliases { + led0 = &led0; + led1 = &led1; + led2 = &led2; + led3 = &led3; + pwm-led0 = &pwm_led0; + sw0 = &button0; + sw1 = &button1; + sw2 = &button2; + sw3 = &button3; + bootloader-led0 = &led0; + }; +}; + +&adc { + status = "okay"; +}; + +&gpiote { + status = "okay"; +}; + +&gpio0 { + status = "okay"; +}; + +arduino_serial: &uart0 { + status = "okay"; + compatible = "nordic,nrf-uarte"; + current-speed = <115200>; + tx-pin = <6>; + rx-pin = <8>; + rts-pin = <5>; + cts-pin = <7>; +}; + +arduino_i2c: &i2c0 { + compatible = "nordic,nrf-twi"; + status = "okay"; + sda-pin = <26>; + scl-pin = <27>; +}; + +&i2c1 { + compatible = "nordic,nrf-twi"; + /* Cannot be used together with spi1. */ + /* status = "okay"; */ + sda-pin = <30>; + scl-pin = <31>; +}; + +&pwm0 { + status = "okay"; + ch0-pin = <17>; + ch0-inverted; +}; + +&spi0 { + compatible = "nordic,nrf-spi"; + /* Cannot be used together with i2c0. */ + /* status = "okay"; */ + sck-pin = <27>; + mosi-pin = <26>; + miso-pin = <28>; +}; + +&spi1 { + compatible = "nordic,nrf-spi"; + status = "okay"; + sck-pin = <31>; + mosi-pin = <30>; + miso-pin = <29>; +}; + +arduino_spi: &spi2 { + compatible = "nordic,nrf-spi"; + status = "okay"; + sck-pin = <25>; + mosi-pin = <23>; + miso-pin = <24>; + cs-gpios = <&arduino_header 16 GPIO_ACTIVE_LOW>; /* D10 */ +}; + +&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/app/boards/arm/nrf52dk_nrf52832/nrf52dk_nrf52832.keymap b/app/boards/arm/nrf52dk_nrf52832/nrf52dk_nrf52832.keymap new file mode 100644 index 00000000..0682ffa3 --- /dev/null +++ b/app/boards/arm/nrf52dk_nrf52832/nrf52dk_nrf52832.keymap @@ -0,0 +1,21 @@ +/* + * Copyright (c) 2022 The ZMK Contributors + * + * SPDX-License-Identifier: MIT + */ + +#include +#include +#include +#include + +/ { + keymap { + compatible = "zmk,keymap"; + default_layer { + bindings = < + &kp Z &kp M &kp K &kp LEFT_SHIFT + >; + }; + }; +}; diff --git a/app/boards/arm/nrf52dk_nrf52832/nrf52dk_nrf52832.yaml b/app/boards/arm/nrf52dk_nrf52832/nrf52dk_nrf52832.yaml new file mode 100644 index 00000000..8bae499c --- /dev/null +++ b/app/boards/arm/nrf52dk_nrf52832/nrf52dk_nrf52832.yaml @@ -0,0 +1,23 @@ +identifier: nrf52dk_nrf52832 +name: nRF52-DK-NRF52832 +type: mcu +arch: arm +toolchain: + - zephyr + - gnuarmemb + - xtools +ram: 64 +flash: 512 +supported: + - adc + - arduino_gpio + - arduino_i2c + - arduino_spi + - ble + - gpio + - counter + - nvs + - i2c + - pwm + - spi + - watchdog diff --git a/app/boards/arm/nrf52dk_nrf52832/nrf52dk_nrf52832.zmk.yaml b/app/boards/arm/nrf52dk_nrf52832/nrf52dk_nrf52832.zmk.yaml new file mode 100644 index 00000000..13e09cb7 --- /dev/null +++ b/app/boards/arm/nrf52dk_nrf52832/nrf52dk_nrf52832.zmk.yaml @@ -0,0 +1,12 @@ +file_format: "1" +id: nrf52dk_nrf52832 +name: nrf52dk_nrf52832 +type: board +arch: arm +features: + - keys + - ble +outputs: + - usb + - ble +url: https://nicekeyboards.com/nice-60 diff --git a/app/boards/arm/nrf52dk_nrf52832/nrf52dk_nrf52832_defconfig b/app/boards/arm/nrf52dk_nrf52832/nrf52dk_nrf52832_defconfig new file mode 100644 index 00000000..b66fcf8d --- /dev/null +++ b/app/boards/arm/nrf52dk_nrf52832/nrf52dk_nrf52832_defconfig @@ -0,0 +1,44 @@ +# SPDX-License-Identifier: Apache-2.0 + +CONFIG_SOC_SERIES_NRF52X=y +CONFIG_SOC_NRF52832_QFAA=y +CONFIG_BOARD_NRF52DK_NRF52832=y +# CONFIG_BUILD_OUTPUT_UF2=y + +CONFIG_ZMK_KSCAN_DIRECT_POLLING=y +CONFIG_ZMK_BLE=y +# CONFIG_LOG=y #causes crashes +# CONFIG_LOG_BACKEND_SHOW_COLOR=n +# CONFIG_ZMK_LOG_LEVEL_DBG=y +# CONFIG_DEBUG=y +CONFIG_MAIN_STACK_SIZE=2048 +CONFIG_ISR_STACK_SIZE=2048 + +# 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 + +CONFIG_MPU_ALLOW_FLASH_WRITE=y +CONFIG_NVS=y +CONFIG_SETTINGS_NVS=y +CONFIG_FLASH=y +CONFIG_FLASH_PAGE_LAYOUT=y +CONFIG_FLASH_MAP=y From a2b63dc8aede3d652170797ef7f7fd5a362b2834 Mon Sep 17 00:00:00 2001 From: lental Date: Thu, 27 Oct 2022 21:13:39 -0700 Subject: [PATCH 2/2] Remove unnecessary docs files from nrf52dk_nrf52832 --- .../doc/img/nrf52dk_nrf52832.jpg | Bin 73127 -> 0 bytes app/boards/arm/nrf52dk_nrf52832/doc/index.rst | 407 ------------------ 2 files changed, 407 deletions(-) delete mode 100644 app/boards/arm/nrf52dk_nrf52832/doc/img/nrf52dk_nrf52832.jpg delete mode 100644 app/boards/arm/nrf52dk_nrf52832/doc/index.rst diff --git a/app/boards/arm/nrf52dk_nrf52832/doc/img/nrf52dk_nrf52832.jpg b/app/boards/arm/nrf52dk_nrf52832/doc/img/nrf52dk_nrf52832.jpg deleted file mode 100644 index 0e1af257dd08b08db1bc316c559f588f278892ce..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 73127 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%0AN$YPe@X2(If;uE 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 diff --git a/app/boards/arm/nrf52dk_nrf52832/doc/index.rst b/app/boards/arm/nrf52dk_nrf52832/doc/index.rst deleted file mode 100644 index ee5607d7..00000000 --- a/app/boards/arm/nrf52dk_nrf52832/doc/index.rst +++ /dev/null @@ -1,407 +0,0 @@ -.. _nrf52dk_nrf52832: - -nRF52 DK -######## - -Overview -******** - -The nRF52 Development Kit (PCA10040) hardware provides -support for the Nordic Semiconductor nRF52832 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:`WDT (Watchdog Timer)` - -.. figure:: img/nrf52dk_nrf52832.jpg - :width: 442px - :align: center - :alt: nRF52 DK - - nRF52 DK (Credit: Nordic Semiconductor) - -More information about the board can be found at the -`nRF52 DK website`_. The `Nordic Semiconductor Infocenter`_ -contains the processor's information and the datasheet. - - -Hardware -******** - -nRF52 DK has two external oscillators. The frequency of -the slow clock is 32.768 kHz. The frequency of the main clock -is 32 MHz. - -Supported Features -================== - -The nrf52dk_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 | -+-----------+------------+----------------------+ -| RTC | on-chip | system clock | -+-----------+------------+----------------------+ -| RTT | Segger | console | -+-----------+------------+----------------------+ -| SPI(M/S) | on-chip | spi | -+-----------+------------+----------------------+ -| UART | on-chip | serial | -+-----------+------------+----------------------+ -| WDT | on-chip | watchdog | -+-----------+------------+----------------------+ - -Other hardware features have not been enabled yet for this board. -See `nRF52 DK website`_ and `Nordic Semiconductor Infocenter`_ -for a complete list of nRF52 Development Kit board hardware features. - -Connections and IOs -=================== - -LED ---- - -* LED1 (green) = P0.17 -* LED2 (green) = P0.18 -* LED3 (green) = P0.19 -* LED4 (green) = P0.20 -* LD5 (red/green) = OB LED 1/2 - -Push buttons ------------- - -* BUTTON1 = SW1 = P0.13 -* BUTTON2 = SW2 = P0.14 -* BUTTON3 = SW3 = P0.15 -* BUTTON4 = SW4 = P0.16 -* BOOT = SW5 = boot/reset - -External Connectors -------------------- - -J-Link Prog Connector - -+-------+--------------+ -| 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 IN - -+-------+--------------+-------------------------+ -| PIN # | Signal Name | NRF52832 Functions | -+=======+==============+=========================+ -| 1 | VDD | N/A | -+-------+--------------+-------------------------+ -| 2 | SWDIO | SWDIO | -+-------+--------------+-------------------------+ -| 3 | GND | N/A | -+-------+--------------+-------------------------+ -| 4 | SWDCLK | SWDCLK | -+-------+--------------+-------------------------+ -| 5 | GND | N/A | -+-------+--------------+-------------------------+ -| 6 | P0.18 | P0.18 / TRACEDATA[0] / | -| | | SWO | -+-------+--------------+-------------------------+ -| 7 | Cut off | N/A | -+-------+--------------+-------------------------+ -| 8 | Cut off | N/A | -+-------+--------------+-------------------------+ -| 9 | GND | N/A | -+-------+--------------+-------------------------+ -| 10 | P0.21 | P0.21 / RESET | -+-------+--------------+-------------------------+ - -Debug OUT - -+-------+----------------+ -| PIN # | Signal Name | -+=======+================+ -| 1 | EXT_VTG | -+-------+----------------+ -| 2 | EXT_SWDIO | -+-------+----------------+ -| 3 | GND | -+-------+----------------+ -| 4 | EXT_SWDCLK | -+-------+----------------+ -| 5 | GND | -+-------+----------------+ -| 6 | EXT_SWO | -| | | -+-------+----------------+ -| 7 | Cut off | -+-------+----------------+ -| 8 | Cut off | -+-------+----------------+ -| 9 | EXT_GND_DETECT | -+-------+----------------+ -| 10 | EXT_RESET | -+-------+----------------+ - -Shield Debug and Current measurement - -+-------+----------------+ -| PIN # | Signal Name | -+=======+================+ -| 1 | VDD_nRF | -+-------+----------------+ -| 2 | VDD | -+-------+----------------+ -| 3 | SH_VTG | -+-------+----------------+ -| 4 | SH_SWDIO | -+-------+----------------+ -| 5 | SH_SWDCLK | -+-------+----------------+ -| 6 | SH_SWO | -+-------+----------------+ -| 7 | SH_RESET | -+-------+----------------+ -| 8 | SH_GND_DETECT | -+-------+----------------+ - -Auxiliary - -+-------+--------------+-------------------------+ -| PIN # | Signal Name | NRF52832 Functions | -+=======+==============+=========================+ -| 1 | P0.00 | P0.00 / XL1 | -+-------+--------------+-------------------------+ -| 2 | P0.01 | P0.01 / XL2 | -+-------+--------------+-------------------------+ -| 3 | P0.21 | P0.21 / RESET | -+-------+--------------+-------------------------+ -| 4 | P0.05_C | P0.05 / AIN3 | -+-------+--------------+-------------------------+ -| 5 | P0.06_C | P0.06 | -+-------+--------------+-------------------------+ -| 6 | P0.07_C | P0.07 | -+-------+--------------+-------------------------+ -| 7 | P0.08_C | P0.08 | -+-------+--------------+-------------------------+ -| 8 | P0.09 | P0.09 / NFC1 | -+-------+--------------+-------------------------+ -| 9 | P0.10 | P0.10 / NFC2 | -+-------+--------------+-------------------------+ - -Arduino Headers ---------------- - -P1/P7 Power - -+-------+--------------+-------------------------+ -| PIN # | Signal Name | NRF52832 Functions | -+=======+==============+=========================+ -| 1 | VDD | N/A | -+-------+--------------+-------------------------+ -| 2 | VDD | N/A | -+-------+--------------+-------------------------+ -| 3 | RESET | P0.21 / RESET | -+-------+--------------+-------------------------+ -| 4 | VDD | N/A | -+-------+--------------+-------------------------+ -| 5 | V5V | N/A | -+-------+--------------+-------------------------+ -| 6 | GND | N/A | -+-------+--------------+-------------------------+ -| 7 | GND | N/A | -+-------+--------------+-------------------------+ -| 8 | VIN | N/A | -+-------+--------------+-------------------------+ - -P2/P8 Analog in - -+-------+--------------+-------------------------+ -| PIN # | Signal Name | NRF52832 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 | -+-------+--------------+-------------------------+ - -P3/P9 Digital I/O - -+-------+--------------+-------------------------+ -| PIN # | Signal Name | NRF52832 Functions | -+=======+==============+=========================+ -| 1 | D0 (RX) | P0.11 | -+-------+--------------+-------------------------+ -| 2 | D1 (TX) | P0.12 | -+-------+--------------+-------------------------+ -| 3 | D2 | P0.13 | -+-------+--------------+-------------------------+ -| 4 | D3 | P0.14 / TRACEDATA[3] | -+-------+--------------+-------------------------+ -| 5 | D4 | P0.15 / TRACEDATA[2] | -+-------+--------------+-------------------------+ -| 6 | D5 | P0.16 / TRACEDATA[1] | -+-------+--------------+-------------------------+ -| 7 | D6 | P0.17 | -+-------+--------------+-------------------------+ -| 8 | D7 | P0.18 / TRACEDATA[3] / | -| | | SWO | -+-------+--------------+-------------------------+ - -P4/P10 Digital I/O - -+-------+--------------+-------------------------+ -| PIN # | Signal Name | NRF52832 Functions | -+=======+==============+=========================+ -| 1 | D8 | P0.19 | -+-------+--------------+-------------------------+ -| 2 | D9 | P0.20 / TRACECLK | -+-------+--------------+-------------------------+ -| 3 | D10 (SS) | P0.22 | -+-------+--------------+-------------------------+ -| 4 | D11 (MOSI) | P0.23 | -+-------+--------------+-------------------------+ -| 5 | D12 (MISO) | P0.24 | -+-------+--------------+-------------------------+ -| 6 | D13 (SCK) | P0.25 | -+-------+--------------+-------------------------+ -| 7 | GND | N/A | -+-------+--------------+-------------------------+ -| 8 | AREF | P0.02 / AIN0 | -+-------+--------------+-------------------------+ -| 9 | SDA | P0.26 | -+-------+--------------+-------------------------+ -| 10 | SCL | P0.27 | -+-------+--------------+-------------------------+ - -P5/P11 - -+-------+--------------+-------------------------+ -| PIN # | Signal Name | NRF52832 Functions | -+=======+==============+=========================+ -| 1 | D12 (MISO) | P0.24 | -+-------+--------------+-------------------------+ -| 2 | V5V | N/A | -+-------+--------------+-------------------------+ -| 3 | D13 (SCK) | P0.25 | -+-------+--------------+-------------------------+ -| 4 | D11 (MOSI) | P0.23 | -+-------+--------------+-------------------------+ -| 5 | RESET | N/A | -+-------+--------------+-------------------------+ -| 6 | N/A | N/A | -+-------+--------------+-------------------------+ - -Programming and Debugging -************************* - -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 nRF52 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: nrf52dk_nrf52832 - :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 nRF52 DK -******************************************** - -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/nrf52dk_nrf52832/nrf52dk_nrf52832.dts`. - -References -********** - -.. target-notes:: - -.. _nRF52 DK website: https://www.nordicsemi.com/Software-and-Tools/Development-Kits/nRF52-DK -.. _Nordic Semiconductor Infocenter: https://infocenter.nordicsemi.com