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".