The Armalite, SAM3 32-bit "Arduino-Due-compatible" design

Once more into the breach :slight_smile:

For a few weeks now I've been designing a board that (hopefully) will be compatible with the new Due (at the tool chain level at least). I say "hopefully" because despite saying that the Due would sport the SAM3U4E Arduino now say it could be another processor.

No matter, I won't finish the design until we know, it probably won't affect much.

This will not be a competitor to the Due unless Arduino depart from their current MO of creating simple boards which I doubt, I see it more as a big brother.

So meanwhile I have a 98% finished schematic, PCB component layout and design document and I'm wondering if anyone is interested. So far there hasn't been much interest in the real Due so I don't hold out much hope for a "similar" but you never know.

Here is a list of the specs as the design currently stands.

ā€¢ SAM3U4E 96MHz ARM Cortex-M3 processor.
ā€¢ An 80-pin backplane with 5 addressable daughter boards and provision for memory expansion and/or fast IO.
ā€¢ Sub addresses for each daughter board allowing up to eight devices per board to be addressed.
ā€¢ Debugging support with JTAG, memory-mapped strobe output and two hardware-controlled pulse outputs available on a debugging header.
ā€¢ Software control of power to the entire system.
ā€¢ Software control of power to seven sub systems on the core board and one external system.
ā€¢ Provision for plug-in power supply modules that replace on-board regulators, can be used for high-current or energy-harvesting PSU etc.
ā€¢ 512k bytes of external SRAM, expandable to 22.5Mb (directly addressable) and 880Mb (using bank switching).
ā€¢ Separate very accurate RTC with temperature-controlled oscillator.
ā€¢ Battery backup for SRAM, RTC and the SAM3Uā€™s internal RTC/RTT.
ā€¢ LiPo battery charging from USB or VIN inputs.
ā€¢ Onboard temperature sensing.
ā€¢ Serial EEPROM for non-volatile system parameters.
ā€¢ High-speed 4-bit microSD interface.
ā€¢ I2S interface for CODECs, DACs etc.
ā€¢ Eight 6v-tolerant analogue inputs.
ā€¢ A total of seven serial ports, five internal and two on an external UART.
ā€¢ 32 digital IO with 5v or 3.3v support in both directions.
ā€¢ 16 high-current digital IO with 5v or 3.3v support in both directions.
ā€¢ 3.3v and 5v IO selectable in groups, 16 of the digital IO lines have a third option of external power (for high-current IO such as servos).
ā€¢ All IO brought to popular GVS (Ground-Volts-Signal) format headers to make direct connection of sensors and servos easy.
ā€¢ Built-in 2x8 LCD, expandable for standard character LCD types.
ā€¢ Built-in interface to 4D Systems graphics LCD with touch panel.
ā€¢ Four user pushbuttons and LEDs.
ā€¢ Built in buffered RS-485, RS-232, SPI, TTL, I2C/SMBus, 1-Wire and S2N (Simple Serial Network) interfaces.
ā€¢ Backplane for four on-board S2N IO modules.
ā€¢ Network support for XBEE, Wi-Fi, Bluetooth, Ethernet etc with plug-in XBEE-footprint modules.

And a proposed PCB layout.

I have to say it's beginning to look like too large a project for one person to prototype, debug and write all the drivers for in a reasonable time frame and with new boards like the RPi out I'm wondering about my sanity in proceeding. To be fair though this is a vastly different beast to the Pi and other offerings so maybe.

The schematics and design overview document are available to anybody that is interested, email me for a copy.

I do have the interest of a well-known company to manufacture should it get to that point but if there is little interest it won't so don't sit on the sidelines to see what happens because without help nothing will :slight_smile:

That's all for now, any questions gladly received.


Rob

Looks slick :slight_smile:

I would be interested, providing it's not too expensive. Unfortunately due to customs that's <=$35 (the price doubles at this point)

Looks really good as a general purpose board. Also looks somewhat complex to make:)

A couple of Qs.

How high current is high current?
Would it be able to run of the battery?

Looking at all the components it would probably be quite expensive. Also I the Pi really isn't in competition with this with only 8(?) IOs..

By "high current" I mean relative to the standard ARM pins which are pathetic :slight_smile:

+-25mA on those 16 IO pins.

The battery is just a coin cell and only for backup. There is a connector that allows a larger battery to be used but once again just for backup. That said you can just use a battery instead of a PSU. I could modify things to allow the charging circuit to charge a main battery as well.

Also the on-board PSU can be bypassed with a plug-in module, so that feature could be used to provide a supply from any battery even if a boost regulator was needed.

it would probably be quite expensive

Possibly, certainly more than a standard Arduino but OTOH if you look at what people like Olimex can produce, their Duinomite-MEGA for $29 then there is hope that this can be done for a good price as well. Also maybe variations can be made as not everyone will need all features. For example the LCD doesn't have to be loaded.

the Pi really isn't in competition with this with only 8(?) IOs..

Different horses I guess, this board is all about IO and expandability, not about user interfaces or UNIX.


Rob

What can the regular pins support current wise?

Most SAM3U pins are only good for about 2-3mA, some with special uses (like the SD interface) can do much better.

So with a standard SAM-based board (which I assume the Due will be) you can forget about hanging LEDs directly off pins but any normal logic will work.

16 of my IO pins are actually off an MCP23017 IO expander, that's where the extra grunt comes from.

Also my IO can be either 5v or 3v3, selectable in groups.


Rob

/Wow so basically everything needs a transistor to do much, are most controllers like that

winner10920:
/Wow so basically everything needs a transistor to do much, are most controllers like that

I believe most of the 32 bit chips are like that. They are all (?) 3.3vdc or less chips so just don't have the grunt to output V and I like we are somewhat spoiled with the AVR 8 bit series.

AFAIK most 32-bitters are IO current challenged, that's the price you pay to live in the fast lane.

I think some ST ARM chips are 5v, but we have to deal with what Arduino offer, at least if you want to be compatible with the tool chain without having to port all the libs to another platform.


Rob

Graynomad:
AFAIK most 32-bitters are IO current challenged, that's the price you pay to live in the fast lane.

The LPC series of ARMs from NXP that I've worked with have had 5V tolerant I/O, and 40mA sink and source on the I/Os. I took a quick look at their Cortex M3 offerings and the it looks like they still support sinking and sourcing at least 40mA on a number of the I/O pins.

Which ones, the 111x,12xx,17xx etc series only have a few high-current pins and then only to maybe ~20mA and IIRC not 5v tolerant.

I haven't looked at other series though.


Rob

Why don't they beef up their I/o? Is it something to do with heat or similiar? Cuz 2-3 ma isn't much at all

That looks awesome, but I doubt you could sell it at a price point that'd be interesting (< $49, say)

Compare to Raspberry Pi -- which has a lot more CPU power, but less I/O. However, I/O is easy to add with SPI/I2C expanders, and a $25 RPi plus a $25 I/O expander board would make a lot of sense.

You're right about the power you can get with an RPi or similar and there will be more and more such boards coming out. And then there's all the phones/tablets out there that can do amazing things and boards like the IOIO that let them interact with the real world.

That's why I'm posting really to gauge whether it's worth doing or not. Given the above and the lack of interest here I think the answer is no.


Rob

Graynomad:
Once more into the breach :slight_smile:

Good choice of words there, you may be aware of these folks: http://www.armalite.com/

What's the interface to the daughterboards? Are they simply pinout extensions or I2C expanders or maybe even a throwback to the S100 bus? :slight_smile:

I'm rather disappointed in the lack of public info on the progress of the "due" - its been due for a while now, and there has been a big wide nothing since the teaser last year...

IMO, the market for a embedded processor that has horsepower to burn is still pretty much untapped - witness the spectacular reactions to Rpi and Twine (kickstarter phenom)

For those of us who are maxing out on the memory/processing power available on the '328s and megas and who would love to be able to use a real RTOS and not have to count every clock cycle in every ISR, the idea of an ARM-duino is like birthdays and christmas and "what the heck, I just wanted to give you a present" all rolled up together! Don't give up hope too soon!

-John

The LPCexpresso, and perhaps the mBED and the BeagleBone (at higher price) are also options for more oomph.
What I don't like about the Unix-based ones (Rpi, BeagleBone) is that latencies/jitter actually becomes worse because of the general-purpose OS.
In the end, you'll end up with a general-purpose "number crunching and GUI" CPU, and something small (like a slave AVR) for microsecond-accurate timing...

Graynomad:
Which ones, the 111x,12xx,17xx etc series only have a few high-current pins and then only to maybe ~20mA and IIRC not 5v tolerant.

I haven't looked at other series though.

I've used the LPC2106 and LPC2148. I found them quite nice; all the benefits of an MCU with 5V tolerant high current I/O, I2C, SPI, UARTs, USB, with a 60Mhz 32bit ARM core supported by the gcc toolchain. And flash update via serial to make things really convenient.

I took another look at the Cortex M3 datasheets (LPC13xx, LCP17xx, LPC18xx), and the 18xx supports up to 165mA on its I/O pins ("Ultra-high drive mode"), or 32mA in "Standard drive mode". The LPC13xx appears to support a minimum of 4mA and a max of -45mA (sink) and 50mA (source) short-circuit for its general purpose I/O pins, although there is a single "high current" pin P0_7 which is rated at 20mA - not quite sure what to make of that.

Good choice of words there, you may be aware of these folks:

He he, yes I'd forgotten about them. I don't want to get on their wrong side :slight_smile:

What's the interface to the daughterboards?

Mostly pinout extensions, on one connector there is power, SPI, I2C, Serial, I2S, timers, PWM and 8 signals used to select daughter boards so they can all share the signals.

The other connector is used for external memory above the 512k onboard or for fast memory-mapped IO. A third header is dedicated to special debugging signals and a forth for JTAG.

The pinout should allow a subset of headers to be used, for example a usable system should be possible with a single 1x10 header and with 2x10 you can address five daughter boards each with 8 devices.

throwback to the S100 bus? :slight_smile:

Ah those were the days.

Don't give up hope too soon!

Thanks, we'll see how it pans out.

What I don't like about the Unix-based ones (Rpi, BeagleBone) is that latencies/jitter actually becomes worse because of the general-purpose OS.

That's often a problem when things get real real time. I think the IOIO people quote a 3mS latency which is good for a Unix system I suppose but terrible for an embedded processor. As to how determanistic that 3mS is I don't know.

I've used the LPC2106 and LPC2148.

I haven't looked much at the LPC2xxx series, maybe I should. Personally I think the LPC chips are better than the SAMs and this project started as an LPC178x design. But when the Due was announced I figured I'd change things to be compatible with the Due on the assumption that at least that would give the board leg up in the user base stakes.

Maybe if the Due was actually released there would be more interest in a similar and (presumably) more capable board.


Rob

OK, not enough interest there to warrant developing a large expensive board with no Arduino tool chain on the horizon so I wandered off to do some photography for a while.

Then just today I downloaded AVR Studio 6, with version 6 AS now has support for just about everything from a tiny85 to an ARM7+ and it is one slick package (at least at first glance).

No mucking around with makefiles and dodgy IDEs, load a sample program and hit compile. Job done. Of course I don't have any hardware to download to but certainly initial impressions are good.

An Arduino tool chain would be nice but far from necessary.

So now that it seems there's an easy-to-use IDE for the SAM3U4E I may go ahead with a really simple version of the above board, think 512k external RAM, buffered RS232/485/I2C/1-WIRE, backplane with addressable shields, 2.1x2.1" form factor, microSD card, some analogue and digital IO (3v3 or 5v) and that's about it.

It may or may not wind up being the same processor as the OverDue but I'm a bit sick of waiting for it so I may get a burst of energy and knock up a PCB in the hope that I'm using the right chip. If not how hard can it be to port the libraries :slight_smile:


Rob