161 lines
5.4 KiB
ReStructuredText
161 lines
5.4 KiB
ReStructuredText
.. _96b_carbon_nrf51_board:
|
|
|
|
96Boards Carbon nRF51
|
|
#####################
|
|
|
|
.. note::
|
|
|
|
If you're looking to reprogram the main STMicro part, see
|
|
:ref:`96b_carbon_board`. Users should not use this configuration
|
|
unless they want to reprogram the secondary chip which provides
|
|
Bluetooth connectivity.
|
|
|
|
Overview
|
|
********
|
|
|
|
Zephyr applications use the 96b_carbon_nrf51 configuration to run on
|
|
the secondary nRF51822 chip on the 96Boards Carbon. This chip provides
|
|
Bluetooth functionality to the main STM32F401RET chip via SPI.
|
|
|
|
Hardware
|
|
********
|
|
|
|
The 96Boards Carbon nRF51 has two external oscillators. The frequency
|
|
of the slow clock is 32.768 kHz. The frequency of the main clock is 16
|
|
MHz.
|
|
|
|
See :ref:`96b_carbon_board` for other general information about the
|
|
board; that configuration is for the same physical board, just a
|
|
different chip.
|
|
|
|
Supported Features
|
|
==================
|
|
|
|
+-----------+------------+-------------------------------------+
|
|
| Interface | Controller | Driver/Component |
|
|
+===========+============+=====================================+
|
|
| NVIC | on-chip | nested vector interrupt controller |
|
|
+-----------+------------+-------------------------------------+
|
|
| RTC | on-chip | system clock |
|
|
+-----------+------------+-------------------------------------+
|
|
| UART | on-chip | serial port |
|
|
+-----------+------------+-------------------------------------+
|
|
| GPIO | on-chip | gpio |
|
|
+-----------+------------+-------------------------------------+
|
|
| FLASH | on-chip | flash |
|
|
+-----------+------------+-------------------------------------+
|
|
| SPIS | on-chip | SPI slave |
|
|
+-----------+------------+-------------------------------------+
|
|
| RADIO | on-chip | Bluetooth |
|
|
+-----------+------------+-------------------------------------+
|
|
|
|
The default configuration can be found in the defconfig file:
|
|
|
|
``boards/arm/96b_carbon_nrf51/96b_carbon_nrf51_defconfig``
|
|
|
|
Connections and IOs
|
|
===================
|
|
|
|
The SWD debug pins are broken out to an external header; all other
|
|
connected pins are to the main STM32F401RET chip.
|
|
|
|
.. _96b_carbon_nrf51_programming:
|
|
|
|
Programming and Debugging
|
|
*************************
|
|
|
|
Flashing
|
|
========
|
|
|
|
The 96Boards Carbon nRF51 can be flashed using an external SWD
|
|
debugger, via the debug header labeled "BLE" on the board's
|
|
silkscreen. The header is not populated; 0.1" male header must be
|
|
soldered on first.
|
|
|
|
.. figure:: img/96b-carbon-nrf51-debug.png
|
|
:align: center
|
|
:alt: 96Boards Carbon nRF51 Debug
|
|
|
|
96Boards Carbon nRF51 Debug
|
|
|
|
The following example assumes a Zephyr binary ``zephyr.elf`` will be
|
|
flashed to the board.
|
|
|
|
It uses the `Black Magic Debug Probe`_ as an SWD programmer, which can
|
|
be connected to the BLE debug header using flying leads and its 20 Pin
|
|
JTAG Adapter Board Kit. When plugged into your host PC, the Black
|
|
Magic Debug Probe enumerates as a USB serial device as documented on
|
|
its `Getting started page`_.
|
|
|
|
It also uses the GDB binary provided with the Zephyr SDK,
|
|
``arm-zephyr-eabi-gdb``. Other GDB binaries, such as the GDB from GCC
|
|
ARM Embedded, can be used as well.
|
|
|
|
.. code-block:: console
|
|
|
|
$ arm-zephyr-eabi-gdb -q zephyr.elf
|
|
(gdb) target extended-remote /dev/ttyACM0
|
|
Remote debugging using /dev/ttyACM0
|
|
(gdb) monitor swdp_scan
|
|
Target voltage: 3.3V
|
|
Available Targets:
|
|
No. Att Driver
|
|
1 nRF51
|
|
(gdb) attach 1
|
|
Attaching to Remote target
|
|
0xabcdef12 in ?? ()
|
|
(gdb) load
|
|
|
|
Debugging
|
|
=========
|
|
|
|
After you've flashed the chip, you can keep debugging using the same
|
|
GDB instance. To reattach, just follow the same steps above, but don't
|
|
run "load". You can then debug as usual with GDB. In particular, type
|
|
"run" at the GDB prompt to restart the program you've flashed.
|
|
|
|
As an aid to debugging, this board configuration directs a console
|
|
output to a currently unused pin connected to the STM32F401RET. Users
|
|
who are experienced in electronics rework can remove a resistor (R22)
|
|
on the board and attach a wire to the nRF51822's UART output.
|
|
|
|
.. _96b_carbon_nrf51_bluetooth:
|
|
|
|
Providing Bluetooth to 96b_carbon
|
|
*********************************
|
|
|
|
This 96b_carbon_nrf51 Zephyr configuration can be used to provide
|
|
Bluetooth functionality from the secondary nRF51822 chip to the
|
|
primary STM32F401RE chip on the :ref:`96b_carbon_board`.
|
|
|
|
To do this, build the ``samples/bluetooth/hci_spi/`` application
|
|
provided with Zephyr with ``BOARD=96b_carbon_nrf51``, then flash it to
|
|
the nRF51822 chip using the instructions :ref:`above
|
|
<96b_carbon_nrf51_programming>`. (For instructions on how to build a
|
|
Zephyr application, see :ref:`build_an_application`.)
|
|
|
|
.. warning::
|
|
|
|
Be sure to flash the hci_spi application to the nRF51822 chip and
|
|
not to the main STM32F401RET chip. While both chips are supported
|
|
by Zephyr, the hci_spi application providing Bluetooth support will
|
|
only run on the nRF51822 chip.
|
|
|
|
References
|
|
**********
|
|
|
|
- `Board documentation from 96Boards`_
|
|
- `nRF51822 information from Nordic Semiconductor`_
|
|
|
|
.. _Black Magic Debug Probe:
|
|
https://github.com/blacksphere/blackmagic/wiki
|
|
|
|
.. _Getting started page:
|
|
https://github.com/blacksphere/blackmagic/wiki/Getting-Started
|
|
|
|
.. _Board documentation from 96Boards:
|
|
http://www.96boards.org/product/carbon/
|
|
|
|
.. _nRF51822 information from Nordic Semiconductor:
|
|
https://www.nordicsemi.com/eng/Products/Bluetooth-low-energy/nRF51822
|