Логический анализатор с подключением к планшету. Вид печатной платы и расположение компонентов. Процесс захвата данных и программное обеспечение

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

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

Недавно разбирался с двумя ультразвуковыми датчиками DYP-ME007Y, . И, когда в очередной раз захотелось посмотреть, какие сигналы бегают от датчика к микроконтроллеру и обратно, вспомнил о таком чудном приборе. И тут подвернулся ОН по цене менее $6.




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

Самое вкусное в данном анализаторе это то, что подходит .
Доступны версии для 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

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

Позанимаемся логическим анализом.

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

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

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



Далее посмотрел работу шины I2C. И опять софт нормально справился с декодированием.Можно видеть пакеты записи в регистры при работе

Подключил ленту с - анализатор нормально проглотил 800КГц и успешно расшифровал протокол DFX-512

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

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


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

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

Логический анализатор очень нужная и полезная вещь для тех, кто занимается раскапыванием китайской периферии к микроконтроллерам (Назовем красиво - реверс инжинирингом)
Из достоинств данной железки хочу отметить:
  • Привлекательную цену
  • Совместимость с довольно удобным софтом Saleae Logic
  • Защита на входе в виде шинного формирователя LVC245A
  • Малые габариты
Явных недостатков у этой железки для себя не нашел. Жаль, что я не приобрел логический анализатор раньше -сколько времени бы я сэкономил во многих проектах.

Сейчас стоит задача анализа логических уровней на 12В, давно хотел разобраться с датчиками ABS своего авто. Думаю, что резисторный делитель и 5-ти вольтовый стабилитрон на каждом входе будет в самый раз.

  • Электроника для начинающих
  • Логические анализаторы

    Часто при разработке или отладке радиоэлектронных устройств состоящих из нескольких компонентов(микроконтроллер, АЦП, I2C память, итд) хочется посмотреть на общение этих компонентов между собой. Чтобы наконец понять почему всё написано «правильно», но ничего не работает. В целом для этого можно использовать цифровой осциллограф, но осциллографы с 4 каналами стоят достаточно дорого, да и не очень это удобно. Гораздо приятней такая задача решается при помощи логического анализатора. Логический анализатор по сути похож на осциллограф, но если основная задача осциллографа отображение изменение аналогового сигнала с чем он замечательно справляется, то цель логического анализатора запись цифрового(но не всегда только цифрового) сигнала с последующим его анализом в удобных программах.

    Ниже я опишу опыт работы с логическими анализаторами Logic Pro 8 от Saleae ценой около 480$ и DSLogic Pro от DreamSourceLab(скорей всего копия) ценой $99 мне достался за 73$.
    Кому стало интересно добро пожаловать под кат.

    Технические характеристики

    Логические анализаторы отличаются друг от друга в основном: количеством и типом каналов, наличием буфера, частотой сэмплирования.
    Небольшая сравнительная таблица с характеристиками:
    Logic Pro 8 DSLogic Pro Описание
    Число цифровых каналов 8 16 Чем больше тем лучше, но за год использования больше 4 пока было не особо нужно
    Число аналоговых каналов 8 0 Для аналога предпочтительней всё же осциллограф, но иногда бывает удобно увидеть, что творится не только в цифре на канале, но и в аналоге.
    Интерфейс USB 2.0 / USB 3.0 USB 2.0 USB 3.0 предпочтительней если он у вас есть конечно. Хотя момент спорный, ниже опишу почему.
    Частота сэмплирования цифровых каналов 500 MS/s - USB 3.0
    100 MS/s - USB 2.0
    400 MS/s - для 4 каналов
    200 MS/s - для 8 каналов
    100 MS/s - для 16 каналов
    Чем больше тем лучше, но в случае есть один нюанс, но об этом ниже.
    Частота сэмплирования аналоговых каналов 50 MS/s - USB 3.0
    10 MS/s - USB 2.0
    - Чем больше тем лучше.
    Диапазон напряжений цифра/аналог: 1.2V - 5.5V / -10V - +10V 0V - 5V / - Тут у Logic Pro 8 на выбор три пороговых напряжения 1.2V/1.8V/3.3V.
    У DSLogic Pro выбор от 0V до 5V с шагом 0.1V также у него значится защита от перенапряжение -30V - +30V.
    Внутреннее сопротивление каналов 1,8 MOm 250 кOm Чем больше тем лучше, меньше оказывается наводок на исследуемую схему.
    Буфер - 256Mbits Чем больше тем лучше, от этого параметра зависит сколько сэмплов может захватить анализатор не передавая их в компьютер. Вещь крайне полезная особенно для UBS 2.0
    Глубина выборки в теории не ограничена 16MS на канал Чем больше тем лучше, Logic Pro 8 использует память PC глубина выборки может быть очень большой, однако буфера DSLogic Pro тоже хватает.

    В общем по многим характеристикам Logic Pro 8 имеет перевес, особенно в плане аналоговой части. Однако отсутствие буфера сказывается отрицательно, во-первых скорость падает в два раза при использовании 4 каналов, и в 4 раза при использовании 6 и больше каналов. Но это не все, так как скорость плотно завязана на USB шину то казусы случаются если эта шина загружена, иногда достаточно подключить к одному USB хабу UART кабель, чтобы программа ругнулась и сказала, что скорости USB не хватает и скорость захвата будет снижена. Не то, чтобы это бывает часто и сильно мешает, но помнить про такое стоит.
    Из особенностей DSLogic Pro хочется отметить ещё наличие внешней линии клока, и сигналов внешнего входа триггера, и выхода триггера.

    Внешний вид и комплектация

    Комплект Logic Pro 8:

    • сам анализатор
    • два коннектора с разноцветными проводами, по 4 канала на коннектор
    • 16 клипс для соединения с ногами микросхем, проводами, итд
    • USB 3.0 кабель USB-A to MictoUSB 3.0

    Комплект DSLogic Pro:

    • сам анализатор
    • широкий коннектор на 16 каналов плюс дополнительные сигналы,
    • 16 разноцветных клипс для соединения с ногами микросхем, проводами, итд
    • USB 2.0 кабель USB-A to MictoUSB

    Сравнение

    Если сравнивать комплектацию то она приблизительно одинакова. Однако на мой взгляд коннектор с проводами для Logic Pro 8 гораздо удобнее и приятней в обращении, провода более мягкие и гибкие. Клипсы у Logic Pro 8 в несколько раз удобнее. Во-первых имеют два штыря для соединения с проводом анализатора, что удобно, и во-вторых штыри для соединения находятся сбоку, что упрощает зацепку клипс с уже подключённым к ним проводом. У DSLogic Pro штырь находится сверху, что усложняет его подключение в разы, хотя по хваткости клипсы не отличаются, но общее качество всё же хромает.

    Программное обеспечение

    Какой бы не был хороший логический анализатор, без хорошего софта удобства работы с ним не будет. Хороший софт должен быстро отображать захваченные данные, позволять смотреть их характеристики такие как частоту, скважность. И очень хорошо, что бы он умел расшифровывать общеизвестные протоколы. Это невообразимо удобно указать где находятся ноги I2C и увидеть, что же именно происходило на шине с точки зрения I2C протокола, а не сидеть и чесать затылок вглядываясь и пытаясь понять так ли оно всё и какой здесь записался адрес. Каждый анализатор комплектуется своей программой:

    Saleae Logic

    Анализаторы Saleae комплектуются Saleae Logic


    Программа мультиплатформенная, поддерживаются все версии Windows начиная с XP(год назад были проблемы с Win 7 и выше, в новой версии Win 7 работает без нареканий, выше не тестировал), Mac OS X 10.7 Lion+ устанавливалась и работала без нареканий, Ubuntu 12.04.2+ у меня так и не заработала(тестировал год назад на старой версии программы сейчас может работает), но я особо и не пытался.

    Поддерживает большой список протоколов для анализа I2C/SPI/UART/CAN, работают без нареканий. Возможен захват как по ручному старту так и по триггеру на одном из каналов. Из недостатков на длинных выборках начинает достаточно сильно тормозить.

    Из фич программы стоит отметить, возможность управление по telnet-подобному протоколу, наличие SDK для написания своих декодеров протоколов. Протоколы пишутся на C++, что усложняет процесс их написания.

    DSView

    DSLogic Pro комплектуется программой DSView:

    Тоже мультиплатформенная программа поддержка Windows начиная с XP, Mac OS X 10.11.4, Linux(прога идёт в исходниках). По возможностям программа превосходит Saleae Logic, имеются более продвинутые триггеры с поддержкой сразу нескольких каналов, список протоколов достаточно обширен. Но тут разработчики пошли дальше и на протокол можно ещё навесить возможность расшифровки работы с конкретной реализацией этого протокола. Например Можно выбрать протокол I2C и реализацию 24СXX и после этого сразу прочитать, что именно происходило на шине с точки зрения данной микросхемы. Как протоколы так и их реализации пишутся при на Python, что по идее должно упростить написание и отладку. Тормозов в работе замечено не было.

    Также стоит отметить, что проект является частично OpenSource и на выложены исходники софта, и HDL части. А на приведена схематика. Поэтому возможно скоро будет куча клонов данного устройства(возможно у меня тоже клон).

    Простое тестирование

    Для простой проверки анализаторов была использована дев.плата DE0-Nano-SoC на которой были сгенерированы меандры от 200Mhz каждый следующий получен делением на 2 предыдущего (200/100/50) попробую захватить их имеющимися анализаторами.

    На DSLogic Pro удалось захватить 200Mhz/100Mhz/50Mhz ниже и так понятно, что всё идёт отлично. Сказать, что 200 и 100 были захвачены идеально нельзя иногда есть небольшое уплывание частоты и скважности, но в целом нормально, на 50 уже всё идеально.

    DSLogic Pro


    Seleae нормально не смог снять 200Mhz и 100Mhz, но 50 Mhz уже идёт идеально.

    Logic Pro 8


    И всё-таки к таким замерам я бы серьёзно не относился, 200Mhz замерять просто «накидными» проводами наверное перебор, но попробовать стоило.

    Для эксперимента попробуем захватить передачу данных по I2C(передачи разные поэтому данные не сходятся).

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

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

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

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

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

    • Совместимость по софту с 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 делает эти приборы гораздо менее доступными для радиолюбителей.

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

    Купил анализатор логических сигналов. Думаю пригодится. Хорошая вещь, может помочь при исследовании сигналов и поиске неисправностей в логических схемах. Устройство является клоном Saleae logic, оригинал которого стоит не одну сотню долларов.

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

    • Каналов: 8
    • Частота выборки: до 24 млн/с
    • Входное сопротивление: 100 кОм

    Устройство представляет из себя небольшую коробочку, размером примерно со спичечный коробок. С одной стороны разъём miniUSB для подключения к компьютеру. С другой — гребёнка из 10 контактов (8 каналов + две земли). Посмотрим, что внутри.


    Микроконтроллер Cypress CY7C68013A, EEPROM Atmel 24C028N и буфер 74HC245.


    С другой стороны:


    Для работы с устройством качаем программу Logic .

    В центре находятся 8 полос-каналов, на которых будет выводиться график сигнала. Слева находится кнопка Start и кнопки настроек каналов. Справа — окна измерений и анализа. Рассмотрим настройки:


    Здесь можно выбрать частоту выборки (24 млн/с) и длительность:


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

    Для одного из каналов можно настроить триггер: по фронту сигнала, по спаду, по ширине высокого или низкого импульса. Тогда при нажатии кнопки Start отсчёт времени записи начнётся только после срабатывания триггера.


    Теперь для интереса рассмотрим различные сигналы с ардуинки.
    Поморгаем светодиодом с паузой в 100 мс. Такой код:

    1 2 3 4 5 6 void loop() { digitalWrite(13 , HIGH) ; delay(100 ) ; digitalWrite(13 , LOW) ; delay(100 ) ; }

    void loop() { digitalWrite(13, HIGH); delay(100); digitalWrite(13, LOW); delay(100); }

    Сигнал:


    Видим, что период получился 0.2 с, и частота 5 Гц. Всё верно.
    Теперь уменьшим задержки до 1 мс:

    1 2 3 4 5 6 void loop() { digitalWrite(13 , HIGH) ; delay(1 ) ; digitalWrite(13 , LOW) ; delay(1 ) ; }

    void loop() { digitalWrite(13, HIGH); delay(1); digitalWrite(13, LOW); delay(1); }

    Увеличим:

    Пока всё как мы и ожидали. Период чуть больше 2 мс, частота около 500 Гц.
    Теперь совсем уберём задержку:

    1 2 3 4 void loop() { digitalWrite(13 , HIGH) ; digitalWrite(13 , LOW) ; }

    void loop() { digitalWrite(13, HIGH); digitalWrite(13, LOW); }

    1 2 3 4 void loop() { PORTB = B11111111; PORTB = B00000000; }

    void loop() { PORTB = B11111111; PORTB = B00000000; }


    Ого, частота возросла больше, чем в 10 раз и теперь составляет примерно 1 МГц!
    Но что с шириной импульсов? Почему ширина высокого уровня значительно короче, чем низкого? Ведь запись в регистр должна производиться с одинаковой скоростью независимо от содержимого. Есть что-то ещё, что выполняется после функции loop()?
    Попробуем избавиться от стандартного перехода по функции loop и вставим бесконечный цикл:

    1 2 3 4 5 6 7 void loop() { while (1 ) { PORTB = B11111111; PORTB = B00000000; } }

    void loop() { while (1) { PORTB = B11111111; PORTB = B00000000; } }

    Уже лучше. И частота возросла до 4 МГц! Часть тактов теряется на прохождение сравнения в цикле (1 — истина?). Ну и теперь попробуем чередовать несколько одинаковых команд друг за другом:

    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 void loop() { while (1 ) { PORTB = B11111111; PORTB = B00000000; PORTB = B11111111; PORTB = B00000000; PORTB = B11111111; PORTB = B00000000; PORTB = B11111111; PORTB = B00000000; PORTB = B11111111; PORTB = B00000000; PORTB = B11111111; PORTB = B00000000; PORTB = B11111111; PORTB = B00000000; PORTB = B11111111; PORTB = B00000000; PORTB = B11111111; PORTB = B00000000; PORTB = B11111111; PORTB = B00000000; } }

    void loop() { while (1) { PORTB = B11111111; PORTB = B00000000; PORTB = B11111111; PORTB = B00000000; PORTB = B11111111; PORTB = B00000000; PORTB = B11111111; PORTB = B00000000; PORTB = B11111111; PORTB = B00000000; PORTB = B11111111; PORTB = B00000000; PORTB = B11111111; PORTB = B00000000; PORTB = B11111111; PORTB = B00000000; PORTB = B11111111; PORTB = B00000000; PORTB = B11111111; PORTB = B00000000; } }

    Вот этой аномалии я немного не понял. Частота возросла до 8 МГц! То есть по одной операции на такт. Но при этом почему-то уменьшилась в два раза (с 83 нс до 41 нс) ширина положительного импульса. Что на это повлияло я объяснить не готов. Надо пробовать ковырять HEX-файл в дизассемблере.
    Работа с регистрами напрямую очень необходима при работе с устройствами, которые критичны к синхронности импульсов на разных выводах. Посмотрим для примера, как различается импульс на двух контактах. Когда мы ставим друг за другом две команды digitalWrite для разных контактов, то мы считаем, что сигнал появится одновременно и там и там. Но конечно же это не так:

    1 2 3 4 5 6 7 8 void loop() { while (1 ) { digitalWrite(12 , HIGH) ; digitalWrite(11 , HIGH) ; digitalWrite(12 , LOW) ; digitalWrite(11 , LOW) ; } }

    void loop() { while (1) { digitalWrite(12, HIGH); digitalWrite(11, HIGH); digitalWrite(12, LOW); digitalWrite(11, LOW); } }

    Довольно часто в домашних электронных поделках возникает необходимость посмотреть тот или иной сигнал, причем достаточно его цифрового представления - что передает МК по I2C, правильно ли настроен ШИМ и т.п. Если на работе есть хороший осциллограф, то покупать его для дома - слишком дорогое удовольствие, особенно, когда необходимость возникает лишь от случая к случаю.
    В последнее время появились недорогие (в пределах $50) логические анализаторы, однако меня от их покупки всегда останавливало одна мысль: штука то предельно простая, почему бы не сделать её своими руками из подручных материалов?
    В данной статье я расскажу, как сделать простой логический анализатор с минимальными финансовыми затратами - все что нужно это отладочная плата Stm32F4Discovery .

    Логический анализатор (далее ЛА) – устройство предназначенное, для записи, просмотра и анализа сигналов в цифровых схемах. Подобно осциллографу, ЛА подключается одним или несколькими щупами к анализируемой схеме, но в отличие от осциллографа фиксирует только два состояния сигнала «0» и «1». Важной функцией ЛА является способность автоматически расшифровывать записанные сигналы, например, разобрать обмен данными по шине I2C или SPI. Также ЛА отличаются бОльшим, по сравнению с осциллографами, количеством анализируемых линий: от 8 в простых анализаторах до сотен в промышленных образцах.
    Описываемый здесь проект - LogicDiscovery - это SUMP -совместимый логический анализатор, выполненный в формате USB-приставки к ПК. Он обладает довольно скромными характеристиками: 20MHz, 16 каналов, 24кБ памяти. Однако, этого достаточно для весьма большого круга задач: анализ линий UART, I2C, SPI (в пределах нескольких мегагерц), параллельных шин, измерение временных характеристик сигналов и т.п.

    Приступим

    Итак, все, что нам понадобится это:
    • Отладочная плата Stm32F4Discovery . От 500 рублей в московской рознице, а может она уже лежит в ваших закромах? Подойдет и любая другая плата на STM32F4 или STM32F2, но тогда придется подправить исходники.
    • Несколько проводов, для подключения к анализируемой схеме.
    • Прошивка, готовая к употреблению лежит на Google.Code . Там же находятся исходники.
    • Кроме того нужен клиент для ПК, рекомендую OLS .
    Клиент написан на Java, поэтому полученное решение не зависит от ОС. Теоретически вы можете использовать любой SUMP-совместимый клиент, однако ниже я буду описывать работу именно с этой программой.
    Stm32F4Discovery питается от порта mini-USB, через который она и прошивается. Для использования функций ЛА плата подключается к ПК через порт micro-USB. Чтобы запитать плату от этого же порта соединяем перемычкой пины PA9 и 5V . PA9 подключен напрямую к Vbus порта micro-USB, а 5V это вход стабилизатора формирующего питание для платы. Для проверки работы соедините порты PA2 и PD0 . На PA2 формируется тестовый сигнал, а PD0 это первый вход ЛА.

    Плата опознается ПК как COM-порт, для Linux драйвера стандартные и должны уже быть в ядре, для Win драйвера скачиваются с сайта ST. После того как плата опозналась можно запускать клиент и приступать к работе.
    Но сначала ложка дёгтя.

    Ограничения

    В проекте используется открытый протокол SUMP . Данный протокол изначально разрабатывался для ЛА на базе ПЛИС, и поскольку в части записи входных сигналов и анализа потока данных микроконтроллеры по-прежнему им уступают, нам будут доступны не все функции реализованные в клиенте:
    • Максимальная частота записи – 20МГц, в оригинале до 200МГц
    • RLE-сжатие и фильтрация шумов не поддерживаются.
    • Нельзя выбрать произвольные группы каналов, только первую (8 каналов), либо первую + вторую (16 каналов).
    • Триггеры работают не по значению, а по фронту (впрочем, на мой взгляд, это уже достоинство).
    • Нет поддержки расширенных (Complex) триггеров.
    Эти ограничения следует иметь ввиду при настройке клиента. Тот ничего не знает об этих ограничениях и позволит выбрать любые настройки. Полученный результат в этом случае будет некорректным.

    Пользуемся

    Запускаем клиент через файл run.bat или run.sh, в зависимости от используемой ОС. О функциях клиента можно почитать на его страничке, здесь я опишу процесс получения первых сэмплов и те настройки, которые попадают под ограничения.

    В меню «Capture» , выбирая пункт «Begin capture» , открываем окно настроек записи. На первой странице в поле ««Analyzer port» выбираем порт, на котором сидит наш ЛА, больше ничего менять не нужно. Кнопкой ««Show device metadata» можно проверить наличие связи:

    На второй странице указываем параметры захвата. Первые два пункта не трогаем,
    «Sampling rate» не выше 20МГц (если указать больше – плата все равно использует 20МГц, но клиент будет думать, что используется указанное значение, в общем, ерунда получится).
    «Channel groups» : 0 – используем одну группу каналов, это линии PD0-PD7, либо 0 и 1 – используем две группы каналов - линии PD0-PD15.
    «Recording size» : для одной группы каналов – любое значение, для двух групп – не более 12kB (клиент предупредит, если в данном поле выбрано неверное значение).
    Чекбоксы на данной странице не трогаем, они не поддерживаются:

    Страница «Triggers» - самое интересное. Первый флажок ставим, чтобы просто включить триггеры.
    «Before/After ratio» позволяет указать, в процентном соотношении, сколько данных сохранить до срабатывания буфера. После нажатия «Capture» ЛА сразу начинает запись данных, складывая их в циклический буфер, а по срабатыванию триггера отсчитывает указанный в поле After процент времени и отправляет данные на ПК.
    «Type» - только «Simple», «Complex» - не поддерживается.
    «Mode» - только «Parallel».
    «Mask» - это те линии, на которых триггер будет ожидать перепад сигнала, поставте флаг в нулевой позиции для срабатывания по линии PD0
    «Value» - фронт сигнала, по которому будет происходить срабатывание триггера. Флажок установлен – передний фронт. Флажок снят – задний:

    Для проверки работы соедините порты PD0 и PA2 (на данном порту выводится тестовый сигнал UART) перемычкой.

    Вот и все, нажимаем «Capture» и смотрим на полученный сигнал (Ctrl+F - обзорный масштаб):

    Если ничего не происходит, значит, вы выставили срабатывание триггера на неправильные линии, или сигнала вовсе нет - проверьте настройки и подключение платы. Триггер можно запустить вручную, нажатием User button (синяя кнопка).

    Техника безопасности

    Помните: вы подключаетесь напрямую к портам микроконтроллера! Никакой защиты, кроме встроенных в МК диодов на плате нет. Поэтому сначала удостоверьтесь что, изучаемый сигнал имеет максимальное напряжение 3.3В, в крайнем случае 5В, но тогда желательно добавить между источником сигнала и ЛА защитный резистор.

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



    Есть вопросы?

    Сообщить об опечатке

    Текст, который будет отправлен нашим редакторам: