# Minimal ARM circuit requirements

I have done some development with the ATMega and I'm looking to broaden my horizons. I have a couple Cortex M4 series chips and would like make an ARM equivalent to the Breadboarduino

I plan to either etch my own board or use a breakout board for the ARM and breadboard the rest. A reference or schematic of the minimum components would be greatly appreciated.

Are there any good resources for determining the minimum required components to operate, and ideally program, an ARM chip?

UPDATE:

I'm open to alternative hardware suggestions. Below is the chip that I'm currently trying to work with:

• Can you tell us which devices you have? Link to datasheet would be great. – stevenvh Oct 15 '12 at 16:04
• I hope it's not the WLCSP package you want to etch your own PCB for: a 0.4 mm pitch BGA! :-/ – stevenvh Oct 15 '12 at 17:08
• @stevenvh I'm not that brave. It is the LQFP 144 package – ZnArK Oct 15 '12 at 17:11
• Check the NXP LPC series, they (all?) have an on-board serial bootloader. lpc21isp is a good pc-side tool. LPC1114 is even available in DIP28! The lpc1343 has a buokt-in usb (!) bootloader (which sounds good, but is a bit cumbersome to use IMO). – Wouter van Ooijen Oct 15 '12 at 17:50
• @Wouter - Yes, I also discovered that DIP (see answer). The LPC1114 is the only Cortex-whatever be any manufacturer listed on Digikey available in DIP. – stevenvh Oct 15 '12 at 18:02

This really depends on the chips you are using - you didn't specify which one you got. Typically you would need at least a crystal, decoupling caps and reset logic. The programming interface might be a simple JTAG interface.

But all of this should be stated in the chips data sheet.

Update (for the STM32F407):

Look at the following pages in the data sheet

• 23ff. for the needed voltages (1.8-3.6V, so you need a regulator), and how to use the internal regulator (by pulling pin PDR_ON high)
• 69ff. for the pinouts
• 69+74 for the power supply scheme (this are the most interesting pages since they show the power supply connections and the needed capacitors)

You won't need a reset circuit (it's integrated - see page 23) or an oscillator (the integrated 16MHz oscillator is selected on startup, see page 22). So using a LQFP144 breakout board (like the one from futurlec(see bottom of page) might really be enough.

You can also look at the schematic of the STM32F4DISCOVERY board (see it's user manual, page 33. What you see there is the basic circuit - and it even contains the external crystals.

• Thanks for your input. I'm asking this question because the datasheet is huge and frankly I don't understand everything in it. I know the real solution would be to get an EE degree but my current career and other responsibilities don't make this a possibility right now. Are there any open hardware projects that would have a schematic of their ARM circuit. I'm confident I could pick that apart and make a usable project. – ZnArK Oct 15 '12 at 16:01
• The STM demo board linked above comes with the schematic, so you can start with this. Otherwise Olimex opens up their schematics, e.g. for this M4-board. – hli Oct 18 '12 at 6:47
• I didn't realize that. Thanks for the info. Very helpful, – ZnArK Oct 18 '12 at 13:26

Are you sure you want to do this for a Cortex-M4? It's a big leap from AVR, and I don't see how you would make use of all the features it provides. To start with a Cortex-M4 usually comes in a large package, typically more than 80 pins for the entry level parts, and 200+ is not an exception, think QFP or BGA. Are going to make a breakout board with two rows of 40 pins to breadboard?

The Cortex-M4 is also designed for high-speed: 120 MHz to 200+ MHz typically. OK, you may not need to design your PCB for those speeds if you use an on-chip PLL. But what about the peripherals, like USB or Ethernet?

Of course you can run it at lower speeds, and leave out much of the on-chip functionality, but I wonder what's the use of a Cortex-M4 to start with. I think a Cortex-M3 or even -M0 is more appropriate to start with. I don't want to discourage you, I want to remain realistic.

If you do want to go ahead with the Cortex-M4 you can do with minimal external hardware. The NXP LPC407x for instance has an internal RC-oscillator which is the default oscillator at reset, so you don't even need a crystal. A reset circuit and proper power supply decoupling will be all you need to get it up and running.

For a Cortex-M0 the NXP LPC111x may be worth having a look at. Granted, it doesn't come with lots of memory, but it's available in a DIL-28 package, which is a rarity for ARMs. Alternatively you can use a development board like the LPCXpresso,

where the right half is the application board, which can be separated from the LPC-link. As you can see there's hardly any external hardware required for the application. And if you solder a set of headers on it you can plug it onto a breadboard.

• Great feedback. I'm not hard set on using the Cortex-M4. I will look into the M3/M0 models. I'll check the exact chip and package I have and update the question. – ZnArK Oct 15 '12 at 15:58
• I've done a leap from PIC18s to LPC2100s (this was in 2008, by now ARM7 got superseded by Cortex-M3). It was a big leap in performance, but it wasn't a big leap in hardware complexity on the board level. – Nick Alexeev Oct 15 '12 at 16:47
• @Nick - I used several LPC2000 parts too, but like you say they're replaced by Cortex-M3. Cortex-M4 is a different league. – stevenvh Oct 15 '12 at 16:53

As Steven says it's quite a big leap to ARM from an 8-bit micro, so expect a fair bit of learning/time spent on the way.
I also wouldn't go for the M4 for your first ARM, simply because it hasn't be out too long and there is less support/info out there for it. I think an M3 or M0 is a better choice, and will be plenty to be getting on with.

You can certainly make your own board, but it would maybe be better to grab a small/cheap dev board first. Development wise, there are lots of options, from free (eclipse + GCC + OpenOCD) to expensive (Keil, Rowley, etc) Personally I use the Raisonance Ride7 IDE and tools with the STM32 series ARM M3/M4s, which is a bit cheaper than Keil/Rowely but good enough.

Have a look at one of the simple dev boards from someone like ST, Olimex, etc. This dev board has about the simplest schematic I could find, for an STM32 Cortex-M3.

• Great suggestion. I have a dev board on the way (Stellaris Launchpad) I plan on familiarizing myself with that before making my own board. I also updated my post with the hardware info. – ZnArK Oct 15 '12 at 17:07
• Note that boards costs about 3x as much as ST's own offering. – Chris Stratton Oct 15 '12 at 17:45
• @ChrisStratton TI's newest launchpad was available for $5 shipped. It might still be available. Tough price to beat. – ZnArK Oct 15 '12 at 19:05 • @ChrisStratton - yes, I added it for the schematic rather than price (didn't even check). I have one of the discovery STM32F4 boards, they are very cheap indeed but I thought it may confuse things a bit with all the extra stuff on there and the onboard STLink programmer with no "standard" JTAG connection. Still, for less than$10 (or whatever it is now) it's probably worth grabbing one of these as well (maybe the M3 version is better as mentioned) – Oli Glaser Oct 15 '12 at 23:24
• For simple embedded projects, I find the 4-pin SWD much more convenient than jtag. In it's original vendor-lock-in-tools-form it might not be, but there are open solutions for talking to the adapters now. – Chris Stratton Oct 16 '12 at 1:34

The Arduino Due should be out fairly soon:

Chip is a SAM3X8 Cortex-M3 from Atmel. Might be worth the wait if you're already familiar with Arduino style boards and Atmel style documentation. And since it will be open source to satisfy the Arduino requirements, you could of course breadboard-duino it.

• Great suggestion. I knew this was coming out but didn't think of using this a a model. Great suggestion. – ZnArK Oct 15 '12 at 20:09

I would recommend you check Mbed its a cortex-m3 device with a few nice peripherals, nxp provides compiler and lots of library and community libraries, a really easy way to program it and its already in a package to be used on a breadboard. I think it would be the easiest way to transition from AVR to ARM.

Many of the ST parts can, at least if not using a USB transceiver, run off their internal high speed oscillator.

That basically means your "circuit" consists of bypass caps and a few resistors on things like the reset and as termination on the SWD interface.

ST's $8-10 eval boards will program parts you put on your own board over the SWD bus; there are open source tools for them too, so you can put the programming operation right in your Makefile. Going for something in the 48 PQFP probably will make life easier on your first board attempt. You can assembly these without magnification (just have fine braid available to fix the bridge or two you will probably create per side), but having a loupe available to check your work would be helpful. •$8-10 won't be Cortex-M4, I guess. Can you specify which parts you're thinking of? Also for the QFP-48 package? TIA – stevenvh Oct 15 '12 at 17:54
• Cortex M3... they tend to make each version in several packages, of which the QFP-48 is going to be the easiest to work with by hand. – Chris Stratton Oct 15 '12 at 19:36