# out growing 8-bit AVRs, not sure where to move on to

I've been using 8-bit AVRS for a few years now. Lately, I've been feeling limited by the peripheral data transfer speeds and higher level libraries.

I'm having trouble finding/picking a new line of microcontrollers to explore. I've looked at

• NXP - Can't find a programmer
• Freescale - Have to register for IDE
• AVR32 - Limited chip selection on digikey

The NXP chips look really nice, but as with anything that isn't PIC/AVR/Ardiuno the learning curve is pretty steep.

I was wondering if anybody could suggest a line of micro controllers that satisfy (in order of importance) the following requirements

1. Hand solder-able chips. (I can do LQFP 100)
2. 32 bit
3. Linux host
4. Free toolchain
5. Good/free IDE
6. <500$startup cost for unlimited programming/debugging/compiling 7. CAN support 8. Ethernet/USB support I'm willing to look at Freescale and NXP again, if somebody can show me that I've missed some information on their toolchain and programmers. I guess you could say AVR32s are exactly what I'm looking for, but I'm just not happy with their chip selection. They all have higher pin counts and low stock on digikey. Thanks. • What's the problem with registering for Freescale's IDE? Nov 28 '10 at 7:53 • Jumping through hoops to have the privilege of using their chips that you've bought? – XTL Nov 28 '10 at 12:15 • Yeah, well, they will say they need to know who you are to provide better service, read to sell their stuff. It gets worse if you have to register just to download a datasheet (happened to me a few times). Life's tough :-) Nov 28 '10 at 15:01 • Having to "register" for things online, surely an unprecedented move. FWIW, their forums require that registration as well, so it's nice to be set for that as well. Nov 28 '10 at 16:38 • @stevenvh, in Wavecom's case it made it impossible to find anything (datasheets, forum posts, docs etc) using a search engine as everything required registration. Downloading old version of the IDE is also a pain now that they have been acquired. Jan 18 '11 at 7:08 ## 12 Answers I'd definitely reccommend NXP - decent range of chips, good peripherals (UART with flexible baudgen and FIFOS, SPI with FIFO etc.) excellent documentation* and flexible programming options. Get a JTAG/SWD debugger (Cortex parts use SWD - fewer pins than JTAG and can do stuff like setting breakpoints while running). I use the free kickstart version of IAR embedded workbench - this has a 32K code limit which is fine for me but be aware the code size upgrades are expensive. Plenty of people seem to do OK with GCC/winarm. Some Cortex parts (eg LPC1343) can load firmware from a USB stick using the onboard bootloader. Part availability is generally good - I've never struggled to find stock. There are also plenty of devboards/breakouts available for NXP parts. • the documentation in the User Manuals is good, however most things are mentioned precisely once, so it is worth the time spent to read the whole of each section relating to each peripheral you'll be using. Manuals for later parts have improved in that at the start of each section they point you to a few critical non-obvious things like clock/pin enables documented elsewhere that are needed to get that peripheral running ARM, ARM, ARM. ARM license their processor cores to many companies. This means that you'll find good tools, support and documentation from more than one source. PIC, AVR and MSP430 all suffer from the problem of being wholly owned by one company. Bear in mind with ARM microcontrollers that a Cortex-M3 from NXP is going to be closer to a Cortex-M3 from ST or Luminary than an ARM9 or ARM7TDMI from NXP. More often than not, compilers, debuggers and programmers are common across cores rather than manufacturers. Getting the Codesourcery GCC ARM toolchain and a cheap ARM JTAG dongle will get you a long way. • cheap ARM JTAG dongle == OpenOCD Feb 7 '11 at 17:34 • @Johan Or you can coax the existing ATmega into one. Dec 22 '14 at 22:34 I'd go for NXP. In a short time Cortex-M3 has become the standard for ARM controllers (I'm assuming that by Freescale you mean Coldfire). Since ARM7TDMI NXP also has a tradition of an extensive family of devices to choose from. As for a programmer for NXP, IMO any JTAG programmer should do the job (CMIIW). edit I'm currently reading about mbed, which looks like the easiest way to get started with the NXP Cortex M3 (controller used is LPC1768). You program/compile on-line (so Linux is not a problem), and you program through USB (the device appears as a mass storage device where you can copy your compiled program to). No programmer required. Programs written for mbed should be directly portable to LPC1768s on other boards. Try the 16-bit PIC24 and dsPICs. Many of them are available in DIL, and they deliver up to 40 MIPS. Free development software is available and the PICkit 3 debugger/programmer is quite cheap at$50. The next version of MPLAB will have Linux support, a beta version is available.

I thought you'd be able to get free-as-in-freedom tools for ARMs. Programming should be doable from serial bootloader or (open) JTAG. There are some STM32 and NXP chips and modules I've looked at that left me with this impression.

I was also reminded of this question.

If you really want to go 32-bit, try the PIC32's. High availability from Microchip. For Linux debugging, MPLAB X is in beta 4 and supports Linux, Windows and Mac OS X. I think you'll also need a PICkit 3 or similar programmer for $50-60. However, I'd be more slanted towards the 16-bit dsPIC's and PIC24's because they are much cheaper, can be debugged with a PICkit 2 and are easy to program. Also they are available in DIP packages, though this doesn't matter to you(?) I'm slightly biased towards them given that I use them in my project. • There are over a dozen PIC32's now available in a 28-pin DIP package, which makes them ideal for prototyping. Also the new PIC32MZ line (only available in SMD) has up to 2 MB of Flash, 512K of RAM, and supports CAN/Ethernet/USB 2.0 Host. Dec 22 '14 at 17:52 The only 32-bit processor currently being manufactured in a DIP package is the Parallax Propeller. (The same chip is also available in much smaller 44-Pin QFP and 44-Pin QFN packages, all with 32 general-purpose I/O pins). There's also a few development tools for it that run under Linux. So it easily meets your first 2 criteria and most (alas, not all) of your remaining criteria. Take a look at FEZ Domino. It doesn't meet all your requirements but offers quite a lot if you don't need lowest possible level control. The Cypress PSoC series of chips have combination of features I haven't seen in any other IC. The PSoC5 chip includes a 32-bit ARM Cortex M3, but as far as I can tell they are all packaged in something like a TQFP100. The PSoC1 and PSoC3 series of chips includes many DIP packaged chips, but they all have one 8 bit core or another. In addition to the CPU, the chip also have a programmable interconnect something like a small FPGA, and a few on-chip analog op-amps. http://www.psocdeveloper.com/ Atmel ARMs can fit the bill, mostly Hand solder-able chips. (I can do LQFP 100) They come in TQFP, and you can use one of the smaller ones at 64 pin. 32 bit Check Linux host I develop exclusively in Linux Free toolchain GCC ARM Toolchain, which is easier to setup now with build scripts like the summon arm toolchain. Good/free IDE You have me there. Presumably one could setup eclipse or maybe kdevelop to do the job, but I haven't tried. I use vim and kate. <500$ startup cost for unlimited programming/debugging/compiling

Programming and compiling would cost you about a 100$, maybe, to prototype a minimal board. The chips come with a built in bootloader in ROM which lets you program the chip. You dont need a debugger to program it. You can get the Atmel branded (and locked) segger for about 100$. If you can afford it then I'd suggest not going for a locked one but pay the 200 or 300 for the unlocked one. There are also other options which are much cheaper which I havent tried. The usbprog looks very promising.

CAN support

Fairly certain its there, although you should check to be sure. I dont use it, so I'm not sure if all of them have it.

Ethernet/USB support

USB support is there. Ethernet support needs to be added in externally. Lots of examples of it to choose from, though.

• We have CAN on ATSAM. At least ATSAM3X8E have one as Arduino Duo, using this chip, have exposed one. Dec 22 '14 at 22:31

I use the lpc4330-xplorer demo board for NXP's LPC4330. I use a hand built toolchain, but you could use Yagarto (if you don't care about hard FP), or any ARM compiler really, if you can dig into the linker scripts. NXP has some really nifty peripherals like the State Configurable Timer (you can read: function generator) that is capable of doing quite a number of things. They also have some nice SGPIOs. Additionally they have a plethora of timers on board. It is also a dual processor (M4-M0 based chip). Of course, their whole LPC line is pretty nice.

To be fair, the Cypress pSOC line looks nice too, but I've not had a chance to use it. The others all definitely have their uses and audiences, but I use a Linux development environ, no IDE, and a handful of command line tools. I choose this path because when something goes wrong, and it invariably does, I find it easier for my to hunt down the problem if I don't have to peel back layers of tools. Plus, no code limits. And, while not abundantly clear from internet searches, the LPC line is pretty well supported by open source.

Finally, LPC does supply a fair amount of sample code in LPCOpen. Again, to be fair, if you want it to compile with open source tools, it takes a little work, but it isn't difficult. They even had a pretty nice web server example in their. They do have an SCT cookbook as well (the SCT takes a little bit to understand, but once you do, it really is nice), but it can take a bit to work through the examples, and the SCT examples in LPCOpen are pitiful. But, it is well worth it to get the NXP chips up and running. I am even spending a little time with NuttX (I was tired of bare-metal code ALL the time) and the lpc4330-xplorer.

Anyway, good luck with whatever you choose.

Here is my options:

• Lots of IO but slow speed acceptable? Gang up AVRs. I have tried talking SMBus over I2C lines and it is at least acceptable.
• Need speed? ATSAM series seems good with TQFP100 and TQFP144 packages. We have Arduino SAM3X8E in Arduino Duo. ATSAM also have MII/RMII but interface chip can be challenging. If you want ATSAMA5 line read on and think again, Allwinner A20 probably beats it there.
• More speed, multimedia, probably Linux support? Since I am from China a particular native manufacturer is really interesting: Allwinner. Their Cortex-A7 SoCs, $5 dual-core A20 and$10 quad-core A31s, as well as a octa-core big.LITTLE Cortex-A15/7 SoC A80 at \$20, all with respectable OpenGL and OpenCL-capable GPU built in, despite in BGA packages, are good enough for middle-to-high-level Android tablets, more than good enough for full-blown Ubuntu Server a few daemons burning GPUs crunching numbers, routing packets at 1Gbps line speed, or driving two 1080P or a 4K display.