GNU/Linux >> Linux Esercitazione >  >> Linux

Linux – Porta seriale Raspberrypi?

Ho un Display a cui voglio scrivere. Questo è possibile tramite la porta seriale. Quando uso un convertitore da USB a RS-232, quella cosa funziona come un incantesimo. Ho anche provato a utilizzare solo i cavi RX, TX e GND del convertitore seriale e funziona ancora. Ora voglio utilizzare questo display in un piccolo case abbinato a un Raspberry Pi, quindi non ho più spazio per il grande convertitore USB-RS-232.
Ho provato a utilizzare la porta seriale interna del Lampone. È impostato su 9600 baud usando $ sudo stty -F /dev/ttyAMA0 9600 . Ma quando lo collego al display, mostra solo spazzatura e nemmeno i normali comandi di controllo (che funzionavano usando il convertitore RS-232).
Usando $ sudo minicom -b 9600 -o -D /dev/ttyAMA0 e trasmettendo in loop i GPIO da TX a RX, mostra i caratteri corretti nel minicom console.
Ora collegando la porta seriale GPIO ai pin RX e TX del convertitore USB-RS-232 e collegando la massa e aprendo entrambe le porte in minicom con baud impostato su 9600, solo a volte mostra dell'output sull'altro terminale, ma quando mostra qualsiasi output, è anche solo spazzatura.

Risposta accettata:

Sono abbastanza sicuro che il problema sia che il Pi non ha un'interfaccia RS232, mentre il display l'ha.

Il Pi ha un'interfaccia (LV-)UART, il suo pin TX emette 0 V per un logico e 3,3 V per un 1 logico . Questo è abbastanza facile da implementare, poiché 3.3V è già disponibile sul Pi. Ma questo funziona solo per le comunicazioni su un singolo PCB o all'interno di un singolo dispositivo.

Per la comunicazione tra dispositivi su lunghe distanze, viene utilizzato un sistema meno soggetto a segnali di interferenza come RS232. Mentre la struttura logica della forma d'onda (bitrate, temporizzazione, start, stop, parità e bit di dati) è la stessa dell'UART, i livelli di tensione sono -15V...-3V per un 1 e +15V…+3V per un logico . Ciò significa che non ci sono solo tensioni più alte (e negative), ma anche il loro significato è invertito.

Quindi, se il display si aspetta livelli RS232 e ottiene quei livelli di 3,3 V dal Pi, per lo più non riconosce i dati e, se lo fa, spesso è solo spazzatura.

E, naturalmente, se colleghi RX e TX della stessa interfaccia, ottieni ciò che ti aspetti.

Ma:se l'uscita RS232 TX non è limitata in corrente, potrebbe persino danneggiare il tuo Pi!

Ci sono schede di conversione da UART a RS232 là fuori, ma se ti piace saldare, le schede contengono solo un MAX3232 (più quattro condensatori). Questo circuito integrato genera anche i livelli di tensione più alti (e negativi) dalla tensione di alimentazione di 3,3 V dal Pi.

Correlati:Linux – Perché reindirizzare l'output a 2>&1 e 1>&2?

Il più comune è il MAX232 (indovina perché si chiama così), ma è per il funzionamento a 5 V, non a 3,3 V.

Infine, poiché l'UART e l'RS232 utilizzano la stessa struttura logica, spesso non viene distinta tra entrambi, in particolare dal software (programmatori). Spesso sono anche chiamate semplicemente "interfaccia seriale", sebbene esistano altre interfacce come I²C e SPI, che sono un tipo di interfaccia seriale, ma non sono mai considerate "l'interfaccia seriale".


Linux
  1. Come connettere e inviare dati a una porta seriale Bluetooth su Linux?

  2. Come aprire la porta seriale in Linux senza modificare alcun pin?

  3. Testare in modo efficiente se una porta è aperta su Linux?

  4. Porta seriale RaspberryPi

  5. Esaurimento della porta di rete di Linux

Comunicazione seriale su Linux moderno

Come eseguire una scansione delle porte in Linux

Come eseguire il ping di un numero di porta in Linux

Apertura di una porta su Linux

Linux SCP che definisce la porta di destinazione

Reindirizza la console a una porta seriale