Author Topic: Where to begin? STM32F0 vs PIC32mx vs MSP432 vs ...  (Read 22470 times)

0 Members and 1 Guest are viewing this topic.

Offline HzMeister

  • Contributor
  • Posts: 8
  • Country: us
Where to begin? STM32F0 vs PIC32mx vs MSP432 vs ...
« on: September 21, 2016, 11:42:00 pm »
If you were just starting out, without knowing a single line of code or anything about microcontrollers, what would you pick? STM32F/L0, PIC32mx, MSP432 or other?
 

Offline ataradov

  • Super Contributor
  • ***
  • Posts: 6323
  • Country: us
    • Personal site
Re: Where to begin? STM32F0 vs PIC32mx vs MSP432 vs ...
« Reply #1 on: September 22, 2016, 12:06:28 am »
Anything ARM-based. From this list STM32F.
Alex
 

Online nctnico

  • Super Contributor
  • ***
  • Posts: 18870
  • Country: nl
    • NCT Developments
Re: Where to begin? STM32F0 vs PIC32mx vs MSP432 vs ...
« Reply #2 on: September 22, 2016, 12:12:20 am »
I'd definitely look at NXP's LPC series ARM Cortex microcontrollers as well. The peripherals are easy to work with and they all come with a bootloader which allows easy programming through the serial port (or even USB as a mass storage device). I know ST usually wins on price but IMHO that is about where their 'advantage' ends.
« Last Edit: September 22, 2016, 12:16:22 am by nctnico »
There are small lies, big lies and then there is what is on the screen of your oscilloscope.
 

Offline mikeselectricstuff

  • Super Contributor
  • ***
  • Posts: 12099
  • Country: gb
    • Mike's Electric Stuff
Re: Where to begin? STM32F0 vs PIC32mx vs MSP432 vs ...
« Reply #3 on: September 22, 2016, 12:22:58 am »
Depends entirely what you want to do, but in terms of ease of setting up the toolchain, PIC32 is very straightforward, in that MPLAB takes care of stuff like linker settings and including the right device-specific files for you.
 
If you just want to get into higher end MCUs it probably doesn't really matter which, and the core is probably the least important of all as the compiler takes care of it - it's much more about the peripherals.
Youtube channel:Taking wierd stuff apart. Very apart.
Mike's Electric Stuff: High voltage, vintage electronics etc.
Day Job: Mostly LEDs
 

Offline dannyf

  • Super Contributor
  • ***
  • Posts: 8229
  • Country: 00
Re: Where to begin? STM32F0 vs PIC32mx vs MSP432 vs ...
« Reply #4 on: September 22, 2016, 12:27:04 am »
Unless you are already invested in pic, I wouldn't pick pic32 as a platform to learn;

STM32F0 is fairly feature limited. So I would start with F1 as a generic platform - it is older and slower. F3 for analog / mixed signal capabilities. The Nucleo boards there are great as it provides arduino compatible headers.

MSP432 is a weird platform, being new and with a mixed bag of ARM and TI/MSP430 peripherals. I would pick it if you are migrating up from MSP430 or are already familiar with Luminary / Tiva chips.

NXP's offerings aren't that exciting, and the software side is a mess. If you have to go down that path, pick LPC11xx (1114 for example) as simple beginner-friendly starting point, or LPC1768/69 for a full-featured chip.

LM4F120 launchpad is probably the most feature rich mcu out there. Great performance and lots of code. But unfortunately quite buggy.

If I were to do it again, I would go with a STM32F3 Nucleo. and then maybe STM32F1 minimalist board, or MSP432 just for the challenge.
================================
https://dannyelectronics.wordpress.com/
 

Offline HackedFridgeMagnet

  • Super Contributor
  • ***
  • Posts: 1953
  • Country: au
Re: Where to begin? STM32F0 vs PIC32mx vs MSP432 vs ...
« Reply #5 on: September 22, 2016, 12:36:01 am »
After spending 2 hours helping someone get started on an STM32F4.

If they don't know how to code then I would suggest go Arduino.

 

Offline HzMeister

  • Contributor
  • Posts: 8
  • Country: us
Re: Where to begin? STM32F0 vs PIC32mx vs MSP432 vs ...
« Reply #6 on: September 22, 2016, 01:23:50 am »
Anything ARM-based. From this list STM32F.

Thanks for the reply. Would you recommend anything better that's not on the list?

I'd definitely look at NXP's LPC series ARM Cortex microcontrollers as well. The peripherals are easy to work with and they all come with a bootloader which allows easy programming through the serial port (or even USB as a mass storage device). I know ST usually wins on price but IMHO that is about where their 'advantage' ends.

Just checked their site and their software/documentation seems organized at first glance. Will be downloading their IDE to see what it's like. How would you compare their LPCXpresso IDE to ST's CudeMX+Keil? Btw, is configuring the bootloader and programming through a serial port easier/quicker than with the included stlink programmer that's on stm32 boards?


Depends entirely what you want to do, but in terms of ease of setting up the toolchain, PIC32 is very straightforward, in that MPLAB takes care of stuff like linker settings and including the right device-specific files for you.
 
If you just want to get into higher end MCUs it probably doesn't really matter which, and the core is probably the least important of all as the compiler takes care of it - it's much more about the peripherals.

That's why I included PIC in the list. I've seen several other forum posts mention how much easier PIC is compared to ARM - but those were over a year old and things change fast. With of the chip vendors updating their toolchains constantly, is that still the case?

Unless you are already invested in pic, I wouldn't pick pic32 as a platform to learn;

STM32F0 is fairly feature limited. So I would start with F1 as a generic platform - it is older and slower. F3 for analog / mixed signal capabilities. The Nucleo boards there are great as it provides arduino compatible headers.

MSP432 is a weird platform, being new and with a mixed bag of ARM and TI/MSP430 peripherals. I would pick it if you are migrating up from MSP430 or are already familiar with Luminary / Tiva chips.

NXP's offerings aren't that exciting, and the software side is a mess. If you have to go down that path, pick LPC11xx (1114 for example) as simple beginner-friendly starting point, or LPC1768/69 for a full-featured chip.

LM4F120 launchpad is probably the most feature rich mcu out there. Great performance and lots of code. But unfortunately quite buggy.

If I were to do it again, I would go with a STM32F3 Nucleo. and then maybe STM32F1 minimalist board, or MSP432 just for the challenge.

What are some negatives about PIC?

I chose the F0/L0 MCUs because you get Keil MDK free with them - apparently it's very good. The NUCLEO-F091RC/F072RB is near the top of my list. Besides, since I'm just starting out, I don't expect to be using anywhere near the available capabilities.

I considered the MSP432 because it's ARM and and since TI makes it, I expect the software, documentation, libraries, etc. to be top notch. Plus the code composer studio if free right now with their dev board. If the support isn't any good, then there is no way I would consider it.

I've read several other forum posts that NXP software is not the best. If that's the case, then it's a huge turn off. Having to deal with subpar tools when learning anything is a drag.

After spending 2 hours helping someone get started on an STM32F4.

If they don't know how to code then I would suggest go Arduino.

i considered arduino just like anyone else starting out, and they look awesome just to play around with. But once you get out of their proprietary IDE, all you're left with is an 8 bit AVR. Then I would have to relearn a new architecture, toolchain, etc. I would rather pick something I can grow in to and master, not something to grow out of.

 

Offline ataradov

  • Super Contributor
  • ***
  • Posts: 6323
  • Country: us
    • Personal site
Re: Where to begin? STM32F0 vs PIC32mx vs MSP432 vs ...
« Reply #7 on: September 22, 2016, 01:33:16 am »
Thanks for the reply. Would you recommend anything better that's not on the list?
I personally would go for STM32F4.

Btw, is configuring the bootloader and programming through a serial port easier/quicker than with the included stlink programmer that's on stm32 boards?
If you are serious about doing this for living, then get real tools. What's the point of learning the easy thing, when in real life you will have to use proper programmers?

how much easier PIC is compared to ARM - but those were over a year old and things change fast.
Again, easy does not mean useful. I would say it is easier to find employment with ARM experience. And if you know the "harder" thing, it is always easier to figure out the "easy" thing.

With of the chip vendors updating their toolchains constantly, is that still the case?
For ARM, ARM themselves provide a toolchain and it is as good as it gets.

since TI makes it, I expect the software, documentation, libraries, etc. to be top notch.
That's just not true. There is no good software stack from any manufacturer. They all have problems that you will have to deal with.

If the support isn't any good, then there is no way I would consider it.
Then you've picked the wrong area :)

I've read several other forum posts that NXP software is not the best. If that's the case, then it's a huge turn off. Having to deal with subpar tools when learning anything is a drag.
That's how it goes in this industry, so you will have to deal with that.
Alex
 

Offline HzMeister

  • Contributor
  • Posts: 8
  • Country: us
Re: Where to begin? STM32F0 vs PIC32mx vs MSP432 vs ...
« Reply #8 on: September 22, 2016, 02:01:26 am »
If you are serious about doing this for living, then get real tools. What's the point of learning the easy thing, when in real life you will have to use proper programmers?

I'm serious about learning MCUs. I want to get up and running asap with the big easy steps and work my way towards the complicated ones.

Again, easy does not mean useful. I would say it is easier to find employment with ARM experience. And if you know the "harder" thing, it is always easier to figure out the "easy" thing.

That's true. But if you don't know anything, then I think it would be more helpful to know the easy thing first, don't you?

For ARM, ARM themselves provide a toolchain and it is as good as it gets.

Isn't it prohibitively expensive though? What would you say is second best?
« Last Edit: September 22, 2016, 02:04:20 am by HzMeister »
 

Offline ataradov

  • Super Contributor
  • ***
  • Posts: 6323
  • Country: us
    • Personal site
Re: Where to begin? STM32F0 vs PIC32mx vs MSP432 vs ...
« Reply #9 on: September 22, 2016, 02:08:58 am »
That's true. But if you don't know anything, then I think it would be more helpful to know the easy thing first, don't you?
I typically go straight for what I think I need. This does not always work out as expected, but in many cases it does. But that's my personal preference.

In any case, I strongly recommend to not use manufacturer libraries. Especially if you are learning. MCUs are actually way easier to understand if you look at a low level.

Sure, you will get blinking light faster with demo examples, but that does not make you any closer to understanding or knowing anything.

Cortex-M processors are brilliantly designed so that you can do everything with C, including the startup code.

And if you don't know C, I would strongly recommend to postpone playing with MCUs and get up to speed with C on the PC.
Alex
 

Offline ebclr

  • Super Contributor
  • ***
  • Posts: 2003
  • Country: 00
 

Offline evb149

  • Super Contributor
  • ***
  • Posts: 1666
  • Country: us
Re: Where to begin? STM32F0 vs PIC32mx vs MSP432 vs ...
« Reply #11 on: September 22, 2016, 03:02:15 am »
My suggestions:
* Avoid the PIC, though there's nothing wrong with it, I can't think of compelling advantages for you to use it in your case and the experience with the device and toolchain would only marginally be useful to learn other environments while the benefits of the architecture and tools seem not so great in return.

* MSP432: Probably worth buying a kit now if the price is not difficult for you, considering the good deal presently available.  But, that said, it is still a little "unusual" in its architecture and toolchain.  Not so much as the PIC32, but still I'd suggest to learn both it and one other mainstream ARM MCU just for variety of experience wth tools and ICs.

* STM32, hard to beat the price on the devboards, the Keil tools are great for the F0/L0 and good for most anything else (even the 32Kby free limited version for these "antything else" options).  One annoyance with the Nucleo and several other kinds of dev-boards for me is that then don't integrate so many useful peripherals on-board other than the MCU integrated ones which aren't really directly so useful without external peripherals like sensors to attach them to.  So I'd look for a kit with some interesting peripherals or buy a shield board to expand a kit to have useful peripherals.  I'd certainly suggest a NUCLEO-F072RB and / or NUCLEO-F091RC with Keil as a good starting point if you don't mind running MS Windows.

The CORTEX-M7 STM32 kit withe the LCD looks like fun too, though it is a fair bit more expensive than the F0 kits and you wouldn't get the extended Keil for the M7 just 32KBy limited one which is a bit limiting for tht part especially.

* Other options -- why not look at a kit that has some more interesting / useful integrated capabilities like maybe wireless communications?  The TI CC2650 launchpad XL kit from TI is good with the free Code Composer though they use TI RTOS and the TI tools web sites aren't so stellar.  The "SensorTag" kit based on the CC2650 may be interesting too.
* From Nordic there's the NRF52-DK development kit with a nice integrated JLINK debugger IC and the NRF52 IC with a fairly generous amount of RAM and processing power in the M4F MCU and it has Bluetooth Low energy as well. 
* Cypress CY8CKIT-042 is nice for another ARM + Bluetooth LE kit.
* Cypress CY8CKIT-059 is a stellar kit for $10 (last I knew) with a very powerful PSOC-5LP MCU.  Their IDE is unique to them but it many ways the IDE and the IC architecture are more powerful and more easy to use in terms of getting the peripherals to work than almost any other MCU vendor.  You can use "schematic design" and GUI based configuration tools to configure so much of the hardware settings for the peripherals that you barely have to write a few lines of code to do many useful and interesting things with the built in analog / digital peripherals.  You'll still want to attach some external peripherals like temperature sensor, humidity sensor, accelerometer, etc. to the board via some expansion board for more interesting possibilities though.

* Not a MCU, but if learning to program in C or C++ or Python and maybe using GCC and/or ECLIPSE, you should consider a Raspberry Pi for the price and convenient development tools.  Once you are comfortable with systems programming in GCC then you can easily write similar code for MCUs with GCC+ECLIPSE tool chains.

So I guess my personal "buy list" would probably look like:
NRF52-DK (32Kby limited Keil or free GCC works fine for it)
TI SensorTag CC2650 kit & programmer unit kit, (with free TI Code Composer)
MSP432 promotional bundle kit (with promotional Code Composer),
NUCLEO-F072RB kit with extended capability free Keil license (very useful),
CY8CKIT-059 for the PSOC5-LP with some protoboard / shield / headers to fit it..
And maybe two of those ESP8266 or whatever the current popular version/model is for 802.11 education.
Raspberry PI 3B.
ESD protective wrist strap & small desk mat.

There are some nice Kinetis-W MCU series wireless kits I think as well and also some non-wireless Kinetis kits like the KL25Z and many others.  Find something supported by the new Kinetis Design Studio and with a couple interesting peripherals on board like wireless or accelerometer.

 
The following users thanked this post: HzMeister

Offline HzMeister

  • Contributor
  • Posts: 8
  • Country: us
Re: Where to begin? STM32F0 vs PIC32mx vs MSP432 vs ...
« Reply #12 on: September 22, 2016, 03:06:23 am »
I typically go straight for what I think I need. This does not always work out as expected, but in many cases it does. But that's my personal preference.

In any case, I strongly recommend to not use manufacturer libraries. Especially if you are learning. MCUs are actually way easier to understand if you look at a low level.

Sure, you will get blinking light faster with demo examples, but that does not make you any closer to understanding or knowing anything.

Cortex-M processors are brilliantly designed so that you can do everything with C, including the startup code.

And if you don't know C, I would strongly recommend to postpone playing with MCUs and get up to speed with C on the PC.

I just started learning C this past week and for someone with no programming experience, it's a steep learning curve...

The only reason I'm learning C in the first place is to be able to program MCUs and a lot of the info out their is geared towards coding for software(which is useful but extraneous) I want to at least pick up a dev board so that I can apply concepts I learn and look at example code of how others did it. The platform with the best software and support will significantly take the edge off the aforementioned learning curve.

I made this thread looking for advice from people who have dealt with various platforms and know the strengths and weaknesses of each and can recommend the right stepping stone for beginners. While learning from scratch can certainly make a determined person into an MCU master, there are certainly quicker and less painful ways of doing it.

http://www.silabs.com/products/mcu/32-bit/Pages/efm32-g8xx-stk.aspx




I looked into the EFM32 gecko line of MCUs and even installed their Simplicity Studio IDE to take a look at. While they look pretty cool(especially their bluetooth SOCs), there doesn't seem to be a lot of community support for them. How are they better than others like like the STM32?
 

Offline ataradov

  • Super Contributor
  • ***
  • Posts: 6323
  • Country: us
    • Personal site
Re: Where to begin? STM32F0 vs PIC32mx vs MSP432 vs ...
« Reply #13 on: September 22, 2016, 03:15:02 am »
I just started learning C this past week and for someone with no programming experience, it's a steep learning curve...
I personally would not layer the need to learn MCUs on top of that.

(which is useful but extraneous)
Not really. Almost everything from "desktop" C can be applied for embedded systems. Some of the things may be a bit heavyweight out of the box (like file operations), but they still will work.

I do MCU support for a living, and it is my general observation that official support will help you with questions on the MCU itself, but knowledge of C will be assumed. Official support people give up trying to teach general programming pretty fast. Community support may be a bit more tolerant, but still, trying to explain intricacies of the hardware to a person struggling to understand the language can be very hard.
Alex
 
The following users thanked this post: HzMeister

Offline evb149

  • Super Contributor
  • ***
  • Posts: 1666
  • Country: us
Re: Where to begin? STM32F0 vs PIC32mx vs MSP432 vs ...
« Reply #14 on: September 22, 2016, 03:25:27 am »
Yeah that's why I mentioned getting a Raspberry Pi to learn basic programming in C, Python, Lua, C++.
Either your current PC or a Pi like LINUX SBC is best to learn C with because you don't have to learn MCU architecture on top of the C learning curve.  You can also freely use constructs like printf, fprintf, getenv, scanf, sprintf, sleep, getchar, putchar, allocate as much heap and stack memory as you can reasonably want, and you never have to worry whether you broke the hardware with your program or with your device programming manipulations.

#include <stdio.h>
#include <stdlib.h>

int main( int argc, char **argv ) {
   printf("Hello, World.\n");
}

Takes 60 seconds to experiment with a C program or new function call on a PC whereas there are several layers of library, device programming, I/O, and debugger / toolchain complexity with doing the same for a MCU.

Just follow through Kernighan & Ritchie and you'll be programming in C in a couple of months in your spare time no problem.

Maybe try Visual Studio community edition or something if you're bound to use MS Windows for an IDE with code completion and colorization and stuff though if you want to use MCU tools on MS Windows, use the free lite Keil MDK 5.

 
The following users thanked this post: HzMeister

Offline rstofer

  • Super Contributor
  • ***
  • Posts: 7033
  • Country: us
Re: Where to begin? STM32F0 vs PIC32mx vs MSP432 vs ...
« Reply #15 on: September 22, 2016, 04:34:39 am »
Learning C and learning embedded programming all at the same time is going to be fairly difficult.

I would suggest you start with the Arduino because it will let you write C & C++ programs for a platform that is very well known.  There are a ton of sample programs that come with the IDE and even more projects on the Internet.  There's nothing like success to build confidence.  I don't personally use the C++ approach, I am more of a C kind of programmer.  This is the easiest platform for getting started.

Next up, I would consider the mbed (LPC1768 version).  The toolchain doesn't need to be installed, all programming is done through a web browser.  Very clever!  There are many examples and a lot of library code.  www.mbed.org

Moving up, I am now working with the STM32F4 series devices.  In may ways, they are a PITA but I'm learning my way around.  Consider buying "Mastering the STM32" book because it will show you exactly how to set up the toolchain and get everything working.  It's important that the tools match the book.

You will notice on the mbed.org site that MANY STM32F boards use exactly the same approach to programming as the original mbed board.  Playing with the mbed is a nice way to transition for the STM32F Nucleo boards.  Definitely put these boards on back burner until you have a whole lot of experience.
 
The following users thanked this post: HzMeister

Offline forrestc

  • Supporter
  • ****
  • Posts: 573
  • Country: us
Re: Where to begin? STM32F0 vs PIC32mx vs MSP432 vs ...
« Reply #16 on: September 22, 2016, 05:01:00 am »
If you were just starting out, without knowing a single line of code or anything about microcontrollers, what would you pick? STM32F/L0, PIC32mx, MSP432 or other?

I'm not sure if I was starting where you described that I would start with the question you're asking.

A better question would be:   What is the easiest/fastest way to get up to speed learning about microcontrollers?

Picking a microcontroller for learning is completely different than picking a microcontroller for a project.   I use PIC microcontrollers professionally every day, and am pretty partial to them.   The other microcontrollers also have plusses and minuses.

But if someone says 'I want to get started and have no background', I'm going to point them toward an Arduino or similar with good 'getting started' documentation.  The reason?  There are some basics one need to master, and an Arduino is a good way to get started learning the programming basics.   I may even go as far as to point them toward something like https://www.sparkfun.com/products/12060 or https://www.adafruit.com/products/170 .   The other path is to find a good lesson manual and buy whatever they recommend.

Once you master that basic skillset, then you can move onto something bigger and badder.   

 

Offline HzMeister

  • Contributor
  • Posts: 8
  • Country: us
Re: Where to begin? STM32F0 vs PIC32mx vs MSP432 vs ...
« Reply #17 on: September 22, 2016, 05:42:14 am »
Yeah that's why I mentioned getting a Raspberry Pi to learn basic programming in C, Python, Lua, C++.
Either your current PC or a Pi like LINUX SBC is best to learn C with because you don't have to learn MCU architecture on top of the C learning curve.  You can also freely use constructs like printf, fprintf, getenv, scanf, sprintf, sleep, getchar, putchar, allocate as much heap and stack memory as you can reasonably want, and you never have to worry whether you broke the hardware with your program or with your device programming manipulations.

#include <stdio.h>
#include <stdlib.h>

int main( int argc, char **argv ) {
   printf("Hello, World.\n");
}

Takes 60 seconds to experiment with a C program or new function call on a PC whereas there are several layers of library, device programming, I/O, and debugger / toolchain complexity with doing the same for a MCU.

Just follow through Kernighan & Ritchie and you'll be programming in C in a couple of months in your spare time no problem.

Maybe try Visual Studio community edition or something if you're bound to use MS Windows for an IDE with code completion and colorization and stuff though if you want to use MCU tools on MS Windows, use the free lite Keil MDK 5.

Thanks for your great replies, especially your previous post commenting on each platform. I didn't even consider cypress so I'll definitely check them out. While it would be great to buy several different dev boards and experiment with all of them(especially after I have some experience under my belt), my budget(both with time and money) is limited.

Btw, the raspberry pi looks really useful for learning C, albeit a little overkill and a little pricey. I'll check it out though.

Learning C and learning embedded programming all at the same time is going to be fairly difficult.

I would suggest you start with the Arduino because it will let you write C & C++ programs for a platform that is very well known.  There are a ton of sample programs that come with the IDE and even more projects on the Internet.  There's nothing like success to build confidence.  I don't personally use the C++ approach, I am more of a C kind of programmer.  This is the easiest platform for getting started.

Next up, I would consider the mbed (LPC1768 version).  The toolchain doesn't need to be installed, all programming is done through a web browser.  Very clever!  There are many examples and a lot of library code.  www.mbed.org

Moving up, I am now working with the STM32F4 series devices.  In may ways, they are a PITA but I'm learning my way around.  Consider buying "Mastering the STM32" book because it will show you exactly how to set up the toolchain and get everything working.  It's important that the tools match the book.

You will notice on the mbed.org site that MANY STM32F boards use exactly the same approach to programming as the original mbed board.  Playing with the mbed is a nice way to transition for the STM32F Nucleo boards.  Definitely put these boards on back burner until you have a whole lot of experience.
...
But if someone says 'I want to get started and have no background', I'm going to point them toward an Arduino or similar with good 'getting started' documentation.  The reason?  There are some basics one need to master, and an Arduino is a good way to get started learning the programming basics.   I may even go as far as to point them toward something like https://www.sparkfun.com/products/12060 or https://www.adafruit.com/products/170 .   The other path is to find a good lesson manual and buy whatever they recommend.

Once you master that basic skillset, then you can move onto something bigger and badder.   


Very good points. After thinking about it, Arduino may actually a good tool to get you feet wet in the beginning considering the complexity of the subject. I dismissed it because it's not ARM(or PIC) and I didn't want to waste time learning something I'll never put into use. Btw, which arduino version do you recommend?

mbed looks interesting. Lots of boards supported. How useful is it actually?

While I'll definitely be focusing most of my efforts into learning C, I wanted to have a 'real' mcu dev board or two on hand just try even the most basic of things - to the point where it wouldn't even matter what I'm using. However, as I gain more skill and slowly learn how to work with MCUs, that very platform I chose now will be increasingly more important since it's what I'll be investing the majority of my time in. So any and all opinions on why a platform is superior over another are welcome.
« Last Edit: September 22, 2016, 05:47:18 am by HzMeister »
 

Offline jesuscf

  • Regular Contributor
  • *
  • Posts: 230
  • Country: ca
Re: Where to begin? STM32F0 vs PIC32mx vs MSP432 vs ...
« Reply #18 on: September 22, 2016, 06:53:23 am »
What a small world!  Recently I asked myself the same question.  I decided to answer it with a little experiment during my recent vacation:  buy a bare micro-controller from DigiKey and get running both a 'blinky' and 'hello world' using only free tools or other ICs that are easily obtainable by anyone.  I didn't want to buy any programmers, IDEs, debuggers, or any other pre-made hardware or software.   My first step was to build a simple USB to Serial adapter around the FT230XS IC from FTDI.  That little board turn out to be extremely useful as it allowed me to load program to to the micro-controllers I tried either using serial boot-loaders or in-system programming via the likes of SPI or JTAG.

My first pick was the LPC824 from NXP.  The chip is about $2 and comes with a serial boot-loader that was easy to activate.  The LPC824 is only available in surface mount packages, so I soldered it into an adapter to assemble the circuit in a breadboard.  The compiler I used is GCC for ARM.  I downloaded the latest version of GCC for ARM from https://developer.arm.com/open-source/gnu-toolchain/gnu-rm/downloads.  The serial down-loader I use  was lpc21isp downloaded from https://sourceforge.net/projects/lpc21isp/.  There was a problem with the down-loader that prevented downloading to all the memory of the LPC824, but it was easy to fix (SectorTable_8xx[] had only 16 pages defined instead of 32). I found some examples around the net that helped me get started with both 'blinky' and 'hello world'.   In all, it took me about 2 days to get the LPC824 going.

My second pick was the STM32F051 from ST .  Also around $2 from DigiKey.  I soldered the LQFP32 package into an adapter for bread boarding. This processor comes also with a serial boot-loader that is easy to activate. The down-loader I used was FLASHER-STM32 available from http://www.st.com.  The compiler I used was also GCC for ARM that I have already installed for the LPC824.  Once again I found examples around the net that allowed me to quickly get 'blinky' and 'hello world' going.  This one took me less than a day.

My third pick was the ATmega328 from Atmel (yes the same one in the Arduino board).  Around $4 from DigiKey.  I used also GCC, which I downloaded from the Atmel page http://www.atmel.com/tools/ATMELAVRTOOLCHAINFORWINDOWS.aspx.  For this one I wrote an ISP programmer using the FT230XS IC configured in bit-bang mode.  I got that going fairly quickly, although to be fare I should point out that I just adapted a programmer I wrote for the AT89LP family of micro-controllers from Atmel that have a very similar programing interface to the ATmega328.  For the ATmega328 I got both 'blinky' and 'hello world' going in about a day.

My fourth pick was the PIC32MX170F256B from Microchip.  Around $5 from Digi-Key.   This one was a nightmare!  First, there is no freely available GCC compiler you can download, except from Microchip.  So I decided to build the compiler from sources.  It took me about 3 days to build the compiler, but none of my compiled programs worked out.  Finally I gave up and downloaded the free-but-crippled XC32 compiler from Microchip.  For my initial tests I used a programmer built around an Arduino board: https://github.com/ppersia37/ardupic32.  The programmer is very slow but it got me started.  So after about week I got both 'blinky' and 'hello world' going.   I was not happy with the programmer, so I wrote a JTAG programmer around the FT230XS which is orders of magnitude faster than the one built around the Arduino.  I don't remember how long it took me to get the programmer done, but for sure it was at least a week (and several bricked PIC32s!).    At some point, after some discussions about XC32 in this forum, user 'Karel' posted instructions on how to un-cripple XC32 (https://www.eevblog.com/forum/microcontrollers/pic32-evolution/msg1007099/#msg1007099) which worked quite well.  After what seems a long time I ended up with a nice setup for the PIC32 which I quite like.

My fifth pick was the MSP430, but my vacation was over, so I didn't have time to try it out (reason: see paragraph above!).

So which one is my favorite?  All of them!  Once I got things going, they were very similar from the programmer's point of view.   I like the easiness of both the LPC824 and STM32F051, but the PIC32MX170F256 has a lot more memory and 'feels' powerful (may be I struggled so much with it that I 'appreciate' it more).  At some point trying to use printf() (via newlib nano) with the LPC824 I ran out of Flash memory.  There are many ways around this problem, so for me is not a deal breaker.  Even the Atmega328 felt right despite being an 8-bitter!  In the picture below are the bread boarded-micro-controllers, from left to right the AT89LP52 (which I use quite a bit, the Atmega324 programmer is based in the programmer I wrote for this one), LPC824, STM32F051 (with a pot attached, as I also tested the ADC), Atmega328, and PIC32MX170F256.

Homer: Kids, there's three ways to do things; the right way, the wrong way and the Max Power way!
Bart: Isn't that the wrong way?
Homer: Yeah, but faster!
 
The following users thanked this post: HzMeister

Online JPortici

  • Super Contributor
  • ***
  • Posts: 2587
  • Country: it
Re: Where to begin? STM32F0 vs PIC32mx vs MSP432 vs ...
« Reply #19 on: September 22, 2016, 08:48:59 am »
I recommend NXP as a starter for ARM.

*audience hold their breath*

- Yes, their demoboard cost a bit more than ST
- Yes MOST LPCs are not as attractive as a stm core (though i am making experiments with the M4F / M0+ dual core. i plan to use the M0 to make up for the absence of some peripherals like the FSMC/tft controller)

but

- available also in smaller packages
- comparable parts with a lot more program/data memory on board
- documentation is far more readable (and solid. no info scattered around the datasheet(s)), example circuits in the actual datasheet.
- the hal is easier to understand, cleaner, and with a blink of an eye you can go bare metal.
- their code examples do work and they are written in bare metal style.
- probably the most important of all they actually give you an IDE, which is of course another modified eclipse, that actually works out of the box. if you are a beginner or you don't want to waste time installing this and that and troubleshoot the occasional bug you have the complete package ready for you, for windows linux and osx. The modified eclipse actually has a couple of neat addons like the peripheral view
 

Offline dannyf

  • Super Contributor
  • ***
  • Posts: 8229
  • Country: 00
Re: Where to begin? STM32F0 vs PIC32mx vs MSP432 vs ...
« Reply #20 on: September 22, 2016, 10:11:21 am »
Quote
What are some negatives about PIC?

I assumed, maybe incorrectly, you wanted to learn this as a marketable skill. ARM is all the raged and few cares about your PIC skills.

Quote
I chose the F0/L0 MCUs because you get Keil MDK free with them - apparently it's very good.

It is very capable. But also quite challenging for a newcomer, especially v5.x.

Quote
I considered the MSP432 because it's ARM and and since TI makes it, I expect the software, documentation, libraries, etc. to be top notch.

No correlation there.

Quote
I've read several other forum posts that NXP software is not the best. If that's the case, then it's a huge turn off. Having to deal with subpar tools when learning anything is a drag.

if you with lpcxpresso, the compiler is top notch, being gcc. the ide is very good, being eclipse.

the issue is with the proprietary debugger and debugging interface, and the half baked mess called lpcopen.

chip-wise, the lpcs are some of the least featured but most robust chips. so a trade off there.

As to starting out with a simpler-featured chip, as a "development board", you want it to have the most feature so you can keep learning on it. so F3 or F4 Nucleos if you want to go with ST.
================================
https://dannyelectronics.wordpress.com/
 

Offline NANDBlog

  • Super Contributor
  • ***
  • Posts: 4595
  • Country: nl
  • Current job: ATEX certified product design
Re: Where to begin? STM32F0 vs PIC32mx vs MSP432 vs ...
« Reply #21 on: September 22, 2016, 10:20:05 am »
Yes. For a beginner, setting up the toolchain IS the biggest issue, after that, getting information on how to do things.
So where to begin... Arduino. Setting up the toolchain is simple. Getting information on how to do stuff is simple. Making prototypes is simple. You learn "kinda-sorta" C programming, you learn about peripherals, you learn about protocols. Start there. Engineers will avoid the topic, or discourage you that it is not real programming or real electronics, dont listen.

I have to agree, starting with PIC is simple, I did that myself, with ASM language and almost only the datasheet as information. You know what? I've learned a lot. But even now, when I have to set up a GCC toolchain for ARM, it is magic pain in the ass issues with make files, links missing, path not set up correctly, etc. Microchip PIC32 with works out of the box. MBED works almost out of the box. Arduino is excellent.
Setting up a toolchain for ST, NXP is horrible. Libraries are pain to track down manage, make them work.
So the only time I design with them, is when someone else writes the code, and I only design the PCB.
 

Offline westfw

  • Super Contributor
  • ***
  • Posts: 3138
  • Country: us
Re: Where to begin? STM32F0 vs PIC32mx vs MSP432 vs ...
« Reply #22 on: September 22, 2016, 10:30:23 am »
Quote
without knowing a single line of code or anything about microcontrollers
Knowing NOTHING?

Start on a desktop (with an actual "programming for CS majors" type of class search.  Python, Java, C, C++... doesn't matter), or with something Arduino-like.   A TI Tiva Launchpad will get you a modern ARM chip, let you use Energia ((very)Arduino-like IDE), and set you up to be in the UTexas online "Microcontroller" classes (after you know at least one language (and preferably some C.))

Somewhere in there you should learn some electronics basics, too.

(Hmm.  I've taken (parts of) online python classes from three different schools relatively recently, and they've all been pretty good.  (Rice, Michigan, and MIT.)  OTOH, Learning python will teach you some neat stuff that isn't available in C, or (in general) on microcontrollers.)
Sort of half of a university curriculum:  (the other half would be science and math)
1) Programming 101 (UMichL:python), Electronics 101 (?)
2) Algorithms (princeton), C programming (?)
3) Microcontrollers (UTexas), Digital logic (?)
4) operating systems (Utexas?), user interface design (?)
5) practice...
 

Offline hans

  • Super Contributor
  • ***
  • Posts: 1054
  • Country: nl
Re: Where to begin? STM32F0 vs PIC32mx vs MSP432 vs ...
« Reply #23 on: September 22, 2016, 10:33:13 am »
http://www.silabs.com/products/mcu/32-bit/Pages/efm32-g8xx-stk.aspx




I looked into the EFM32 gecko line of MCUs and even installed their Simplicity Studio IDE to take a look at. While they look pretty cool(especially their bluetooth SOCs), there doesn't seem to be a lot of community support for them. How are they better than others like like the STM32?

I think the out-of-the-box experience is quite nice. The dev boards are competitively priced and versatile to use. The toolchain is all set up unlike most other vendors, which you must arrange all by yourself. This could be a massive winner.

However for the chips itself.. notice that the EFM32 are a niche MCU targeted for battery and IoT applications. This is reason why it doesn't win the pick for many community projects. If you find yourself needing ethernet connectivity, then EFM32 probably has little to offer with an integrated ethernet MAC. Or want to do some heavy number crunching? STM32 (but also NXP, TI, etc.) have CPU's that go up to 100 or 200MHz. These drop the requirement "low power"; so they can do that.

If I were you, I would go with the flow in order to get the most "community support" and find most info. And that is Arduino, then STM32.
That is if you really do know nothing indeed.
 

Online newbrain

  • Frequent Contributor
  • **
  • Posts: 810
  • Country: se
Re: Where to begin? STM32F0 vs PIC32mx vs MSP432 vs ...
« Reply #24 on: September 22, 2016, 10:37:53 am »
Very good points. After thinking about it, Arduino may actually a good tool to get you feet wet in the beginning considering the complexity of the subject. I dismissed it because it's not ARM(or PIC) and I didn't want to waste time learning something I'll never put into use. Btw, which arduino version do you recommend?

Yes, as usual here, you have been provided with a lot of good advice: opinions differ of course but you have a lot of material to make up your mind.

My experience is from a hobbyist pow, I work in the SW field but not on embedded stuff.
I mostly use STM32Fxxx (depending on the specific needs) and a bit of ESP8266 (dirt cheap on "AliBay"), MSP432 and Atmega/tiny, coming all the way from 6502, 6809 and 68HC11.

My 2 cents:
  • Focus on learning C: you state in your initial post "...without knowing a single line of code or anything about microcontrollers..." and going Arduino will not help much (it's actually C++, but one tends to just cobble together high(ish) level libraries...); try to learn good style in coding and work your way through a good book, keep you on ANSI standard C (no OS specific stuff) and you'll have a very portable set of C skills.
  • To learn C, you don't really need a Raspberry Pi (though I love them, I have several): if you have a PC/MAC with Linux/Windows/OsX there plenty of free IDEs or command line compilers. I'm partial to Visual Studio (community edition is free and very complete) and now VS Code (that's even open source!), but that's just me, good alternatives abound.
  • IMO, C++ is a different language that happens to use the same syntax: I would not try to learn both at the same time, lest you end up with some confusion.
  • If you still want to program Arduino-style many ARM boards are supported by mbed (Nucleos are much cheaper than Arduinos!): same ease of use, but also more powerful if you use advanced stuff (I'm not a fan myself)
  • Psoc is very interesting, but its programmable logic part will add another step to the learning process...
  • Don't expect high quality and support in vendor provided libraries (see my ranting with Texas here), some are better, some are worse, none is stellar.
  • Hardware-wise: In the STM32 field, if you want something more than a bare bone MCU (Nucleo style) there's a wide choice of Discovery boards, the mentioned F7 is very nice board, maybe a bit daunting for a newcomer (and very few I/Os are free for you to use). I'd settle on a cheap Disco F4 (MEMS accelaration sensor, audio DAC), or Disco F429 if you want a display.
Nandemo wa shiranai wa yo, shitteru koto dake.
 
The following users thanked this post: HzMeister


Share me

Digg  Facebook  SlashDot  Delicious  Technorati  Twitter  Google  Yahoo
Smf