Go Down

Topic: 16C450 UART library? (Read 936 times) previous topic - next topic

EmilyJane

I have ordered some NXP UARTs one of which is the SC16IS750. It has an I2C/SPI interface and has a register set compatible with the venerable 16C450 as well as a 64 character transmit and receive FIFO. I have searched this forum and done a thorough Google search and haven't found any reference to this device in the context of Arduino.

Is anyone here aware of an Arduino library or example for this part? Since the original was a parallel interface device and the processors have a hardware UART built-in there probably hasn't been much interest. I wanted to double check before I duplicated anyone else's efforts.

There are significant advantages to using these devices in an application that does extensive serial i/o. The 64 character FIFO buffers reduce the use of Arduino RAM, they have their own baud rate generators so they free up a timer and they have an interrupt pin so they don't have to be polled during use. There are four software handshake character registers that make packet handling easier and they have automatic RS485 slave address detection. The 8-bit GPIO port has the full complement of hardware handshake lines defined or can be used as a general purpose i/o port.

They make a dual version as well but I'm going to hook up the single first.

kg4wsv

I looked at something similar, a MAX3110/3111 SPI UART.  After pricing a basic configuration, I realized I could use an ATmega for half the cost, using parts I already have on hand, and have almost 1k of buffer space instead of a few bytes.

If the UART peripherals provide some special service you really need they may be worth it, but if you just need a basic UART, rolling your own with an ATmega may be the cheapest and simplest.

-j

EmilyJane

The NXP parts are $2.50 in singles. I like the fact that there is application code already available since that register set has been the  de facto standard for PCs since the beginning. I like the fact that they have both a 64 byte receive buffer and a 64 byte transmit buffer and can interrupt the processor only when they need service. It would also be nice to have a second hardware asynchronous port on the Arduino to dedicate to the serial network.

I'll certainly include one on the next iteration of an ATmega board I do but for now a mini-shield will do.

So, as far as you know, no one has done a library.

kg4wsv

Quote
So, as far as you know, no one has done a library.

Nope.

-j

EmilyJane

#4
Jul 22, 2009, 03:04 am Last Edit: Jul 22, 2009, 03:05 am by EmilyJane Reason: 1
Well then, it's onward and upward.

Thanks. :)

Go Up