
Sebbene non sia un tool completo come il Bus Pirate o il Bus Blaster, anche l'FT2232H ha molte applicazioni, alcune delle quali piuttosto interessanti. Ecco perchè utilizzare il bit banging è una scelta valida se lo si vuole potenziare.
Il “Bit banging” è una tecnica, utilizzata nelle comunicazioni seriali, con cui si utilizza il software piuttosto che l'hardware dedicato. Senza scendere troppo nei dettagli, alcuni dei quali potete trovarli in questo articolo di qualche tempo fa oppure in quest'altro, diciamo, però, che il bit banging è una tecnica che permette di raggiungere prestazioni più elevate rispetto alle limitazioni dell'hardware; pertanto, può essere implementato anche in sistemi embedded.
In conseguenza, l'hardware non ha bisogno di essere aggiornato per poter funzionare “meglio”.
L'emulazione software, comunque, richiede un maggior consumo di potenza ed il micro-controllore “passa la maggior parte del suo tempo” a smistare traffico tra i pin.
In applicazioni che lavorano su segnali digitali veloci è possibile che si verifichi il problema del maggior jitter, specie quando il processore è impegnato in altre operazioni di comunicazione.
Per capire meglio perché può essere utile questa tecnica, riassumiamo brevemente le caratteristiche della scheda.
Si tratta di un convertitore USB/Serial di 5a generazione che implementa: USB 2.0 High-Speed (480Mb/s), 2 porte USB-to-serial indipendenti, due moduli MPSSE con I2C, SPI, e JTAG, pin di I/O general purpose (e quindi programmabili), supporto per il debugger JTAG ed altre piattaforme.
Lo schematico della scheda è quelo che trovate qui di seguito.
La domanda, pertanto, diventa: come si usa questa tecnica con l'FT2232H?
Un esperimento, di cui si parla qui, mostra come sia possibile pilotare uno shift register grazie alla FT2232H sotto Linux.
Si tratta di un'applicazione piuttosto elementare che può, però, essere utile per progetti più “demanding” in termini di risorse.
Le principali funzioni alle quali prestare attenzione quando si inizia a lavorare in questa applicazione sono: ftdi_usb_open, ftdi_set_bitmode, per decidere se attivare il bit banging, e ftdi_write_data, per modificare lo stato di ciascun pin.
Il codice di riferimento è, comunque, consultabile qui.
Se siete rimasti abbastanza incuriositi e volete provare, non vi resta che fare un giro sul sito di Seeedstudio oppure trovare i componenti sul sito di Farnell; a fronte di una spesa irrisoria, potrete iniziare da subito a fare delle prove.

Ottimo articolo e ottimi prodotti quelli ai quali ftdi ci ha abituato gia da tempo.
La prototipazione rapida, che si sta diffondendo sempre più grazie a piattaforme come Arduino e mbed, presenta degli enormi vantaggi, tra i quali un risparmio di tempo notevole e il fatto di permettere anche ai neofiti di sviluppare applicazioni e scrivere codice. Lo svantaggio è che si perde di vista quello che succede “sotto” il codice, cioè a livello hardware. Il bit-banging, viceversa, richiede una programmazione precisa e puntuale dell’hardware e, a mio parere personale, dà più soddisfazione perchè si comprende veramente cosa si sta facendo e chiedendo all’hardware sottostante. Ricordo che il primo PIC che programmai (in assembler) non aveva una periferica seriale, e dovetti realizzare il driver seriale a mano, cablando i ritardi per ottenere il baudrate richiesto. Un MAX232 faceva poi il resto. E’ stato un lavoraccio, e oggi non c’è più l’esigenza (e la convenienza, anche economica) di farlo. Però ha un enorme valore didattico, soprattutto se si intende sviluppare applicazioni in ambito real-time, dove i requisiti temporali sono stringenti e bisogna saper “domare” l’hardware sottostante.