[Linuxtrent] Re: Interfaccia USB-RS232

  • From: "Marco Ciampa" <dmarc-noreply@xxxxxxxxxxxxx> (Redacted sender "ciampix" for DMARC)
  • To: linuxtrent@xxxxxxxxxxxxx
  • Date: Wed, 15 Feb 2017 10:47:57 +0100

On Wed, Feb 15, 2017 at 10:22:06AM +0100, Michele Bert wrote:

Il giorno 14 febbraio 2017 16:57, Marco Ciampa <dmarc-noreply@xxxxxxxxxxxxx>
ha scritto:

Non l'ho riportata perché non serve. Se metti in corto il 2 con il 3
DELLO STESSO CONNETTORE il riferimento a massa c'è gia (e altrimenti cosa
collegeresti? il 5 con sé stesso? ;-)

Almeno per le mie rimembranze di Perito Elettronico...

Comunque grazie del link, qui:

https://www.lammertbies.nl/comm/cable/RS-232.html#loop

c'è il cavo che intendevo (loop) che mette i segnali CTS/RTS DTR/DSR/CD
al livello giusto per permetterti di ricevere l'echo mettendo in corto il
2 con il 3.


Interessante!
Sul pc di un amico ho fatto un paio di prove.
1. Ho collegato le mie due interfacce USB-RS232 allo stesso pc, e tra di
loro con un adattatore NULL-MODEM (che credo incroci TX-RX e RTS-CTS, non
so se fa altro). Ho aperto i due dispositivi con due istanze di putty, e...
abra cadabra, sim sala bim... quello che scrivo su uno, compare dall'altra.
2. Nella medesima configurazione ho fatto il loop tra i pin 2-3 (la massa
in effetti in questo caso non serve), ed ecco che su uno dei terminali
ottengo l'echo dei caratteri che digito.
Ne deduco che il problema fosse in come usavo il minicom. I prossimi passi
saranno:
1. ripetere i test sul pc originale
2. ripetere i test sulla macchina virtuale

In ogni caso oggi mi hanno suggerito una possibile spiegazione alla
situazione che mi ha spito a fare tutti questi test, ovvero la mancata
comunicazione tra la xubuntu virtuale ed una scheda di controllo con un
PIC. Esula un po' dall'argomento della lista, ma la riporto, nel caso fosse
utile a qualcuno (anche se non è ancora confermata).
Lo standard RS232 prevede la trasmissione dati attraverso due tensioni
(sulle linee TX e RX) comprese tra 3V e 15V, positivi per rappresentare uno
0 logico, e negativi per un 1 logico, Alcune moderne interfacce USB, avendo
a disposizione solo l'alimentazione 0-5V della USB, usano questi due
livelli, e in molti casi funzionano (ecco perché le due interfacce tra loro
comunicano benissimo). Ad alcune vecchie seriali invece non (sempre)
bastano 0V per riconoscere un 1 logico, e questo potrebbe essere il caso
della mia vecchia scheda di controllo.
Se questo è il caso, avrò bisogno di un amplificatore di segnale...

La spiegazione che dai è _parzialmente_ corretta. Lo standard RS232
prevede un invertitore di segnale / amplificatore / smidt trigger.

L'invertitore converte il segnale alto (lo standar prevede segnali validi
tra i +3V e i +15V) in _zero_ logico (0V TTL) mentre il segnale basso
(-3V - -15V) in _uno_ logico (+5V TTL). Lo smidt trigger garantisce il
passaggio secco tra un livello e l'altro senza rimbalzi. Il livello tra
+3V e -3V non è definito e da luogo a risultati impredicibili.

Quindi non si parla di una semplice traslazione di livello tra 0-5V e +3
+15V ma tra 0/5V e +3+15/-3-15V a livelli invertiti.

Per fare ciò normalmente si usano dei chip come il MAX232 che, tramite un
circuito oscillante interno, raddoppia e inverte i +5V di alimentazione
per ottenere un +10/-10V per garantire il rispetto dello standard RS232.

Vedi ad esempio:

https://www.sparkfun.com/tutorials/215

Alcuni circuiti omettono tale convertitore di livello e quindi _non_
seguono lo standard RS232 e sono detti TTL Serial.

Ciò detto comunque non cambia molto la questione. Se devi comunicare con
un pic, che ha dentro una seriale ma naturalmente non un convertitore di
livello rs232, devi verificare che questo convertitore sia presente sulla
scheda, altrimenti è meglio usare un dispositivo non RS232 ma ttl
direttamente, controllando che il livello sia 5V perché alle volte ci
sono chip che vanno a 3V e rischi di bruciare tutto.

Usa per esempio un dispositivo come questo, universale per 3 e 5V:

https://www.amazon.it/FT232RL-Serial-Adapter-Module-Arduino/dp/B01IBIT0QC%3FSubscriptionId%3DAKIAILSHYYTFIVPWUY6Q%26tag%3Dduc01-21%26linkCode%3Dxm2%26camp%3D2025%26creative%3D165953%26creativeASIN%3DB01IBIT0QC


-- 


Marco Ciampa

I know a joke about UDP, but you might not get it.

------------------------

 GNU/Linux User #78271
 FSFE fellow #364

------------------------

-- 
Per iscriversi  (o disiscriversi), basta spedire un  messaggio con OGGETTO
"subscribe" (o "unsubscribe") a mailto:linuxtrent-request@xxxxxxxxxxxxx


Other related posts: