No need to apologize. Resurrecting a thread is perfectly alright.
I agree that a tiny increase in latency is the only unavoidable performance impact of choosing a UART featuring an SPI interface.
Throughput can remain the same, whether the interface is SPI or parallel.
On the topic of bit-banging, this is a tradeoff that simplifies hardware at the cost of chewing up extra CPU cycles. But typical CPU clock rates far exceed typical asynch baud rates, and therefore
it's often the case that even bitbanging doesn't compromise throughput. In
this thread I share code that bitbangs at roughly 1/20 the CPU clock rate. IOW even a lowly 1 MHz 6502 can bitbang about 50,000 SPI bits per second. That's more than enough to accommodate one-way transmission at 19.2kbaud on the asynch connection -- or 38.4 kbaud if you use the UART's FIFO.
I did some playing around with an NXP SC16IS750, and here's the SPI timing for it. (Chromatix, you mentioned the MAX3100, which also looks like a nice chip -- and I suspect its SPI timing is similar. This suggests you may've underestimated its potential, although I'm happy to be corrected on that.)
Attachment:
16is750 read + write.png [ 27.75 KiB | Viewed 7809 times ]
This image from the 16IS750 datasheet shows a simple read and a simple write of any of the on-chip registers (which BTW are like those of the widely popular 16C450, thus facilitating re-use of existing code; just have SPI read/write subroutines replace parallel read/writes from/to the UART). Notice it takes 16 clocks to read or write a byte. That's because there's a one-byte prefix containing r/w, the register address, and 2 unused bits.
In this simple case 50% of your bandwidth is overhead (because it takes 16 clocks to transfer 8 bits). But a 1 MHz 6502 can, as noted, bitbang 50,000 SPI bits per second, and 25,000 of those bits will be useful data. Thus, 19.2 kbaud on the asynch connection won't be a problem.
Using the FIFOs increases program compexity somewhat, but (among other benefits) it all but eliminates the 50% overhead. That's because the entire FIFO contents (eg: 64 bytes) can be transfered using just a single prefix byte. SPI throughput basically doubles, and that's how I calculated
34.8 kbaud... for a 1 MHz 6502 using bitbanged SPI.
Obviously a faster CPU can exceed this figure.
(BTW Sparkfun used to sell a 16IS750 breakout board; dunno if it's still available. And
here is a much smaller breakout board of my own.
)
Attachment:
IMG_2564CrpCrv.JPG [ 119.26 KiB | Viewed 7809 times ]
_________________
In 1988 my 65C02 got six new registers and 44 new full-speed instructions!
https://laughtonelectronics.com/Arcana/ ... mmary.html