1.. _reel_board:
2
3reel board
4##########
5
6Overview
7********
8
9`reel board`_ is a evaluation board based on the Nordic Semiconductor
10nRF52840 SoC. The board was developed by PHYTEC Messtechnik GmbH in
11cooperation with Zephyr Project for the Hackathon - "Get Connected".
12The board has a built-in debug adapter based on the DAPLink interface
13firmware and NXP MK20DX128VFM5 SoC.
14
15It is equipped with the Electrophoretic (electronic ink) Display (EPD),
16environmental (temperature, humidity, light, accelerometer) sensors, and
17Bluetooth connectivity making it easy to experiment and evaluate the
18Zephyr OS in these kinds of use cases:
19
20* battery powered sensor node
21* low-power, low-cost human-machine interface (HMI) for remote
22  control and environmental sensor monitoring
23* temperature and humidity monitor on your table
24* product, name or price tag
25* interactive badge for meetings and conferences
26
27The board provides support for the Nordic Semiconductor nRF52840 ARM |reg|
28Cortex |reg|-M4F SoC with an integrated 2.4 GHz transceiver supporting Bluetooth
29|reg| Low Energy and IEEE |reg| 802.15.4.
30
31The schematic can be found on the `reel board website`_.
32
33Hardware
34********
35
36On the front of the board are RGB-LED, ADPS9960 and HDC1010 sensors,
37and Electrophoretic Display.
38The RGB-LED is controlled by the nRF52840 via GPIO pins.
39Display is controlled by the nRF52840 via SPI and 3 GPIOs.
40
41On the back side of the board are all other components such as nRF52840,
42a circuit for the Debug Adapter, On/Off and power source switch, battery holder,
43buttons and the MMA8652FC (accelerometer) sensor.
44
45ADPS9960 is a Digital Proximity, Ambient Light, RGB and Gesture sensor.
46HDC1010 is a digital humidity and temperature sensor.
47MMA8652FC is a 12-bit Digital Accelerometer.
48All sensors are connected to the I2C bus and one GPIO pin each,
49which can be used as an interrupt source.
50
51.. figure:: img/reel_board.jpg
52     :align: center
53     :alt: reel board front
54
55     reel board front (Credit: PHYTEC)
56
57.. figure:: img/reel_board_descr_back.jpg
58     :align: center
59     :alt: reel board back
60
61     reel board back (Credit: PHYTEC)
62
63Since PCB version 1507.2, the nRF52840 SoC is not soldered directly to
64the board but integrated as a module on a NOTM.2 adapter.
65The wiring is identical for versions 1507.1 and 1507.2.
66
67.. _reel_board_display:
68
69Display
70=======
71
72GDEH0213B1 is the display with which the board was introduced
73in 2018. Unfortunately, this display has been discontinued.
74Currently the board is delivered with the display GDEH0213B72.
75It is expected that the display will be replaced over time
76due the short product lifecycle of this type of displays.
77The following table lists the displays used on the reel board.
78The label on the ribbon cable can help to distinguish the displays.
79According to the display type, the correct designation must be
80used for building an application.
81
82+--------------+--------------------+----------------------+-------------------+
83| Display      | Ribbon Cable Label | Controller / Driver  | Board Designation |
84+==============+====================+======================+===================+
85| Good Display | HINK-E0213         | SSD1673 /            | reel_board        |
86| GDEH0213B1   |                    | ssd16xx              |                   |
87+--------------+--------------------+----------------------+-------------------+
88| Good Display | HINK-E0213A22      | SSD1675A /           | reel_board_v2     |
89| GDEH0213B72  |                    | ssd16xx              |                   |
90+--------------+--------------------+----------------------+-------------------+
91
92Power supply
93============
94
95The board is optimized for low power applications and supports two
96power source configurations, battery and micro USB connector.
97
98The On/Off switch can choose which power source is used.
99
100reel board uses a TPS610981 boost converter to generate supply voltage
101for nRF52840 and peripherals (sensors and EPD).
102The boost converter has two modes:
103
104* Active mode - supply voltages for nRF52840 and peripherals are on
105* Low Power mode - only supply voltage for nRF52840 is on
106
107The mode is controlled by MODE pin (P1.00).
108
109.. note::
110   Actually there is no possibility to reduce energy consumption by the
111   Low Power mode. Both voltages are always on, see:
112   :zephyr_file:`boards/arm/reel_board/board.c`
113
114Supported Features
115==================
116
117The reel_board board configuration supports the following
118hardware features:
119
120+-----------+------------+----------------------+
121| Interface | Controller | Driver/Component     |
122+===========+============+======================+
123| NVIC      | on-chip    | nested vectored      |
124|           |            | interrupt controller |
125+-----------+------------+----------------------+
126| RTC       | on-chip    | system clock         |
127+-----------+------------+----------------------+
128| UART      | on-chip    | serial port          |
129+-----------+------------+----------------------+
130| I2C       | on-chip    | i2c                  |
131+-----------+------------+----------------------+
132| PWM       | on-chip    | pwm                  |
133+-----------+------------+----------------------+
134| SPI       | on-chip    | spi                  |
135+-----------+------------+----------------------+
136| GPIO      | on-chip    | gpio                 |
137+-----------+------------+----------------------+
138| FLASH     | on-chip    | flash                |
139+-----------+------------+----------------------+
140| RADIO     | on-chip    | Bluetooth            |
141+-----------+------------+----------------------+
142| SENSOR    | off-chip   | MMA8652FC polling:   |
143|           |            | ADPS9960 polling:    |
144|           |            | HDC1010 polling      |
145+-----------+------------+----------------------+
146
147Other hardware features have not been enabled yet for this board.
148
149Connections and IOs
150===================
151
152Port P0
153-------
154
155+-------+----------------------------+---------------------------+
156| Name  | Function                   | Usage                     |
157+=======+============================+===========================+
158| P0.00 | XL1                        | 32.768 kHz oscillator     |
159+-------+----------------------------+---------------------------+
160| P0.01 | XL2                        | 32.768 kHz oscillator     |
161+-------+----------------------------+---------------------------+
162| P0.02 | expansion connector pin 30 | None                      |
163+-------+----------------------------+---------------------------+
164| P0.03 | expansion connector pin 31 | None                      |
165+-------+----------------------------+---------------------------+
166| P0.04 | expansion connector pin 19 | None                      |
167+-------+----------------------------+---------------------------+
168| P0.05 | expansion connector pin 11 | None                      |
169+-------+----------------------------+---------------------------+
170| P0.06 | UART0_TX                   | UART Console over USB     |
171+-------+----------------------------+---------------------------+
172| P0.07 | Button                     | user button (S5)          |
173+-------+----------------------------+---------------------------+
174| P0.08 | UART0_RX                   | UART Console over USB     |
175+-------+----------------------------+---------------------------+
176| P0.09 | expansion connector pin 27 | None                      |
177+-------+----------------------------+---------------------------+
178| P0.10 | expansion connector pin 29 | None                      |
179+-------+----------------------------+---------------------------+
180| P0.11 | RGB LED (red)              | GPIO                      |
181+-------+----------------------------+---------------------------+
182| P0.12 | RGB LED (green)            | GPIO                      |
183+-------+----------------------------+---------------------------+
184| P0.13 | PWM LED | Buzzer           | GPIO                      |
185+-------+----------------------------+---------------------------+
186| P0.14 | EPD Busy output            | GPIO                      |
187+-------+----------------------------+---------------------------+
188| P0.15 | EPD Reset input            | GPIO                      |
189+-------+----------------------------+---------------------------+
190| P0.16 | EPD DC input               | GPIO                      |
191+-------+----------------------------+---------------------------+
192| P0.17 | EPD SPI3_CS                | SPI                       |
193+-------+----------------------------+---------------------------+
194| P0.18 | CPU Reset                  | Reset (S4)                |
195+-------+----------------------------+---------------------------+
196| P0.19 | EPD SPI3_CLK               | SPI                       |
197+-------+----------------------------+---------------------------+
198| P0.20 | EPD SPI3_MOSI              | SPI                       |
199+-------+----------------------------+---------------------------+
200| P0.21 | SPI3_MISO                  | SPI (not connected)       |
201+-------+----------------------------+---------------------------+
202| P0.22 | HDC1010 DRDYn              | GPIO                      |
203+-------+----------------------------+---------------------------+
204| P0.23 | APDS9960 INT               | GPIO                      |
205+-------+----------------------------+---------------------------+
206| P0.24 | MMA8652FC INT1             | GPIO                      |
207+-------+----------------------------+---------------------------+
208| P0.25 | MMA8652FC INT2             | GPIO                      |
209+-------+----------------------------+---------------------------+
210| P0.26 | I2C_0                      | I2C                       |
211+-------+----------------------------+---------------------------+
212| P0.27 | I2C_0                      | I2C                       |
213+-------+----------------------------+---------------------------+
214| P0.28 | expansion connector pin 3  | None                      |
215+-------+----------------------------+---------------------------+
216| P0.29 | expansion connector pin 52 | None                      |
217+-------+----------------------------+---------------------------+
218| P0.30 | expansion connector pin 1  | None                      |
219+-------+----------------------------+---------------------------+
220| P0.31 | expansion connector pin 37 | None                      |
221+-------+----------------------------+---------------------------+
222
223Port P1
224-------
225
226+-------+----------------------------+---------------------------+
227| Name  | Function                   | Usage                     |
228+=======+============================+===========================+
229| P1.00 | peripheral power on        | GPIO                      |
230+-------+----------------------------+---------------------------+
231| P1.01 | expansion connector pin 32 | None                      |
232+-------+----------------------------+---------------------------+
233| P1.02 | expansion connector pin 34 | None                      |
234+-------+----------------------------+---------------------------+
235| P1.03 | expansion connector pin 17 | None                      |
236+-------+----------------------------+---------------------------+
237| P1.04 | expansion connector pin 15 | None                      |
238+-------+----------------------------+---------------------------+
239| P1.05 | expansion connector pin 13 | None                      |
240+-------+----------------------------+---------------------------+
241| P1.06 | expansion connector pin 33 | None                      |
242+-------+----------------------------+---------------------------+
243| P1.07 | expansion connector pin 35 | None                      |
244+-------+----------------------------+---------------------------+
245| P1.08 | expansion connector pin 45 | None                      |
246+-------+----------------------------+---------------------------+
247| P1.09 | RGB LED (blue)             | GPIO                      |
248+-------+----------------------------+---------------------------+
249| P1.10 | expansion connector pin 47 | None                      |
250+-------+----------------------------+---------------------------+
251| P1.11 | expansion connector pin 49 | None                      |
252+-------+----------------------------+---------------------------+
253| P1.12 | expansion connector pin 51 | None                      |
254+-------+----------------------------+---------------------------+
255| P1.13 | expansion connector pin 36 | None                      |
256+-------+----------------------------+---------------------------+
257| P1.14 | expansion connector pin 48 | None                      |
258+-------+----------------------------+---------------------------+
259| P1.15 | expansion connector pin 50 | None                      |
260+-------+----------------------------+---------------------------+
261
262Solder Jumper and Testpoints
263============================
264
265There are several labeled solder jumpers on the board.
266These can be used to connect a logic analyzer to check the behavior of a
267driver or to measure the voltage of a signal.
268
269.. figure:: img/reel_board_tp.jpg
270     :align: center
271     :alt: reel board Jumper and Testpoints
272
273     reel board testpoints (Credit: PHYTEC)
274
275I2C bus and sensors testpoints
276------------------------------
277
278+-------+-----------------------+---------------------------+
279| Name  | Type                  | Usage                     |
280+=======+=======================+===========================+
281| J19   | closed solder jumper  | testpoint I2C SDA         |
282+-------+-----------------------+---------------------------+
283| J20   | closed solder jumper  | testpoint I2C SCL         |
284+-------+-----------------------+---------------------------+
285| J7    | closed solder jumper  | testpoint INT1 MMA8652FC  |
286+-------+-----------------------+---------------------------+
287| J24   | closed solder jumper  | testpoint INT2 MMA8652FC  |
288+-------+-----------------------+---------------------------+
289| J11   | closed solder jumper  | testpoint INT APDS9960    |
290+-------+-----------------------+---------------------------+
291| J12   | closed solder jumper  | testpoint DRDYn HDC1010   |
292+-------+-----------------------+---------------------------+
293
294EPD testpoints
295--------------
296
297+-------+-----------------------+---------------------------+
298| Name  | Type                  | Usage                     |
299+=======+=======================+===========================+
300| J13   | closed solder jumper  | testpoint EPD Busy        |
301+-------+-----------------------+---------------------------+
302| J14   | closed solder jumper  | testpoint EPD Reset       |
303+-------+-----------------------+---------------------------+
304| J15   | closed solder jumper  | testpoint EPD DC          |
305+-------+-----------------------+---------------------------+
306| J16   | closed solder jumper  | testpoint EPD SPI_CS      |
307+-------+-----------------------+---------------------------+
308| J17   | closed solder jumper  | testpoint EPD SPI_CLK     |
309+-------+-----------------------+---------------------------+
310| J18   | closed solder jumper  | testpoint EPD SPI_MOSI    |
311+-------+-----------------------+---------------------------+
312
313Power supply testpoint
314----------------------
315
316+-------+-----------------------+-------------------------------------------+
317| Name  | Type                  | Usage                                     |
318+=======+=======================+===========================================+
319| J21   | closed solder jumper  | testpoint peripheral voltage on/off       |
320+-------+-----------------------+-------------------------------------------+
321| TP11  | testpoint             | testpoint peripheral voltage              |
322+-------+-----------------------+-------------------------------------------+
323| TP12  | testpoint             | testpoint nRF52840 supply voltage VDD_nRF |
324+-------+-----------------------+-------------------------------------------+
325| TP13  | testpoint             | testpoint boost converter input voltage   |
326+-------+-----------------------+-------------------------------------------+
327
328Built-in Debug Adapter
329======================
330
331The debug adapter is based on the DAPLink interface firmware and
332NXP MK20DX128VFM5 SoC. The adapter is powered via a micro USB connector and
333is always on when the board is connected to the USB host.
334reel board can be flashed and debugged, powered either from battery or USB.
335If the Adapter is powered via USB, the Adapter circuit heats the board
336slightly and the temperature sensor can output values up to 1.5 degrees higher.
337
338.. figure:: img/reel_board_debug.jpg
339     :align: center
340     :alt: reel board Debug Adapter
341
342     reel board Debug Adapter overview (Credit: PHYTEC)
343
344Debug Adapter Firmware
345----------------------
346
347DAPLink firmware for the adapter can be found at `DAPLink reel board Firmware`_.
348To update the firmware (if necessary), the adapter must be started in bootloader
349mode. For this, the board should be disconnected from the USB host,
350the J22 should be closed (use tweezers for this) and the board reconnected to
351the USB host.
352
353Debug Adapter Jumper
354--------------------
355
356+-------+-----------------------+----------------------------------------------+
357| Name  | Type                  | Usage                                        |
358+=======+=======================+==============================================+
359| J3    | open solder jumper    | close to pass UART TX to external adapter    |
360+-------+-----------------------+----------------------------------------------+
361| J4    | open solder jumper    | close to pass UART RX to external adapter    |
362+-------+-----------------------+----------------------------------------------+
363| J22   | open solder jumper    | close to start adapter in bootloader mode    |
364+-------+-----------------------+----------------------------------------------+
365
366Adapter LEDs
367------------
368
369+-------+-----------------------+--------------------------------+
370| Name  | Type                  | Usage                          |
371+=======+=======================+================================+
372| D11   | green                 | flashes when adapter is active |
373+-------+-----------------------+--------------------------------+
374| D14   | red                   | reserved                       |
375+-------+-----------------------+--------------------------------+
376| D15   | yellow                | reserved                       |
377+-------+-----------------------+--------------------------------+
378
379Expansion Connector
380************************
381
382The expansion connector has the same dimensions and similar pinout
383as the BBC MicroBit edge connector. The expansion components that are
384designed especially for the reel board are called link boards.
385
386.. figure:: img/reel_board_excon.jpg
387     :align: center
388     :alt: reel board Expansion Connector
389
390     reel board Expansion Connector (Credit: PHYTEC)
391
392link board BASE
393===============
394
395link board BASE is a passive expansion board and allows other link boards or
396third party shields in Arduino UNO R3 format to be connected to the reel board.
397In addition, it includes a NOTM.2 connector and more powerful DCDC converter
398then reel board.
399
400.. figure:: img/rb_lb_shield.jpg
401     :align: center
402     :alt: reel board and link board BASE
403
404     reel board and link board BASE (Credit: PHYTEC)
405
406link board BASE can be used in combination with other link boards or
407third party shields in two ways:
408
409    As an adapter
410        reel board is plugged into the link board BASE. Both peripherals on
411        reel board and shields can be used as long as there is no conflict
412        between I2C devices. Care should be taken to provide enough power
413        to the complete circuit.
414
415    Stand-alone
416        NOTM.2 adapter is removed from the reel board and
417        connected to NOTM.2 connector on the link board BASE.
418        The wiring to the shield connector is identical to the
419        configuration above and no software modifications for the shield
420        are necessary.
421        Stand-alone configuration is more suitable for applications where
422        peripherals on the reel board are not used or in conflict,
423        power provided by the reel board is not enough,
424        or for prototypes in the field.
425
426.. figure:: img/link_board_base.jpg
427     :align: center
428     :alt: link board BASE
429
430     link board BASE (Credit: PHYTEC)
431
432Components on the link board BASE:
433
434    reel board Connector:
435        2x40 position edge connector.
436
437    Micro USB Connector:
438        USB can be used as power source. USB data lines are wired
439        to NOTM.2 connector.
440
441    NOTM.2 Connector:
442        Connector for NOTM.2 adapter. If the connector is used then
443        reel board should be removed from reel board connector.
444
445    SWD Connector X11:
446        Wired to NOTM.2 connector. A debug probe can
447        be connected to program or debug MCU in Stand-alone configuration.
448
449    Alternative Power Source X5 or X9:
450        Positive pin is closer to the + character. Nominal voltage is
451        3.3V, there is no protection against reverse polarity or overvoltage.
452        Use it with care.
453
454    Shield Connector:
455        Connector for link boards and third party shields in Arduino UNO R3
456        format. Only shields designed for 3.3V supply voltage are supported.
457
458Meaning of the Power Source Switch positions:
459
460    EXT
461        link board BASE is powered from Alternative Power Source Connector
462        X9 or X5.
463
464    USB
465        link board BASE is powered from from USB connector
466        (via DCDC converter).
467
468    RB
469        link board BASE is powered from reel board. The available power is
470        below 0.3W and depends on which source is used to power the reel board.
471
472Programming and Debugging
473*************************
474
475Applications for the ``reel_board`` board configuration can be
476built and flashed in the usual way (see :ref:`build_an_application`
477and :ref:`application_run` for more details).
478
479Flashing
480========
481
482If you use Linux, create a udev rule (as ``root``) to fix a permission issue
483when not using root for flashing.
484
485.. code-block:: console
486
487   # echo 'ATTR{idProduct}=="0204", ATTR{idVendor}=="0d28", MODE="0666", GROUP="plugdev"' > /etc/udev/rules.d/50-cmsis-dap.rules
488
489Reload the rules and replug the device.
490
491.. code-block:: console
492
493   $ sudo udevadm control --reload-rules
494
495Finally, unplug and plug the board again for the rules to take effect.
496
497Build and flash
498applications as usual (see :ref:`build_an_application` and
499:ref:`application_run` for more details).
500
501Here is an example for the :ref:`hello_world` application.
502
503First, run your favorite terminal program to listen for output.
504
505.. code-block:: console
506
507   $ minicom -D <tty_device> -b 115200
508
509Replace :code:`<tty_device>` with the port where the reel board
510can be found. For example, under Linux, :code:`/dev/ttyACM0`.
511
512Then build and flash the application in the usual way.
513
514.. zephyr-app-commands::
515   :zephyr-app: samples/hello_world
516   :board: reel_board
517   :goals: build flash
518
519.. note::
520   Please use reel_board_v2 to build a application for the board equipped with
521   the GDEH0213B72, see :ref:`reel_board_display`.
522
523.. zephyr-app-commands::
524   :zephyr-app: samples/hello_world
525   :board: reel_board_v2
526   :goals: build flash
527
528Debugging
529=========
530
531You can debug an application in the usual way.  Here is an example for the
532:ref:`hello_world` application.
533
534.. zephyr-app-commands::
535   :zephyr-app: samples/hello_world
536   :board: reel_board
537   :maybe-skip-config:
538   :goals: debug
539
540
541Testing the LEDs and buttons
542****************************
543
544There are 2 samples that allow you to test that the buttons (switches) and
545LEDs on the board are working properly with Zephyr:
546
547* :ref:`blinky-sample`
548* :ref:`button-sample`
549
550You can build and flash the examples to make sure Zephyr is running correctly on
551your board.
552
553References
554**********
555
556.. _reel board Website:
557   https://www.phytec.de/reelboard/
558
559.. target-notes::
560
561.. _reel board:
562   https://www.phytec.de/reelboard/
563
564.. _DAPLink reel board Firmware:
565   https://github.com/PHYTEC-Messtechnik-GmbH/DAPLink/tree/reel-board
566