Con mia grande sorpresa, Claudio Capitani mi ha fatto recapitare a casa una scheda di sviluppo compatibile EZ-USB FX2LP. Sarò sincero, fino all’altro giorno non sapevo neanche cosa fosse un analizzatore logico.
C’è voluto un po’ di studio per capirne l’utilità, la modalità di utilizzo e programmazione, ma soprattutto il metodo migliore per accendere la miccia di questa sfida che mi aveva lanciato. Alla fine la scelta è caduta sulla possibilità di sfruttarla in accoppiata con il software Pulse View del progetto Sigrok. Il fine ultimo era riuscire a configurarla come simulacro Saleae Logic, mediante il firmware fx2lafw. Cosa assolutamente che si è rivelata abbastanza complessa per via di problemi di renumerazione di VID/PID per abilitare i 16 canali sotto Windows 10. Purtroppo lavorando praticamente sotto Windows ho dovuto mediare su questo sistema operativo nonostante l’ambiente nativo migliore fosse ovviamente Linux, diversamente avrei dovuto switchare spesso tra le partizioni. Naturalmente l’idea di spostare Pulse View sul Raspberry è quella più accreditata al momento.
Qualche specifica …
La scheda in mio possesso utilizza la versione a bassa potenza del chip CY7C68013A-56PVXC, ha 51 core core avanzati, aree dati del programma a 16KB (24LC128) , clock a 48MHZ, protocollo di trasmissione protocolli ad alta velocità 480 Mbps ed alimentazione direttamente da USB. Questa versione ha solo un jumper, altra cosa che all’inizio mi ha destabilizzato in quanto molte indicazioni sul web sono dedicate alla versione con due.
Progettando il circuito …
Per il test di configurazione, oltre che per iniziare a capirne il funzionamento base a livello grafico, mi sono affidato al prode Arduino. Non sapendo bene come funzionava, ho evitato di collegarlo al Raspberry come prima volta onde evitare correnti o tensioni pericolose. La FX2LP accetta senza problemi i 5V degli output di Arduino, quindi è stato semplice fare i collegamenti diretti senza passare dai 5V a 3,3V di utilizzo normale della board. Lo schema iniziale l’ho abbozzato in KiCad, in realtà nella versione su breadboard ho aggiunto solo quattro led, e le relative resistenze di protezione, per un doppio riscontro visivo di funzionamento.
Arduino è stato usato come semplice contatore binario con quattro uscite a diverse frequenze, così da avere appunto quattro led che gradualmente lampeggiavano, da lentamente da quello verde, fino allo stabile (per via dell’alta frequenza) di quello blu.
Pulse View delle mie brame …
Sfruttando il loop infinito di Arduino è stato quindi possibile intercettare sulla FX2LP i segnali di uscita nel momento desiderato. Pulse View ha anche la possibilità di mettere dei trigger sul campionamento, ma nello specifico test ho preferito lasciarlo libero di campionarlo direttamente al momento del run. Ho per semplicità associato ai canali delle label in base ai colori dei led, così da avere il raffronto immediato sulla frequenza di salita e il blink dei led.
Campionando a 2M al secondo, con un rate di 1MHz, ho potuto visualizzare la corretta implementazione del circuito e della lettura sul grafico lineare di 2 secondi.
Sarà curioso adesso vedere cosa succederà inserendo i Decoder di Pulse View per SPI e I2C … magari aggiungendo qualche sensore ed attuatore per rendere tutto più divertente!