Go Down

Topic: [RISOLTO] Duemilanove: FTDI: I pin RX/TX non funzionano come previsto (Read 637 times) previous topic - next topic

antony96

Salve,
eccomi con un nuovo problema (non che lo sia veramente, visto che si risolve semplicemente).
Bene, oggi, con l'idea di hackerare un router (precisamente un Belkin F6D4630-4 v2) che dopo i suoi fastidiosi malfunzionamenti è finito per terra subendo uno shock di decine di G (sì, l'ho sbattuto molto violentemente) e poi smontato lasciando solo la PCB, sono partito dal fondo cercando l'header per il debug seriale e l'ho trovato riuscendo pure a capire quale era il TX e quale il RX (ovviamente a 3.3V). Per poter leggere queste trasmissioni di debug dovevo interfacciare questi pin al computer quindi ho pensato subito al mio fidato Arduino Duemilanove (in realtà prima ho pensato al TI MSP430 Launchpad visto che girava a 3.3V) e sapendo che i pin TX/RX (1/0) sull'Arduino erano direttamente connessi al FTDI, ho connesso il TX del router al RX (pin 0) dell'Arduino, ma stranamente il LED non lampeggiava e sulla porta virtuale sul PC non arrivava niente. Provando a vedere se il problema fosse dalla parte del router e provando a interporre un level shifter (74HC4050) non ne sono uscito lo stesso. Casualmente mentre toglievo il cavetto dalla colonna (sulla breadboard) del level shifter questo mi cade sulla colonna che era connessa al pin TX dell'Arduino, e vedo il LED TX lampeggiare. Che è sta roba? Difatti se connetto il TX del router al TX dell'Arduino sulla porta virtuale ricevo i dati che mi aspetto... E il pin RX dell'Arduino? Ho anche provato con il tester a controllare la tensione ai capi dei pin TX/RX ed era rispettivamente 0 e 4,89. Strano, visto che uno si aspetterebbe 0V sul RX visto che deve subire cambi di stato (quindi *credo* debba essere pull-down) e viceversa per il TX...
Fattostà che connettendolo sul pin TX (1) riesco a ricevere dati, mentre secondo la silkscreen non dovrebbe essere così (la freccia è verso l'esterno).
Mi sapete spiegare se è un errore di pinout/silkscreen o mio (oppure è a causa della logica del router)?

Grazie e ciao!

leo72

Non è un errore di collegamenti, ma è giusto così. Se guardi gli schemi elettrici, vedrai che i pin RX/TX che escono dall'FT232 sono connessi ai pin TX/RX del microcontrollore Atmega328, com'è giusto che sia altrimenti non potresti programmare serialmente il chip né comunicare col PC. Queste linee sono poi connesse ai pin D0 e D1 dell'Arduino.

Quindi, se devi comunicare con l'Atmega328 è giusto incrociare le linee, ma se devi comunicare con l'FT232 non le devi incrociare perché sono già incrociate sulla scheda.

antony96

Guardando la schematic infatti il discorso dei pin RX/TX è relativo all'ATMega, quindi i pin esterni sono invertiti rispetto all'F232RL, quindi ha effettivamente senso che funzioni in quel modo.
Grazie!
Ciao.

Go Up