ARM-BMW, The Open Hardware Cortex-M0 Development Board

[Vsergeev] tipped us about a neat Cortex-M0 based development board with a total BoM cost under $15. It’s called the ARM Bare Metal Widget (ARM-BMW), focuses on battery power, non-volatile storage and debuggability.

The chosen micro-controller is the 50MHz NXP LPC1114DH28 which provides the user with 32kB of Flash, 8kB of SRAM, a 6 channel ADC and I2C/SPI/UART interfaces among others. The ARM-BMW contains a 2Mbyte SPI flash, an I2C I/O expander, several headers for expansion/debug purposes, 4 LEDs, 2 buttons, 2 DIP switches and finally a JTAG/SWD header for flashing and debugging. As you can see in the picture above you may either populate your own HC49UP crystal or use the internal 12MHz RC oscillator.

The platform can be powered using either a USB cable or a LiPo battery. As you can guess it also includes a much-needed battery charger (the MCP73831T) and a switched capacitor DC/DC converter to supply 3.3V. You may find all the files on the hardware or software repositories.

29 thoughts on “ARM-BMW, The Open Hardware Cortex-M0 Development Board

  1. Wrong choice.
    With NXP, the LPC-8xx is better.

    Small footprint, huge power with it’s single cycle 32bit multiply.
    No external components and built in UART bootloader in ROM.

    The are rugged but I got caught by my friend Ray and fell for the Cypress PSoC-4
    That is the same ARM Cortex M0+ as the NXP but with a mini 192 macrocell PGA/CPLD onboard.

    WAYS better.

    And single chip design.

    1. The LPC8xx are cool low-power chips, but they are slower (max 30MHz), generally smaller (max 16kB Flash, 4kB SRAM), and have no ADC. Comparison: and .

      The LPC1114 does have a single-cycle 32-bit multiply (pg. 519 of UM10398) and, like most NXP microcontrollers, the on-chip ROM UART bootloader.

      I think the LPC11xx series and similar Cortex-M0 chips are a great all-around workhorse with a solid set of peripherals for many applications where you might have settled for an 8-bit microcontroller in the past. The LPC8xx series seems a bit limiting for a general purpose development board like this one.

      I agree PSoCs are pretty badass, but their Windows-centric environment is a dealbreaker for me.

    2. “With NXP, the LPC-8xx is better.”

      and currently UNAVAILABLE from either mouser or digikey so any such comparison is MOOT

      “huge power with it’s single cycle 32bit multiply.”

      huge waste of silicon and money if your application doesn’t need it

      1. In the meantime, distributor’s stock level probably changed.
        I see 2.363 pieces in stock, seems reasonable for me. And digikey 1404 pices in stock.
        However, as vsergeev wrote before, LPC111x seems be better suited to general applications compared to LPC812 (no ADC, less memory, slower).

  2. I do love little boards like this, but google is right, ARM is going to be marginalized until the IO is standardized. Everyone uses different serial ports, GPIO pins, etc. for everything. Heck, ST can’t even use the same pins for USB control on their own boards, and they have control over everything. You need to carry around gobs of #defines for even a trivial hello world program. If you are shopping around and comparing performance on different chips, it’s a screaming nightmare to build your code for all your targets.

    Some of you might remember the enormous amount of effort compaq made, to ensure their systems were compatible with the IBM-PC in every conceivable manner. There was a strong point to what they did and we can all be thankful that they did it. Compaq would not have succeeded if they had not insisted on 100% compatibility and asked software vendors to make custom builds for their system.

      1. calling a stretch is to put it mildly, when pretty much every manufacturer have several ARM chips. ARM is taking over the world of embedded like the x86 took over the desktop
        I’d say that with cmsis ARM cortex is almost as standardized as a PC, all the basic of an OS is the same, peripheral vary

      2. mbed is a great example of this. It relies on each manufacturer’s CMSIS and some wrappers as a HAL. For many applications targeting a different SoC is a matter of changing the target and hitting rebuild.

        I’m surprised it doesn’t get much attention here since it’s now fully open (save for the Nordic blobs), supports cheap devkits, and has a very active development community.

  3. Highly recommend getting hold of a SWD debugger one way or the other. e.g. cheap eval with onboard debugger can double as a programmer for the same chip manufacturer.
    Once you used it, you don’t want to go back to UART debugging. For bare metal programming 32-bit chip with complicated registers setup, it is almost essential.

    1. for SWD newbies like me:
      Serial Wire Debug (SWD) is a ARM-only JTAG-like interface with only two pins. It’s cheap, fast, and can provide access to any number of devices through a single connection. Best, it gives “real-time access to system memory without halting the processor or requiring any target resident code”
      Thanks tekkieneet!

  4. I wonder if you can replace the uC with a cpld. I know it would probably increase the cost but it would be interesting to have a development board of the same size with programmable logic.

  5. On a different side note, I’m so glad that picture has a quarter in front of it. That way, the 5 billion people in the world who have no idea how big a quarter is, can estimate its size, based on the standard 2.54mm distance on the pin header, or based on the size of the standard mini-B USB connector.

    1. I base my perception of the size of a quarter solely on this picture! Since I have mini-B USB connectors, I can determine the size of a quarter and use that for all of the Adafruit photos where they put everything behind quarters as well. It’s like me putting my PCB’s behind a R5 for comparison… Just an idea (maybe I will start doing that)

    2. It’s a quarter, is it? Thanks. I still have no idea how big that is. I thought someone had just left some loose change lying around. I wouldn’t rely on looking at headers these days either – I see too many boards with 2mm, 0.05″ as well as the older 0.1″ (but I haven’t seen 0.156″ for quite a while). As for the USB connector – I can’t tell from the photo whether it’s mini or micro. I much prefer the simple inclusion of a short length of a ruler, ideally with both metric and imperial scales. Then we all know what is meant.

    3. Unfortunately I don’t think you can even do that as I’d have thought that there is not enough to remove of the lens distortion to actually use it as a scale. I’d suggest working it from the ‘splaying out’ of the standard header pins but I can’t tell what the vertical displacement is.

      Thinking some more, if it wasn’t for the marginal shadows, it’d be possible to think that the board could be significantly further away and so extrapolate that quarters must be teeny-tiny in comparison.

    1. If we’re playing that game, Freescale MK22DX256VLF5. Cortex-M4 50MHz, 256K flash/ 32k RAM, 29 GPIOs, USB FS device, USB and UART ROM bootloader, on-chip oscillator and LDO, $3.40 in qty100 at Mouser.

Leave a Reply

Please be kind and respectful to help make the comments section excellent. (Comment Policy)

This site uses Akismet to reduce spam. Learn how your comment data is processed.