The Maple Mini is the second of the two original STM32F103 boards made by LeafLabs. It was released in 2011. It is reliable, cheap and breadboard friendly. It is the most used and best-supported STM32duino board.
|Level of Support||Highest|
|Preloaded Bootloader||Maple Bootloader|
|Recommended Bootloader||STM32duino Bootloader|
|Clock Speed||72 MHz|
|Real Time Clock||No Crystal|
|PWM||12 (16 Bit)|
|Analog Inputs||9 (12 Bit)|
|Dimensions||51.3 mm x 18.3 mm|
The Maple Mini is pretty much plug-and-play, like any Arduino board:
- Buy a Maple Mini clone
- Install the STM32duino core
- Plug in the board
- On Windows 10 the bootloader driver will install automatically
- With no sketch loaded, the bootloader will cause the LED to blink rapidly
- Note that there are no power or serial LEDs, only a user LED
- Select "Maple Mini" under 'Tools → Board' in the Arduino IDE, and select the correct COM port
- Under 'File → Examples → A_STM32_Examples → Digital' select "Blink"
- Hit upload
- The LED should now blink more slowly
No external programmers or hardware modifications are needed. For the blink sketch you won't even need pin headers.
Schematic and Design
The original Maple Mini is open source hardware.
The full design files can be found on GitHub.
The schematic is available in pdf.
The original 4-layer board can no longer be purchased. There is a Chinese clone of the maple mini, made by Baite. It's made with a 2-layer PCB. Official Baite branded boards, (with an intact logo), are usually good quality and just work. Other than the Baite re-design, there is one other PCB version currently being sold on AliExpress.
There appears to be a grey market in Baite reject boards, which are reworked to fix soldering issues, in backstreet workshops, and are sold on eBay and AliExpress. These boards often have the Baite logo fully, or partially, removed and can still have dry joins in the soldering, but typically do work.
There is another Maple mini clone design, which appears to have subtle differences from the Baite Maple mini.
The board comes pre-flashed with the original Maple Bootloader, which means that the board works out of the box. Like the Arduino Leonardo, the bootloader uses the MCU's built-in USB, so there is no USB to Serial chip on the PCB. A driver installation may be required for your computer to recognise the bootloader, though Windows should install this automatically. The pre-installed bootloader can easily be updated to Roger's improved STM32duino bootloader using the updater sketch. This increases the amount of RAM available to the sketch from 17 KB to the full 20 KB, and also increases the available sketch space by 8 KB (7%).
Follow the normal installation guide.
Comparison with Other Boards
Unlike older Arduino boards, the Maple Mini runs at 3.3 V logic. This is generally an advantage, as it means it can interface with more hardware without a logic-level converter. However some of its pins are not 5 V tolerant, so connecting 5 V devices to those pins could cause damage (see pinout above).
The Maple Mini is many times faster than an Arduino Uno. It uses a 32-bit ARM Cortex-M3 CPU running at 72 MHz. See this video.
Official Arduino boards receive better software support. Some third-party libraries written for Arduino do not yet work with STM32duino.
The board uses Arduino style pin numbers, rather than the real STM32 port/pin name. See this table which maps the pin numbers to STM32 format Maple Mini pin mapping.
The board has 2 push buttons. One is the reset and the other is a user button; for use in your sketch. The board also has user LED. It doesn't have a power indication LED or serial LEDs.
The "user" button can be used to boot the board into perpetual bootloader mode, which can be useful when installing drivers, or when the sketch has completely crashed the core.
On most clones, the chip's analog circuitry is supplied by the same power track as the digital circuitry, meaning that sampling the ADC in close succession with e.g. SPI communication is known to cause interference. This is not a problem for most use cases, and can usually be solved by careful timing in software. It is worth noting that most Arduino boards (e.g. Uno, Nano) have the same "problem".