Al enviar ASCII, si ninguno de los caracteres tiene el bit alto establecido, usar 7-N-1 en lugar de 8-N-1 a una velocidad de transmisión determinada ofrecerá una mejora de velocidad del 11%. Más allá de eso, no he visto mucho uso para longitudes de bits más cortas.
El buen soporte para datos de 9 bits es útil, aunque su uso está limitado por el hecho de que muchos dispositivos UART no lo admiten bien. Es común que los UART admitan 8 bits más paridad configurable, pero para que una característica de este tipo sea realmente útil, los datos para el noveno bit deben almacenarse en búfer tanto en los FIFO de transmisión como en los de recepción, y debe ser posible configurar el estado del noveno bit para la transmisión sin interferir con la recepción de noveno bit. Tener un UART cuyo búfer de recepción registra si la paridad recibida coincide con la configuración de paridad de transmisión es inútil si puede ocurrir un byte mientras el software se está preparando para cambiar la paridad para la próxima transmisión, ya que el software no tendrá forma de saber si se compararon los datos entrantes a la configuración antigua o nueva.
Por cierto, un enfoque que no he visto usado, pero que podría ser interesante sería usar un byte de longitud variable que consideraría como un bit de parada el primer bit de marcado después de los ocho. Esto permitiría que 256 valores se envíen en diez tiempos de bit, 256 valores diferentes que se enviarán en once, y posiblemente otros 256 valores diferentes en doce, etc. Eso brindaría las ventajas de protocolo asociadas con los datos de nueve bits, pero sin agregar recursos adicionales. sobrecarga en la mayoría de los bytes. Aumentaría la probabilidad de que el UART no "notara" errores de encuadre, pero la aparición de caracteres "especiales" inesperados podría detectarse en el protocolo.