Цитата(GetSmart @ Nov 21 2010, 12:46)

Есть только простое забивание всего фифо в прерывании по THRE. У меня щас так и сделано, но могут происходить паузы в потоке символов, хотя и в несколько раз с меньшей вероятностью чем когда совсем без фифо. Но если бы была возможность читать уровень фифо, либо задавать уровень срабатывания THRE, то был бы идеальный 16550 (с буквой B

). Буквально мелочи не хватает для полного счастья.
А что бы дал вам уровень FIFO ?
Ваша проблема как я понял в том, что взведенное прерывание по опустошению FIFO передатчика не обрабатывается с должной скоростью. В результате паузы. Это от того, что кто-то запрещает прерывания надолго. Но это проблема проектирования конкретного софта, и периферийный UART не виноват. Мой совет: используйте вложенные прерывания, или измените код так, чтоб никто не работал в режиме запрета прерываний дольше времени передачи одного символа по UART. Или заассайните FIQ для UARTа.
Из былого, бились несколько дней с такой же проблемой, Rowley CrossWorks + CTL на LPC2387. Оказалось реализованная в CTL байтовая очередь была "слишком безопасной", и на все время копирования данных запрещала IRQ. Теперь пользуем самописную очередь.