Como faço para Transmitir e receber mais de 16 bytes de uma vez através da UART?
Me parece que você pensou algo e escreveu o que não pensou. Isso acontece comigo também.
Não tem como receber nada acima de um byte de cada vez (a não ser numa UART especial).
Então como receber uma var de 16, 32 ou mais bits ?
Eles vão ser "quebrados" em bytes. Um ponteiro ordena a chegada, normalmente descrita pelo protocolo utilizado.
Por exemplo, no protocolo ModBus, os dados, o primeiro byte recebido é o Hi, o próximo o Low. Você tem que remontar eles como um int de 16bits e ainda fazer um swap (inverter a ordem) se estiver trabalhando em Little-Endian.
Com o protocolo você sabe quem é quem quando recebe. É uma montagem chata.