Looking for external UART

Go To Last Post
20 posts / 0 new
Author
Message
#1
  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Hello all,

I´m lookin for an external UART with:
* bidirectional FIFO (best to be >=256bytes)
* baud rate generation (>= 1MBaud)
* good availability
* low cost
* 8 bit interface
* 3.3V low power
* small footprint

any recommendations?

Thanks for your help

Klaus
********************************
Look at: www.megausb.de (German)
********************************

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

One of the smaller AVRs could be used, like a Tiny2313, interfaced via SPI.

Leon

Leon Heller G1HSM

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Hi,

@Leon,
Thanks for the hint.

I was looking for a hardware solution, because of the high datarate.

with an AVR(Tiny-solution) and 1MBaud it must fetch and store the UART data (in SW FIFO) within 10us (latency time < 20us)

the same time the master controller has to fetch and process the data.
With the FIFO i can relax the latency time to (FIFO_length x 10us).
But isn´t the high traffic maybe too much for the Tiny? especially with two transmissions - SPI and UART- at the same time?

Klaus
********************************
Look at: www.megausb.de (German)
********************************

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

SPI usually can run up to 8MHz, that means about 1MByte per second, depending on master and slave. The limit is imposed by the slowest frequency between both uC divided by 2. Since usually max speed for ATmegas (the only ones I'm familiar with) is about 8MHz @3V3, then probably SPI only can go up to 4MHz (4MBauds?). Definitively slow.

If you don't find nice hardware for that, then probably an LPC2101/2102/2103 will do, since they run at 3V3 up so 60MHz, they have enough RAM for fifo, SPI/I2C (not TWI since they are Philips), and are cheap (1.63€ @1Kpiece/year for LPC2103, probably lower for LPC2101). Perhaps not what you want, but a solution anyway.

Also AT91SAM7S321 is cheap and is perfectly capable to support sustained much higher baudrates since this can became a simple PDC (DMA) application without much CPU intervention.

Guillem.

Guillem.
"Common sense is the least common of the senses" Anonymous.

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

That's a hugh fifo for the typical UART. Why can't you main micro service the UART any faster? There aren't many UARTs out there anymore, I typically use a 2691 or 2681, but their fifo's are only a few bytes deep. If you really must have that level of FIFO, you need to use a micro as the UART. You'll need 8 pins for data, 1 for a strobe clock, and 2 for the UART. None of the tiny's have enough ram for a 256 FIFO that alos have the UART. A quick look shows you minimum would be a Mega48.

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

1 mega baud is 1 us per bit. Lets say you have 8 bit data with no parity and 1 stop bit, which is 10 bits per character or 10 us per character. The newer AVR chips that run at 20 MHz are rated from 10 MHz at a 2.7 volt Vcc to 20 Mhz at a 4.5 volt Vcc. At 3.3 volts Vcc they will be around 13.3 MHz maximum clock speed. Using 13.3 MHz with a new USART character arriving every 10 us will give you 133 AVR CPU cycles per USART character. However, you need 1 mega baud from the UART which means you will need an 8 MHz clock with a zero UBRR0 at X2 double speed. So, now you are down to 80 AVR CPU cycles per USART character. The next step up for an even no error 1 mega baud USART is 16 MHz which is way out of the Vcc /clock speed specification.

That means you have to get UART characters and manage the SRAM FIFO in less than 80 CPU cycles. Then you need CPU cycles for the SPI or parallel interface. It might also be nice to have a FIFO 2/3 full warning output line from the mega48.

You can use interrupts for the RXC0 flag as long as you can guarantee the interrupt will always respond and finish within the CPU cycle budget. It looks like a dedicated single purpose ATmega48 might be able to pull it off. It is not a huge project if you want to risk the time it takes to try it out. Only 80 CPU cycles makes it way too tight for me to predict if it will work or fail with what I know now.

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Why not use the older ethernet since the data transfer rate is so fast? UARTs are generally used for slow devices.

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Look into the Phillips SC16IS740/750/760. Tiny SPI UART - but you will need a 16x clock (16MHz) for it and only has a 64 byte FIFO.

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Hi,

many thanks for all the good hints.

Some more info:
The main controller is a M128 running with 8MHz @ 3.3V with parallel extension capabilities onboard.
The serial bus is "Profibus" running @ 1MBaud. The Profibus is connected to a Siemens S7 SPS.
I don´t like to change the main controller (-board). I´d like to upgrade the (existing and running) system with
an -optional- Profibus feature.

Software:
I have an interrupt controlled measurement device. The interrups(data) are coming up every 100us. I must not miss a single interrupt.
The processing of the data is in the main loop.
With the serial interface i´d like to have >100us of latency time --> so without FIFO not possible.
A software fifo takes too much overhed to take one (or max. two)bytes from uart to my internal receive buffer.
So with a FIFO at the external bus i have plenty of latency time plus less overhead when fething data from the UART.
Within the Uartinterrupt routine i can do bulk transfers with 16bytes in 80 cycles (LDS & STS) = 10us for example.
the processing of theese data can be made in the (interruptable) main loop = not time critical.
But i like the idea of using an additional AVR for preprocessing like packet_filtering and so on..

@dksmall:
I see timing problems when making the parallel interface in sofware (M48). A read from the main controller takes
3cycles @ 8MHz....

@Mike B:
I also did this calculations, and i see this solution possible, but critical.
It´s an industrial application. I must exclude any risk of failure.

@Simonetta:
I´d like to, but it´s not possible...

@kwr:
I think the parts are comparable to TI´s TL16C752B (64Bytes FIFO). That are my favourites now,
but i´m looking for a even better solution.

Klaus
********************************
Look at: www.megausb.de (German)
********************************

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Hi ,
I had a coleague working on this :
http://www.zilog.com/products/family.asp?fam=200
This may suit you perhaps ?

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Hi,

@trinity_parag
many thanks for the link. This is indeed an interesting circuit.
Now i have to study the 300 pages of documentation.....

thanks to all

Klaus
********************************
Look at: www.megausb.de (German)
********************************

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Maybe its time to fire up an ARM with a high clock rate and high speed I/O support? If you don't like ARM then substitute your favorite 32 bit processor.

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

An other very flexible communication controller for two serial channels: Have a look to the SEROCCO:

http://www.infineon.com/cgi-bin/ifx/portal/ep/channelView.do?channelId=-65039&channelPage=%2Fep%2Fchannel%2FproductOverview.jsp&pageTypeId=17099

But not only the SEROCCO possibilities are heavy, the datasheet and pin-count are heavy either! ;o)) I'm afraid, it is an overkill for AVR's...

Peter

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Oxford Semiconductor have a whole bunch of connectivity solutions.

The OX16C954-TQBG has 128byte FIFOs (about the biggest you can get) and speeds of up to 15Mbps in normal mode or 60Mbps in 1x clock mode. I've got one of these hooked up to some RS485 drivers, and a MAX3225 1MBps RS232 line driver.

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Maxim makes several spi uarts.

Rick

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Thanks for the Oxford information. I didn't even know they existed. The ox16c950 in its 3.3 volt TQFP-48 packaging comes closer to satisfying the OPs original request than anything I ever expected to see. The FIFOs are only 128 bytes deep, but like you said thats about the maximum size available. Cost and availability are the only unanswered questions.

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

If I remember next week I shall ask my buyer who our supplier is, as we will have only ordered a slack handfull of these parts. He didn't report any trouble getting hold of them.

Tim

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Hi,

MikeB already said it: Thanks for the interesting Oxford link.

Now i can choose either Zilog or Oxford.
The devices fit all my whishes except the FIFO size, but everything lager than 32bytes is good.

Thanks again...

Klaus
********************************
Look at: www.megausb.de (German)
********************************

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Oxford Semiconductor Disto:

http://www.apc-sbm.co.uk

Price at time of purchase: 1+: £8.08ea. 100 - 200: £7.16ea.

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Exar also makes UARTS with 128 byte FIFO's. I've used their PCI UARTS on other designs with good success, but they also make 8 bit parallel bus versions.

http://www.exar.com/product.php?...

There are others in the same family that may work as well.

http://www.exar.com/products.php...

Writing code is like having sex.... make one little mistake, and you're supporting it for life.