zephyr/boards/arm/blackpill_f401cc/doc/index.rst

175 lines
5.5 KiB
ReStructuredText
Raw Normal View History

.. _blackpill_f401cc:
WeAct Studio Black Pill V1.2
############################
Overview
********
The WeAct Black Pill V1.2 Board is an extremely low cost and bare-bones
development board featuring the STM32F401CC, see `STM32F401CC website`_.
This is the 48-pin variant of the STM32F401x series,
see `STM32F401x reference manual`_. More info about the board available
`here <stm32-base-board-page_>`_ and on `WeAct Github`_.
.. image:: img/blackpill-v3.jpg
:align: center
:alt: Black Pill V3.0+
Hardware
********
The STM32F401CC based Black Pill V3.0+ Board provides the following
hardware components:
- STM32F401CCU6 in UFQFPN48 package
- ARM |reg| 32-bit Cortex |reg| -M4 CPU with FPU
- 84 MHz max CPU frequency
- VDD from 1.7 V to 3.6 V
- 256 KB Flash
- 64 KB SRAM
- GPIO with external interrupt capability
- 1x12-bit, 2.4 MSPS ADC with 16 channels
- DMA Controller
- Up to 11 Timers (six 16-bit, two 32-bit, two watchdog timers and a SysTick timer)
- USART/UART (3)
- I2C (3)
- SPI/I2S (5)
- SDIO
- USB 2.0 full-speed device/host/OTG controller with on-chip PHY
- CRC calculation unit
- 96-bit unique ID
- RTC
Supported Features
==================
The Zephyr blackpill_f401ce board configuration supports the following
hardware features:
+------------+------------+-------------------------------------+
| Interface | Controller | Driver/Component |
+============+============+=====================================+
| NVIC | on-chip | nested vector interrupt controller |
+------------+------------+-------------------------------------+
| SYSTICK | on-chip | system clock |
+------------+------------+-------------------------------------+
| UART | on-chip | serial port |
+------------+------------+-------------------------------------+
| GPIO | on-chip | gpio |
+------------+------------+-------------------------------------+
| PINMUX | on-chip | pinmux |
+------------+------------+-------------------------------------+
| FLASH | on-chip | flash |
+------------+------------+-------------------------------------+
| SPI | on-chip | spi |
+------------+------------+-------------------------------------+
| I2C | on-chip | i2c |
+------------+------------+-------------------------------------+
| ADC | on-chip | ADC Controller |
+------------+------------+-------------------------------------+
| USB OTG FS | on-chip | USB device |
+------------+------------+-------------------------------------+
The default configuration can be found in the defconfig file:
``boards/arm/blackpill_f401ce/blackpill_f401ce_defconfig``
Pin Mapping
===========
Available pins:
---------------
boards: convert images to JPEG and reduce image size The boards folder uses ~142.8 MB, being the largest in the repository. This is due mostly to board images, which are in most cases not optimized for web content. This patch tries to address this problem by converting all pictures to JPEG (quality 75) and by adjusting its size up to 750 px (the width of the documentation content). Images that specified a fixed width in rst files are converted down to that value instead. With this patch, folder goes down to ~53.5 MB from 142.8 MB (-~63%). Note that this patch introduces a new set of binary files to git history, though (bad). The process has been automated using this quickly crafted Python script: ```python from pathlib import Path import re import subprocess def process(doc, image, image_jpeg, size): subprocess.run( ( f"convert {image}" "-background white -alpha remove -alpha off -quality 75" f"-resize {size}\> {image_jpeg}" ), shell=True, check=True, cwd=doc.parent, ) if image != image_jpeg: (doc.parent / image).unlink() for doc in Path(".").glob("boards/**/*.rst"): with open(doc) as f: content = "" image = None for line in f: m = re.match(r"^(\s*)\.\. (image|figure):: (.*)$", line) if m: if image: process(doc, image, image_jpeg, size) image = Path(m.group(3)) if image.suffix not in (".jpg", ".jpeg", ".png"): content += line image = None continue image_jpeg = image.parent / (image.stem + ".jpg") size = 750 content += ( f"{m.group(1)}.. {m.group(2)}:: {image_jpeg}\n" ) elif image: m = re.match(r"\s*:height:\s*[0-9]+.*$", line) if m: continue m = re.match(r"\s*:width:\s*([0-9]+).*$", line) if m: size = min(int(m.group(1)), size) continue content += line if line == "\n": process(doc, image, image_jpeg, size) image = None else: content += line with open(doc, "w") as f: f.write(content) ``` Signed-off-by: Gerard Marull-Paretas <gerard.marull@nordicsemi.no>
2022-08-16 13:05:36 +02:00
.. image:: img/Blackpill_Pinout.jpg
:align: center
:alt: Black Pill V1.2 Pinout
Default Zephyr Peripheral Mapping:
----------------------------------
- UART_1 TX/RX : PA9/PA10
- I2C1 SCL/SDA : PB8/PB9
- SPI1 CS/SCK/MISO/MOSI : PA4/PA5/PA6/PA7 (Routed to footprint for external flash)
- PWM_4_CH1 : PB6
- PWM_4_CH2 : PB7
- ADC_1 : PA1
- USER_PB : PA0
- USER_LED : PC13
Clock Sources
-------------
The board has two external oscillators. The frequency of the slow clock (LSE) is
32.768 kHz. The frequency of the main clock (HSE) is 25 MHz.
The default configuration sources the system clock from the PLL, which is
derived from HSE, and is set at 84MHz, which is the maximum possible frequency
to achieve a stable USB clock (42MHz).
Programming and Debugging
*************************
There are 2 main entry points for flashing STM32F4X SoCs, one using the ROM
bootloader, and another by using the SWD debug port (which requires additional
hardware). Flashing using the ROM bootloader requires a special activation
pattern, which can be triggered by using the BOOT0 pin.
Flashing
========
Installing dfu-util
-------------------
It is recommended to use at least v0.8 of `dfu-util`_. The package available in
debian/ubuntu can be quite old, so you might have to build dfu-util from source.
There is also a Windows version which works, but you may have to install the
right USB drivers with a tool like `Zadig`_.
Flashing an Application
-----------------------
Connect a USB-C cable and the board should power ON. Force the board into DFU mode
by keeping the BOOT0 switch pressed while pressing and releasing the NRST switch.
The dfu-util runner is supported on this board and so a sample can be built and
tested easily.
.. zephyr-app-commands::
:zephyr-app: samples/basic/blinky
:board: blackpill_f401cc
:goals: build flash
Debugging
=========
The board can be debugged by installing the included 100 mil (0.1 inch) header,
and attaching an SWD debugger to the 3V3 (3.3V), GND, SCK, and DIO
pins on that header.
References
**********
.. target-notes::
.. _board release notes:
https://github.com/WeActStudio/WeActStudio.MiniSTM32F4x1/blob/master/HDK/README.md
.. _Zadig:
https://zadig.akeo.ie/
.. _WeAct Github:
https://github.com/WeActStudio/WeActStudio.MiniSTM32F4x1
.. _stm32-base-board-page:
https://stm32-base.org/boards/STM32F401CCU6-WeAct-Black-Pill-V1.2.html
.. _dfu-util:
http://dfu-util.sourceforge.net/build.html
.. _STM32F401CC website:
https://www.st.com/en/microcontrollers/stm32f401cc.html
.. _STM32F401x reference manual:
https://www.st.com/resource/en/reference_manual/dm00096844.pdf