1.. _bl654_usb:
2
3Laird Connectivity BL654 USB (451-00004)
4########################################
5
6Overview
7********
8
9The BL654 USB adapter hardware (Laird Connectivity part 451-00004) provides
10support for the Laird Connectivity BL654 module powered by a Nordic
11Semiconductor nRF52840 ARM Cortex-M4F CPU.
12
13This USB adapter has the following features:
14
15* CLOCK
16* FLASH
17* :abbr:`GPIO (General Purpose Input Output)`
18* :abbr:`MPU (Memory Protection Unit)`
19* :abbr:`NVIC (Nested Vectored Interrupt Controller)`
20* :abbr:`PWM (Pulse Width Modulation)`
21* RADIO (Bluetooth Low Energy and 802.15.4)
22* :abbr:`USB (Universal Serial Bus)`
23* :abbr:`WDT (Watchdog Timer)`
24* :abbr:`RTC (nRF RTC System Clock)`
25
26.. figure:: img/bl654_usb.jpg
27     :align: center
28     :alt: BL654 USB adapter
29
30     BL654 USB Adapter
31
32.. figure:: img/bl654_usb_pcb.jpg
33     :align: center
34     :alt: 451-00004 Box Contents
35
36     BL654 USB Adapter PCB
37
38More information about the BL654 USB adapter can be found on the `BL654 USB
39Dongle Quick Start Guide`_. There is more information on the BL654 range on
40the `BL654 website`_.
41
42Hardware
43********
44
45Supported Features
46==================
47
48The BL654 USB board configuration supports the following
49hardware features:
50
51+-----------+------------+----------------------+
52| Interface | Controller | Driver/Component     |
53+===========+============+======================+
54| CLOCK     | on-chip    | clock_control        |
55+-----------+------------+----------------------+
56| FLASH     | on-chip    | flash                |
57+-----------+------------+----------------------+
58| GPIO      | on-chip    | gpio                 |
59+-----------+------------+----------------------+
60| MPU       | on-chip    | arch/arm             |
61+-----------+------------+----------------------+
62| NVIC      | on-chip    | arch/arm             |
63+-----------+------------+----------------------+
64| PWM       | on-chip    | pwm                  |
65+-----------+------------+----------------------+
66| RADIO     | on-chip    | Bluetooth,           |
67|           |            | ieee802154           |
68+-----------+------------+----------------------+
69| RTC       | on-chip    | system clock         |
70+-----------+------------+----------------------+
71| USB       | on-chip    | usb                  |
72+-----------+------------+----------------------+
73| WDT       | on-chip    | watchdog             |
74+-----------+------------+----------------------+
75
76Other hardware features have not been enabled yet for this board.
77See `BL654 website`_
78for a complete list of BL654 USB adapter hardware features.
79
80Connections and IOs
81===================
82
83LED
84---
85
86* LED1 (blue) = P0.13
87
88Push buttons
89------------
90
91* RESET = SW1 = nReset
92
93Serial Port
94===========
95
96Zephyr console output is available as follows:
97
98- using the USB connector, which may be used to make the console available on PC as
99  USB CDC class.
100
101Programming and Debugging
102*************************
103
104Applications for the ``bl654_usb`` board configuration can be
105built in the usual way (see :ref:`build_an_application` for more details). The
106``bl654_usb`` board cannot be used for debugging. The compatible BL654_DVK
107board can be used for development. Documentation can be found at the `BL654_DVK
108Zephyr site`_ and :zephyr_file:`boards/arm/bl654_dvk/doc/bl654_dvk.rst`
109
110Flashing
111========
112
113The board supports programming using the built-in bootloader.
114
115The board is factory-programmed with a Laird Connectivity variation of Nordic's
116open bootloader from Nordic's nRF5x SDK. With this option, you'll use
117Nordic's `nrfutil`_ program to create firmware packages supported by this
118bootloader and flash them to the device. Make sure ``nrfutil`` is installed
119before proceeding. These instructions were tested with version 6.1.0.
120
121#. With the adapter plugged in, reset the board into the bootloader by pressing
122   the RESET button.
123
124   The push button is in a pin-hole on the logo side of the USB adapter.
125
126   .. image:: img/bl654_usb_reset.jpg
127      :align: center
128      :alt: Location of RESET button
129
130   The blue LED should start a fade pattern, signalling the bootloader is
131   running.
132
133#. Compile a Zephyr application; we'll use :zephyr:code-sample:`blinky`.
134
135   .. zephyr-app-commands::
136      :app: zephyr/samples/basic/blinky
137      :board: bl654_usb
138      :goals: build
139
140#. Package the application for the bootloader using ``nrfutil``:
141
142   .. code-block:: console
143
144      nrfutil pkg generate --hw-version 52 --sd-req=0x00 \
145              --application build/zephyr/zephyr.hex \
146              --application-version 1 blinky.zip
147
148#. Flash it onto the board. Note :file:`/dev/ttyACM0` is for Linux; it will be
149   something like ``COMx`` on Windows, and something else on macOS.
150
151   .. code-block:: console
152
153      nrfutil dfu usb-serial -pkg blinky.zip -p /dev/ttyACM0
154
155   When this command exits, observe the blue LED on the board blinking.
156
157
158Testing Bluetooth on the BL654 USB
159***********************************
160Many of the Bluetooth examples will work on the BL654 USB.
161Try them out:
162
163* :ref:`ble_peripheral`
164* :ref:`bluetooth-eddystone-sample`
165* :ref:`bluetooth-ibeacon-sample`
166
167
168Testing the LED on the BL654 USB
169************************************************
170
171There is a sample that allows you to test that the LED on
172the board is working properly with Zephyr:
173
174* :zephyr:code-sample:`blinky`
175
176You can build and flash the example to make sure Zephyr is running correctly on
177your board. The LED definitions can be found in
178:zephyr_file:`boards/arm/bl654_usb/bl654_usb.dts`.
179
180
181References
182**********
183
184.. target-notes::
185
186.. _BL654 USB Dongle Quick Start Guide: https://www.lairdconnect.com/documentation/user-guide-bl654-usb-nordic-sdk-zephyr
187.. _BL654 website: https://connectivity.lairdtech.com/wireless-modules/bluetooth-modules/bluetooth-5-modules/bl654-series
188.. _J-Link Software and documentation pack: https://www.segger.com/jlink-software.html
189.. _Creating a secure bootloader image: https://www.lairdconnect.com/documentation/application-note-creating-secure-bootloader-image-bl654-usb
190.. _nrfutil: https://github.com/NordicSemiconductor/pc-nrfutil
191.. _BL654_DVK Zephyr site: https://docs.zephyrproject.org/latest/boards/arm/bl654_dvk/doc/bl654_dvk.html
192