MCHCK – a small ARM Cortex M3 development board

Small form factor board, with a STM32L151 ARM Cortex M3 for around 5 dollars. This is the target of the MCHCK development board. The board was designed to be cheap enough so that you can develop a project with it, and not have to re-purpose it for the next project, but get a new one instead. Read about the design points below.

Small. The Arduino is huge. It is just way bulky for many purposes. Also you can’t breadboard with it. Ok, now there is the Pro Mini or the Teensy. Yes, that’s the form factor I want. Small form factor allows more use cases.

Cheap. Well, there you have it. Every Arduino sets you back about $20. The mbed costs way more. Ok, the MSP430 Launchpad costs $5, but then it is… well, the Launchpad. But $5 sounds good. At $5, you don’t have to ponder anymore whether your silly idea is really worth it. $20 might be too much to measure when the postman delivers letters (plot it over the year?). Or instead, you decide to take apart your Arduino rig that was used to count how often you open the fridge door, and use it for the mailbox instead; you all know the drill — $20 makes you stingy (“frugal”). $5 always goes. Low price fosters creativity.

Powerful. Because, sometimes, an AVR is just a bit slow. And really, getting an obscenely expensive FTDI cable every time you want to interface your microcontroller with a PC? Then all this serial console business, 10 different FTDI COM/ttyUSB ports… So what we need is enough computing power and easy interfacing with PCs. Modern ARM MCU with integrated USB transceiver! With a bit of supplied library code, implementing a USB device is a breeze. HID, mass storage, serial port. Easy interfacing with the PC. Powerful modern MCUs allow for easier development and usability.

Via the forum.

Join the Conversation

39 Comments

  1. Datasheet mentions that the RC is trimmable to +-0.5% accuracy, which is within the USB standard.

    1. Ok, you trim it using an external scope, than you deploy your application… and the temperature raises, giving you a different clock. You can’t trim “on the fly”!
      Anyway I’ve never worked with USB and HSI, so I don’t know if and how it works..

      1. You can calibrate the clock to the actual USB timing, that’s how AVR’s soft stack has been doing it for many years. Anyway, citing the actual STM32L15x Reference Manual, page 88:

        After reset, the factory calibration value is loaded in the HSICAL[7:0] bits in the Internal
        Clock Sources Calibration Register (RCC_ICSCR) (see Section 5.3.2).
        If the application is subject to voltage or temperature variations, this may affect the RC
        oscillator speed. You can trim the HSI frequency in the application by using the
        HSITRIM[4:0] bits in the RCC_ICSCR register.

        So basically same as in AVR. Don’t say you can’t do something when you don’t know if and how it works ;)

      2. I was _asking_ if it works, not saying it doesn’t, actually.
        I know you can trim the HSI oscillator, but as I said in the previous comment, you need something to measure the actual clock to calibrate it, e.g. an external oscilloscope. How can you calibrate it without measuring it?
        As a consequence, my doubt: does the USB work _reliably_ using the HSI? If you calibrate it in your workshop using the scope and then you deploy your circuit in the real world, it will be subject to temperature variations. Will be this a problem for the USB?
        If it is, an external crystal oscillator is needed (a footprint for it would be nice)

      3. Ok, finally here the answer (STM32L15x datasheet, rev 6, page 23):
        3.15.4 Universal serial bus (USB)
        The STM32L15xxx embeds a USB device peripheral compatible with the USB full speed 12 Mbit/s. The USB interface implements a full speed (12 Mbit/s) function interface. It has software-configurable endpoint setting and supports suspend/resume. The dedicated
        48 MHz clock is generated from the internal main PLL (the clock source must use a HSE crystal oscillator).

        So it says “the clock source must use a HSE crystal oscillator”. I guess that adding a crystal footprint would be a good idea, finally ;)

      4. You said ‘You can’t trim “on the fly”!’ which I don’t consider as question :) I replied how can you trim the internal RC oscillator in the application, on the fly. Also just the paragraph below my citation states that both HSI and HSE can be used to drive the PLL used for generating clock for USB, the clock tree confirms it too. Sure, it won’t be precise without adjustment but you can certainly do that.

        I also said that you can “calibrate the clock to the actual USB timing” which I think you missed so I add source for further reading, the V-USB AVR driver: http://vusb.wikidot.com/examples#toc4

        Beside other things, there is:
        “Regardless of the actual CPU clock, the RC oscillator must be calibrated to a precise source. This source can be the USB frame clock of 1 millisecond. After a USB reset, low speed devices are supplied with the frame clock for several milliseconds before any communication starts. We can use this interval for calibration.”
        Consequent bus communication happens in 1ms frames too so more sophisticated drivers can check or adjust over time too.

        About your question, you can calibrate MCU clock by sending reference frequency to it, you don’t have to measure it. By having known input frequency, the MCU can tune it’s clock so it matches the reference. You will probably like to have some feedback that it’s been successful but that can be done over communication interface too, you don’t have to measure the clock directly (and often there is no need/possibility for the main clock output).

        Now I won’t argue that this the most reliable way but even such classic chips like FT232R use internal oscillator as it’s clock for USB communication. When you recalibrate on every power up/bus connection I’d it’s pretty reliable. Anyway, crystal-less USB is done just to save money and in $5 projects it’s completely understandable. Optional for the user? Maybe, if there is any space left.

      5. With “on the fly” I mean you can’t trim it when your application has been deployed: you have to measure the frequency with a scope, or give a reference one as you said, so you need to physically connect to the circuit etc etc. Not exactly _reliable_.
        FTDI chips have 1600ppm internal oscillator over all the temperature range, while STM32 has 1% at 25C and 2% over the admissible temperatures. It is one order of magnitude of difference, the two oscillators have been designed for different purposes.
        Anyway, the datasheet says you need an HSE for USB.
        The only useful comment should be try it with the HSI, in different environments, and test the USB reliability.

  2. Ok, and what about free development tools?
    In my opinion the ARM hardware is cheap enough nowadays (look at all ST discovery boards) but compilers are very limited (free versions) or custom toolchains are complex to setup and frequently not so flexible (linker scripts, blabla).

    1. gcc built as a cross-compiler for ARM, combined with https://github.com/texane/stlink to connect to an STM32 Discovery, are entirely open-source and fully functional. What the ARM hobbyist community needs is an Arduino-like pre-built binary of a dev environment for Win/OSX/Linux. The test should be whether you can get to a blinking LED in less than 5 minutes, starting with nothing but a board and an internet connection. The Arduino passes that test easily, which is why it’s deservedly so popular.

      https://github.com/esden/summon-arm-toolchain is a great start for building your own toolchain, but having to build from source rules out the majority of weekend hackers.

  3. also, to be fair, half the points made are moot. You can get the same board or even smaller with an avr based chip that’s the same size or smaller. That could bring down the cost of the board even more :)

      1. That was well within the ‘half’ ;) Yes, the arm will have more power, but also at a higher cost.

        Also, comparing it to the arduino is … well just stupid. The Arduino is an extremly cheap prototyping enviroment. Your not supposed to have 6 to have them permanently installed. Your supposed to develop some neat idea, then get a proto board or better and use a dedicated little chip. I can’t imagine there don’t exist tiny AVR breakoutboards that you would flash your arduino scetch too connect your designs wires and have something cheap :)

        All in all, yeah, if you wanna work with 32bit more powerfull arm CPU’s; this one is pretty neat ;)

      2. Well if only one bit, it’s not a big deal :) Anyway, the site claims:
        “Modern ARM MCU with integrated USB transceiver! With a bit of supplied library code, implementing a USB device is a breeze. HID, mass storage, serial port. Easy interfacing with the PC.”

        But you get that with any modern MCU including many AVRs or PICs, then you have plenty of CPU time free for the application.

  4. If the thing could come with a mass storage USB bootloader, that would be sweet. Plug it in, drag my hex file to my new ‘hard drive’ and have the chip program itself from the hex file. I know some chips do this; can this one?

  5. The MC HCK comes with a crystal resonator (for size reasons), and it does work on USB.

    ARM MCUs are actually cheaper than AVRs these days, at least the USB versions. You can buy the STM32L151 with 64k flash at Future Electronics for $2.20 @ 1.

    1. Definitively a really nice board, the crystal was the only problem that came to my mind.
      Well done!

      1. STM32L is cool … wondering if the project developers also evaluated the Energy Micro EFM32 family of MCUs

  6. Last time I checked, the EM series was fairly more expensive. To create a board that is sold at $5, total production cost ideally stays below $2, which is a tough thing to do.

    It might turn out in the end that even the STM32L151 can not be sourced at low enough prices, and we’ll have to go with the NUC120 instead.

    1. Also, if you don’t want to wear the USB contacts really fast, you need “golden fingers”. Seeed does this for double the price of a pcb order (5×5).

      1. I would say there is no need for better USB, either you
        a) don’t use the USB much (just program and update from time to time
        or
        b) you are going to use it a lot but then you might prefer to solder the mini-USB plug to the rear side.

  7. Im from Argentina, how can I get the mchck board?
    Any e-mail? phone-number? the contacts that the webpage give dont work for me. Please Help
    Thanks

      1. ok, thanks for your reply. I will contact you again as soon as the MCHCK is available. Thanks for your time.

      1. Hi, the 168 MHz / 210 DMIPS STM32F4 sound like a good candidate for a tiny low-cost single chip USB controlled DDS function generator dongle. Assuming 1 clock/instruction and an 8-bit R2R DAC, the dongle should be able to approach 1 MHz “usable” sine/square/ramp/triangle output. Square wave could go much higher of course – and I haven’t even looked at what the timer-counters can do.

  8. It’s now January 2013. Where are the mchck boards available for purchase? I’d love to buy one….

    ??????????
    -D

    1. If you’re really keen you could checkout one of the Teensy boards, there is now the Teensy 3.0 out with 48MHz ARM Cortex M4 for $19 (ready made) and a couple of other models and they come with Dev tools that link into the Arduino IDE. http://www.pjrc.com/teensy/
      Also, though quite a lot bigger, there are some good and cheap Dev boards by ST available from major suppliers. The 8 bit ones start about about $8 and I think the 32 bit ones start about $15 or so.
      This MCHK board looks like it will be handy for its intended purpose when it comes out, but in the meantime you can still play with the same processor or similar units for under $20

  9. Hi, thanks for your sustained interest :)

    The people who have been working on the MCHCK so far have been quite busy lately. If you are interested, maybe you can help address the remaining issues, so that we can do a production batch. Just write to the mailing list if you’re looking for things to help with.

    Thanks!
    simon

    1. Not a lot of free time :-) Am working 20 hour days at the moment….
      However, I think a product like this mass produced has great potential to be used by all, not just as a quick prototype, but as a production level product (at that price yea!!)…
      But it has to be real…
      I’ve been looking with interest at this product for over a year now, and I’d love to see it be real…I think it’llhelp the embedded world a lot….and will inspire copy cat products…
      Keep up the good work….
      -D

Leave a comment

Your email address will not be published. Required fields are marked *

Notify me of followup comments via e-mail. You can also subscribe without commenting.