.. _maple-mini: Maple Mini ========== This page is a general resource for information specific to the Maple Mini. The Maple Mini is a smaller version of the Maple that fits on a breadboard. .. contents:: Contents :local: .. TODO [dma.rst] Ref to dma.rst in sequel instead of libmaple-dma Technical Specifications ------------------------ * MCU: :ref:`STM32F103CBT6 `, a 32-bit ARM Cortex M3 microprocessor * Clock Speed: **72 MHz** * **128 KB Flash** and **20 KB SRAM** * 34 :ref:`digital I/ pins (GPIOs) ` * 12 :ref:`PWM ` pins at 16 bit resolution * 9 :ref:`analog input (ADC) ` pins at 12 bit resolution * 2 :ref:`SPI ` peripherals * 2 :ref:`I2C ` peripherals * 7 Channels of Direct Memory Access (**DMA**) (:ref:`libmaple-dma`) * 3 :ref:`USART (serial port) ` peripherals * 1 advanced and 3 general-purpose :ref:`timers ` * Dedicated :ref:`USB ` port for programming and communications * :ref:`jtag` * Nested Vectored Interrupt Controller (NVIC) (including :ref:`external interrupt ` on GPIOs) * Supplies up to 500 mA at 3.3 V, with :ref:`separate 250 mA digital and analog regulators ` for low-noise analog performance * :ref:`Open source, four layer design ` * Support for low power, sleep, and standby modes (<500 μA) * Operating Voltage: 3.3 V * Input Voltage (recommended): 3 V — 12 V * Dimensions: 2.02″ × 0.72″ .. _maple-mini-powering: Powering the Maple Mini ----------------------- You can power the Maple Mini via the USB plug or by powering Vin directly. .. warning:: The silkscreen on the Maple Mini suggests it will accept an input voltage up to 16 V. We recommend applying **no greater than 12 V**, and potentially even lower depending upon the current draw requirements of the application. Please see :ref:`Power Regulation on the Maple Mini ` for more information. .. _maple-mini-power-regulation: Power Regulation on the Maple Mini ---------------------------------- Power regulation on the Maple is provided by two low dropout linear voltage regulators. (The part is the MCP1703 from Microchip, in the SOT-23A package. You can download the datasheet `here `_ ). One of the regulators supplies power to the digital voltage plane; the other supplies power to the analog voltage plane. These voltage regulators nominally take an input of up to 16V. In addition, while the maximum continuous output current for the board is 250mA, if you are powering the board off higher voltages the amount current it can supply goes down, due to the regulators needing to dissipate the extra power. So if you are powering the board off 12V, the max current is about 40mA at room temperature. In general (again, at room temperature) the max power dissipation (PD) for the chip is about .37W, and output current = PD/(Vin-Vout). For exact max current calculations, please refer to the datasheet linked above. If you are planning to draw a lot of current from the Maple board, it is necessary to provide input power as close to 3.3V as possible. Powering the microcontroller circuitry and LEDs on the board alone takes approximately 30mA, so if you are powering the board with 12V that leaves only 10mA (at best) available for powering any user circuitry. Attempting to draw more than 10mA runs the risk of shorting out the power regulators and bricking your board. .. _maple-mini-gpios: GPIO Information ---------------- The Maple Mini features 34 total input/output pins, numbered ``D0`` through ``D33``. These numbers correspond to the numeric values next to each header on the Maple Mini's silkscreen. However, some of them have special uses by default [#fusedpins]_. .. _maple-mini-usb-pins: Pin ``D23`` is the :ref:`USB ` D+ line, and ``D24`` is the USB D- line. To use them as GPIOs, your program will need to :ref:`disable SerialUSB ` first. Be aware, however, that disabling SerialUSB means that the :ref:`bootloader ` won't work properly, and you'll need to use :ref:`troubleshooting-perpetual-bootloader` to make your next upload. .. _maple-mini-but: Pin ``D32`` is the Mini's :ref:`button pin `. It is thus mainly useful as an :ref:`input `. The pin will :ref:`read ` ``HIGH`` when the :ref:`button is pressed `. .. _maple-mini-led: Pin ``D33`` is the Mini's :ref:`LED pin `. It is thus mainly useful as an :ref:`output `. The LED will glow when ``HIGH`` is :ref:`written ` to it. (It also supports :ref:`pwm`, for finer-grained brightness control). .. TODO [0.1.0] silkscreen pictures which expand abbreviations .. _maple-mini-pin-map-master: Master Pin Map ^^^^^^^^^^^^^^ This table shows a summary the available functionality on every GPIO pin, by peripheral type. The "5 V?" column documents whether or not the pin is :ref:`5 volt tolerant `. Note that this table is not exhaustive; on some pins, more peripherals are available than are listed here. .. csv-table:: :header: Pin, :ref:`GPIO `, :ref:`ADC `, :ref:`Timer `, :ref:`I2C `, :ref:`UART `, :ref:`SPI `, 5 V? D0, PB11, -, -, 2_SDA, 3_RX, -, Yes D1, PB10, -, -, 2_SCL, 3_TX, -, Yes D2, PB2, -, -, -, -, -, Yes D3, PB0, CH8, 3_CH3, -, -, -, - D4, PA7, CH7, 3_CH2, -, -, 1_MOSI, - D5, PA6, CH6, 3_CH1, -, -, 1_MISO, - D6, PA5, CH5, -, -, -, 1_SCK, - D7, PA4, CH4, -, -, 2_CK, 1_NSS, - D8, PA3, CH3, 2_CH4, -, 2_RX, -, - D9, PA2, CH2, 2_CH3, -, 2_TX, -, - D10, PA1, CH1, 2_CH2, -, 2_RTS, -, - D11, PA0, CH0, 2_CH1_ETR, -, 2_CTS, -, - D12, PC15, -, -, -, -, -, - D13, PC14, -, -, -, -, -, - D14, PC13, -, -, -, -, -, - D15, PB7, -, 4_CH2, 1_SDA, -, -, Yes D16, PB6, -, 4_CH1, 2_SCL, -, -, Yes D17, PB5, -, -, 1_SMBA, -, -, - D18, PB4, -, -, -, -, -, Yes D19, PB3, -, -, -, -, -, Yes D20, PA15, -, -, -, -, -, Yes D21, PA14, -, -, -, -, -, Yes D22, PA13, -, -, -, -, -, Yes D23, PA12, -, 1_ETR, -, 1_RTS, -, Yes D24, PA11, -, 1_CH4, -, 1_CTS, -, Yes D25, PA10, -, 1_CH3, -, 1_RX, -, Yes D26, PA9, -, 1_CH2, -, 1_TX, -, Yes D27, PA8, -, 1_CH1, -, 1_CK, -, Yes D28, PB15, -, -, -, -, 2_MOSI, Yes D29, PB14, -, -, -, 3_RTS, 2_MISO, Yes D30, PB13, -, -, -, 3_CTS, 2_SCK, Yes D31, PB12, -, 1_BKIN, 2_SMBA, 3_CK, 2_NSS, Yes D32, PB8, -, 4_CH3, -, -, -, Yes D33, PB1, CH9, 3_CH4, -, -, -, - .. _maple-mini-gpio-port-map: GPIO Port Pin Map ^^^^^^^^^^^^^^^^^ The following table shows what pins are associated with each :ref:`GPIO port `. .. csv-table:: :header: GPIOA, GPIOB, GPIOC PA0: D11, PB0: D3, PC0: - PA1: D10, PB1: D33, PC1: - PA2: D9, PB2: D2, PC2: - PA3: D8, PB3: D19, PC3: - PA4: D7, PB4: D18, PC4: - PA5: D6, PB5: D17, PC5: - PA6: D5, PB6: D16, PC6: - PA7: D4, PB7: D15, PC7: - PA8: D27, PB8: D32, PC8: - PA9: D26, PB9: -, PC9: - PA10: D25, PB10: D1, PC10: - PA11: D24, PB11: D0, PC11: - PA12: D23, PB12: D31, PC12: - PA13: D22, PB13: D30, PC13: D14 PA14: D21, PB14: D29, PC14: D13 PA15: D20, PB15: D28, PC15: D12 .. _maple-mini-timer-map: Timer Pin Map ^^^^^^^^^^^^^ The following table shows what pins are associated with a particular timer's capture/compare channels. .. csv-table:: :header: Timer, Ch. 1, Ch. 2, Ch. 3, Ch. 4 :delim: | 1 | D27 | D26 | D25 | D24 2 | D11 | D10 | D9 | D8 3 | D5 | D4 | D3 | :ref:`D33 ` 4 | D16 | D15 | :ref:`D32 ` | .. _maple-mini-exti-map: EXTI Line Pin Map ^^^^^^^^^^^^^^^^^ The following table shows which pins connect to which :ref:`EXTI lines `. .. list-table:: :widths: 1 1 :header-rows: 1 * - EXTI Line - Pins * - EXTI0 - D3, D11 * - EXTI1 - D10, D33 * - EXTI2 - D2, D9 * - EXTI3 - D8, D19 * - EXTI4 - D7, D18 * - EXTI5 - D6, D17 * - EXTI6 - D5, D16 * - EXTI7 - D4, D15 * - EXTI8 - D27, D32 * - EXTI9 - D26 * - EXTI10 - D1, D25 * - EXTI11 - D0, D24 * - EXTI12 - D23, D31 * - EXTI13 - D14, D22, D30 * - EXTI14 - D13, D21, D29 * - EXTI15 - D12, D20, D28 .. _maple-mini-usart-map: USART Pin Map ^^^^^^^^^^^^^ The Maple Mini has three serial ports (also known as :ref:`USARTs `). They communicate using the pins given in the following table. .. csv-table:: :header: Serial Port, TX, RX, CK, CTS, RTS :delim: | ``Serial1`` | D26 | D25 | D27 | D24 | D23 ``Serial2`` | D9 | D8 | D7 | D11 | D10 ``Serial3`` | D1 | D0 | D31 | D30 | D29 .. _maple-mini-adc-bank: Low-Noise ADC Pins ^^^^^^^^^^^^^^^^^^ Maple Mini has an electrically isolated analog power plane with its own regulator, and a geometrically isolated ground plane, connected to the digital plane by an inductor. Its analog input pins, D3 — D11, are laid out to correspond with these analog planes, and our measurements indicate that they generally offer low noise ADC performance. However, analog performance may vary depending upon the activity of the other GPIOs. Consult the :ref:`Maple Mini hardware design files ` for more details. .. _maple-mini-board-values: Board-Specific Values --------------------- This section lists the Maple Mini's :ref:`board-specific values `. - ``CYCLES_PER_MICROSECOND``: 72 - ``BOARD_BUTTON_PIN``: 32 - ``BOARD_LED_PIN``: 33 - ``BOARD_NR_GPIO_PINS``: 34 - ``BOARD_NR_PWM_PINS``: 12 - ``boardPWMPins``: 3, 4, 5, 8, 9, 10, 11, 15, 16, 25, 26, 27 - ``BOARD_NR_ADC_PINS``: 9 - ``boardADCPins``: 3, 4, 5, 6, 7, 8, 9, 10, 11 - ``BOARD_NR_USED_PINS``: 4 - ``boardUsedPins``: ``BOARD_LED_PIN``, ``BOARD_BUTTON_PIN``, 23, 24 (23 and 24 are used by :ref:`USB `) - ``BOARD_NR_USARTS``: 3 - ``BOARD_USART1_TX_PIN``: 26 - ``BOARD_USART1_RX_PIN``: 25 - ``BOARD_USART2_TX_PIN``: 9 - ``BOARD_USART2_RX_PIN``: 8 - ``BOARD_USART3_TX_PIN``: 1 - ``BOARD_USART3_RX_PIN``: 0 - ``BOARD_NR_SPI``: 2 - ``BOARD_SPI1_NSS_PIN``: 7 - ``BOARD_SPI1_MOSI_PIN``: 4 - ``BOARD_SPI1_MISO_PIN``: 5 - ``BOARD_SPI1_SCK_PIN``: 6 - ``BOARD_SPI2_NSS_PIN``: 31 - ``BOARD_SPI2_MOSI_PIN``: 28 - ``BOARD_SPI2_MISO_PIN``: 29 - ``BOARD_SPI2_SCK_PIN``: 30 - ``BOARD_JTMS_SWDIO_PIN``: 22 - ``BOARD_JTCK_SWCLK_PIN``: 21 - ``BOARD_JTDI_PIN``: 20 - ``BOARD_JTDO_PIN``: 19 - ``BOARD_NJTRST_PIN``: 18 .. _maple-mini-hardware: Hardware Design Files --------------------- The hardware schematics and board layout files are available in the `Maple Mini GitHub repository `_. From the GitHub repository main page, you can download the entire repository by clicking the "Download" button. If you are familiar with `Git `_, you can also clone the repository at the command line with :: $ git clone git://github.com/leaflabs/maplemini.git Failure Modes ------------- The following known failure modes apply to all Maple boards. The failure modes aren't design errors, but are easy ways to break or damage your board permanently. * **High voltage on non-tolerant pins**: not all header pins are 5 V compatible; so e.g. connecting certain serial devices in the wrong way could over-voltage the pins. The :ref:`pin-mapping master table ` details which pins are :ref:`5 V-tolerant `. Errata ------ This section lists known issues and warnings for the Maple Mini Rev 2 (the first Rev sold to the public). .. _maple-mini-vin: * **Silkscreen Vin voltage mistake**: The silkscreen on the Maple Mini falsely indicates that Vin may be supplied with up to 16V. We recommend an input voltage **no greater than 12V**, and potentially even lower depending upon the current draw requirements of the application. Please see :ref:`Power Regulation on the Maple Mini ` for more information. Recommended Reading ------------------- .. _maple-mini-stdocs: STMicro documentation for STM32F103CB microcontroller: * `Datasheet `_ (PDF); covers STM32F103x8, STM32F103xB. * `Reference Manual RM0008 `_ (PDF); definitive resource for peripherals on the STM32F1 line. * `Programming Manual PM0056 `_ (PDF); assembly language and register reference. * `STM32F103CB `_ overview page with links to further references. .. rubric:: Footnotes .. [#fusedpins] See :ref:`boardUsedPins ` for more information.