Windows. Вирусы. Ноутбуки. Интернет. Office. Утилиты. Драйверы

Здравствуйте, уважаемые радиолюбители. В этой публикации рассмотрим анализатор, который, как известно, один из самых необходимых инструментов в арсенале радиолюбителя. Это видео снято на канале Паяльник TV. Автор ролика расскажет о маленьком, но незаменимом во многих случаях приборчике – логическом анализаторе. Он по своим функциям является клоном известного логического анализатора Saleae Logic, который можно приобрести в интернет-магазинах. В своё время он был купен примерно за 5-6 долларов. Это миниатюрный 8-канальный логический анализатор с максимальной частотой сэмплирования 24 Мгц.

На сегодняшний день компания Saleae выпустила довольно много новых моделей логических анализаторов, в том числе линейку Про, в которой возможно переключать логические уровни, то есть, есть возможность работы с логическими уровнями 1,8 В.

Также возможность появилась захвата аналогового сигнала, правда, с невысокой частотой дискретизации. На момент приобретения этого клона в линейке Saleae было всего, если я не ошибаюсь, 2 логических анализатора это 8-канальный и 16-канальный. И вот у меня в руках 8-канальный анализатор, то есть, его клон. В комплекте было 10 таких проводков длиной где-то 25 см, с такими разъёмами, которые на IDC и PLS контакты. И сразу я заказал такой наборчик небольших щупов, чтобы было удобно сразу подцепиться либо к ножкам компонентов, либо в других случаях, когда такие контакты невозможно использовать.

И большим, конечно, стимулом, можно сказать, к созданию этого обзора стала новая версия программного обеспечения от компании Saleae, которое обладает заметно большими возможностями перед старыми версиями. И большая часть этого обзора будет посвящена именно обзору программного обеспечения, так как, собственно, здесь особо нечего рассказывать. Так как этот логический анализатор на основе ПК, и схема его достаточно проста. Здесь лишь один контроллер, задача которого – в реальном времени передавать данные на USB. И обвязка минимальна. Сейчас я покажу поближе. Корпус разбирается довольно просто, и перед нами теперь лежит такая платка. Как я говорил, ничего особенного здесь нет. Разъём mini-USB, кварц 24 МГц, сам контроллер с минимумом обвязки. Здесь подтягивающие резисторы, и резисторы последовательно стоят, защитные.

С обратной стороны так же микросхемка EPROM, развязка по питанию, и стабилизатор 3,3 В, и IDC разъём припаян для подключения. В отличие от оригинальной версии, китайцы, конечно, на аппаратной части значительно сэкономили. Во-первых, это отсутствие защитных диодов по входам. В оригинальной версии это есть. Также там присутствует предохранитель, SMDшный стоит, по питанию. И самое большое отличие – это применение многослойной печатной платы. Здесь же плата двухслойная. Соберём прибор и приступим к обзору программной части. Итак, это старая версия программы, 1.1.15. Анализатор у нас не подключён, и сейчас мы можем воспользоваться программой в режиме симуляции. Но об этом попозже. Начнём с настроек, их не так много. Первое это размер буфера, то есть, то количество сэмплов, которое мы можем увидеть левее первого срабатывания триггера. По умолчанию 10 миллионов, но можем изменить от 1 до 1000. И активировать длинную запись, до 1 триллиона сэмплов. Но здесь предупреждение, что это займёт много памяти. Далее, настройки интерфейса и проверки обновлений, настройки для 16-канального анализа. И здесь мы можем указать папку с дополнительными плагинами, анализаторами протоколов. Настройки захвата, количества сэмплов, от 1 миллиона до 10 миллиардов, и частота сэмплирования, от 25 кГц до 24 МГц.

Первое неудобство – это то, что нельзя просто взять мышкой и перетащить канал на нужное место. Даже щелчок правой кнопкой не открывает никаких свойств. Меню свойств канала находится левее. Если подвести мышку левее триггера, появляется маленькая кнопочка. И здесь у нас параметры канала скрыть канал, скрыть все каналы ниже, показать, передвинуть вниз. Весьма неблагодарное занятие, особенно если необходимо передвинуть несколько каналов. Так что тут проще подключить сразу в нужном порядке, чем потом через менюшку, это очень долго, передвигать.

Настройки триггера весьма скромные это у нас либо восходящий фронт, либо спадающий фронт. И для остальных каналов мы можем задать дополнительные условия. Сейчас синхронизация запустится в момент, когда на нулевом канале будет спадающий фронт, на первом канале в этот момент будет высокий логический уровень, на втором низкий, и на третьем высокий. Теперь поддерживаемые протоколы. Их не очень много, но зато есть SPI Ии V2C, самые популярные в микроконтроллерах интерфейсы. Добавляем SPI – и попадаем в настройки. Здесь указываем, к какому каналу подключён какой сигнал. И настраиваем свойства протокола какой бит первый, количество бит на посылку, до 64, 8 стандартно, полярность, фаза тактового сигнала, и какое активное состояние Enable, низкое или высокое. Сохраняем, и программа предлагает нам переименовать каналы. Соглашаемся. И воспользуемся симуляцией. На остальных каналах хаотичная последовательность символов, так как никаких протоколов на них не назначено. Увеличиваем масштаб, Enable, тактовый сигнал, выходящие данные, входящие данные. Последний байт не докодируется, так как в этот момент Enable высокий, то есть, не активна у нас передача. И над каждым байтом его значение. Можем изменить настройки, в какой системе лучше отображать. Мне удобнее в двоичной, вот наши байты в двоичной системе. Справа окно измерений, то есть, наводя курсор, мы видим ширину импульса, период и частоту. Можем добавить скважность, и показывать байт.

Также есть возможность установить курсоры, но работают они весьма странно. То есть, для быстрой навигации это не годится. Мы поставили два курсора, хотим другой байт какой-то посмотреть, и никак быстро перейти к нему не можем. Если нажмём опять на Т1, то заново программа предложит установить курсор. Не очень это удобно, но как есть. Новая версия программы 1.1.34 бета. Этот интерфейс мне нравится гораздо больше. Всё более однородно, лучше отрисовано, и наконец-то можно просто взять – и мышкой перетащить канал в нужное место. Или даже несколько каналов. А не лазить через меню, как в предыдущей версии, которая в этой версии также на виду. Можно изменить также вертикальный масштаб канала. И по правому щелчку тоже появляется меню. Продолжительность захвата теперь устанавливается не только в сэмплах, но и по времени, в миллисекундах или в секундах. Поставим 10 секунд, 4 МГц, частота сэмплирования. Как видите, в новой версии наш китайский анализатор определился без проблем. Добавилось довольно много новых протоколов, как вы видите. Не буду все перечислять, но вот даже USB 1.1, PS/2, JTAG, и даже HD44780. Теперь можно отлаживать дисплей. Дальнейшую работу я покажу на реальном устройстве. добавим протокол SPI, входящих данных у нас нет. И протокол, по умолчанию все настройки. Скроем пустые каналы, и сделаем побольше оставшиеся. Скрыть каналы, выделим все, увеличиваем масштаб…
Настройки синхронизации в этой версии расширились. Хотя по-прежнему им далеко до профессиональных логических анализаторов, но всё равно, это уже какой-то шаг вперёд. Помимо синхронизации по восходящему и спадающему фронту, есть возможность синхронизации по ширине импульса, как положительного, так и отрицательного. Сейчас нам это не понадобится. Установим синхронизацию по восходящему фронту. Проверим настройки, 10 с, частота 4 МГц. Нажимаем старт, и ждём события от триггера. Событие произошло, сделаем несколько посылок… Думаю, хватит. Вот наша первая посылка. Почему-то здесь не произошло распознавание отправляемых данных. Очень странно… Надо будет проверить в ранней версии программы. Возможно, это связано с бета версией. Вот они, наши тактовые импульсы. И в конце защёлкивающие импульс, который выводит данные на выходы регистра. Проверим остальные посылки… Да, в остальных всё в порядке. Настроим на двоичное отображение… Давайте посмотрим, что с первой посылкой в старой версии программы. Нажимаем Старт и ждём события от триггера. Так, первая посылка… Тоже не докодировалась. Очень жаль. Остальные проверим. Уже вижу… Да, всё в порядке.

Теперь о новых плюшках. Появилась вкладка аннотаций. Здесь мы можем добавить закладку, пару маркеров, так же, как в предыдущей версии, или измерение. Добавляя закладку, мы просто сохраняем текущую позицию экрана и при навигации можем легко вернуться. Пара маркеров, так же, как и в предыдущей версии, но работает, конечно, намного лучше. Во-первых, мы можем поставить несколько пар. И во-вторых, опять же, есть возможность навигации по ним, довольно удобно. Первая пара, вторая… Мы можем неограниченное количество их использовать. Также можно добавить измерения. Что это такое? Штука довольно полезная. Похожее на пару маркеров, но более функциональное. Так же устанавливаем начальную и конечную точку, и теперь это измерение у нас всегда отображается.
В настройках можем указать необходимые отображаемые величины средняя частота, средняя скважность, количество фронтов, восходящих и нисходящих, количество положительных и отрицательных импульсов, максимально узкий положительный, максимально широкий положительный импульс. Также отрицательный, период, средний период и количество периодов. При наведении курсора теперь сверху сигнала отображается измерения. Хотя мы можем настроить отображение как и в предыдущей версии в боковой панели, этот режим мне не очень нравится. Гораздо удобнее сразу все измерения при наведении курсора. Из новых плюшек – это список декодированных данных. Можем использовать его для быстрой навигации. Также доступен поиск по этому списку, но пока работает он весьма странно. То ли количество символов в строке ограничено, то ли эту функцию пока ещё не доделали. То есть, попробуем найти, допустим, 01 00 1111. Ничего. А если без пробелов… Тоже ничего. И попробуем полностью ввести строку… Всё, опять ничего. Надеюсь, в следующих версиях программы они эту штуку профиксят, так как это довольно полезно.

Небольшое неудобство – то, что при установке продолжительности захвата в сэмплах нельзя ввести 10 и поставить букву М, чтобы установить 10 миллионов сэмплов. Обязательно надо ввести именно цифрами, 10 000 000. Попробуем посмотреть какой-нибудь более скоростной интерфейс, например, I2S. Анализатор сейчас подключён к ЦАПу, и я подключу по порядку все каналы. CLOCK – это BIT CLOCK, FRAME – WORD CLOCK, и DATA – объяснять не нужно. Здесь нет сигнала, только MASTER CLOCK. Все остальные параметры оставляем по умолчанию, так как формат передачи I2S. Сохраняем. Скроем ненужные каналы опять. Сейчас у меня воспроизводится файл с частотой дискретизации 44,1 кГц и разрядностью 16 бит. Итак, вот они, наши 44 кГц на WORD CLOCK. BIT CLOCK, как мы видим, не очень симметричные импульсы. Но нам важно только моменты спадающих фронтов. И время между ними всегда одинаковое. Так что никаких проблем. И поочерёдно первый и второй каналы. Так как в настройках у меня установлено 24 бита на слово, а проигрывается 16, то, естественно, последние биты заполнены нулями. Я переключился на другой файл, 96 кГц с разрядностью 24 бита. Итак, 96, BIT CLOCK… Опять немножко несимметричные импульсы, но расстояние между ними всегда одинаковое, так что никаких проблем. И уже в каждом слове реальных 24 бита.

Ардуино – уникальный микроконтроллер, позволяющий вам создать любое устройство, ограниченное лишь фантазией инженера. Сегодня мы поговорим об одном из таких проектов и разберём антенный анализатор на Ардуино, а также все нюансы, с которыми вам придётся столкнуться при его пайке и программировании.

На самом деле анализатор спектра на Ардуино – достаточно простой проект, но идеально подойдёт новичкам и тем, кто хочет добавить данное устройство к себе в инструментарий. Давайте разберём, что такое логический анализатор на Аrduino, и какие подводные камни вас ожидают при его проектировке и пайке.

Схема логического анализатора на базе МК Arduino

Для начала необходимо спроектировать то, что мы будем паять. Логический анализатор является простым инструментом, вся его задача состоит в считывании и анализе двоичного кода (цифрового сигнала), передаваемого при помощи подачи электричества.

Иными словами, каждые 5 вольт подаваемые на устройство – это единичка, отсутствие таковых – это ноль. Такой двоичный код используется при кодировке данных и во многих устройствах, в том числе на основе Ардуино. Читаться начинает, как правило, с единицы. А чтобы проверить свой проект с двоичной кодировкой, вам и пригодится логический анализатор.

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

  1. 4 канала для логического анализа поступающих сигналов.
  2. Вариативность частоты сигналов вплоть до 400 кГц, такой промежуток охватит большую часть современных приборов, кроме специализированных.
  3. Напряжение на входе должно составлять до +5 Вольт, как уже описывалось, это стандарт, принимаемый за единицу (наличие сигнала).
  4. LED дисплей для отображения информации. Особенно изощрённые программисты могут купить пару светодиодов и выстроить собственный дисплей нужной им диагонали, но для всех остальных – написание ПО под такое устройство будет слишком трудоёмким, и окажется лишним шагом. Поэтому здесь мы рассмотрим вариант устройства именно с ЖК дисплеем.
  5. 4 аккумулятора для питания, на 1.2 В при максимальном напряжении в 4.8 Вольт.
  6. Оперативная память. Желательно взять две разновидности – скоростную (3.6мс на сигнал) и низкоскоростную (36 с), такое решение позволит охватить весь диапазон сигналов.
  7. Панель управления или пара кнопок.
  8. Любая оболочка под крепление конструкции. Можно распечатать на 3-Д принтере, можно взять ненужный пластиковый коробок или обойтись вовсе без корпуса. Здесь мы не будем давать советов, устройство работает, что в оболочке, что без, выбор остаётся за вами.

Для питания вам необходимо подобрать именно аккумуляторы, так как 4 батарейки по 1.5 Вольта могут вывести Ардуино из строя и сжечь плату. Не говоря уже об опасности для ЖК дисплея. Поэтому не поскупитесь, и возьмите качественные комплектующие. Ведь качество конечного изделия равно параметру худшего его компонента.

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

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

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

Рекомендуемая периферия для создания логического анализатора на базе микроконтроллера Arduino

Из всего вышеописанного вы уже успели составить примерный список периферии для покупки, но давайте уточним этот момент. В логическом анализаторе вам потребуется:

  1. Сам микроконтроллер Ардуино. Не имеет разницы, какой вы подберёте, это лишь повлияет на конечный размер устройства. ПО под любую версию выглядит одинаково. На фото выше был использована плата .
  2. ЖК дисплей. Если у вас имеется старый кнопочный телефон, можете снять с него, и устроить «безотходное» производство.
  3. Резисторы различной ёмкости.
  4. Датчик тока.
  5. 4 аккумулятора.
  6. Светодиод или парочка.
  7. Карта памяти, но это опционально.

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

Программирование МК Arduino при реализации проекта «логический анализатор»

Благодаря популярности Ардуино существуют уже готовые библиотеки и функции для логических анализаторов на этом МК. Вам остаётся лишь подобрать подходящую и переписать программный код под своё устройство. Ведь платы, датчики и прочие вводные у всех различаются, и чтобы ваше устройство работало без проблем, придётся подогнать чужой код под свои запросы. Если же вы не хотите лишний раз заморачиваться и у вас есть опыт программирования на С++, можете воспользоваться любой полюбившейся средой.

Код для схемы на фото выше может быть таким:

/*********************************** 128 by 64 LCD Logic Analyzer 6 channel and 3Mb/s By Bob Davis Uses Universal 8bit Graphics Library, http://code.google.com/p/u8glib/ Copyright (c) 2012, [email protected] All rights reserved. ********************************************/ #include "U8glib.h" // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 //U8GLIB_ST7920_128X64_4X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // **** NOTE **** I Moved the three control pins !!! U8GLIB_ST7920_128X64_4X u8g(8, 9, 10, 11, 4, 5, 6, 7, 1, 2, 3); int Sample; int Input=0; int OldInput=0; int xpos=0; void u8g_prepare(void) { u8g.setFont(u8g_font_6x10); u8g.setFontRefHeightExtendedText(); u8g.setDefaultForegroundColor(); u8g.setFontPosTop(); } void DrawMarkers(void) { u8g.drawFrame (0,0,128,64); u8g.drawPixel (20,1); u8g.drawPixel (40,1); u8g.drawPixel (60,1); u8g.drawPixel (80,1); u8g.drawPixel (100,1); u8g.drawPixel (20,62); u8g.drawPixel (40,62); u8g.drawPixel (60,62); u8g.drawPixel (80,62); u8g.drawPixel (100,62); } void draw(void) { u8g_prepare(); DrawMarkers(); // wait for a trigger of a positive going input Input=digitalRead(A0); while (Input != 1){ Input=digitalRead(A0); } // collect the analog data into an array // No loop is about 50% faster! Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; Sample=PINC; // display the collected analog data from array for(int xpos=0; xpos<128; xpos++) { u8g.drawLine (xpos, ((Sample&B00000001)*4)+4, xpos, ((Sample&B00000001)*4)+4); u8g.drawLine (xpos, ((Sample&B00000010)*2)+14, xpos, ((Sample&B00000010)*2)+14); u8g.drawLine (xpos, ((Sample&B00000100)*1)+24, xpos, ((Sample&B00000100)*1)+24); u8g.drawLine (xpos, ((Sample&B00001000)/2)+34, xpos, ((Sample&B00001000)/2)+34); u8g.drawLine (xpos, ((Sample&B00010000)/4)+44, xpos, ((Sample&B00010000)/4)+44); u8g.drawLine (xpos, ((Sample&B00100000)/8)+54, xpos, ((Sample&B00100000)/8)+54); } } void setup(void) { pinMode(A0, INPUT); pinMode(A1, INPUT); pinMode(A2, INPUT); pinMode(A3, INPUT); pinMode(A4, INPUT); pinMode(A5, INPUT); // assign default color value if (u8g.getMode() == U8G_MODE_R3G3B2) u8g.setColorIndex(255); // RGB=white else if (u8g.getMode() == U8G_MODE_GRAY2BIT) u8g.setColorIndex(3); // max intensity else if (u8g.getMode() == U8G_MODE_BW) u8g.setColorIndex(1); // pixel on, black } void loop(void) { // picture loop // u8g.firstPage(); do { draw(); } while(u8g.nextPage()); // rebuild the picture after some delay delay(100); }

Не забудьте скачать библиотеки для работы с Ардуино. А также учитывать, что вывод идёт на ЖК экран. По окончанию написания софта просто подгрузите его на плату с помощью специального переходника под usb.

Может случиться так, что из-за особенностей отображения информации на ЖК дисплее, вам не хватит постоянной памяти устройства. В таком случае имеет смысл докупить флешку и прикрепить её к системе. Благо делается это достаточно просто, а всё, что вам потребуется – специальный переходник под ваш форм-фактор физического накопителя.

Логический анализатор - незаменимый помощник при отладке цифровой схемотехники. Давайте рассмотрим основные приёмы работы с логическим анализатором Saleae Logic Analyzer и его китайскими аналогами.

Для работы нам понадобится:

  • соединительные провода (рекомендую вот такой набор);
  • макетная плата (breadboard).

1 Технические характеристики логического анализатора Saleae logic analyzer

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

В таблице перечислены основные параметры логического анализатора, моей китайской копии анализатора фирмы Saleae .

2 Установка драйвера для логического анализатора Saleae

Для данного логического анализатора - китайской копии - к счастью, подходит драйвер от оригинала. Заходим на официальный сайт , скачиваем программу для своей операционной системы и устанавливаем её. Драйверы будут установлены вместе с программой. Кстати, обзор возможностей программы в виде инструкции на английском языке приложен в конце данной статьи.

Если у вас копия другой фирмы, например, USBee AX Pro, то с большой долей вероятности для него также подойдут драйверы от производителя анализатора-оригинала.

3 Примеры работы с логическим анализатором

Для первого эксперимента возьмём преобразователь USB-UART на микросхеме FTD1232. Подключим анализатор к порту USB. Выводы каналов с 1 по 6 подключим к выводам USB-UART преобразователя. По большому счёту, больше всего нас интересует только две линии - Rx и Tx, можно обойтись только ими. Преобразователь определился в системе как COM-порт. Запустим любую терминалку (вот, например, неплохая программа для работы с COM-портом) и подключимся к порту.


Подключение USB-UART конвертера на микросхеме FTD1232 к логическому анализатору

Запускаем программу Saleae Logic . Если драйверы для анализатора установлены корректно, в заголовке программы будет указано Connected - подключено. Допустим, мы не знаем на каком канале будет сигнал, а на каком нет, поэтому не будем выставлять триггер для начала захвата сигнала. Просто нажмём на стрелки большой зелёной кнопки Start (Старт) и выставим в поле Duration (Длительность), скажем, 10 секунд. Это время, в течение которого логический анализатор будет собирать приходящие по всем 8-ми каналам данные после нажатия кнопки «Старт». Запускаем захват и одновременно отправляем в COM-порт какое-нибудь сообщение. Через 10 секунд анализатор закончит сбор данных и выведет результат в поле просмотра сигналов. В данном случае сигнал будет лишь на одном канале, который присоединён к выводу Tx (передатчик) USB-UART преобразователя.


Для наглядности можно настроить декодер перехваченных данных. Для этого в правом столбце находим поле Analyzers , нажимаем иконку в виде плюса - «Добавить», указываем тип - Async Serial . Появится окно с выбором настроек. В первое поле вводим номер канала, на котором у вас данные. Остальное оставим как есть. После нажатия кнопки Save (Сохранить), над полем соответствующего канала появятся метки голубого цвета с отображением значений байтов, которые были перехвачены. Нажав на шестерёнку в данном дешифраторе, можно задать режим отображения значений - ASCII, HEX, BIN или DEC. Если вы передавали в COM-порт строку, выберите режим ASCII, и увидите тот текст, который был вами передан в порт.


Тут же, в правом столбце программы Saleae Logic, можно добавлять к перехваченным данным закладки, проводить измерения задержек и длительностей, выставлять всевозможные маркеры и даже проводить поиск по данным для декодированных протоколов.

Аналогичным образом подключим логический анализатор к преобразователю USB-RS485. Линии данных всего две, поэтому можно установить триггер срабатывания по фронту любого из каналов: сигнал в протоколе RS-485 дифференциальный и фронты импульсов появляются одновременно на каждом из каналов, но в противофазе.


Нажмём кнопку «Старт» в программе анализатора. С помощью нашей терминалки подключимся к USB-RS485 конвертеру и передадим какие-нибудь данные. По срабатыванию триггера программа начнёт собирать данные, по завершению выведет их на экран.


Программа Saleae Logic позволяет экспортировать сохранённые данные в виде изображений и текстовых данных, сохранять настройки программы, аннотации и декодеры каналов.

Последний пример в данном небольшом обзоре - захваченный кадр данных, переданный по последовательному протоколу SPI. В канале 2 виден сигнал выбора ведомого, в канале 0 - тактовые импульсы, а в канале 1 - собственно данные от ведущего устройства к ведомому.


Выводы

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

Скачать инструкцию по работе с программой для логического анализатора Saleae

  • Скачать инструкцию по работе с программой для логического анализатора Saleae с Depositfiles.com
  • Скачать инструкцию по работе с программой для логического анализатора Saleae c File-upload.com
  • Скачать инструкцию по работе с программой для логического анализатора Saleae c Up-4ever.com
  • Скачать инструкцию по работе с программой для логического анализатора Saleae c Hitfile.com

Покупая всякую китайскую электронику для своих «поделок» часто сталкиваюсь с проблемой плохого описания работы,

Тема сегодняшней статьи — использование дешевого китайского логического анализатора купленного на Алиэкспресс .

Что такое логический анализатор? Это такой прибор… для логического анализа))) Сразу приходит на ум фильм с Робертом Де Ниро

Зачем он нужен? Ну конечно же занимать логическим анализом))). А точнее анализом логических уровней разных микроконтроллеров и периферии к ним. То что принято называть реверс инжинирингом.

Характеристики

  • Совместимость по софту с Saleae Logic 8
  • Число цифровых входов - 8
  • Два индикатора - питания и состояние логических входов
  • Входное сопротивление 100КОм, входная емкость 5пФ
  • Питание через USB
  • Поддерживаемые частоты дискретизации:
  • 24МГц,16МГц, 12МГц, 8МГц, 4МГц, 2МГц, 1МГц, 500КГц, 250КГц, 200КГц, 100КГц, 50КГц, 25КГц;
  • Количество сохраняемых значений одного измерения - 10000

С одной стороны разъем на 10 штырьков и распиновкой на корпусе

С другой Mini USB для питания и подключения к компьютеру

Внутренности

Внутри корпуса плата, на ней микропроцессор с высокоскоростным USB интерфейсом CY7C68013A от компании CYPRESS , EEPROM ATMLH432 и шинный формирователь LVC245A от NXP .

На входе анализатора стоят токоограничивающие резисторы 100 Ом, подтягивающие к земле резисторы 100 КОм и конденсаторы 5 пФ. Все честно, как в описании.

Подключение

Для подключения анализатора в комплекте идут 10 соединительных проводков на штырьковые контакты. Сразу прикупил таких вот клипс-зажимов .

Качество зажимов очень посредственное, но хорошие зажимы обойдутся дороже самого анализатора

Софт

Это, пожалуй, самое интересное в данном анализаторе. К нему подходит родной софт от Saleae Logic .

Доступны версии для OSX, Linux и Windows на 32 и 64 бита.
Saleae Logic 1.2.3 под Windows 7 заработал с пол пинка, софт запустился, железо опозналось, не смотря на надпись версии «Beta».

Интересные плюшки в софте от Saleae Logic

Триггер срабатывания записи логической последовательности на каждый канал

  • На изменения логического уровня в «0»
  • На изменение логического уровня в «1»
  • На положительный импульс заданной длительности
  • На отрицательный импульс заданной длительности

Подсчет статистических показаний по текущему измерению

Декодирования протоколов: Async Serial, I2C, SPI, Hide, 1-Wire, Atmel SWI, BISS C, CAN, DMX-512, HD44780, HDLC, HGMI CEC, I2S/ PCM, JTAC, LIN, MDIO, Manchester, Midi, Modbus, PS/2 Keyboard/Mouse, SMBus, SWD, Simple Parallel, UNI/O, USB LS и FS

Ведение журнала по декодируемому протоколу

Кроме того, данный анализатор можно прошить под софт от USBee

Позанимаемся анализом

Как раз разбирался с подключением ультразвуковых датчиков DYP-ME007Y, на вид абсолютно одинаковыми, но работающими совершенно по разному .

Если один работает точно по даташиту: короткий импульс на «триггер» запускает ультразвуковой импульс и по длительности эхо измеряется расстояние. То второй и третий (с мигающим светодиодом) примерно раз в 100мс без каких либо внешних пинков сам мерит расстояние и посылает его на скорости 9600 в виде четырех байт (включая контрольную сумму). Программа Saleae Logic позволяет включить декодирование сигнала последовательной шины в последовательность байт. Датчики второго типа отлично работают с отключенным выводом «TRIG», хотя может и ждут какой нибудь команды на этом входе, но сие даже волшебный приборчик не покажет.

Далее захотелось посмотреть ШИМ сигнал Aтмеги 168? Включил все шесть каналов поддерживающих PWM на разный уровень и с удивлением обнаружил, что частота двух каналов ШИМ отличается от 4-х других. Задействованы разные таймеры?

А что там на шине данных у моих ?

Волшебный приборчик и программа нормально декодировали последовательность, выдаваемую на светодиоды. Даже цвета светодиодов нарисовались.

С анализом шины I2C тоже никаких проблем. Софт нормально справился с декодированием.Можно видеть пакеты записи в регистры при работе драйвера дисплея TM1637

RF-приемник на 315МГц, подключенный напрямую к анализатору, получил сигнал с радиовыключателей , и выдал манчестреский код. После подбора скорости манчестреский код превращается умной программкой в последовательность байт.

Интересно, а как с точностью измерения временных интервалов? Точного генератора импульсов у меня под рукой не оказалось, но Ардуиновская tone(1000) на 1000Гц

и tone(20000) на 20КГц дают довольно точный результат.

Для проверке высокой частоты на скорую руку собрал генератор на NE555. Удалось выжать из него 8МГц. Анализатор проглотил эту частоту нормально. На 20МГц проверить не удалось, но 8 для такой дешевой железки тоже очень хороший результат.

Небольшой итог

Логический анализатор очень нужная и полезная вещь для тех, кто занимается раскапыванием китайской периферии к микроконтроллерам (Назовем красиво - реверс инжинирингом)
Из достоинств данной железки хочу отметить:

  • Привлекательную цену
  • Совместимость с довольно удобным софтом Saleae Logic
  • Защита на входе в виде шинного формирователя LVC245A
  • Малые габариты

Явных недостатков у этой железки для себя не нашел. Жаль, что я не приобрел логический анализатор раньше — сколько времени бы я сэкономил во многих проектах. Несомненно, кому то возможностей данной железки окажется мало. Есть масса более навороченных моделей, но по цена $100-200 делает эти приборы гораздо менее доступными для радиолюбителей.

Поанализируем что-нибудь еще?

Vassilis Serasidis

Логический анализатор - это инструмент, который позволит увидеть и проанализировать последовательность логических 0 и 1 в цифровом сигнале. К примеру, можно изучить цифровой сигнал с ИК приемника-демодулятора типа TSOP-1736 , выходные и входные сигналы микросхемы , а также шину I2C (линия тактирования и линия данных) во многих электронных устройствах.

В статье мы рассмотрим конструкцию миниатюрного 4-канального логического анализатора с ЖК дисплеем от мобильного телефона Nokia 5110/3110. Основой конструкции является микроконтроллер , помимо него используются еще несколько дискретных компонентов.

Основные характеристики прибора:

  • 4-канальный логический анализатор;
  • возможность исследования сигналов с частотой до 400 кГц;
  • входное напряжение до +5 В;
  • ЖК дисплей с разрешением 84 × 48 точек;
  • питание от 4 аккумуляторов 1.2 В, максимальное напряжение питания 4.8 В;
  • память: от 3.7 мс для высокоскоростных сигналов до 36 с для низкоскоростных сигналов;
  • кнопки управления;
  • простая конструкция.

Принципиальная схема

На Рисунке 1 представлена принципиальная схема прибора. Сразу следует отметить, что прибор питается от 4 аккумуляторов с напряжением 1.2 В каждый.

Внимание!!!

Питание от 4 батареек с напряжением 1.5 В недопустимо, при данной схеме прибора, так как напряжение 6 В может вывести из строя микроконтроллер и ЖК дисплей.

Выключатель S1 предназначен для подачи питания. Подтягивающие резисторы R2-R5 установлены с целью исключения появления ложных данных на цифровых входах прибора из-за влияния электромагнитных полей или при касании пальцами сигнальных щупов. Светодиод LED1 предназначен для индикации наличия сигнала на цифровых входах прибора и, следовательно, начала записи сигналов в память.

В схеме используется ЖК индикатор от мобильного телефона Nokia 3310/5510, он рассчитан на работу при напряжении питания 3.3 В - 5.0 В, однако максимальное напряжение для подсветки дисплея - 3.3 В, поэтому в схеме установленo три последовательно включенных диода (D1-D3) по линии питания подсветки дисплея. Благодаря диодам напряжение снизится до 2.7 В и его вполне будет достаточно для питания подсветки.

Процесс захвата данных и программное обеспечение

Следует отметить, что автором подготовлены две версии прошивки микроконтроллера. Изначально, для версии 1.00 логического анализатора, использовалась интегрированная среда разработки AVR Studio 4.18, но затем автор перекомпилировал исходный код и для AVR Studio 5 - версия 1.01. После перекомпиляции под 5 версию среды разработки и дальнейшего тестирования прибора, было замечено улучшение стабильности захватываемых сигналов.

Запись сигналов ведется во внутренний буфер памяти ОЗУ, который рассчитан на 290 отсчетов. Буфер данных образован 870 байтами (для 1 версии программы микроконтроллера) из которых 2 байта используются для счетчика и 1 байт для информирования о входном канале. В версии 1.01 буфер данных был сокращен до 256×3=768 Байт с целью увеличения скорости захвата данных, т.к. переменная размера буфера является 8-битной, вместо 16-битной, которая использовалась в первой версии ПО.

После подачи питания, микроконтроллер переходит в режим ожидания импульса на любом из 4 входов прибора. По определению входного импульса микроконтроллер начинает подсчет времени до поступления следующего импульса на любом из 4 входов. Длительность выборки хранится в 16-битной переменной «counter». После переполнения этой переменной информация о состоянии 4 входов и значение счетчика сохраняются в буфере и значение его адреса увеличивается на три (2 байта для счетчика и 1 байт - информация о входной линии). Этот процесс повторяется пока микроконтроллер не заполнит весь буфер (870/3=290 выборок или импульсов). Процесс записи сигналов в память микроконтроллера изображен на рисунке 2.

После заполнения буфера, все накопленные данные отображаются на ЖК дисплее в виде осциллограммы. Пользователь может управлять осциллограммой - передвигать влево (кнопка S3) или вправо (кнопка S4), чтобы просмотреть всю сохраненную последовательность импульсов. Если были записаны низкоскоростные сигналы, то пользователь может изменить масштаб в пропорции 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048, 4096 или 8192 нажатием на кнопку S2.

При программировании микроконтроллера необходимо установить Fuse-биты в соответствии с рисунком.

Вид печатной платы и расположение компонентов

Демонстрация работы прибора

Загрузки

Принципиальная схема, рисунок печатной платы, исходный код и файл для прошивки микроконтроллера (v1.0, AVR Studio 4.18) -

Исходный код и файл для прошивки микроконтроллера (v1.01, AVR Studio 5) -

  • Как я понял, ваш дисплей с "резинкой", установлен он на самодельную платку, т.е. токопроводящая резинка касается дорожек которые вы нарезали на платке. Если так, то учтите - это самое слабое место конструкции... Fuse-биты проверяли (считывали)? Правильно установлены? Я не исключаю и проблему в самом дисплее. Я еще исходники гляну, может там что-то можно настроить/изменить относительно дисплея...
  • Vadzz, да, я это понимаю, самое уязвимое место.. Я нашел какой-то мобильный, с шагом контактов как у моего экрана. Как будет время попробую сделать.. Вопрос еще в том, рабочий ли экран, не спалил ли я его контроллер (если это возможно). А пока заброшу эту идею. Очень сложно достать готовый экран этот и он стоит больше чем это устройство нужно.. Я лучше сделаю такое же устройство, только вывод данных на компьютер через usb. (по учебнику http://eldigi.ru/site/comp/18.php). Все равно мастерю за компьютером и всё через usb делаю.. Либо же друг делает диплом на тему миниатюрный осцилограф usb. Схема на единственном элементе AtTiny и кварц. +вывод данных в программу на компьютере в виде временной диаграммы\линии.. Возьму у него.. ПО я сделаю.. Я эту штуковину начал делать потому что она так красиво и пафосно выглядит со стороны;) А особенно работает.. ну ниче, начну работать с китайскими передатчиками придется ее сделать.. Там уже на импульсы нужно смотреть и анализировать.. А так спасибо за помощь)
  • Хлопцы, зацените) Всё таки не удержался.. Переднюю панельку еще думаю дооформлю.
  • Рад что все получилось и заработало, выглядит норм. Только расскажите по-подробнее в чем была проблема (наверное, все же дисплей не работал), для многих будет полезна ваша информация (если не секрет, конечно). Спасибо.
  • Ну проблема была в дисплее. И то я купил не красный, а синий, по этому еще контакты не сошлись по расположению, и немного в названии разнятся. Подключение (на схеме\синий дисплей): Vcc-Vcc GND-GND Rst-Rst SCE-CE D\C-DC DN-Din SKLK-CLK LED-BL Если будет желание- попробую вставить\запустить свой старый дисплей. Посмотрю, может он сгорел.. а то столько мучился с ним.
  • Небольшой тест прибора, пару багов. 1) При перемотке долго мотаем вперед, потом назад и в какой-то момент оно отказывается двигать назад и заклинивает на каком-то значении. Можно прокрутить еще вперед и опять назад и после этого клинит на другом значении.. Вот фото, хотя тут ничего не видно будет http://s017.radikal.ru/i433/1306/57/cf1dfbd2f106.jpg 2) При перематывании смазывается временная диаграмма http://s60.radikal.ru/i169/1306/33/1c23e0d9815c.jpg http://i066.radikal.ru/1306/9f/c894839ca1fd.jpg 3) При изменении зума перемотка сбрасывается в 0-ю позицию(но не всегда). Нужно пофиксить чтоле.. Думаю можно было бы добавить пару вкусняшек в проект: Сенсорные кнопки (реализуются элементарно, всего три МОМ-ных резистора) Вольтметр (GND постоянно подключен, по этому неплохо было бы на АЦПшнике сделать чтоле ибо каждый раз мультиметр подключать не то, а этот помог бы. Измеряет в пределах до 5в, как раз для цифровухи). Осцилограф (не знаю как, но было бы очень неплохо. Главная проблема думаю с отображением будет). Подключение через USB к ПК. Отображение рвеменной диаграммы в программе- святое. Если делать осцилограф, то в программе будет проще отображать всё.. Выглядеть будет примерно так (моя програма) http://s48.radikal.ru/i119/1306/eb/9c25ff0d3d7b.png Так же можно программой что-то изменять в настройках прибора..
  • К стати, в протеусе данная штуковина неплохо симулируется..
  • Собрал девайс. Включается, показывает. Если без резисторов 33к (и без источников сигнала), то при включении всякие гребенки увидеть можно. С резисторами и источником (TSOP ик и spi-девайс) - все линии ровненькие. Никакой реакции совершенно. Куда рыть-то?
  • Инпуты замыкаются на + а не на землю чтоб показывало. Мне пришлось инвертировать выход TSOP.
  • Индикатор от телефона тоже заработал. У меня сначала не показывал ничего, поставил резисторные делители на входы дисплея от мк и все заработало. 1ком от мк до дисплея и 3,3 ком от дисплея на землю
  • инвертирование не помогает
  • Прошивка с исправленными ошибками и с добавлениями(UART, Частотомер, Редактор пропусков перед измерением, а также ещё к нему программу для компьютера. Analizator.exe Описание: Analizator_PC V2.1 Analizator.exe 4_канальный логический анализатор.DSN Описание: Analizator_proteus http://www.fayloobmennik.net/4274643 Analizator.hex Описание: Analizator_Atmega8 http://www.fayloobmennik.net/4291611 4_канальный логический анализатор Описание: Analizator_shema http://www.fayloobmennik.net/4285824 2й вариант http://radikal.ru/fp/ИСХОДНИКИ ДЛЯ АНАЛИЗАТОРА КОМУ ИНТЕРЕСНО. AnalizatorKSA.zip Не сомневайтесь всё работает так как надо! У вас теперь появится возможность проверить это в симуляторе, а также покопаться в исходнике.Избавляю вас от рутинной работы. Не судите за мои там комментарии, у каждого они свои. К тому же это черновики, а не коммерческий продукт. Моя поставленная цель была достигнута, поэтому черновики так и остались черновиками. Вы можете делать с ними всё , даже вырвать у них сердце. А цель была одна - сделать его удобным, более точным, надёжным. Всё, что я проделал вы можете прочитать в моих 2х программах для РС в разделе "Справка" Для анализа и сравнения полученного результата я выкладываю исходный текст основной измерительной программы Vasilisa Serasidisa. Посмотрите, и сравните сколько тактов тратится на измерение у меня, и у него. И убедитесь, что лучшие программисты это р у с с к и е!!! Добавлю: С тех пор как сконструировал 2 версии анализаторов решил множество проблем связанных с цифровым обменом и по шине CAN и I2C пультов и пр. Вариант на ATmega48 даже предпочтительней со скоростными протоколами. Например, CAN в 140 Кбит анализировал просто на ура! в отличии от не без известного анализатора Digan. Да и сам он величиной с флешку. Всем удачи! Izmerenie.txt ВЫКЛАДЫВАЮ НОВУЮ ВЕРСИЮ (3йвариант) БОЛЕЕ МОЩНОГО АНАЛИЗАТОРА, А ТАКЖЕ ПРЕДЫДУЩУЮ ВЕРСИЮ С ДОБАВЛЕНИЯМИ И ФАЙЛОМ ПРОТЕУСА ССЫЛКА НА АРХИВ http://www.fayloobmennik.net/5569369
  • 1. Кто повторил оригинальный вариант - от Seradis, нет ли серьезных багов, делающих вообще неприменимость девайса - типа всегда пропускается первый байт и т.п.? Выше пишут об "отображение эпюр", но хотелось бы, что они именно были достоверные:). 2. Сергей7 не выкладывает исходник, что не дает оценить его функционал в полной мере. Если изготовить вначале оригинал, то потребуются ли изменения в апаратке для дальнейшего развития девайса по доработке Сергея7?
  • Отправлял вам сообщение и никакой реакции. Дошло ли?
  • наверное, нет. ... :(Спасибо за исходники! счас посмотрю.....
  • Рад помочь!:D
  • Прошивки с добавлениями(UART, Частотомер, Редактор пропусков перед измерением в AnalizatorKSA.zip нет
  • может печатка в lay есть у кого?
  • Посмотрите новый вариант, я выложил. И предыдущий доработанный тоже (с прошивкой, файлом протеуса и дороб.программой).
  • в чём писали и можно полную схему я так и не понял по чём собирать и сколько ины проц пишет в себя для передачи по уарт

Если заметили ошибку, выделите фрагмент текста и нажмите Ctrl+Enter
ПОДЕЛИТЬСЯ: