Topic: The Due uses the SAM3X8E... But can we compile for other chips? Which ones? (Read 4693 times)previous topic - next topic

I am not a fan of the Due. It's too big, too complex, too expensive. I want something much simpler, much smaller, and cheaper, but with a bit more oomph than the Uno, or even a Sanguino. I want something I can integrate into future products of my own. A huge chip with 144 pins that costs $8 in any reasonable quantity doesn't fit that description. And that second chip and USB port have to go. (By integrate into my own products, I mean stick the chip onto a board of my own design, not plug the whole thing in, but if it were small enough and cheap enough, then I could do the plug and play thing.)

I was looking through the offerings from Atmel to see if there were any good alternatives, and I really liked the XMEGA chips with their small size, built-in 32mhz resonator and DACs, but since there's not much support for them, and the future appears to be in ARM, I guess those wouldn't be a good choice.

The SAM3S however seems like a viable option. It comes in a 64 pin package, seems to have comparable specs to the 3X8E, yet is less than half the price. So my question is, is the SAM3S basically compatible with the 3X8E, and will the IDE compile for it just fine with the obvious issue of a few ports having gone missing? Or are there major differences in port assignments that would necessitate a new boards file to tell the IDE how to compile for it?

And are there any other Atmel offerings which might be compatible? Would a SAM4S for example, which also comes in a 64 pin package, work with some tweaks? Or are the different arm processor types wholly incompatible with one another?

I'm pretty sure there would be enough differences to stop you using the IDE as is with the 3S, I can't remember details now but looked at it a while back and decided it would be a lot easier to use the 3X.

Likewise for the 4S but if you search you may find a thread where someone was going use that chip I think.

Another alternative may be one of the Mega644/1284 boards around, the 1284 IMO really hits power/size sweat spot.

Do you have to use Arduino, LPC make a great range of ARMs right down to 8 pins.

And are there any other Atmel offerings which might be compatible? Would a SAM4S for example, which also comes in a 64 pin package, work with some tweaks? Or are the different arm processor types wholly incompatible with one another?

There are different levels to the Arm architecture (i.e. if it supports thumb mode, if it has floating point instructions). If you aren't using the same chip as the Due, you probably need to modify the IDE to specify different compiler options, based on the actual chip that you are using. And then you may need to look for any #ifdef's that target the specific SAM3X8E macro, and adjust as needed.

Palliser:USB host behavior? What functionality does that give you? Is that where it can act as a keyboard or mouse, or is it where it functions as removable storage media? Or does it allow it to interface with mice and removable storage media directly?

Graynomad:My current board uses the 1284P. It's nice, with an extra timer, and USART, so I have three SPI channels and enough timers to both play sound from an SD card and update servos, and it sure has a lot of ram, but it's still only 16mhz, can't be programmed via USB without an additional chip, requires an external resonator to get to 16mhz, has no built in DAC so I have to add a chip for that, and costs more than the SAM3S.

If I were to go that route, and go with a minor upgrade to 32mhz and two 12bit DACs, I'd go with the XMEGA128A3U or 4U. Problem is, I don't really gain much by doing this. I no longer need a DAC, but now all my data lines are 3.3v which complicates my design. (I was connecting everything with servo cables but can't do that if I have only 3.3v to supply, and can't supply 5v on those pins with the IO needing a 3.3v input... hm... well actually the switches do pull to ground, so I guess I could still supply 5v to those pins for the servos. But I don't think servos like 3.3v logic.) So there's no significant benefit to such a minor upgrade for me.

> Do you have to use Arduino, LPC make a great range of ARMs right down to 8 pins.

Well, I'd prefer to use the Arduino. Or at least something from Atmel. I mean there's all the libraries available, and Atmel's datasheets are really easy to follow. And I like Atmel Studio. It would take a long time to get up and running on a different platform, and there probably isn't as large a community there to help out.

Palliser:USB host behavior? What functionality does that give you? Is that where it can act as a keyboard or mouse, or is it where it functions as removable storage media? Or does it allow it to interface with mice and removable storage media directly?

Due's native USB port behaves as a USB host for connected peripherals such as mice, keyboards, and smartphones (communication via Google's ADK). Last thing I did was a mouse pointer controller with a toy gun using an accelerometer, just for fun.

I actually have come to the descision to use the SAM3X8E - it's readily available, dosen't cost the earth and is compatible with the Arduino IDE which allows me to prove the hardware quickly, then move on to writing my actual code in Atmel Studio.

I'm sticking with the 3X8E for now, and may move elsewhere in the future when I've weened myself off the Arduino IDE completely....

...although, I am looking at the SAM3A4C at the moment for a project - USB Host and Device, SD card support & CAN still - also, much cheaper - £3.88 in 25 QTY from Mouser, vs £5.81 for the 3X8E...

The SAM4E16E is a hugely powerful chip indeed - (copied from other thread)...

A number of reasons;

- integral FPU- largest SRAM & flash of all the ARM MCUs- highest number of timers

However, it still isn't readily available - Mouser are showing a 20 week lead time with a price of around £6-7 in QTYs of 100s. Certainly my application as it is now doesn't require it, and the SAM3A4C is looking a very good bet indeed.

I have ported USB CDC in the Arduino 1.5x SAM core to the SAM3S. This entailed replacing the UOTGHS device calls with UDP device calls. I can now program my SAM3S board using the Arduino 1.5.8 IDE, and once programmed, shows up as a COM port, and SerialUSB works. I plan to port this over to Arduino IDE 1.6x so that it can be easily pulled into the IDE as a variant core.