Breakout FTDI con connettore ISP aggiuntivo


12

TL; DR - I sei pin ISP gialli possono essere usati come un normale ISP?


La solita scheda breakout USB-TTL FTDI si presenta così:

Scheda breakout FTDI USB-TTL

Di recente, mi sono imbattuto in una variante della scheda mostrata di seguito. Tuttavia, a cosa servono i pin di intestazione gialli aggiuntivi su questa scheda? Sono etichettati ISP.

Scheda breakout FTDI USB-TTL con ISP

Ecco una vista della parte posteriore:

Scheda breakout FTDI USB-TTL con retro ISP

Quindi possono davvero essere usati come un ISP / ICSP standard?

AVR-ICSP

Tuttavia, secondo lo schema seguente, che identifica i 6 pin in questione, non sono sicuro che esista una correlazione valida delle linee di segnale.

Scheda breakout FTDI USB-TTL con ISP con legenda

Vale a dire, funzionerebbero CTS a MISO, RI a RST, DSR a SCK e DCD a MOSI? O è per questo che è richiesta una versione speciale di avrdude, come accennato in FT232RL: adattatore TTL da USB a seriale 232 -? E ISP? - messaggio n. 6 :

Come nuova funzionalità è disponibile un'intestazione ISP a 6 pin. Con esso, avrdude e avrftdi è possibile programmare bootloader Atmels e Arduino. È necessaria una versione speciale di avrdude con driver FTDI compilato.

Tuttavia, il collegamento fornito a quella versione di avrdude, con il driver FTDI compilato, è morto.

Si dice anche, nel post n. 7 , che questi pin sono effettivamente equivalenti a un connettore X3, come si trovano sulle vecchie schede Arduino Dicimila / NG / Duemilanove .

X3 header su Diecimila

e quelli possono (evidentemente) essere usati così, come SPI un po 'sbattuto,

Collegamento dell'intestazione X3 all'intestazione ISP su Diecimila

Va notato che i pin RI, CTS, DCD e DSR (etichettati RSD) sono disponibili, lungo i lati della scheda breakout FTDI originale. Quindi, la breakout board con l'intestazione ISP fornisce l'accesso a questi stessi segnali usando un'intestazione diversa?

Sono un po 'confuso: ci ho appena pensato, e questa breakout board è semplicemente un'intestazione ISP / ICSP e un connettore FTDI inseriti in una scheda (se usato con la versione appropriata di avrdude)? O non è una normale intestazione ISP? Non riesco a trovare alcuna documentazione specifica relativa a questo tipo di breakout board, come indicato nel post n . 4 .

Qualcuno può dire, definitivamente, a cosa servono questi sei pin? Se non sono una normale intestazione ISP, potresti fornire un modo dettagliato di usarla? Uno schema sarebbe utile.

Risposte:


14

C'è una discussione al riguardo sul forum di Arduino: qualcuno aveva una domanda simile.


Ho trovato uno schema (sotto) che non è per quella scheda, tuttavia i perni delle intestazioni sono etichettati come quelli che hai trovato, quindi è plausibilmente simile.

Schema della scheda FTDI

Sembra che l'intestazione sia utilizzata per la "Modalità Bit Bang sincrona" come documentato qui: Modalità Bit Bang per FT232R e FT245R (Nota applicativa AN_232R-01, Numero di riferimento del documento: FT_000339)


Puoi infatti configurare quell'intestazione in modo che sia un programmatore SPI, come descritto ad esempio nel programmatore di bitbang FT232R .


Ho fatto un test perché avevo una scheda simile nel mio cassetto delle parti:

Fronte scheda FTDI

Aveva una intestazione a 6 pin simile alla tua. Girando la scheda possiamo vedere che sono stati etichettati esattamente come i tuoi:

Scheda FTDI indietro

Ho saldato su un'intestazione (in giallo, per essere coerente) dandomi questo:

Scheda FTDI con intestazione

Ho aggiunto un punto bianco per indicare il pin 1 (visibile sul bordo) in modo da collegare il cavo nel modo giusto.


Quando ho tentato di utilizzare la scheda ho ricevuto questo messaggio da avrdude:

avrdude: errore: nessun supporto libftdi o libusb. Installa libftdi1 / libusb-1.0 o libftdi / libusb ed esegui configure / make di nuovo

Quindi, doveva essere compilato da zero! Sto usando Ubuntu 14.04 se stai cercando di seguire. :)


Scarica avrdude

Vai al sito http://www.nongnu.org/avrdude/

Ho scaricato la versione 6.3 fonte: http://download.savannah.gnu.org/releases/avrdude/avrdude-6.3.tar.gz

Installa libusb e libftdi

Prima di compilare ho dovuto prendere libusb e libftdi:

sudo apt-get install libusb-1.0-0-dev
sudo apt-get install libftdi-dev

Compila avrdude

Ora facciamo avrdude dopo aver estratto l'archivio e aver navigato nella sua cartella:

./configure --enable-libusb --enable-libftdi
make

Trova la configurazione corretta

All'interno del avrdude.conffile che viene fornito con avrdude ho trovato (dopo un po 'di riflessione) questa sembra essere la voce corretta:

# see http://www.geocities.jp/arduino_diecimila/bootloader/index_en.html
# Note: pins are numbered from 1!
programmer
  id    = "arduino-ft232r";
  desc  = "Arduino: FT232R connected to ISP";
  type  = "ftdi_syncbb";
  connection_type = usb;
  miso  = 3;  # CTS X3(1)
  sck   = 5;  # DSR X3(2)
  mosi  = 6;  # DCD X3(3)
  reset = 7;  # RI  X3(4)
;

La mappatura dei pin ai numeri funziona in questo modo ... Dal PDF sulla modalità bit bang menzionata sopra abbiamo questa tabella, con annotazioni in blu da me:

Pin in modalità bit bang

I numeri si riferiscono al numero di bit (cioè nell'intervallo da 0 a 7) nel byte di dati "bit banged". Possiamo vedere dallo schema precedente che, ad esempio, MISO sull'intestazione ICSP è cablato a CTS su FT232RL. Quindi MISO è il bit di dati 3, che diciamo avrdude nella configurazione sopra. Allo stesso modo SCK è il bit di dati 5 e così via.

Ho provato a provare in questo modo:

./avrdude -C avrdude.conf -carduino-ft232r -pm328p  -v

Risolvi i permessi

Ho ricevuto un errore di autorizzazione che è stato corretto creando un file nella cartella /etc/udev/rules.d/chiamata 71-FTDI.rules. All'interno di questo è:

SUBSYSTEMS=="usb", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6001", MODE:="0666"

I numeri possono variare per la tua scheda. Devi trovare il fornitore e l'ID del prodotto. In Ubuntu puoi fare lsusbe vedere (tra le altre cose):

Bus 003 Device 061: ID 0403:6001 Future Technology Devices International, Ltd FT232 Serial (UART) IC
                       ^^^^ ^^^^

Nota i due numeri esadecimali, che vengono copiati nel file delle regole.

Dopo averlo fatto, dire al sistema di ricaricare le regole:

sudo udevadm control --reload-rules

Quindi scollegare e ricollegare la scheda FTDI per farlo notare le nuove autorizzazioni.

Rilevazione della scheda di test

Infine, la riga avrdude sopra funziona e legge il chip:

avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.01s

avrdude: Device signature = 0x1e950f (probably m328p)
avrdude: safemode: hfuse reads as DE
avrdude: safemode: efuse reads as FD

avrdude: safemode: hfuse reads as DE
avrdude: safemode: efuse reads as FD
avrdude: safemode: Fuses OK (E:FD, H:DE, L:FF)

avrdude done.  Thank you.

Avevo collegato il mio a un ATmega328P.


Esempio collegato a un Diavolino

Programmazione di un Atmega328P

Una volta arrivati ​​a questo punto, basta collegare la scheda FTDI alla scheda di destinazione con un cavo diretto.


Sommario

La scheda FTDI che hai (e quella che ho) può essere utilizzata come programmatore ICSP per i chip AVR, come descritto sopra. Pertanto una semplice scheda può essere sia un convertitore da USB a seriale, sia un programmatore ICSP.

Vedo schede simili che vendono su eBay per circa $ 5, quindi è probabilmente un'opzione di programmazione abbastanza economica.


Grazie Nick. Sì, quel thread sui forum di Arduino è quello a cui ho fatto riferimento nella mia domanda, ma non era molto chiaro su come usarlo, ma ha utilmente indicato il blog dell'intestazione X3. Il secondo link fornito sembra approfondire ulteriormente questo argomento, eccellente, grazie. Tuttavia, non esiste ancora alcun blog scritto appositamente per questo particolare forum, il che è strano.
Greenonline,

Credo che se lo fai, parleresti con FTDI come dispositivo USB e non utilizzerai più l'API della porta seriale del sistema operativo, quindi potrebbero esserci ulteriori problemi di installazione / driver / autorizzazione a seconda del sistema che stai usando per ospitare esso. Le parti FT4232H / FT2232H / FT232H più potenti di FTDI vengono spesso utilizzate in questo modo come interfacce JTAG per processori più avanzati.
Chris Stratton,

3
Vedi risposta modificata. Ho avuto il mio consiglio di lavorare come programmatore ICSP.
Nick Gammon

1
Fantastico, ottimo lavoro. Questa è la documentazione che stavo cercando.
Greenonline,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.