Оглавление:

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

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

Видео: Открой свои глаза! Логический анализатор: 21 шаг
Видео: РЕТОМ-61850 и ПО «Сетевой анализатор» 2024, Ноябрь
Anonim
Image
Image
сборка
сборка

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

В этом видео я использовал относительно недорогую (около 35 долларов) и эффективную модель с графическим интерфейсом и бесплатным программным обеспечением.

Шаг 1: Сборка

Шаг 2: Используемые функции - Сервер

Используемые функции - Сервер
Используемые функции - Сервер

• Перемычки для соединений

• 2 Arduinos (мы использовали 2 Mega Arduinos 2560)

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

• Соединительные кабели USB для Arduino и анализатора.

• Осциллограф (опционально)

• Протоборд

Шаг 3: Используемая схема

Используемая цепь
Используемая цепь

Здесь у нас есть схема, на которой показан мониторинг трех контактов: TX0, SDA и SCL. У нас есть два Arduinos: ведущий и ведомый.

Шаг 4: Исходный код: Мастер

В Setup мы включим библиотеку для связи 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); // инициализация последовательного порта 0} void loop () {Wire.requestFrom (8, 6); // требуется 6 байтов для перехода к 8-му циклу while (Wire.available ()) {// enquanto houver bytes para Receber… char c = Wire.read (); // получить байт и арматуру с символом Serial.print (c); // envia o caracter pela serial (na verdade vai para o buffer)} delay (500); // aguarda meio segundo}

Шаг 5: Исходный код: Slave

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

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

#include // включает библиотеку для связи I2C void setup () {Wire.begin (8); // введите запрос 8 Wire.onRequest (requestEvent); // регистрация события по требованию // и ассоциация с функцией requestEvent} void loop () {delay (100); // não faz nada no loop, apenas aguarda 0, 1 segundo} // função que será execada quando ocorrer o evento de Requisição pelo mestre // foi registrada como evento no setup void requestEvent () {Wire.write ("teste"); // отвечаем com uma mensagem de 6 bytes}

Шаг 6: Анализатор: оборудование

Анализатор: Аппаратный
Анализатор: Аппаратный

Частота дискретизации до: 24 МГц

Логика: от 5 В до 5,25 В

Порог низкого уровня 0,8 В

Порог высокого уровня 2,0 В

Входное сопротивление около 1 МОм или более

Шаг 7: Установка программного обеспечения Saleae

Установка программного обеспечения Saleae
Установка программного обеспечения Saleae

Программу, которая принимает данные, захваченные логическим анализатором, и декодирует биты, можно скачать по следующей ссылке:

Шаг 8: Настройка среды для наших тестов

Настройка среды для наших тестов
Настройка среды для наших тестов

Я показываю здесь интерфейс, который мне особенно понравился, потому что он был чистым.

Шаг 9: Настройка среды для наших тестов

Настройка среды для наших тестов
Настройка среды для наших тестов

Вот несколько вариантов конфигурации:

• Нажав на название канала, мы можем его изменить.

• Мы можем определить, будет ли один из каналов служить триггером для захвата, и определить форму обнаружения.

• Щелкнув и удерживая номер канала, вы можете изменить свое положение в списке.

• Нажав на шестеренку, мы можем настроить визуализацию канала, расширяя…

•… или скрытие канала. Мы скроем все каналы, которые не будем использовать.

Шаг 10: Настройка среды для наших тестов

Настройка среды для наших тестов
Настройка среды для наших тестов

Нажав на стрелки кнопки «Старт», можно выбрать частоту дискретизации и продолжительность записи.

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

Шаг 11: Настройка среды для наших тестов

Настройка среды для наших тестов
Настройка среды для наших тестов

Мы также включим анализаторы протоколов. Во-первых, это I2C, следуя определениям библиотеки WIRE и правильно связывая каналы. Наконец, мы познакомим анализатор с асинхронным последовательным интерфейсом. Нам нужно быть внимательными, чтобы правильно настроить параметры согласно сборке.

Шаг 12: Настройка среды для наших тестов

Настройка среды для наших тестов
Настройка среды для наших тестов

Во вкладке «Decoded Protocols» мы должны проверить, какие анализаторы протоколов включены. Там данные появятся. Во вкладке «Аннотации» мы можем добавить некоторые результаты для лучшей визуализации. Просто щелкните значок «добавить измерение».

Шаг 13: Захват: обзор

Захват: Обзор
Захват: Обзор

На экране захвата программа отображает последовательность импульсов данных SDA, SCL и TX0.

Шаг 14: Захват: результат анализа протокола

Захват: результат анализа протокола
Захват: результат анализа протокола

Здесь мы видим результат захвата. На вкладке «Декодированные протоколы» у нас есть:

• Запрос сервера на подчиненное устройство с идентификатором 8.

• Ответ ведомого, шесть символов: «t», «e», «s», «t», «e» и пробел.

• За каждым следует бит ACK (подтверждение), указывающий на правильный прием байта, за исключением символа пробела NACK (не подтверждения).

• Затем мы видим результат декодирования последовательного порта TX0 с указанием символов, полученных и отправленных на последовательный терминал Arduino IDE.

Шаг 15: Захват: канал 0 и данные (SDA)

Захват: канал 0 и данные (SDA)
Захват: канал 0 и данные (SDA)

На этом изображении у нас есть последовательность импульсов линии SDA. Обратите внимание, что можно просмотреть каждый переданный байт.

Шаг 16: Захват: канал 1 и часы (SCL)

Захват: канал 1 и часы (SCL)
Захват: канал 1 и часы (SCL)

Теперь у нас есть последовательность импульсов линии SCL. Вы можете проверить более подробную информацию, просто наведя указатель мыши на сигнал, как вы видите на изображении. Мы видим, что тактовая частота составляла 100 кГц.

Шаг 17: Захват: канал 2 и последовательный (TX0)

Захват: канал 2 и последовательный (TX0)
Захват: канал 2 и последовательный (TX0)

Что касается последовательности импульсов линии TX0, мы можем видеть стартовый бит и точки кадрирования каждого бита. У нас есть байт, представляющий символ «е».

Шаг 18: Настройка среды для наших тестов

Настройка среды для наших тестов
Настройка среды для наших тестов

Здесь у нас есть несколько вариантов чтения данных.

Шаг 19: Захват: осциллограф и анализатор

Захват: осциллограф и анализатор
Захват: осциллограф и анализатор

Посмотрите на экран, который я снял с помощью осциллографа. Сигнал логического анализатора представляет только обнаружение высокого и низкого уровня, но не отражает качество сигнала. Лучше всего это можно наблюдать на осциллографе.

Шаг 20: Захват: наблюдение за отказом (пример последовательного отказа)

Захват: наблюдение за отказом (пример последовательного отказа)
Захват: наблюдение за отказом (пример последовательного отказа)

Теперь я покажу пример серийного сбоя, который на самом деле случился со мной. Я пытался подключиться к ESP32 с помощью модема GPRS, который используется в сотовом телефоне, с SIM-картой. Но он просто не подключился. Затем я проверил блок питания, проводку и заменил плату. Все сделал, но ничего не исправил. Я решил провести логический анализ: обнаружил, что сигнал ESP на UART 115200 начал рассогласовываться. То есть ESP32 воспроизводил то, что должно быть 115, 200, с другой скоростью, чем эта.

Эта ошибка, обнаруженная анализатором, была отмечена красным значком X. В моем понимании программа говорит, что точка, у которой есть такой бит, наполовину смещена во времени. По мере увеличения этого сдвига может наступить время, когда все будет несовместимо, так что информация не достигнет другой стороны. Обычно он приходит, но SIM800 чувствителен, и если он неточный, информация не доходит до другого конца.

Я не знаю, часто ли это происходит или нет, но это случилось со мной, и поэтому я решил затронуть эту тему здесь. Так что же я сделал? Я притормозил. Если вы поставите 9, 600, 19, 200, до 38, 400, это сработает, чего не происходит с 115, 200.

Шаг 21: Загрузите файлы

PDF

Я НЕТ

Рекомендуемые: