Ciao!
Oggi vi parlerò di ScanaQuad, un analizzatore logico davvero ben fatto, semplice da usare, compatto e molto versatile.
Cosa fa di speciale?
Un analizzatore logico, ed in particolare ScanaQuad, vi permette di vedere e decodificare i principali protocolli di comunicazione (Modbus, Canbus, I2C, SPI, PWM..) in totale sono più di 30 e sono in continuo aggiornamento!
Ma vediamo un esempio pratico di quello che possiamo fare grazie a questo fantastico strumento.
Per prima cosa ho collegato un display I2C ad Arduino in questo modo:
Poi ho caricato nella scheda il seguente codice di esempio:
Ho alimentato il tutto ed ho collegato lo ScanaQuad sui canali SDA e SCL (per default sono i pin A4 e A5 di Arduino Uno)
Ora che abbiamo visto i messaggi inviati è possibile modificare lo sketch per inserire manualmente i dati da inviare, grazie alla libreria Wire integrata nell'IDE.
Ovviamente questa procedura può essere bypassata leggendo nella libreria del display i dati che ci servono, ma è indispensabile invece in altri casi (ad esempio per il reverse engineering).
Ecco qui sotto lo sketch, equivalente a quello sopra, ma ottenuto grazie ad i segnali letti con lo ScanaQuad.
Con ScanaQuad è possibile anche generare onde quadre e addirittura generare messaggi con vari
protocolli di comunicazione.
Ad esempio, sempre con il protocollo i2c, ho generato dei messaggi su 2 canali in uscita e li ho rimandati in ingresso sugli altri 2 per vedere cosa veniva rilevato.
ecco cosa ho ottenuto:
Come potete vedere, i canali 1 e 2, che erano in ascolto, hanno letto e decodificato i messaggi generati sui canali 3 e 4.
I messaggi che vedete sono editabili grazie ad un editor di script integrato in ScanaStudio.
Per aprire l'editor cliccate su "Signal builder script" che trovate nel menu in basso a sinistra
Ecco lo script che ho utilizzato per generare il messaggio i2c del print sopra:
Come detto sopra è anche presente un generatore di onde quadre, è possibile impostare frequenza e duty cycle.
Nella gif qui sotto vedete un'onda quadra applicata al led.
Questo è tutto!
Ringrazio Ikalogic per questo strumento, davvero utile e versatile, inoltre è piccolissimo, potrete quindi averlo sempre a portata di mano.
Sicuramente mi tornerà utilissimo in futuro per diversi protocolli di comunicazione.
Ciao!
Seguimi sulle mie pagine per rimanere sempre aggiornato sui nuovi post!
Oggi vi parlerò di ScanaQuad, un analizzatore logico davvero ben fatto, semplice da usare, compatto e molto versatile.
Cosa fa di speciale?
Un analizzatore logico, ed in particolare ScanaQuad, vi permette di vedere e decodificare i principali protocolli di comunicazione (Modbus, Canbus, I2C, SPI, PWM..) in totale sono più di 30 e sono in continuo aggiornamento!
Ma vediamo un esempio pratico di quello che possiamo fare grazie a questo fantastico strumento.
Per prima cosa ho collegato un display I2C ad Arduino in questo modo:
Poi ho caricato nella scheda il seguente codice di esempio:
Ho alimentato il tutto ed ho collegato lo ScanaQuad sui canali SDA e SCL (per default sono i pin A4 e A5 di Arduino Uno)
Avviando il software gratuito ScanaStudio è possibile eseguire un campionamento della comunicazione I2C, è quindi possibile vedere ciò che sta avvenendo sui canali SDA e SCL, il programma esegue addirittura la decodifica dei dati inviati sul canale SDA.
Ora che abbiamo visto i messaggi inviati è possibile modificare lo sketch per inserire manualmente i dati da inviare, grazie alla libreria Wire integrata nell'IDE.
Ovviamente questa procedura può essere bypassata leggendo nella libreria del display i dati che ci servono, ma è indispensabile invece in altri casi (ad esempio per il reverse engineering).
Ecco qui sotto lo sketch, equivalente a quello sopra, ma ottenuto grazie ad i segnali letti con lo ScanaQuad.
Con ScanaQuad è possibile anche generare onde quadre e addirittura generare messaggi con vari
protocolli di comunicazione.
Ad esempio, sempre con il protocollo i2c, ho generato dei messaggi su 2 canali in uscita e li ho rimandati in ingresso sugli altri 2 per vedere cosa veniva rilevato.
ecco cosa ho ottenuto:
Come potete vedere, i canali 1 e 2, che erano in ascolto, hanno letto e decodificato i messaggi generati sui canali 3 e 4.
I messaggi che vedete sono editabili grazie ad un editor di script integrato in ScanaStudio.
Per aprire l'editor cliccate su "Signal builder script" che trovate nel menu in basso a sinistra
Ecco lo script che ho utilizzato per generare il messaggio i2c del print sopra:
- #include "i2c.js"
- function build_signals()
- {
- /*
- Quick Help
- ~~~~~~~~~~
- Start by configuring the protocol with the variables
- in the "configuration" part.
- Then, use the following functions to generate packets:
- gen_add_delay(delay)
- ====================
- Description
- -----------
- Adds a delay, keeping SCL and SDA at their last known level
- Parameters
- ----------
- delay: the delay expressed in number of samples.
- put_c(data,start,ack,stop)
- ===============
- Description
- -----------
- Builds an I2C data word. this can either be an address or a regular data byte. If it's an address, the R/W bit must be inluded
- in the data byte.
- Parameters
- ----------
- data: Value of the I2C byte to be generated
- start: Set to true to generate a start condition
- ack: Set to true to force ACK bit to an active state (i.e. 0 level)
- stop: Set to true to generate a stop condition
- */
- /*
- Configuration part : !! Configure this part !!
- (Do not change variables names)
- */
- chSda = 0; // SDA on CH 1
- chScl = 1; // SCL on ch 2
- address = 0x7c;
- gen_bit_rate = 100000; // Bit rate expressed in Hz
- var samples_per_us = get_srate() / 1000000;
- ini_i2c_generator();
- /*
- Signal generation part !! Change this part according to your application !!
- */
- gen_add_delay(samples_per_us * 150);
- put_c(address,true, true, false);
- put_c(0x80,false, true, false);
- put_c(0x28,false, true, true);
- ////////////////////////////////////
- gen_add_delay(samples_per_us * 150000);
- put_c(address,true, true, false);
- put_c(0x80,false, true, false);
- put_c(0x28,false, true, true);
- gen_add_delay(samples_per_us * 150);
- put_c(address,true, true, false);
- put_c(0x80,false, true, false);
- put_c(0x28,false, true, true);
- gen_add_delay(samples_per_us * 150);
- put_c(address,true, true, false);
- put_c(0x80,false, true, false);
- put_c(0x28,false, true, true);
- gen_add_delay(samples_per_us * 150);
- put_c(address,true, true, false);
- put_c(0x80,false, true, false);
- put_c(0xC,false, true, true);
- gen_add_delay(samples_per_us * 150);
- put_c(address,true, true, false);
- put_c(0x80,false, true, false);
- put_c(0x1,false, true, true);
- ///////////////////////////////////////////
- gen_add_delay(samples_per_us * 150000);
- put_c(address,true, true, false);
- put_c(0x80,false, true, false);
- put_c(0x6,false, true, true);
- gen_add_delay(samples_per_us * 150);
- }
Come detto sopra è anche presente un generatore di onde quadre, è possibile impostare frequenza e duty cycle.
Nella gif qui sotto vedete un'onda quadra applicata al led.
Questo è tutto!
Ringrazio Ikalogic per questo strumento, davvero utile e versatile, inoltre è piccolissimo, potrete quindi averlo sempre a portata di mano.
Sicuramente mi tornerà utilissimo in futuro per diversi protocolli di comunicazione.
Ciao!
Seguimi sulle mie pagine per rimanere sempre aggiornato sui nuovi post!
Nessun commento:
Posta un commento
Lascia un commento qui sotto, ti risponderò il prima possibile!