Forums

Simple & small MCU with 4 UARTS

Started by eliben December 31, 2008
Hello,

This question comes up from time to time, and I want to see if there's
anything new in the offerings.

I need an MCU with 4 UART (@ 38.4 KBaud each) and several IOs. The 4
UARTs is a problem, because the simplest MCUs (PIC, AVR) don't have
chips with this amount (AFAIK).

I've seen various suggestions:

1) Use a different MCU (Renesas, Freescale), etc. I'm reluctant to do
it, because I'm familiar with AVR and PIC and they're very simple to
program. Ideally, the programming for this application should take a
few days, and I wouldn't want to learn a new MCU/compiler/toolchain.

2) Use an external SPI-UART bridge chip (MAX3100, etc)

3) Use external small PIC/AVR chips as SPI-UART bridges

Which option would you recommend in terms of simplicity of
implementation ? Cost is less of a concern here, and there are no
special performance requirements.

Thanks in advance
> I need an MCU with 4 UART (@ 38.4 KBaud each) and several IOs. The 4 > UARTs is a problem, because the simplest MCUs (PIC, AVR) don't have > chips with this amount (AFAIK). >
Sorry about the self reply, but I've just found that AVR have the 640/1280/2560 families, which seem to have 4 UARTs. Does anyone have experience using these chips ?
On Tue, 30 Dec 2008 23:50:14 -0800 (PST), eliben <eliben@gmail.com> wrote:

>Hello, > >This question comes up from time to time, and I want to see if there's >anything new in the offerings. > >I need an MCU with 4 UART (@ 38.4 KBaud each) and several IOs. The 4 >UARTs is a problem, because the simplest MCUs (PIC, AVR) don't have >chips with this amount (AFAIK). > >I've seen various suggestions: > >1) Use a different MCU (Renesas, Freescale), etc. I'm reluctant to do >it, because I'm familiar with AVR and PIC and they're very simple to >program. Ideally, the programming for this application should take a >few days, and I wouldn't want to learn a new MCU/compiler/toolchain. > >2) Use an external SPI-UART bridge chip (MAX3100, etc) > >3) Use external small PIC/AVR chips as SPI-UART bridges
4) use a software UART
eliben wrote:
> I need an MCU with 4 UART (@ 38.4 KBaud each) and several IOs. The 4 > UARTs is a problem, because the simplest MCUs (PIC, AVR) don't have > chips with this amount (AFAIK).
The "simplest" chip to use is not a simple chip really but amazingly simple to get it to perform these tasks. However I did answer this on another thread which I have included below. From CAE thread "Does anyone know of a 4 port serial MCU?" Links: http://groups.google.com/group/comp.arch.embedded/browse_thread/thread/5c45070cd9567fe4 or http://www.embeddedrelated.com/usenet/embedded/show/102821-1.php Try the P8X32A Propeller. It's available in QFP44 or DIP40! and it has zero serial ports in hardware. But with eight 32-bit cores or cogs there are a quite a number of serial port objects in the public object exchange that can implement up to 4 smart "UARTS" per core. I say smart because each cog can handle the protocol and buffering etc. I frequently run multiple high-speed "UARTS" plus I demo'd a no-glue one-chip solution today running a mouse and playing space invaders on the TV complete with music and sound effects while it was handling multiple serial communications ports and protocols without any kind of latencies or glitches. I have done AVR, ARM, Renesas etc and I haven't looked back since this chip. The chip is available for around $11 in one off quantities. *Peter*

eliben wrote:
> Hello, > > This question comes up from time to time, and I want to see if there's > anything new in the offerings. > > I need an MCU with 4 UART (@ 38.4 KBaud each) and several IOs. The 4 > UARTs is a problem, because the simplest MCUs (PIC, AVR) don't have > chips with this amount (AFAIK). > > I've seen various suggestions: > > 1) Use a different MCU (Renesas, Freescale), etc. > 2) Use an external SPI-UART bridge chip (MAX3100, etc) > 3) Use external small PIC/AVR chips as SPI-UART bridges
4) Use external multiple-UART chip. Check with Oxford Semi. 5) Fast AVR should be able to handle 4 independent UARTs at 38400 as the software bit banging. Vladimir Vassilevsky DSP and Mixed Signal Design Consultant http://www.abvolt.com
eliben schrieb:
>> I need an MCU with 4 UART (@ 38.4 KBaud each) and several IOs. The 4 >> UARTs is a problem, because the simplest MCUs (PIC, AVR) don't have >> chips with this amount (AFAIK). >> > > Sorry about the self reply, but I've just found that AVR have the > 640/1280/2560 families, which seem to have 4 UARTs. Does anyone have > experience using these chips ? >
I haven't had any problems with them yet. -- Mit freundlichen Gr&#2013266172;&#2013265951;en Dipl.-Ing. Frank-Christian Kr&#2013266172;gel
On Dec 31, 5:26=A0am, Peter Jakacki <peterjaka...@gmail.com> wrote:
> run multiple high-speed "UARTS" plus I demo'd a no-glue one-chip > solution today running a mouse and playing space invaders on the TV > complete with music and sound effects while it was handling multiple > serial communications ports and protocols without any kind of latencies > or glitches.
Very nice. When you say 'running a mouse' do you mean talking to a mouse with its own microcontroller or acting as the microcontroller running the mouse hardware input tasks? JFox
On Wed, 31 Dec 2008 13:26:00 GMT, Peter Jakacki
<peterjakacki@gmail.com> wrote:

><snip> >The chip is available for around $11 in one off quantities.
A 16c554 also provides 4 ports, is in a 48pin pkg, and is available for less than $8, one off at digikey. And much better discounts in medium qty than the propeller. FIFOs on each port and no separate toolchain required to get the functionality, either. Works on 2.5V, 3.3V, or 5V and the supply current is 4.5-6mA. Pretty much standard device... if adding something external and not looking for a micro with 4 ports as the OP suggested. Jon
>Try the P8X32A Propeller. It's available in QFP44 or DIP40! and it has >zero serial ports in hardware. But with eight 32-bit cores or cogs there >are a quite a number of serial port objects in the public object >exchange that can implement up to 4 smart "UARTS" per core. I say smart >because each cog can handle the protocol and buffering etc. I frequently >run multiple high-speed "UARTS" plus I demo'd a no-glue one-chip >solution today running a mouse and playing space invaders on the TV >complete with music and sound effects while it was handling multiple >serial communications ports and protocols without any kind of latencies >or glitches. I have done AVR, ARM, Renesas etc and I haven't looked back >since this chip.
How is core-2-core communication?, complicated?, cpu intensive? trivial?
Jeff Fox wrote:
> Very nice. When you say 'running a mouse' do you mean talking to a > mouse with its own microcontroller or acting as the microcontroller > running the mouse hardware input tasks?
I'm just talking about a standard 5 button PS/2 mouse with CLK and DAT. The PS/2 keyboard and mouse object runs on one of the cogs and updates buffers and variables in common HUB RAM. Application software running on another cog just looks at those variables and the whole I/O thing operates completely transparently to the application. The mouse START object is called with the port numbers for the CLK and DAT as such:- mouse.start(27, 26) In the application a reference to the mouse might look like this:- 'Players Ship gr.clear8x8(mousex,mousey) gr.clear8x8(mousex+8,mousey) also if mouse.button(1) repeat i from 0 to numbad - 1 if bady[i]<184 gr.clear8x8(badx[i],bady[i]) resetbaddies The user contributed object library makes it very very simple to implement or modify peripherals such as UARTs and PS/2 devices etc (there is a long list). *Peter*