I'm wondering if anyone has already done thorough UART accuracy and tolerance testing. I've read a couple posts where people have tested the timing output of a UART module (and have done that myself in the past), but haven't found any tests on the input tolerance range. I've read lots of documents that go over the theory for what kind of accuracy is required, but without any real-world tests.
What I mean by input tolerance is when I have an AVR running off the internal RC oscillator, my Pl2303HX modules (with an external 12Mhz xtal) will read the data error-free even when the AVR is 6-7% fast or slow. When testing at 115.2kbps, my CH330 starts getting garbled characters when the AVR is only 1-2% fast, but it will receive error-free when the AVR is as much as 7-8% slow. My CP2102 module seems to start getting errors when the timing is off by more than 4-5%.
In theory for 1 start bit + 8 data bits you need an accuracy of better than 9/8.5 = 5.88% for error-free reception without a sophisticated receiver that can re-clock on bit transitions.
I'm thinking of designing a project to automate testing of USB-TTL UARTs, but don't want to re-invent the wheel if someone else has already done all or some of the work.