porta serial RaspberryPi

7

Eu tenho uma exibição para a qual desejo gravar. Isso é possível através da porta serial. Quando eu uso um conversor USB para RS-232, essa coisa funciona como um encanto. Eu até tentei usar apenas os fios RX, TX e GND do conversor serial, e ainda funciona. Agora eu quero usar este Display em um pequeno estojo emparelhado com um Raspberry Pi, então eu não tenho mais espaço para o grande conversor USB-RS-232. Eu tentei usar a porta serial interna do Raspberry. Está definido para 9600 baud usando $ sudo stty -F /dev/ttyAMA0 9600 . Mas quando eu o conecto ao monitor, ele só mostra lixo e os comandos normais de controle (que estavam trabalhando com o conversor RS-232) também não funcionam. Usando $ sudo minicom -b 9600 -o -D /dev/ttyAMA0 e fazendo o loop dos GPIOs TX para RX, ele mostra os caracteres corretos no console minicom . Agora, o loop da GPIO-Serial-Port para os pinos RX e TX do conversor USB-RS-232 e o aterramento e a abertura de ambas as portas em minicom com baud configurados como 9600, só algumas vezes mostram alguma saída no outro terminal, mas quando mostra qualquer saída, também é apenas lixo.

    
por jukisu 06.11.2016 / 11:22

2 respostas

10

Estou bastante confiante que o problema é que o Pi não possui uma interface RS232, enquanto o display tem.

O Pi tem uma interface UART (LV-), seu TX-pin envia 0V para uma lógica 0 e 3.3V para uma lógica 1 . Isso é muito fácil de implementar, já que o 3.3V já está disponível no Pi. Mas isso só funciona para comunicações em um único PCB ou em um único dispositivo.

Para a comunicação entre dispositivos em longas distâncias, um sistema menos propenso a sinais interferentes como o RS232 é usado. Enquanto a estrutura lógica da forma de onda (taxa de bits, temporização, início, parada, paridade e bits de dados) é a mesma que para UART, os níveis de tensão são -15V ... - 3V para% lógico1 e + 15V ... + 3V para um% lógico0. Isto significa que não há apenas tensões maiores (e negativas), o seu significado também é invertido.

Portanto, se a exibição espera níveis RS232 e obtém os níveis de 3.3V do Pi, ela geralmente não reconhece os dados e, se isso acontecer, geralmente é apenas lixo.

E, claro, se você conectar o RX e o TX da mesma interface, você terá o que espera.

Mas: Se a saída do RS232 TX não for limitada por corrente, pode até danificar o seu Pi!

Existem UART para placas conversoras RS232, mas se você gosta de soldar, as placas contêm apenas um MAX3232 (mais quatro capacitores). Este IC também gera os níveis de tensão mais altos (e negativos) a partir da tensão de alimentação 3.3V do Pi.

O mais comum é o MAX232 (adivinhe porque é chamado assim), mas é para operação de 5V, não de 3,3V.

Finalmente, como a UART e a RS232 usam a mesma estrutura lógica, muitas vezes não são distinguidas entre as duas, especialmente por software (programadores). Eles também são chamados de "interface serial", embora existam outras interfaces, como I²C e SPI, que são um tipo de interface serial, mas nunca consideradas "a interface serial".

    
por 06.11.2016 / 14:05
5

A porta serial interna do Raspberry Pi usa níveis de tensão de 0 a 3,3 volts, conforme descrito aqui . O conversor USB para serial e seu monitor usarão níveis de tensão RS232 de nominalmente -15V a + 15V, com um mínimo de -3V / + 3V. Você precisa converter entre esses dois níveis.

A porta funcionará quando estiver em loop, já que as tensões de entrada e saída são compatíveis.

    
por 06.11.2016 / 14:05