Why ARM32 Processor vs Amtel?

Hi, I’m wondering why the guys chose to use the ARM 32 chip on the Spark Core instead of the Amtel chips that all the Arduino boards use?

I guess from a beginners point of view when they said the Spark Core was Arduino compatible I thought that I could easily use their chip with my current Arduino sketches I have without any major changes. But it looks like alot of things need tweaked to get alot of Arduino libraries working on the Spark Core.

I have a lot of Adafruit libraries for breakout sensors that will probably not work with the ARM 32 processor without some changes to the library which is usually beyond my skill set at this stage of the game.

The WiFi not consistently staying connected to a reliable wifi network is very frustrating to say the least. I’m amazed that so much time and effort has gone into the overall look and feel of the Spark Core design, marketing, and packaging yet the product has many bugs and does not work for most people right out of the box.

I guess I’m cool with waiting a few months for everybody to figure all this out hopefully so I will have something more than a pretty flashing LED light here.

I’m going to order up a Adafruit CC3000 breakout to use with my Arduino Micro for now and follow their working tutorials to get a glimpse of what its like to have a working web connected prototype.

Spark Core is cool, but its not ready to sell as a reliable working solution now, but I’m sure it will be soon enough and I look forward to the day. I love everything about it other than the part about it not being able to hold a reliable wifi connection.

Most backers haven’t even had a Core in their hands for 2 months so have some patience dude! Instead of taking the time to write up a post that basically contributes nothing, why not start learning how to make the changes to the libraries you need? There are plenty of resources both in these forums, online and in books that will help you.

I’m sure this is coming off bitchy, but I honestly don’t mean it in that fashion. We were all new once and we all have to start somewhere, so I get that. Learning is proactive, not reactive. You’ll learn more from trying to adapt the libraries you need than you ever will following any tutorial. So dig in, post threads about the libraries you need, take a stab at making the changes and if it doesn’t work we’re here to help you, just don’t be afraid to get your hands dirty, you can’t break anything, i promise! :smiley:

To give you some perspective, Arduino started in 2005; version 1.0 of the Arduino IDE wasn’t released until 2012. It took them nearly six years to get the platform stable, and when they did finally make that big release, they changed a ton of stuff that broke a large percentage of existing sketches and libraries.

As to your main question (ARM vs Atmel), well there’s a number of reasons, but here’s three:

  • Speed: An ATmega328 is an 8-Bit processor that runs at 16MHz; the STM32 is a 32-Bit processor running at 72MHz. This means the Spark Core can run the main loop in your sketch 15 times in the time it would take an Arduino Uno to run it once.

  • Architecture: ATmegaXXX Series is a proprietary architecture; the STM32 uses the industry standard ARM Cortex architecture. This means it’s widely support and very easy to get code examples and support for. It’s also very easy to port your project to another chip if need be. (I.e., I could run the same code on an STM32 or a TI Tiva C by only swapping out some vendor supplied libraries and changing pin names. This means if ST Micro were to go bankrupt, the Spark Team could simply choose any other ARM Cortex on the market.

  • Cost: Atmel chips generally cost much more than their competitors (especially when you compare cost vs performance).

Even the Arduino guys have seen the writing on the wall. You know the Arduino Due is running an ARM chip, right? It actually runs full blown Linux and sort of emulates the classic Arduino environment; still, a good number of sketches have to be ported or modified to run correctly.

So instead of waiting around, get active!


i’ve been working with arduino for less then 6 months and never done a bit of C coding before that. Yet I’ve been able to port over the OneWire library over from arduino to spark core. If you are motivated to make it work, you’ll be amazed about what you can get done.
Like @timb said these forums are here to help you, I’ve seen plenty of libraries ported and problems solved with just a single forum topic about it.

1 Like

I have been using the Adafruit CC3000 breakout and a Teensy 3 for several weeks now. I can tell you that the Adafruit library is anything but stable, experiencing problems with steady connections as well. The root is the CC3000 being relatively new to the community. Be patient, eventually the code will stabilize.


1 Like

Hi @RWB,

Based on other posts, it sounds like you were having problems caused by very long delays in your loop() function, but I’m happy to explain why we chose the chip we did.

The STM32F103B is a 72Mhz 32-bit chip with 20KB of ram, and 128KB of flash (apologies if I mis-typed these). The Arduino Uno for example has an ATmega328, which is a 16Mhz 8-bit chip with 2KB of ram, and 32KB of flash.

The extra processing power and ram overhead allow the core to perform some very resource intensive crypto which help protect the connection to the core, and also allow for some very sophisticated user-created firmware and functionality. :smile:

I would totally agree with the other community members here as well, the Core hasn’t even been out for more than a few months, and these guys are already creating really cool stuff. I have no doubt we’ll continue to make improvements and work with the community as things continue to move forward.

@timb makes a great point as well, which is even though we’re trying to make our libraries feel familiar to people used to arduinos, it’s normal that small changes will need to be made when moving between hardware.