The Micromint Bambino 210 is a multi-core SBC designed for compatibility with the mbed framework. This popular framework for embedded software development includes extensive class libraries, tools and broad community support, allowing you to deliver embedded applications faster and more reliably. The Micromint Bambino 210 is powered by an NXP LPC4330, the first dual-core ARM Cortex-M microcontroller. Its Cortex-M4 and Cortex-M0 cores are both capable of concurrent 204 MHz operation. The hardware block diagram and feature summary is included below:
This section explains how to develop programs for the Micromint Bambino using the mbed online compiler. Using an online compiler is a great way to get started with mbed development. No local program installations are required on your system. The editor, compiler and linker are maintained by the mbed team and accessible via any Internet connection. The next chapter will cover offline toolchains for projects that require use of a compiler and debugger installed on your system.
To use the online compiler you first need a developer account at mbed.org. If you have not done so, please visit mbed.org, click on "Signup" and follow the steps to create an account. If you already have an account, login using your mbed username.
The Micromint Bambino has two USB ports: USB0 for use by your mbed applications and USB1 for mbed development. When you connect your system to USB1 it will recognize the board as a removable flash drive to copy your programs and a serial port that can be used for program output. Those functions are implemented by the on-board mbed HDK with the mbed CMSIS-DAP firmware. To add the board to the online compiler, click on the mbed.htm file in the removable flash drive detected by your system.
Equivalent links are included below.
Enter the online compiler by selecting the "Compiler" button on the development site. Right click on "My Programs" and select "New Program...".
Select a name for your program. Use "blinky" as our initial program name for a simple application that blinks an LED.
Then create your first program file. Right click on "blinky" and select "New File...". Use "main.cpp" as your main program file.
Paste the following content to your program file.
#include "mbed.h"
DigitalOut myled(LED2);
int main() {
while(1) {
myled = 1;
wait(0.8);
myled = 0;
wait(0.8);
}
}
Finally import the mbed source library to your program to access mbed library functions with source code. Right click on "blinky" and select "Import Library...", "From Import Wizard". On the wizard search for "mbed-src" and double click on the latest version from "mbed-official". It will take a few seconds to import all library files to your program.
To compile your program click "Compile" on the toolbar. This will create a program binary to run on your board and save it to your system. You can save the file directly to the board by selecting the mbed removable flash drive as the target. If you prefer to keep a copy on your system, save it first to your hard drive and then copy it to the mbed removable flash drive. If you get any compiler errors, check the source code to insure it is as listed above and then recompile your program.
Once you copy your program to the board, the green LED (LED2) should start blinking. If your previous program left the board in an unknown state, press the RESET button to load the program you just copied.
That's it! In less than 5 minutes you were able to compile and run a program on your board using the online compiler. The next chapter will cover how to use offline compilers.
The online compiler covered in the previous chapter is the fastest way to start programming mbed applications. There is no software to install and the toolchain is actively managed for you. Yet some projects require full debugging capabilities, custom library builds, group source code control and other options not currently available on the online compiler. This chapter covers how to use offline toolchains to build both your application as well as the mbed library.
The Micromint Bambino implements the mbed HDK on-board using an additional microcontroller (NXP LPC11U35) with the mbed CMSIS-DAP firmware. Offline compilers can use the mbed HDK for debugging by configuring their toolchain debug options to CMSIS-DAP. To use external JTAG probes an alternate firmware is required as described in Appendix B.
Keil MDK is a popular toolchain for development of ARM applications in C or C++. The free MDK-Lite allows you to build applications up to 32KB. Larger binaries require a commercial license. Many mbed examples include Makefiles for Keil MDK, including the mbed Book Examples for the Micromint Bambino. This section explains how to build the blinky mbed book example using Keil.
Select "Project", "Open Project..." and change to the mbed-book-02-06\PE_02-01_SimpleLED directory. Select the project file PE_02-01_SimpleLED.uvproj. Your IDE should look similar to the one below:
To use the on-board debugger please use the configuration listed in Appendix C. To build a binary from the IDE just press F7 or click on the compile toolbar button. To download the binary and start a debug session press Ctrl-F5 or click on the debug button. Your debug environment should look as follows:
Press F5 or clock the run button and the yellow LED (LED1) should start blinking. Press the stop button and place a breakpoint on the first line of the while loop by clicking to the left side of the line. Then press F5 to see the LED blink once. You can examine registers and perform other debugging options.
Developers creating new device drivers or changing mbed library features may find it convenient to include the library sources in their project files. The blinky_src project is a simple example to get started. The project can include your application source code as well as full mbed library sources.
GCC-ARM is a freely available GNU toolchain for ARM Cortex microcontrollers. It is actively maintained, regression tested and includes binaries for Windows, Linux and Mac. Many mbed examples include Makefiles for GCC-ARM, including the mbed Book Examples for the Micromint Bambino. This section explains how to build the blinky mbed book example using GCC-ARM.
After installing GCC-ARM verify that the ARM 'gcc' compiler and 'make' can be found on your PATH.
C:\Users\mbed>arm-none-eabi-gcc -v Using built-in specs. COLLECT_GCC=arm-none-eabi-gcc COLLECT_LTO_WRAPPER= ... Target: arm-none-eabi Configured with: /home/build/work/GCC-4-8-build/src/gcc/configure ... Thread model: single gcc version 4.8.4 20140526 (release) [ARM/embedded-4_8-branch revision 211358] (GNU Tools for ARM Embedded Processors) C:\Users\mbed>make -v GNU Make 3.82.90 Built for i686-pc-mingw32 Copyright (C) 1988-2012 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html> This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law.
Note that GCC-ARM does not include 'make'. Developers using Windows can get binaries for 'make' and other utilities from unxutils or other projects.
Change to the project directory, build the binary and copy it to the mbed removable drive.
C:\Users\mbed>cd mbed-book-02-06\PE_02-01_SimpleLED C:\Users\mbed\mbed-book-02-06\PE_02-01_SimpleLED>make arm-none-eabi-g++ ... main.cpp arm-none-eabi-gcc ... -lc -lgcc -lnosys arm-none-eabi-objcopy -O binary PE_02-01_SimpleLED.elf PE_02-01_SimpleLED.bin C:\Users\mbed\mbed-book-02-06\PE_02-01_SimpleLED>copy PE_02-01_SimpleLED.bin E:
The yellow LED (LED1) should start blinking. If your previous program left the board in an unknown state, press the RESET button to load the program you just copied.
GCC-ARM includes a GDB debugger binary for ARM (arm-none-eabi-gdb) which can be used with the on-board mbed CMSIS-DAP debugger via pyOCD or OpenOCD (0.8.0 or above).
The source code for the mbed library is open source and can be downloaded from the mbed mainline repository or the Micromint repository. To recompile it please follow these steps:
1. Install a compatible ARM toolchain. The mbed port for LPC4330 targets currently supports the Keil MDK, GCC ARM and GCC LPCXpresso toolchains. The Keil MDK is the main ARM toolchain at Micromint.
2. Install Python 2.7. The mbed build scripts are written in Python.
3. Install the mbed Library Sources. This includes full source code for all supported multiple microcontrollers and boards.
4. Edit workspace_tools/private_settings.py to reflect your toolchain directories.
from os.path import join # ARM armcc = "keil" ARM_PATH = "C:/Keil/ARM" ARM_BIN = join(ARM_PATH, "ARMCC", "bin") ARM_INC = join(ARM_PATH, "ARMCC", "include") ARM_LIB = join(ARM_PATH, "ARMCC", "lib") # GCC ARM GCC_ARM_PATH = "C:/Program Files (x86)/GNU Tools ARM Embedded/4.8 2014q2/bin" # GCC CodeRed GCC_CR_PATH = "C:/nxp/LPCXpresso_7.5.0_254/lpcxpresso/tools/bin"
5. Compile the base mbed libraries. These are typical commands to change to the source directory, setup compiler environment and build the bootloader. Note that the Python directory in the PATH may be different in your development system.
cd mbed-master SET PATH=C:\Windows\system32;C:\Windows;C:\Python27 python workspace_tools/build.py -v -r -m LPC4330_M4 -t ARM > build.log python workspace_tools/build.py -v -r -m LPC4330_M4 -t GCC_ARM >> build.log
If your build is successful, the mbed libraries and headers for the LPC4330 will be available in the ..\build directory. If not, check the build.log file. For more documentation on these procedures please visit the mbed tools site.
The following image shows where some of the hardware components are located.
The Bambino 210 includes a NXP LPC4330 microcontroller. These dual core 32-bit ARM Cortex-M4/M0 RISC microcontroller are capable of 204-MHz operation with a Thumb2 instruction set for smaller object code. It uses a Harvard architecture with separate local instruction and data buses as well as a separate peripherals bus. Please see NXP?s LPC4330 Microcontroller's User Manual for more information and register definitions.
The Bambino 210 uses Quad SPI Flash for it's program and non-volatile data storage. The quad SPI flash has a maximum clock rate of 80 MHz. The Bambino 210 uses a 4M flash and the Bambino 210E uses an 8M flash. Both memories have 4KB sectors.
Texas Instruments TPS2115 auto-switching power mux is used to select between USB0 and USB1. It provides a seamless transition between USB1 (MBED HDK) and USB0 on the Bambino 210. The TPS2115 includes thermal protection and reverse-conduction blocking.
The Bambino 210E includes a Micrel KSZ8081 10 Base-T/100 Base-TX Physical Layer Transceiver (PHY). The PHY has a RMII interface to transmit and receive data to the LPC4330's Media Access Controller. It has auto-negotiation to automatically select the highest link-up speed (10/100 Mbps) and duplex (half/full). For further information please see KSZ8081 Data Sheet.
The MBED HDK is powered by NXP's LPC11U35. The mbed HDK uses the CMSIS-DAP Interface design that provides simple USB drag-n-drop programming and CMSIS-DAP debug interface for the target microcontroller.
NEXT: User Interfaces, Connectors, and Jumpers
The following image shows where the connectors, headers, and jumpers are located on the Bambino 210.
The Bambino 210 can be powered from the USB0 device port on J4 or MBED HDK/USB1 device port on J6. The Bambino 210E can be powered from the USB0 device port, MBED HDK/USB1 device port, or the power jack (J1). A power mux automatically selects the power between USB0 and the MBED HDK/USB1. A FET is used to automatically select power from J1 should power be applied both the USB device ports and J1.
J1 comes standard with a 2.1 mm inner diameter and 5.5 mm outer diameter, positive center tapped female power supply jack. The minimum voltage that can be applied to J1 is 7 VDC and the maximum is 15 VDC. J1 can be changed to a 2 position screw terminal by desoldering the power jack and soldering in a screw terminal. A diode (D2) will protect the Bambino 210E should polarity of the power supply be reversed on the J1 connector. The protection diode is limited to a maximum of 1 amperes through it.
The Bambino 210 comes equipped with a USB Device Port. The Device port is compliant with the USB V2.0 high-speed device specification. It's connector is a micro USB Type AB.
| USB0 Device Port | |
| Connector Pin# | MCU Pin Name |
| 1 | USB0_VBUS (+5.0V) |
| 2 | USB0_DM |
| 3 | USB0_DP |
| 4 | USB0_ID |
| 5 | Ground |
The Bambino 210 comes equipped with the MBED HDK. It is powered by NXP's LPC11U35 microcontroller. The MBED HDK is compliant with the USB V2.0 full-speed device specification. It's connector is a micro USB Type AB and is designated J6. The LPC4330's USB1 is available on J6 when the MBED HDK is not populated through a custom configuration.
| MBED HDK/USB1 Device Port | ||
| Connector Pin# | MBED HDK Pin (LPC11U35) | USB1 Pin (LPC4330) |
| 1 | VUSB1 | VUSB1 |
| 2 | USB_DM | USB1_DM |
| 3 | USB_DP | USB1_DP |
| 4 | Not Connected | Not Connected |
| 5 | Ground | Ground |
The MBED HDK implements a virtual serial port via USB using I/O from UART2 in the LPC4330. This allows simple serial I/O from mbed applications to terminal emulators such as PuTTY.
| HDK-CDC | ||
| MCU Pin Name | Peripheral | SCU Func |
| P2_10 | U2_TXD | 2 |
| P2_11 | U2_RXD | 2 |
The boot jumper is used to put the Bambino 210 into Device Firmware Upgrade (DFU) mode. This is accomplished by shorting the two pins before power is applied or by shorting the pins and pressing the reset button. For further information please see the Getting Started Section of this manual.
The Bambino 210 comes standard with a user push button, a reset push button, and four user LEDs. The user push button is connected to GPIO0[7] with a 22k-ohm pull-up resistor connected to it. User LED1 (yellow) can be illuminated by clearing GPIO3[7] of the LPC4330. User LED2 (green) can be illuminated by clearing GPIO5[5]. User LED3 (blue) can be illuminated by clearing GPIO3[0]. User LED4 (red) can be illuminated by clearing GPIO3[1].
| User Buttons and LEDs | |||||||
| BAM210 Peripheral | MCU Pin Name | Peripheral | SCU Func | Peripheral | SCU Func | Peripheral | SCU Func |
| LED1 | P6_11 | GPIO3[7] | 0 | T2_MAT3 | 5 | ||
| LED2 | P2_5 | GPIO5[5] | 4 | T3_MAT2 | 6 | USB0_IND0 | 7 |
| LED3 | P6_1 | GPIO3[0] | 0 | ||||
| LED4 | P6_2 | GPIO3[1] | 0 | ||||
| BTN1 | P2_7 | GPIO0[7] | 0 | ||||
The Bambino 210 uses serial flash for program and nonvolitile data storage. It uses the LPC43030's Quad SPI Flash Iinterface (SPIFI). The SPIFI interface has data rates up to 52 MB per second. The Bambino 210 comes standard with 4M of flash and the Bambino 210E comes standard with 8M of flash.
| Serial Flash Memory | ||
| MCU Pin Name | Peripheral | SCU Func |
| P3_3 | SPIFI_SCK | 3 |
| P3_4 | SPIFI_SIO3 | 3 |
| P3_5 | SPIFI_SIO2 | 3 |
| P3_6 | SPIFI_MISO | 3 |
| P3_7 | SPIFI_MOSI | 3 |
| P3_8 | SPIFI_CS | 3 |
The Bambino 210E is equipped with a fully-integrated 10/100 Mbps Ethernet port. The Media Access Control (MAC) is implemented in the LPC4330 and the Physical (PHY) layer is implemented with Micrel?s KSZ8031. J3 is the RJ-45 connector and it has integrated magnetics and LEDs completes the Ethernet sub-system. Please see the KSZ8031 data sheet for further information on the PHY and the LPC4330 User's Manual for the MAC.
| Ethernet | ||
| MCU Pin Name | Peripheral | SCU Func |
| P0_0 | ENET_RXD1 | 2 |
| P0_1 | ENET_TX_EN | 6 |
| P1_15 | ENET_RXD0 | 2 |
| P1_16 | ENET_RX_DV | 7 |
| P1_17 | ENET_MDIO | 3 |
| P1_18 | ENET_TXD0 | 2 |
| P1_19 | ENET_REF_CLK | 0 |
| P1_20 | ENET_TXD1 | 3 |
| P2_0 | ENET_MDC | 7 |
The microSD socket (J2) enables micro-secure-digital memory cards to be plugged into the Bambino 210E microcontroller board. The microSD card allows the user the ability of a standard removable media for transferring data to and from the Bambino 210E. The LPC4330 interfaces to the microSD card through the Secure Digital Input Output card interface.
| Micro SD Card | ||
| MCU Pin Name | Peripheral | SCU Func |
| CLK2 | SD_CLK | 4 |
| P1_6 | SD_CMD | 7 |
| P1_9 | SD_DAT0 | 7 |
| P1_10 | SD_DAT1 | 7 |
| P1_11 | SD_DAT2 | 7 |
| P1_12 | SD_DAT3 | 7 |
| P1_13 | SD_CD | 7 |
The XBEE socket adds wireless support to the Bambino 210E. Digi International has several different versions of XBEE modules with different wireless protocols in the same physical footprint. Zigbee and WiFi are a couple of protocols supported by Digi International's XBEE modules. Please see Digi International's website for further details. The XBEE signals are shared with socket 5. Socket 5 should not be used if the XBEE module is being used.
| XBEE | ||
| MCU Pin Name | Peripheral | SCU Func |
| P5_6 | U1_TXD | 4 |
| P1_14 | U1_RXD | 1 |
| P5_2 | U1_RTS | 4 |
| P5_4 | U1_CTS | 4 |
| P5_1 | GPIO2[10] | 0 |
The Bambino 210's J7 female header is compatible with Arduino boards. The header uses 0.1 inch spacing between pins. The header contains power, ground, and the LPC4330's reset signal.
| J7 Arduino Compatible Header | |
| PIN # | Signal |
| 1 | No Connection |
| 2 | GND |
| 3 | +3.3 VDC |
| 4 | nReset |
| 5 | +3.3 VDC |
| 6 | +5.0 VDC |
| 7 | GND |
| 8 | GND |
The Bambino 210's J8 female header is compatible with Arduino boards. Some of the signals on J8 may be configured as analog inputs, an analog output, general purpose digital inputs or outputs (GPIO), or serial general purpose inputs and outputs (SGPIO).
| J8 Arduino Compatible Header | |||||||||
| PIN # | mbed | Arduino | MCU Pin Name | Peripheral | SCU Func | Peripheral | SCU Func | Peripheral | SCU Func |
| 1 | p15 | A0 | P7_4 | GPIO3[12] | 0 | ADC0_4 | |||
| 2 | p16 | A1 | P7_5 | GPIO3[13] | 0 | CTOUT_12 | 1 | ADC0_3 | |
| 3 | p17 | A2 | P4_1 | GPIO2[1] | 0 | CTOUT_1 | 1 | ADC0_1 | |
| 4 | p18 | A3 | P7_7 | GPIO3[15] | 0 | CTOUT_8 | 1 | ADC1_6 | |
| 5 | p19 | A4 | P4_3 | GPIO2[3] | 0 | SGPIO9 | 7 | ADC0_0* | |
| 6 | p20 | A5 | P4_4 | GPIO2[4] | 0 | SGPIO10 | 7 | DAC* | |
| 6** | p20 | A5 | ADC0_2 | ||||||
| (*) DAC and ADC0_0 use the same peripheral. If pin A5 is configured as a DAC, pin A4 should only be used for digital I/O.
(**) JP2 must be populated with a jumper on pins 1&2 and trace cut on bottom of board between pins 2&3 | |||||||||
In order to maintain Arduino compatibility, pin 6 of J8 (A5) is hardwired to MCU pin P4_4 which can be a digital I/O or analog output. The following change can be performed for shields requiring an analog input on A5 please modify the board as follows:
| Parts List for JP2 | ||||
| Part Description | Manufacturer | Part # | Digikey Part# | Mouser Part # |
| 1x3 pin header | Tyco | 5-146280-3 | 5-146280-3 | 5-146280-3 |
| shunt jumper | 3M | 969102-0000-DA | 969102-0000-DA | 969102-0000-DA |
The Bambino 210's J9 female header is compatible with Arduino boards. Some of the signals on J9 may be configured as a UART, PWM, or general purpose digital inputs or outputs (GPIO).
| J9 Arduino Compatible Header | |||||||
| PIN # | mbed | Arduino | MCU Pin Name | Peripheral | SCU Func | Peripheral | SCU Func |
| 1 | p21 | D0 | P6_5 | GPIO3[4] | 0 | U0_RXD | 2 |
| 2 | p22 | D1 | P6_4 | GPIO3[3] | 0 | U0_TXD | 2 |
| 3 | p23 | D2 | P1_7 | GPIO1[0] | 0 | CTOUT_13 | 2 |
| 4 | p24 | D3 | P4_0 | GPIO2[0] | 0 | ||
| 5 | p25 | D4 | P6_9 | GPIO3[5] | 0 | ||
| 6 | p26 | D5 | P5_5 | GPIO2[14] | 0 | ||
| 7 | p27 | D6 | P5_7 | GPIO2[7] | 0 | ||
| 8 | p28 | D7 | P7_6 | GPIO3[14] | 0 | CTOUT_11 | 1 |
The Bambino 210's J10 female header is compatible with Arduino boards. Some of the signals on J10 may be configured as a UART, PWM, I2C, SGPIO, or GPIO.
| J10 Arduino Compatible Header | |||||||||
| PIN # | mbed | Arduino | MCU Pin Name | Peripheral | SCU Func | Peripheral | SCU Func | Peripheral | SCU Func |
| 1 | p29 | D8 | P6_12 | GPIO2[8] | 0 | CTOUT_7 | 1 | ||
| 2 | p30 | D9 | P5_0 | GPIO2[9] | 0 | MCOB2 | 1 | ||
| 3 | p31 | D10 | P4_6 | GPIO2[6] | 0 | CTOUT_4 | 1 | SGPIO12 | 7 |
| 4 | p32 | D11 | P4_8 | GPIO5[12] | 4 | SGPIO13 | 7 | ||
| 5 | p33 | D12 | P4_9 | GPIO5[13] | 4 | SGPIO14 | 7 | ||
| 6 | p34 | D13 | P4_10 | GPIO5[14] | 4 | SGPIO15 | 7 | ||
| 7 | GND | ||||||||
| 8 | AREF | ||||||||
| 9 | p37 | I2C1_SDA | P2_3 | GPIO5[3] | 4 | I2C1_SDA | 1 | U3_TXD | 2 |
| 10 | p38 | I2C1_SCL | P2_4 | GPIO5[4] | 4 | I2C1_SCL | 1 | U3_RXD | 2 |
The Bambino 210E's J11 extended I/O header's signals may be configured as SGPIO, or GPIO.
| J11 Extended I/O Header | ||||||
| PIN # | mbed | MCU Pin Name | Peripheral | SCU Func | Peripheral | SCU Func |
| 1 | p47 | P6_3 | GPIO3[2] | 0 | SGPIO4 | 2 |
| 2 | p48 | P6_6 | GPIO0[5] | 0 | SGPIO5 | 2 |
| 3 | p49 | P6_7 | GPIO5[15] | 4 | SGPIO6 | 2 |
| 4 | p50 | P6_8 | GPIO5[16] | 4 | SGPIO7 | 2 |
| 5 | GND | |||||
| 6 | 3.3 VDC | |||||
| 7 | p53 | P2_2 | GPIO5[2] | 4 | ||
| 8 | p54 | P2_1 | GPIO5[1] | 4 | ||
The Bambino 210E's J12 extended I/O header's pin 1 and 2 are only Analog inputs. Pins 3 and 4 may be configured as GPIO or SGPIO. Pins 5 and 6 are strictly GPIO.
| J12 Extended I/O Header | ||||||||
| PIN # | mbed | MCU Pin Name | Peripheral | SCU Func | Peripheral | SCU Func | Peripheral | SCU Func |
| 1 | p55 | ADC0_5 | ADC1_5 | |||||
| 2 | p56 | ADC0_7 | ADC1_7 | |||||
| 3 | p57 | P2_6 | GPIO5[6] | 4 | SGPIO7 | 0 | ||
| 4 | p58 | P2_8 | GPIO5[7] | 4 | SGPIO15 | 0 | CTOUT_0 | 1 |
| 5 | p59 | P6_10 | GPIO3[6] | 0 | ||||
| 6 | p60 | P2_9 | GPIO1[10] | 0 | CTOUT_3 | 1 | ||
Some of the Bambino 210E's J13 extended I/O header's signals may be configured as GPIO or SGPIO. .
| J13 Extended I/O Header | ||||||||
| PIN # | mbed | MCU Pin Name | Peripheral | SCU Func | Peripheral | SCU Func | Peripheral | SCU Func |
| 1 | p61 | P7_3 | GPIO3[11] | 0 | ||||
| 2 | p62 | P3_2 | GPIO5[9] | 0 | ||||
| 3 | p63 | P7_2 | GPIO3[10] | 0 | SGPIO6 | 7 | ||
| 4 | p64 | P3_1 | GPIO5[8] | 4 | ||||
| 5 | p65 | P7_1 | GPIO3[9] | 0 | CTOUT_15 | 1 | SGPIO5 | 7 |
| 6 | p66 | P7_0 | GPIO3[8] | 0 | CTOUT_14 | 1 | SGPIO4 | 7 |
| 7 | p67 | P4_2 | GPIO2[2] | 0 | SGPIO8 | 7 | ||
| 8 | p68 | P4_5 | GPIO2[5] | 0 | SGPIO11 | 7 | ||
Some of the Bambino 210E's J14 extended I/O header's signals may be configured as PWM, SGPIO, GPIO, or SPI. Pin 10 can only be configured as the SPI clock.
| J14 Extended I/O Header | ||||||||
| PIN # | mbed | MCU Pin Name | Peripheral | SCU Func | Peripheral | SCU Func | Peripheral | SCU Func |
| 1 | p69 | P2_13 | GPIO1[13] | 0 | ||||
| 2 | p70 | P2_12 | GPIO1[12] | 0 | ||||
| 3 | p71 | P9_6 | GPIO4[11] | 0 | MCOB1 | 1 | SGPIO8 | 6 |
| 4 | p72 | P9_5 | GPIO5[18] | 4 | SGPIO3 | 6 | ||
| 5 | p73 | P5_3 | GPIO2[12] | 0 | ||||
| 6 | p74 | P1_8 | GPIO1[1] | 0 | ||||
| 7 | p75 | P1_5 | GPIO1[8] | 0 | CTOUT_10 | 1 | SSP1_SSEL | 5 |
| 8 | p76 | P1_4 | GPIO0[11] | 0 | SSP1_MOSI | 5 | ||
| 9 | p77 | P1_3 | GPIO0[10] | 0 | SSP1_MISO | 5 | ||
| 10 | p78 | PF_4 | SSP1_SCK | 0 | ||||
The coin battery holder on the bottom of the Bambino 210 is not populated at production time. The Cortex M JTAG is also not populated when the board is built. Both parts may be purchased from DigiKey and Mouser.
| Field Installable Options Parts List | ||||
| Option | Manufacturer | Part # | Digikey Part# | Mouser Part # |
| Coin Battery Holder | Keystone | 3002 | 3002K-ND | 534-3002 |
| Coin Battery | Panasonic | CR2032 | P189-ND | 658-CR2032 |
| Cortex M JTAG | FCI | 20021521-00010T1LF | 609-4054-ND | 649-200215210010T1LF |
| J15 (2x5 pin header) | Tyco | 5-146256-5 | 5-146256-5 | 5-146256-5 |
| J16 (1x6 pin header) | Harwin | M20-9990646 | M20-9990646 | M20-9990646 |
The Bambino 210's microcontroller has a built in real-time clock calendar that can be battery backed by supplying 2.2 VDC to 3.6 VDC to the VBAT pin on the LPC4330. A battery holder can be added to the bottom of the board to power the VBAT pin with a coin cell battery. The battery holder is manufactured by Keystone and it's part number is 3002. The battery holder accepts CR2032 series coin cells. Power is only drawn from the battery when the power is off to the Bambino 210.
A JTAG port (J5) can be added for software download and debugging. The JTAG port allows users to set break points and to single step through their program. For detailed information on the operation of the JTAG port and TAP controller, please refer to IEEE Standard 1149.1-Test Access Port and Boundary-Scan Architecture.
| Cortex M JTAG | |
| Connector Pin# | Pin Name |
| 1 | VCC (+3.3V) |
| 2 | TMS/SWDIO |
| 3 | Ground |
| 4 | TCK/SWDCLK |
| 5 | Ground |
| 6 | TDO/SWO |
| 7 | No Connect |
| 8 | TDI |
| 9 | Ground |
| 10 | RESET |
Pmods? are small I/O interface boards that offer an ideal way to extend the capabilities of the Bambino 210. Pmod is trade marked by Digilent Inc. J15 is set-up as an I2C Pmod header. The Bambino 210 comes with the connector unpopulated.
| J15 PMOD-I2C Header | |
| PIN # | MCU Pin Name |
| 1 | I2C0_SCL |
| 2 | I2C0_SCL |
| 3 | I2C0_SDA |
| 4 | I2C0_SDA |
| 5 | GND |
| 6 | GND |
| 7 | 3.3 VDC |
| 8 | 3.3 VDC |
J16 is set-up as an SPI/UART Pmod header. The Bambino 210 comes with the connector unpopulated.
| J16 PMOD-SSP Header | ||||||||
| PIN # | mbed | MCU Pin Name | Peripheral | SCU Func | Peripheral | SCU Func | Peripheral | SCU Func |
| 1 | p80 | P1_0 | GPIO0[4] | 0 | SSP0_SSEL | 5 | ||
| 2 | p81 | P1_2 | GPIO0[9] | 0 | SSP0_MOSI | 5 | SGPIO9 | 3 |
| 3 | p82 | P1_1 | GPIO0[8] | 0 | SSP0_MISO | 5 | SGPIO8 | 3 |
| 4 | p83 | P3_0 | SSP0_SCK | 4 | ||||
| 5 | GND | |||||||
| 6 | 3.3 VDC | |||||||
NEXT: Mechanical and Electrical Characteristics
| Characteristic | Minimum | Maximum | Unit |
| Voltage on J1 | 7.0 | 15.0 | VDC |
| Voltage on VBAT (Coin Cell Battery Holder) | 0.0 | 3.3 | VDC |
| Voltage on ADC | 0.0 | 3.3 | VDC |
| Voltage on Digital Input | 0.0 | 5.0 | VDC |
| Operating Temperature | 0 | 70 | ºC |
| Storage Temperature | -50 | 125 | ºC |
The Bambino 210 is currently available for commercial temperature ranges. Contact the Micromint sales department if you require support for industrial temperature ranges.
Below is the physical dimensions for the Bambino 210. The mounting holes will accept a #4 size screw.
| DIM | Inches | Millimeters | DIM | Inches | Millimeters | DIM | Inches | Millimeters | DIM | Inches | Millimeters |
| A | 4.0 | 101.6 | C | 0.1 | 2.54 | E | 1.11 | 28.194 | G | 0.2 | 5.08 |
| B | 1.83 | 46.482 | D | 0.61 | 15.494 | F | 2.3 | 58.42 | H | 0.91 | 23.114 |
| DIM | Inches | Millimeters | DIM | Inches | Millimeters | DIM | Inches | Millimeters | DIM | Inches | Millimeters |
| A | 0.33 | 8.4 | F | 0.63 | 16.0 | K | 0.136 | 3.45 | P | 0.3 | 7.62 |
| B | 0.3543 | 9.0 | G | 0.47 | 11.94 | L | 0.545 | 13.843 | Q | 0.335 | 8.5 |
| C | 0.105 | 2.67 | H | 0.269 | 6.83 | M | 0.86 | 21.84 | R | 0.173 | 4.4 |
| D | 0.345 | 8.763 | I | 0.177 | 4.5 | N | 0.56693 | 14.40 | S | 0.1 | 2.54 |
| E | 0.065 | 1.65 | J | 0.256 | 6.5 | O | 0.225 | 5.715 | T | 0.06 | 1.524 |
PREVIOUS: User Interfaces, Connectors, and Jumpers
This section outlines material that may be useful for further reading.
|
Fast and Effective Embedded Systems Design: Applying the ARM mbed ISBN: 0080977685 Publisher: Newnes; (August, 2012) Introduction to embedded systems design, using the ARM mbed and C programming language as development tools. |
|
The Definitive Guide to ARM® Cortex-M3 and Cortex-M4 Processors, Third Edition by Joseph Yiu ISBN: 0124080820 Publisher: Newnes (November, 2013) Overview of the processor and instruction set architecture of the ARM® Cortex®-M3 and Cortex®-M4 processors. Several code examples using IAR, Keil, gcc and CooCox CoIDE. | |
|
The Designer's Guide to the Cortex-M Processor Family: A Tutorial Approach by Trevor Martin ISBN: 0080982964 Publisher: Newnes (May, 2009) Tutorial-based book giving the key concepts required to develop programs in C with a Cortex M- based processor. | |
|
ARM System Developer's Guide: Designing and Optimizing System Software ISBN: 1558608745 Publisher: Morgan Kaufmann; (March, 2004) In-depth overview of the ARM architecture with examples that outline impact of programming practices on performance, power and cost. |
NEXT: Appendix A - Updating CMSIS-DAP Firmware
PREVIOUS: Mechanical and Electrical Characteristics
NEXT: Appendix B - Using an External JTAG with the BAM210
The JTAG connector is optional for the BAM210 and must be populated in order to use an external JTAG.
Follow these instructions to configure the Bambino 210 to use an external JTAG.
The Bambino 210 is now ready to use with an external JTAG. A virtual COM port is now available to use on USB1.
The LPC4330 signals used for the virtual COM port are listed below:
| LPC4330 PIN NAME | MBED ALIAS |
| P2_10 | USBTX |
| P2_11 | USBRX |
Please follow these steps for setting up Keil µVision compiler for debugging the Bambino 210's LPC4330 microcontroller.
NEXT: Appendix C - Configuring Keil MDK for CMSIS-DAP
PREVIOUS: Appendix A - Updating CMSIS-DAP Firmware
Please follow these steps for setting up Keil µVision compiler for debugging the Micromint Bambino using the mbed HDK with CMSIS-DAP firmware.
NEXT: Appendix D - DFU Firmware Updates
PREVIOUS: Appendix B - Using an External JTAG with the BAM210
The Bambino 210 firmware can be updated via port USB0 using the standalone NXP DFU Flash Programmer. This tool is an alternative to update firmware when your LPC4330 is in an unknown state or generates an ARM hard fault. For most other cases, using the mbed virtual flash drive should be simpler. To update firmware via DFU, please follow these steps:
1. Install the DFU Flash Programmer to a directory in your hard disk. Currently the NXP DFU programmer is only available for Windows.
2. Connect a cable to port USB0 and place the board in USB boot mode by shorting the two contacts labelled "Boot JP1" as shown below while pressing and releasing the RESET button. Metal tweezers work great for shorting the two contacts. If you will be doing frequent DFU updates, you may consider soldering a 2-pin header in and use a jumper to enter the USB boot mode.
3. An entry "LPC USB" should appear in the Windows Device Manager. If your device is not recognized, please check that you have the USB Drivers installed.
4. Run lpc_dfutil.exe in the dfusec folder. You should see "HIGH SPEED USB" in the status bar indicating it was able to connect to the board.
5. Use the following parameters and press START. You may need to use full paths for the algorithm (*.hdr) and firmware (*.bin) files.
Algorithm: .\Programming_algorithms\iram_dfu_util_spiflash.bin.hdr File: <Path and name of firmware to be copied to flash> Address: 0x14000000 Size: 0x00400000 Param: 0x00000000 Device erase: Region Operation after: Reset No checkboxes neede
You can test the procedure using the simple blinky binary listed below.
6. After the flash is complete, exit the utility, remove the boot jumper, and reset your board.