Taula de continguts:

Obre els ulls! Analitzador lògic: 21 passos
Obre els ulls! Analitzador lògic: 21 passos

Vídeo: Obre els ulls! Analitzador lògic: 21 passos

Vídeo: Obre els ulls! Analitzador lògic: 21 passos
Vídeo: ТАКОВ МОЙ ПУТЬ В L4D2 2024, Desembre
Anonim
Image
Image
muntatge
muntatge

L’analitzador lògic facilita la visualització del tren d’impulsos, que són els bits que viatgen en una línia de comunicació. Per tant, us obre els ulls per identificar un possible problema. Per què és important? És una eina de desenvolupament i detecció d’errors molt eficient que us pot estalviar temps. Avui en aquest vídeo avaluarem la importància de l’analitzador lògic, observarem alguns protocols de pràctiques habituals mentre s’utilitza aquest dispositiu i exemplificarem un error de detecció sense l’ajut d’un analitzador lògic.

En aquest vídeo, he utilitzat un model relativament econòmic (al voltant de 35 dòlars) i eficient, amb una interfície gràfica i programari lliure.

Pas 1: Muntatge

Pas 2: Funcions utilitzades: servidor

Funcions utilitzades: servidor
Funcions utilitzades: servidor

• Jumpers per a connexions

• 2 Arduinos (hem utilitzat 2 Mega Arduinos 2560)

• Analitzador lògic (utilitzem Saleae)

• Cables de connexió USB per Arduino i analitzador.

• Oscil·loscopi (opcional)

• Protoboard

Pas 3: Circuit utilitzat

Circuit utilitzat
Circuit utilitzat

Aquí tenim l'esquema, que mostra la supervisió de tres pins: TX0, SDA i SCL. Tenim dos Arduinos: un mestre i un esclau.

Pas 4: Codi font: Mestre

A la configuració, inclourem la biblioteca per a la comunicació i2c. Vam entrar a la xarxa com a mestre i vam inicialitzar la sèrie 0. Al bucle, vam sol·licitar bytes de dades esclaus per a la comunicació amb el nostre número Arduino 8, tal com vam definir a l'exemple. Imprimim en la sèrie, que serà avaluada amb l'analitzador lògic, els bytes rebuts.

#include // inclui a biblioteca for comunicação I2C void setup () {Wire.begin (); // Entra na rede com Mestre (endereç és opcional per a mestre) Serial.begin (115200); // inicia un serial 0} void loop () {Wire.requestFrom (8, 6); // requisita 6 bytes de dados do escravo de endereço 8 while (Wire.available ()) {// enquanto houver bytes para receber… char c = Wire.read (); // recebe cada byte e armazena com a caràcter Serial.print (c); // envia o caracter pela serial (na verdade vai para o buffer)} delay (500); // aguarda meio segundo}

Pas 5: Codi font: esclau

En aquest codi esclau, torno a incloure la biblioteca per a la comunicació i2c. Ingresso a la xarxa com a esclau amb l'adreça 8. Registrem l'esdeveniment de sol·licitud i l'associem a la funció "sol·licitud". No cal que feu res al bucle, només cal que retardeu 0,1 segons.

Finalment, tenim la funció de sol·licitud que s’executarà quan es produeixi l’esdeveniment de sol·licitud per part del mestre, que es va registrar a la configuració. Respondrem, finalment, amb un missatge de 6 bytes.

#include // inclui a biblioteca for comunicação I2C void setup () {Wire.begin (8); // entra na rede com escravo com endereço 8 Wire.onRequest (requestEvent); // registra o event de requisiçao // e associació a função requestEvent} void loop () {delay (100); // no faz nada no loop, apenas aguarda 0, 1 segundo} // funció que serà executada quan ocorrerà o esdeveniment de requeriment de pelo mestre // va ser registrat com a esdeveniment sense configuració void requestEvent () {Wire.write ("teste"); // responde com uma mensagem de 6 bytes}

Pas 6: Analitzador: maquinari

Analitzador: maquinari
Analitzador: maquinari

Freqüència de mostra fins a: 24 MHz

Lògica: de 5 V a 5,25 V

Llindar de nivell baix 0,8 V

Llindar d'alt nivell 2,0 V

Impedància d'entrada d'uns 1 Mohm o més

Pas 7: Instal·lació del programari de Saleae

Instal·lació de programari Saleae
Instal·lació de programari Saleae

El programa que rep les dades capturades per l’analitzador lògic i descodifica els bits es pot descarregar al següent enllaç:

Pas 8: Configuració del medi ambient per a les nostres proves

Configuració del medi ambient per a les nostres proves
Configuració del medi ambient per a les nostres proves

Aquí mostro la interfície, que m’ha agradat especialment perquè estava neta.

Pas 9: Configuració del medi ambient per a les nostres proves

Configuració del medi ambient per a les nostres proves
Configuració del medi ambient per a les nostres proves

Aquí teniu algunes opcions de configuració:

• Fent clic al nom del canal, el podem canviar.

• Podem determinar si un dels canals servirà de detonant per a la captura i la forma de detecció.

• Fent clic i mantenint premut el número del canal, podeu canviar la vostra posició a la llista.

• En fer clic a l’engranatge, podem configurar la visualització del canal, ampliant …

• … o amagant el canal. Amagarem tots els canals que no utilitzarem.

Pas 10: Configuració del medi ambient per a les nostres proves

Configuració del medi ambient per a les nostres proves
Configuració del medi ambient per a les nostres proves

Fent clic a les fletxes del botó "Inici", hi ha les opcions de Freqüència de mostreig i durada de la gravació.

Per alguna raó, si el programari detecta que no es pot mantenir la velocitat, es mostrarà un missatge i automàticament es reduirà la taxa fins que s’assoleixi un valor funcional.

Pas 11: Configuració del medi ambient per a les nostres proves

Configuració del medi ambient per a les nostres proves
Configuració del medi ambient per a les nostres proves

També inclourem els analitzadors de protocols. Primer és el I2C, seguint les definicions de la biblioteca WIRE i associant els canals correctament. Finalment, introduirem l’analitzador a sèries asíncrones. Hem de tenir cura de configurar correctament els paràmetres segons el muntatge.

Pas 12: Configuració del medi ambient per a les nostres proves

Configuració del medi ambient per a les nostres proves
Configuració del medi ambient per a les nostres proves

A la pestanya "Protocols descodificats", hauríem de comprovar quins analitzadors de protocols estan habilitats. Allà apareixeran les dades. A la pestanya "Anotacions", podem afegir alguns dels resultats per obtenir una millor visualització. Simplement feu clic a la icona "Afegeix mesurament".

Pas 13: Captura: Visió general

Captura: visió general
Captura: visió general

A la pantalla de captura, el programa mostra el tren de pols de dades de l'SDA, SCL i TX0.

Pas 14: captura: resultat de l'anàlisi de protocols

Captura: resultat de l'anàlisi de protocols
Captura: resultat de l'anàlisi de protocols

Aquí veiem el resultat de la captura. A la pestanya "Protocols descodificats" tenim:

• La sol·licitud del servidor per a l'esclau amb l'identificador 8.

• La resposta de l'esclau, sis caràcters: "t", "e", "s", "t", "e" i un espai.

• A cada un li segueix un bit ACK (Acknowledge) que indica la recepció correcta de bytes, excepte el caràcter d’espai NACK (Not Acknowledge).

• A continuació, veiem el resultat de la descodificació del serial TX0, que indica els caràcters rebuts i enviats al terminal serial Arduino IDE.

Pas 15: captura: canal 0 i dades (SDA)

Captura: canal 0 i dades (SDA)
Captura: canal 0 i dades (SDA)

En aquesta imatge, tenim el tren de polsos de la línia SDA. Tingueu en compte que es poden visualitzar cada byte transmès.

Pas 16: captura: canal 1 i rellotge (SCL)

Captura: canal 1 i rellotge (SCL)
Captura: canal 1 i rellotge (SCL)

Ara tenim aquí el tren de polsos de la línia SCL. Podeu consultar més detalls simplement posicionant el ratolí sobre el senyal, tal com veieu a la imatge. Podem veure que la freqüència del rellotge era de 100 kHz.

Pas 17: Captura: canal 2 i sèrie (TX0)

Captura: canal 2 i sèrie (TX0)
Captura: canal 2 i sèrie (TX0)

Pel que fa al tren d’impulsos de la línia TX0, podem veure el bit d’inici i els punts d’enquadrament de cada bit. Tenim un byte que representa el caràcter "e".

Pas 18: Configuració del medi ambient per a les nostres proves

Configuració del medi ambient per a les nostres proves
Configuració del medi ambient per a les nostres proves

Aquí tenim diverses opcions per llegir les dades.

Pas 19: Captura: oscil·loscopi i analitzador

Captura: oscil·loscopi i analitzador
Captura: oscil·loscopi i analitzador

Mireu aquí la pantalla que vaig capturar del meu oscil·loscopi. El senyal de l'analitzador lògic representa només les deteccions alta i baixa, però no representa la qualitat del senyal. Això es pot observar millor en un oscil·loscopi.

Pas 20: captura: observació d'un error (exemple d'error en sèrie)

Captura: observació d'un error (exemple d'error en sèrie)
Captura: observació d'un error (exemple d'error en sèrie)

Ara, mostraré un exemple d’error en sèrie, que realment em va passar. Jo estava amb un mòdem GPRS, del tipus que es feia servir en un telèfon mòbil, la targeta SIM, intentant connectar-me a l’ESP32. Però simplement no es connectava. Després vaig comprovar la font d’alimentació, el cablejat i vaig canviar la placa. Ho vaig fer tot, però res no ho va solucionar. Vaig decidir fer una anàlisi lògica: vaig descobrir que el senyal ESP de l'UART 115200 començava a no coincidir. És a dir, l’ESP32 jugava al que hauria de ser 115, 200 a una velocitat diferent d’aquesta.

Aquest error, identificat per l’analitzador, es va mostrar amb una X en vermell. Segons la meva comprensió, el programa diu que el punt que té una mica és tan mig desplaçat en el temps. A mesura que aquest canvi augmenta, pot arribar un moment en què tot no coincideixi, de manera que la informació no arribi a l’altra banda. Normalment arriba, però el SIM800 és sensible i, si no és exacte, la informació no arriba a l’altre extrem.

No sé si això passa amb freqüència o no, però em va passar, i per això vaig decidir tractar aquest tema aquí. Què he fet, doncs? Vaig frenar la velocitat. Si poseu 9, 600, 19, 200, fins a 38, 400, funciona, cosa que no passa amb els 115, 200.

Pas 21: baixeu els fitxers

PDF

INO

Recomanat: