Comunicação UART do Maix Bit

A comunicação UART é um dos métodos de comunicação mais usados em diversos microcontroladores, porém no Maix Bit é possível usar até 3 UART’s simultaneamente.

Pinout das Interfaces UART do Maix Bit

Como já foi dito anteriormente, o Maix bit tem no total três interface de comunicação UART. No entanto, apenas uma é de fácil uso em prototipagem, as demais ficam na superfície da placa como na imagem abaixo:

Pinout da comunicação UART do Maix Bit

Como usar UART 2 e 3 do Maix Bit

Como é possível ver na imagem anterior, os pinos necessários para a comunicação nas interfaces um e dois são de difícil acesso, mas com uma soldagem de um ‘pin header’ de 90° é possível realizar uma soldagem e ter meio de conexão mais fácil, porém é bom fazer um reforço estrutural.

Modificação no Maix bit para Comunicação UART

Sugestão de Reforço Estrutural

O meio usado para reforçar a estrutura da adaptação com ‘pin header’ ou famosa “gambiarra” foi uma massa adesiva epóxi e a forma de por na placa, deverá ser feito com cautela, de preferência com o uso de pinças.

Cuidados com a UART do Maix Bit

Embora o Maix Bit seja uma placa robusta, para a comunicação UART o cuidado com os níveis de tensão, pois a placa trabalha com 3v3. Porém, para aplicações com tensões diferentes o ideal é o uso de um conversor de nível lógico.

Selecionando os Níveis e Limites de Tensões Digitais - Embarcados
Fonte: Embarcados

Exemplo de Comunicação nas UART’s do Maix Bit

Embora seja possível interligar diversos dispositivos que tem comunicação UART, é mais fácil interligar um dispositivo externo na UART3 e por a UART2 para enviar para UART1 o valor recebido da UART3. A entrada de dados na UART3 será usado um conversor USB serial FTDI e só serão usados os pinos TX, RX e GND.

Diagrama esquemático de comunicação UART do Maix bit

Comunicação UART Código exemplo

O código a seguir é uma modificação do exemplo disponibilizado no Github da Sipeed, no entanto, se o passo da “modificação” não seja feito não será possível testa-lo com o código abaixo.

from fpioa_manager import fm
from machine import UART
from board import board_info
from fpioa_manager import fm

fm.register(10, fm.fpioa.UART1_TX, force=True)
fm.register(11, fm.fpioa.UART1_RX, force=True)
fm.register(12, fm.fpioa.UART2_TX, force=True)
fm.register(13, fm.fpioa.UART2_RX, force=True)
fm.register(6, fm.fpioa.UART3_TX, force=True)
fm.register(7, fm.fpioa.UART3_RX, force=True)

uart_A = UART(UART.UART1, 115200, 8, 0, 0, timeout=1000, read_buf_len=4096)
uart_B = UART(UART.UART2, 115200, 8, 0, 0, timeout=1000, read_buf_len=4096)
uart_C = UART(UART.UART3, 115200, 8, 0, 0, timeout=1000, read_buf_len=4096)

write_str = 'hello world'

while(True):
    while uart_C.any():
        read_data = uart_C.read()
        if read_data:
            read_str = read_data.decode('utf-8')
            uart_A.write(read_str)
    while uart_B.any():
        read_data = uart_B.read()
        if read_data:
            read_str = read_data.decode('utf-8')
            print("UART2 = UART1 = UART3 = ", read_str)

uart_C.deinit()
uart_A.deinit()
uart_B.deinit()
del uart_C
del uart_A
del uart_B

Funcionamento