6
\$\begingroup\$

Which ARM MCU family is better for beginners?

I mean which family:

  • Is straightforward and easier to learn
  • Has more/better learning and development resources available
  • Has bigger and better community
  • [Has FLOSS learning and development software/hardware available]

Update:

  1. Do starting with Cortex-M4 is good idea? (because of ARMv7, Harvard mem arch etc)
  2. between NXP, ST and TI Cortex-M4 based MCUs which is better for start? (based on requirements above)
\$\endgroup\$
  • 9
    \$\begingroup\$ Please don't close this question, because it's a very interesting one. There's a limited amount of options, it's not opinion-based, the information is relevant for many users, the information is long-lasting because the toolchains have existed for a decade and there's very little obsolescence. All in all, the information is useful and there to stay. \$\endgroup\$ – PkP Jan 3 '15 at 10:45
  • 3
    \$\begingroup\$ not adding as an answer because i've no others experience, but personally after arduino i jumped on a stm32f3discovery and actually the ardest part was setting up the build tool. Thanks to CMSIS and other RTOS like chibios you can have an interface witch help you a lot hiding register and such things, or provideexample how things got implemented. \$\endgroup\$ – Lesto Jan 3 '15 at 12:43
  • 4
    \$\begingroup\$ I'm disappointed at this question being closed. I'm willing to think that you did it mainly to annoy me and then found the reasons afterwards. This is exactly the kind of question that we need. It benefits from the vast combined knowledge base of SE.EE users. It might be formulated better to read e.g. "What ARM development toolchains exist and what are their advantages" or something like that. \$\endgroup\$ – PkP Jan 3 '15 at 15:03
  • 2
    \$\begingroup\$ My vote would be "it does not matter". I prefer to use a plain GCC (from launchpad.net/gcc-arm-embedded) with my own makefiles, linkerscript and startup code. I like the LPC1114 and LPC810 because they are in DIP, and (boot)loading is easy with lpc21isp, but I could switch without much effort to any other chip that supports hands-off bootloading. \$\endgroup\$ – Wouter van Ooijen Jan 3 '15 at 15:17
  • 1
    \$\begingroup\$ @Funkyguy, you're welcome to feel that way. And I understand the policy regarding product recommendations, I'm just sorry it's there, because component selection is such a huge part of electronics (product) design and it takes so much time, thought and energy, and this would be a great community to answer those sorts of questions. And thanks for your answer to this question, it's exactly the kind that is very useful and I hope we would see more answers like that in here. \$\endgroup\$ – PkP Jan 4 '15 at 5:38
2
\$\begingroup\$

A lot of this depends on what you mean by "Family".

If you're asking for which manufacturer's product family is a good place to start, I'd recommend Atmel's SAM series basically because of the toolchain, at least if you're on windows.

ARM is unfortunately rather fragmented, in terms of manufacturer support and toolchains for windows.

Atmel has Atmel Studio, which you install and it basically just works. I spent a while poking around with STM32 parts before trying some atmel devices, and getting a functional toolchain was a major annoyance. I eventually got CooCox working, but there is very little first party support. Atmel studio just works right after being installed. This is nice because getting GCC working on windows can be involved.


If you aren't familliar with MCU development at all, I can't recommend ARM at all, really. You have to do a lot of reading-between-the-lines on any platform to get the peripherals to work.

\$\endgroup\$
  • 2
    \$\begingroup\$ Interesting comments about CooCox. While I agree about the lack of 1st-party support, I found it very straightforward to get working (on Windows) with STM32 - it just worked - and the debugging support (for STM32, at least) is pretty darn impressive for a free solution imo. \$\endgroup\$ – markt Jan 3 '15 at 9:28
  • 2
    \$\begingroup\$ @markt - I was looking at it about a year ago, it's possible it's improved a lot. \$\endgroup\$ – Connor Wolf Jan 3 '15 at 9:33
2
\$\begingroup\$

1.Do starting with Cortex-M4 is good idea? (because of ARMv7, Harvard mem arch etc)

Yes, why not? If you are programming in C language, I think you won't feel the difference (only the compiler will). In the other hand if you are programming in assembly, then there are differences of course.

2.between NXP, ST and TI Cortex-M4 based MCUs which is better for start? (based on requirements above)

From those MCU, I only know the TI Tiva MCU. You can buy the low cost Tiva C Series TM4C123G LaunchPad. This Launchpad has two MCU on it. One of them functions as the programmer and you could use it, if desired, to program/debug an external Tiva C MCU.

You can use an Arduino-Like programming IDE called Energia to program simple applications very quickly. For complex applications, you should use Code Composer Studio (CCS), which is free under certain conditions (one of them is using it with low-speed programmers as the one in the Launchpad). Current CCS (version 6) allows to easily install libraries and examples. Free libraries that allows to "easily" (this is of course relative) work with peripherals inside the MCU, interface with external peripherals, or having a RTOS (real time operating system).

\$\endgroup\$
2
\$\begingroup\$

The ARM Cortex M0 is the lowest and most simple architecture in the ARM family.

Personally I learned using the FRDM-KL25z development board from Freescale although there are a wide array of options.

There is an Arduino-like environment called mBed, which is very similar to Arduino although it is for ARM controllers. You can use mBed with many different controllers such as the Teensy and even the FRDM development board I mentioned.

If you aren't looking for an Arduino-like environment, you can use the FRDM development board I mentioned from Freescale which has a free development environment that includes a code generator called Processor Expert. Processor Expert allows you to specify components and communication protocols and then will generate the raw code for you. The code is still bare-metal code and will be very similar to code you would write if you weren't using Processor Expert.

Another line that is very popular, especially among the users here at EE.SE, is the Discovery line of development boards from ST Microelectronics.

In short though, for a beginner, I would very much recommend the Cortex-M0 series. The Cortex-M0+ has the same instruction set although it us more optimized.

\$\endgroup\$
  • 2
    \$\begingroup\$ M0+ has the same instruction set as the M0. It is optimized to be smaller, and has a 2-stage pipeline instead of the 3-stage of an M0, so its branch penalty is 2 instead of 3 clocks (so it will be a bit faster on the same clock). \$\endgroup\$ – Wouter van Ooijen Jan 3 '15 at 15:11
  • 1
    \$\begingroup\$ @WoutervanOoijen Thanks for the clarification. I wasn't sure and I for some reason didn't think to look it up. I've updated my post \$\endgroup\$ – Funkyguy Jan 4 '15 at 4:19
  • 3
    \$\begingroup\$ The difference between the various cortex-M cores is basically irrelevant to usage complexity: most all the work goes to dealing with toolchain and peripherals. \$\endgroup\$ – Chris Stratton Jan 4 '15 at 4:35