1.. zephyr:board:: nucleo_g070rb
2
3Overview
4********
5The Nucleo G070RB board features an ARM Cortex-M0+ based STM32G070RB MCU
6with a wide range of connectivity support and configurations. Here are
7some highlights of the Nucleo G070RB board:
8
9- STM32 microcontroller in QFP64 package
10- Two types of extension resources:
11
12  - Arduino Uno V3 connectivity
13  - ST morpho extension pin headers for full access to all STM32 I/Os
14
15- On-board ST-LINK/V2-1 debugger/programmer with SWD connector
16- Flexible board power supply:
17
18   - USB VBUS or external source(3.3V, 5V, 7 - 12V)
19   - Power management access point
20
21- Three LEDs: USB communication (LD1), user LED (LD4), power LED (LD3)
22- Two push-buttons: USER and RESET
23
24More information about the board can be found at the `Nucleo G070RB website`_.
25
26Hardware
27********
28Nucleo G070RB provides the following hardware components:
29
30- STM32 microcontroller in LQFP64 package
31- Two types of extension resources:
32
33  - Arduino* Uno V3 connectivity
34  - ST morpho extension pin headers for full access to all STM32 I/Os
35
36- ARM* mbed*
37- On-board ST-LINK/V2-1 debugger/programmer with SWD connector:
38
39  - Selection-mode switch to use the kit as a standalone ST-LINK/V2-1
40
41- Flexible board power supply:
42
43  - USB VBUS or external source (3.3V, 5V, 7 - 12V)
44  - Power management access point
45
46- Three LEDs:
47
48  - USB communication (LD1), user LED (LD4), power LED (LD3)
49
50- Two push-buttons: USER and RESET
51- USB re-enumeration capability. Three different interfaces supported on USB:
52
53  - Virtual COM port
54  - Mass storage
55  - Debug port
56
57- Support of wide choice of Integrated Development Environments (IDEs) including:
58
59  - IAR
60  - ARM Keil
61  - GCC-based IDEs
62
63More information about STM32G070RB can be found here:
64
65- `G070RB on www.st.com`_
66
67Supported Features
68==================
69
70The Zephyr nucleo_g070rb board configuration supports the following hardware features:
71
72+-----------+------------+-------------------------------------+
73| Interface | Controller | Driver/Component                    |
74+===========+============+=====================================+
75| MPU       | on-chip    | arm memory protection unit          |
76+-----------+------------+-------------------------------------+
77| NVIC      | on-chip    | nested vector interrupt controller  |
78+-----------+------------+-------------------------------------+
79| UART      | on-chip    | serial port-polling;                |
80|           |            | serial port-interrupt               |
81+-----------+------------+-------------------------------------+
82| PINMUX    | on-chip    | pinmux                              |
83+-----------+------------+-------------------------------------+
84| GPIO      | on-chip    | gpio                                |
85+-----------+------------+-------------------------------------+
86| I2C       | on-chip    | i2c                                 |
87+-----------+------------+-------------------------------------+
88| SPI       | on-chip    | spi                                 |
89+-----------+------------+-------------------------------------+
90| CLOCK     | on-chip    | reset and clock control             |
91+-----------+------------+-------------------------------------+
92| FLASH     | on-chip    | flash memory                        |
93+-----------+------------+-------------------------------------+
94| COUNTER   | on-chip    | rtc                                 |
95+-----------+------------+-------------------------------------+
96| WATCHDOG  | on-chip    | independent watchdog                |
97+-----------+------------+-------------------------------------+
98| PWM       | on-chip    | pwm                                 |
99+-----------+------------+-------------------------------------+
100| ADC       | on-chip    | adc                                 |
101+-----------+------------+-------------------------------------+
102| die-temp  | on-chip    | die temperature sensor              |
103+-----------+------------+-------------------------------------+
104
105Other hardware features are not yet supported in this Zephyr port.
106
107The default configuration can be found in the defconfig file:
108:zephyr_file:`boards/st/nucleo_g070rb/nucleo_g070rb_defconfig`
109
110Connections and IOs
111===================
112
113Each of the GPIO pins can be configured by software as output (push-pull or open-drain), as
114input (with or without pull-up or pull-down), or as peripheral alternate function. Most of the
115GPIO pins are shared with digital or analog alternate functions. All GPIOs are high current
116capable except for analog inputs.
117
118Default Zephyr Peripheral Mapping:
119----------------------------------
120
121- UART_1 TX/RX : PC4/PC5
122- UART_2 TX/RX : PA2/PA3 (ST-Link Virtual Port Com)
123- I2C1 SCL/SDA : PB8/PB9 (Arduino I2C)
124- I2C2 SCL/SDA : PA11/PA12
125- SPI1 NSS/SCK/MISO/MOSI : PB0/PA5/PA6/PA7 (Arduino SPI)
126- SPI2 NSS/SCK/MISO/MOSI : PB12/PB13/PB14/PB15
127- USER_PB   : PC13
128- LD4       : PA5
129- PWM       : PA6
130- ADC1 IN0  : PA0
131- ADC1 IN1  : PA1
132- DAC1_OUT1 : PA4
133
134For more details please refer to `STM32 Nucleo-64 board User Manual`_.
135
136Programming and Debugging
137*************************
138
139Nucleo G070RB board includes an ST-LINK/V2-1 embedded debug tool interface.
140
141Applications for the ``nucleo_g070rb`` board configuration can be built and
142flashed in the usual way (see :ref:`build_an_application` and
143:ref:`application_run` for more details).
144
145Flashing
146========
147
148The board is configured to be flashed using west `STM32CubeProgrammer`_ runner,
149so its :ref:`installation <stm32cubeprog-flash-host-tools>` is required.
150
151Alternatively, OpenOCD, JLink, or pyOCD can also be used to flash the board using
152the ``--runner`` (or ``-r``) option:
153
154.. code-block:: console
155
156   $ west flash --runner openocd
157   $ west flash --runner jlink
158   $ west flash --runner pyocd
159
160Flashing an application to Nucleo G070RB
161----------------------------------------
162
163Here is an example for the :zephyr:code-sample:`blinky` application.
164
165.. zephyr-app-commands::
166   :zephyr-app: samples/basic/blinky
167   :board: nucleo_g070rb
168   :goals: build flash
169
170You will see the LED blinking every second.
171
172Debugging
173=========
174
175You can debug an application in the usual way.  Here is an example for the
176:zephyr:code-sample:`hello_world` application.
177
178.. zephyr-app-commands::
179   :zephyr-app: samples/hello_world
180   :board: nucleo_g070rb
181   :maybe-skip-config:
182   :goals: debug
183
184References
185**********
186
187.. target-notes::
188
189.. _Nucleo G070RB website:
190   https://www.st.com/en/evaluation-tools/nucleo-g070rb.html
191
192.. _STM32 Nucleo-64 board User Manual:
193   https://www.st.com/resource/en/user_manual/dm00452640.pdf
194
195.. _G070RB on www.st.com:
196   https://www.st.com/en/microcontrollers/stm32g070rb.html
197
198.. _STM32CubeProgrammer:
199   https://www.st.com/en/development-tools/stm32cubeprog.html
200