hardware
Placa PHYTEC Mira com processador i.MX6
Sistema operacional
Imagem Yocto criada usando o BSP fornecido pela PHYTEC Source com pacotes mínimos.
A placa possui uma placa UART chamada UART3 e sua interface de software dentro do SO é /dev/ttymxc2
Hardware Manual . A única coisa disponível para verificar/definir a porta serial integrada é stty
.
Tarefa
Desejo fazer a interface de um GPS Adafruit Ultimate com o UART3 para ler as informações dele no Mira Board.
Tentativa-1
Conectei os dois componentes da seguinte maneira.
UART3_RXD_RS232 (MIRA) --> TX pin (GPS)
UART3_TXD_RS232 (MIRA) --> RX pin (GPS)
Defina a porta serial da seguinte maneira:
stty -F /dev/ttymxc2 speed 9600
Valor de leitura:
cat /dev/ttymxc2
Resultado : Valores lixo. Tentei todas as configurações possíveis e ainda obtive valores de lixo. Escrevi um script simples node
para tentar ler as informações vindas da porta, mas recebi um erro informando que os caracteres (valores lixo) não são reconhecidos.
Tentativa-2
Inicialmente tentei conectar o GPS a um simples Arduino Nano para obter os valores do GPS e funcionou, confirmando que o GPS envia informações e não ocorreu nenhum defeito.
Eu conecto as portas seriais do Mira e do Arduino e tento enviar as informações do Mira para a interface serial do Arduino e leio através do console serial.
configurar
MIRA_Board (serial UART3) ---> Arduino Nano (Serial Pins) --USBCable--> Computer
alfinetes
UART3_RXD_RS232 (MIRA) --> RX PIN NANO
UART3_TXD_RS232 (MIRA) --> TX PIN NANO
Estou logado no quadro Mira através do SSH. O seguinte comando é acionado, esperando esperar o mesmo valor no console serial do computador através do Arduino
echo 'hello' > /dev/ttymxc2
Resultado : ainda valores de lixo no console.
A configuração para /dev/ttymxc2
é como
stty -F /dev/ttymxc2 -a
speed 9600 baud;stty: /dev/ttymxc2 line = 0;
intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = <undef>; eol2 = <undef>; swtch = <undef>; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R; werase = ^W; lnext = ^V; flush = ^O; min = 1; time = 0; -parenb -parodd cs8 hupcl -cstopb cread clocal –crtscts
-ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr icrnl ixon -ixoff -iuclc -ixany -imaxbel -iutf8
opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0
isig icanon iexten echo echoe echok -echonl -noflsh -xcase -tostop -echoprt echoctl echoke
Se esse problema for devido à incompatibilidade da configuração serial, como soluciono o problema usando stty
?
PS : Baud rate para GPS deve ser 9600
o que é o caso
Você pode tentar usar UART1 ou UART2 na placa Mira. De acordo com o manual, eles usam sinais de nível TTL. O módulo GPS produz 3 V, mas tolera 5 V na entrada. O +3 V deve ser suficiente para ser interpretado como um "1" em uma entrada TTL. Os sinais RS-232 não são adequados sem um buffer, porque o RS-232 especifica +3..+12 V para o estado de espaço e -3..-15 V (isto é, menos 15 V) para o estado de marca.