Съдържание:

Отвори си очите! Логически анализатор: 21 стъпки
Отвори си очите! Логически анализатор: 21 стъпки

Видео: Отвори си очите! Логически анализатор: 21 стъпки

Видео: Отвори си очите! Логически анализатор: 21 стъпки
Видео: НОВАТА ПОЛИТИЧЕСКА ГОДИНА - ДЕМОКРАЦИЯТА с Марио Гаврилов 2024, Ноември
Anonim
Image
Image
Монтаж
Монтаж

Логическият анализатор улеснява вашата визуализация на импулсния ход, които са битовете, пътуващи по линия на комуникация. По този начин ви отваря очите, за да идентифицирате възможен проблем. Защо това е важно? Това е много ефективен инструмент за разработка и откриване на грешки, който може да ви спести време. В това видео днес ще оценим важността на логическия анализатор, ще наблюдаваме някои протоколи от обичайни практики, докато използваме това устройство, и ще илюстрираме провал при откриване без помощта на логически анализатор.

В това видео използвах сравнително евтин (около 35 долара) и ефективен модел, с графичен интерфейс и безплатен софтуер.

Стъпка 1: Монтаж

Стъпка 2: Използвани функции - Сървър

Използвани функции - Сървър
Използвани функции - Сървър

• Джъмпери за връзки

• 2 Arduinos (използвахме 2 Mega Arduinos 2560)

• Логически анализатор (използваме Saleae)

• USB свързващи кабели за Arduino и анализатор.

• Осцилоскоп (по избор)

• Protoboard

Стъпка 3: Използвана верига

Използвана верига
Използвана верига

Тук имаме схемата, която показва мониторинга на три пина: TX0, SDA и SCL. Имаме два Arduino: господар и роб.

Стъпка 4: Изходен код: Master

В настройката ще включим библиотеката за i2c комуникация. Влязохме в мрежата като Master и инициализирахме сериен 0. В цикъла поискахме байтове за подчинени данни за комуникация с нашия Arduino номер 8, както дефинирахме в примера. Отпечатваме в поредицата, която ще бъде оценена с логическия анализатор, получените байтове.

#include // включва библиотека за комуникация I2C void setup () {Wire.begin (); // Entra na rede como Mestre (endereço é opcional para o mestre) Serial.begin (115200); // inicia a serial 0} void loop () {Wire.requestFrom (8, 6); // изисквам 6 байта да добавям до endcraço 8 while (Wire.available ()) {// enquanto houver bytes para Receber… char c = Wire.read (); // получавам cada байт e armazena como caracter Serial.print (c); // envia o caracter pela serial (na verdade vai para o buffer)} забавяне (500); // aguarda meio segundo}

Стъпка 5: Изходен код: Slave

В този подчинен код отново включвам библиотеката за i2c комуникация. Влизам в мрежата като подчинен с адрес 8. Регистрираме събитието на заявката и го свързваме с функцията "заявка". Не е нужно да правите нищо по веригата, просто дайте 0,1 секундно забавяне.

И накрая, имаме функция за заявка, която ще бъде изпълнена, когато се случи събитието на заявката от Master, което е регистрирано в Setup. Накрая отговаряме със съобщение от 6 байта.

#include // включва библиотека за комуникация I2C void setup () {Wire.begin (8); // entra na rede como escravo com endereço 8 Wire.onRequest (requestEvent); // регистрация за evento de requisiçao // e associa à função requestEvent} void loop () {delay (100); // não faz nada no loop, apenas aguarda 0, 1 segundo} // função que será executada quando ocorrer o evento de requisição pelo mestre // foi registrada como evento no setup void requestEvent () {Wire.write ("teste"); // отговори на ума за мен от 6 байта}

Стъпка 6: Анализатор: Хардуер

Анализатор: Хардуер
Анализатор: Хардуер

Честота на дискретизация до: 24 MHz

Логика: 5 V до 5,25 V

Праг на ниско ниво 0,8 V

Праг на високо ниво 2.0 V

Входен импеданс от около 1 Mohm или повече

Стъпка 7: Инсталиране на софтуер Saleae

Инсталиране на софтуер Saleae
Инсталиране на софтуер Saleae

Програмата, която получава данните, уловени от логическия анализатор и декодира битовете, може да бъде изтеглена на следната връзка:

Стъпка 8: Конфигуриране на околната среда за нашите тестове

Конфигуриране на околната среда за нашите тестове
Конфигуриране на околната среда за нашите тестове

Тук показвам интерфейса, който особено ми хареса, защото беше чист.

Стъпка 9: Конфигуриране на околната среда за нашите тестове

Конфигуриране на околната среда за нашите тестове
Конфигуриране на околната среда за нашите тестове

Ето някои опции за конфигуриране:

• Като кликнете върху името на канала, можем да го променим.

• Можем да определим дали един от каналите ще служи като спусък за улавяне и формата на откриване.

• Като щракнете и задържите номера на канала, можете да промените позицията си в списъка.

• Чрез щракване върху зъбното колело можем да конфигурираме визуализацията на канала, разширявайки …

• … или скриване на канала. Ще скрием всички канали, които няма да използваме.

Стъпка 10: Конфигуриране на околната среда за нашите тестове

Конфигуриране на околната среда за нашите тестове
Конфигуриране на околната среда за нашите тестове

Щраквайки върху стрелките на бутона "Старт", има опции за Sampling Rate и продължителност на записа.

По някаква причина, ако софтуерът установи, че скоростта не може да се поддържа, ще се появи съобщение и автоматично скоростта ще бъде намалена, докато се достигне функционална стойност.

Стъпка 11: Конфигуриране на околната среда за нашите тестове

Конфигуриране на околната среда за нашите тестове
Конфигуриране на околната среда за нашите тестове

Ще включим и анализаторите на протоколи. Първо това е I2C, следвайки дефинициите на библиотеката WIRE и свързвайки правилно каналите. Накрая ще въведем анализатора в асинхронен сериал. Трябва да внимаваме, за да конфигурираме правилно параметрите според сглобяването.

Стъпка 12: Конфигуриране на околната среда за нашите тестове

Конфигуриране на околната среда за нашите тестове
Конфигуриране на околната среда за нашите тестове

В раздела „Декодирани протоколи“трябва да проверим кои анализатори на протоколи са активирани. Там ще се покажат данните. В раздела „Анотации“можем да добавим някои от резултатите за по -добра визуализация. Просто кликнете върху иконата „добавяне на измерване“.

Стъпка 13: Заснемане: Общ преглед

Заснемане: Общ преглед
Заснемане: Общ преглед

В екрана за заснемане програмата показва импулс от данни на SDA, SCL и TX0.

Стъпка 14: Заснемане: Резултат от анализ на протокола

Заснемане: Резултат от анализ на протокола
Заснемане: Резултат от анализ на протокола

Тук виждаме резултата от улавянето. В раздела „Декодирани протоколи“имаме:

• Искането на сървъра за подчинения с идентификатор 8.

• Подчиненият отговор, шест знака: "t", "e", "s", "t", "e" и интервал.

• Всеки от тях е последван от бит ACK (Acknowledge), показващ правилното приемане на байта, с изключение на символа за интервал NACK (Not Acknowledge).

• След това виждаме резултата от декодирането на сериала TX0, показващ получените и изпратени символи на серийния терминал на Arduino IDE.

Стъпка 15: Заснемане: канал 0 и данни (SDA)

Заснемане: канал 0 и данни (SDA)
Заснемане: канал 0 и данни (SDA)

На това изображение имаме импулсния ход на линията SDA. Имайте предвид, че всеки предаден байт може да бъде прегледан.

Стъпка 16: Заснемане: Канал 1 и часовник (SCL)

Заснемане: Канал 1 и часовник (SCL)
Заснемане: Канал 1 и часовник (SCL)

Тук имаме импулсния влак на SCL линията. Можете да проверите повече подробности, просто като поставите мишката върху сигнала, както виждате на изображението. Можем да видим, че тактовата честота е била 100 kHz.

Стъпка 17: Заснемане: Канал 2 и сериен (TX0)

Заснемане: Канал 2 и сериен (TX0)
Заснемане: Канал 2 и сериен (TX0)

Що се отнася до импулсния ход на линията TX0, можем да видим началния бит и точките на рамкиране на всеки бит. Имаме байт, представляващ знака "e".

Стъпка 18: Конфигуриране на околната среда за нашите тестове

Конфигуриране на околната среда за нашите тестове
Конфигуриране на околната среда за нашите тестове

Тук имаме няколко опции за четене на данните.

Стъпка 19: Заснемане: осцилоскоп и анализатор

Заснемане: осцилоскоп и анализатор
Заснемане: осцилоскоп и анализатор

Погледнете тук екрана, който заснех от осцилоскопа си. Сигналът на логическия анализатор представлява само високото и ниското откриване, но не представя качеството на сигнала. Това най -добре може да се наблюдава на осцилоскоп.

Стъпка 20: Заснемане: Наблюдение на повреда (пример за серийна грешка)

Заснемане: Наблюдение на повреда (пример за серийна грешка)
Заснемане: Наблюдение на повреда (пример за серийна грешка)

Сега ще покажа пример за сериен провал, който всъщност ми се случи. Бях с GPRS модем, вида, използван на мобилен телефон, SIM картата, опитвах се да се свържа с ESP32. Но просто не се свърза. След това проверих захранването, окабеляването и смених платката. Направих всичко, но нищо не го оправи. Реших да сложа логически анализ: открих, че ESP сигналът на UART 115200 започна да се разминава. Тоест, ESP32 играеше това, което трябва да бъде 115, 200 с различна скорост от тази.

Тази грешка, идентифицирана от анализатора, се показва с X в червено. Доколкото разбирам, програмата казва, че точката, която има такова малко, е наполовина изместена във времето. С увеличаването на тази промяна може да дойде момент, в който всичко да е несъответстващо, така че информацията да не достигне до другата страна. Обикновено пристига, но SIM800 е чувствителен и ако не е точен, информацията не достига до другия край.

Не знам дали това е нещо, което се случва често или не, но това се случи с мен и затова реших да обърна внимание на тази тема тук. И така, какво направих? Забавих темпото. Ако сложите 9, 600, 19, 200, до 38, 400, тя работи, което не се случва при 115, 200.

Стъпка 21: Изтеглете файловете

PDF

АЗ НЕ

Препоръчано: