[openhw-trento] Re: [Linuxtrent] Re: Interfaccia USB-RS232

  • From: Michele Bert <micbert75@xxxxxxxxx>
  • To: openhw-trento@xxxxxxxxxxxxx
  • Date: Wed, 15 Feb 2017 11:20:39 +0100

Sposto qui la conversazione, perché per la piega che ha preso, mi sembra
più in tema.

Il giorno 15 febbraio 2017 10:22, Michele Bert <micbert75@xxxxxxxxx> ha
scritto:

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



Il giorno 15 febbraio 2017 10:47, Marco Ciampa <dmarc-noreply@xxxxxxxxxxxxx>
ha scritto:

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.


Ok. L'interfaccia che ho io è una EW1116, che dichiara di supportare lo
standard RS232 [0]. Chi me l'ha venduto, aveva accennato al discorso TTL.
Io, che ignoravo il discorso che mi ha fatto qui sopra, credo di aver
comunque specificato che mi serviva RS232, ma non ci metterei la mano sul
fuoco.


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


Io non comunico direttamente con il PIC, ma con una scheda che monta un
pic, e che fino a qualche anno fa programmavo attraverso la RS232 di un PC
fisso (che non ho più), ed ha sempre lavorato egregiamente. Ne deduco che
il dispositivo che menzioni fosse già montato sulla scheda, interfacciato
con la seriale del PIC.
Suggerimenti per verificare le tensioni che viaggiano sulla seriale, visto
che non ho a disposizione un oscilloscopio?

[0]
https://www.redcorp.com/en/product/converters-adaptors/eminent/usb-to-serial-converter-basic-version--ew1116/p0482851

-- 
Mick

Other related posts: