Логический анализатор на 16 каналов

Нужна ли кому нибудь эта статья или ну её?

  • Да

    Голосов: 12 80.0%
  • Нет

    Голосов: 1 6.7%
  • Админы, разрешите закончить.

    Голосов: 2 13.3%

  • Всего проголосовало
    15

Эдуард Анисимов

★★★★★★✩
23 Сен 2019
2,282
945
58
Марий-Эл
Как меня зовут все знают.
Хочу представить надстройку для логического анализатора на 16 каналов. А не сам логический анализатор.

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

1643234603232.png
Это плата микроконтроллера CY7C68013А. На АЛИ её довольно просто найти. В приципе, можно купить и сразу пользоваться. Хоть он на 3.3 вольта, входы у него 5 вольт выдержат. Но я решил подстраховаться и сделал к нему надстройку.

1643234647680.png
Краткое описание схемы:
M1 – Это сам модуль.

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

Диоды VD1 – VD16 защищают входы микросхем от переполюсовки.

R3 – R18 на всякий пожарный ограничивают входной ток. На случай подачи на вход более 5 вольт.

Разъёмы XP1, XP2 – IDC-10. Очень удобны для щупов на шлейфах.

Парные входы перекрещены. Что добавляет некоторые неудобства в пользовании, зато позволило развести платы под ЛУТ.

Пара фоток готового устройства:
1643234672818.png
1643234844053.png

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

Я немного изменил схему и появился второй вариант платы. На нём подтяжку к земле или VCC можно сделать DIP переключателем. Я не нашёл DIP переключатели с перекидным контактом, поэтому использовал на подтяжку к земле и питанию по отдельной линейке выключателей. Одним рядом можно подтянуть входы к питанию. Другим к земле. Недостаток - можно включить одновременно обе подтяжки. Тогда, в некоторых случаях, показания будут неверны. Поэтому за этим придётся внимательно следить.

1643234694561.png
Недостаток схемы в том, что сделав её с помощью ЛУТ некоторые детали запаять не возможно, так как паять придётся с двух сторон, а под DIP переключателями особо не попаяешь. Есть три выхода:

- Заказать нормальную плату на JLCPCB;

- Те детали, которые паяются с обоих сторон, не ставить к плиате вплотную, тогда можно пропаять с обоих сторон.

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

Так как питание +5в не выведено на разъём, необходимо контакт на плате TP1 перекинуть проводом на ножку 3 у AMS1117. Контактная площадка находится как раз напротив стабилизатора.
Данная плата ещё только идёт с Китая. Через пару недель приедет.
Но 3D модель выглядит так:
1643234705576.png


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

Для работы с данным устройством есть две программы. Одна убитая на голову, потому что под неё нужно много лишних телодвижений и она 8ми канальная. Есть более или менее понятная и устанавливается очень просто. Нам нужно только скачать последние версии необходимых драйверов и программ.
Эта программа имеет интересную особенность. С её помощью можно декодировать кучу протоколов.

Из неприятностей.

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

Некоторые комбинации частоты дискретизации и длины записываемого фрагмента приводят к зависанию программы. Поэтому приходится экспериментальным путём проверять, какие комбинации недопустимы. Однако это не означает, что данная комбинация не подходит. Бывает после первого раза не работает, потом начинает работать исправно. Но они её доводят до ума. И с каждой новой версией она становится лучше.

Ну и на закуску образец сигнала:

1643234733043.png
 
Изменено:
  • Лойс +1
Реакции: bort707 и edkotinsky

Эдуард Анисимов

★★★★★★✩
23 Сен 2019
2,282
945
58
Марий-Эл
Инсталляция драйверов и программы описана в прикреплённом файле.
Так же архив содержит необходимые файлы для первой платы под ЛУТ, для второй для заказа в Китае. Можно попытаться тоже сделать ЛУТ.
Первая плата разработана в PCAD.
Вторая в Altium Designer
 

Вложения

Изменено:

bort707

★★★★★★✩
21 Сен 2020
2,900
863
Схему не смог разместить. Ограничение по файлам стоит.
ну вы сами виноваты. очень много лишних картинок.
Стоило сосредоточится на работе с конкретной платой, а не пытаться писать учебник "Осваиваем ПК с нуля"
Как работать с утилитой Zadig - описано в десятках мест в инете, как ставить драйвера на винду - в сотнях...Зачем это повторять? - дайте ссылку да и все.
Тут все-таки народ в основном продвинутый, как поставить драйвера - разберутся сами. Тем более что чайник и не купит эту плату вместо логанализатора, чайник возьмет готовые Салеае за 600 рублей

Думаю, вполне достаточно так
1. Картинка платы, вводная часть, ссылки на ПО и драйвера
2. Устанавливаем драйвера из папки (максимум одна картинка)
3. Применяем к драйверам Zadig - тоже одна картинка, максимум две
4.Запускаем Pulseview - одна-две картинки c обведенными кружочком настройками и органами управления - можно все сразу на одной картинке и пометить цифрами

Итого на все, что вы описали - максимум 5-6 картинок вместо ваших 19-ти.
Кстати, оно так будет четче и понятнее.
 

kDn

★★★★★✩✩
18 Ноя 2019
1,103
437
24МГц, 8 каналов... На али таких вагон и тележка занедорого. А вот с более широкой полосой - это уже дороже, чем шире, тем дороже. Они как раз и интересны, поскольку позволяют смотреть не только лишь медленные интерфейсы. Но даже они как бы широкую полосу имеют при ограниченном числе каналов, а чем их больше - тем полоса уже. Тут же про это вообще нифига не сказано, кроме как:
Некоторые комбинации частоты дискретизации и длины записываемого фрагмента приводят к зависанию программы. Поэтому приходится экспериментальным путём проверять, какие комбинации недопустимы. Однако это не означает, что данная комбинация не подходит. Бывает после первого раза не работает, потом начинает работать исправно. Но они её доводят до ума. И с каждой новой версией она становится лучше.​
ЛА здорового человека выглядеть должен примерно так: https://mysku.me/blog/aliexpress/39911.html , https://aliexpress.ru/item/32780046572.html с этим хоть как-то работать можно :), а показанный - только поиграться чуток :)
 

kDn

★★★★★✩✩
18 Ноя 2019
1,103
437
@bort707, https://freedelivery.com.ua/instrum...lizator-otl-plata-cy7c68013a-ez-usb-3138.html
C++:
модель: CY7C68013A MINI BOARD;
микроконтроллер: CY7C68013A;
количество каналов: 8;
частота дискретизации: до 24 МГц;
Отладочная плата на микроконтроллере CY7C68013A-56 семейства EZ-USB FX2LP фирмы Cypress, способная стать 8-канальным (по некоторым источникам - 16 канальным, но существуют проблемы с ПО) логическим анализатором, клоном Saleae Logic. Т.е. в теории оно 16 каналов вытянет, но вот только насколько хорошо и с какой частотой... я хз. По идее там микросхема может до 48Мгц... опять же неизвестно насколько стабильно.

Если кому интересно, может взять на опыты, т.к. девборда дешевая, выкинуть деньги если чего не жалко. Кому надо нормальное - лучше сразу брать по ссылке в предыдущем сообщении.
 

Эдуард Анисимов

★★★★★★✩
23 Сен 2019
2,282
945
58
Марий-Эл
@kDn, Так то я про неё и рассказываю. Моя только надстройка.
ЛА здорового человека выглядеть должен примерно так
Вещь хорошая. НО как им проверить дисплей, который подключается к МК по 23 проводам? А по 48?

Я этим логическим анализатором уже 2 года пользуюсь. Только сейчас выложил статью. По просьбе друзей. Т.К. этой платой уже всех снабдил.
 

bort707

★★★★★★✩
21 Сен 2020
2,900
863
как им проверить дисплей, который подключается к МК по 23 проводам? А по 48?
по такой логике ваша плата тоже не подойдет, потому что у нее нет 23х или 48ми входов.
Реально же на интерфейсе обычно 4-6 управляющих сигналов, остальное данные, смотреть которые логиканилизатором совсем не обязательно, во всяком случае все 16 или 24 линии.
Работаю сейчас с интерфейсом hub75 - 16 проводов, вполне обхожусь 8миканальным ЛА.
Но ваша плата интересная, спору нет. В статье не хватает пояснения как выбирать частоту сканирования и число каналов. Лучше б это описали вместо того чтлб разжевывать про драйвера, и так известное любому школьнику :)
 

Эдуард Анисимов

★★★★★★✩
23 Сен 2019
2,282
945
58
Марий-Эл
@bort707, Я делаю таким образом.
Подключаю шину данных на 16 каналов. Проверяю правильно ли они выводятся, перебирая каждый пин.
После этого переключаю старшие 8 бит на сигналы управления и смотрю правильность их последовательности и тайминги.
В статье не хватает пояснения как выбирать частоту сканирования и число каналов
Там это интуитивно понятно. Да и на сайте разработчика описание есть.
 
  • Красота! +2
Реакции: Stamp

Stamp

★✩✩✩✩✩✩
12 Янв 2021
62
34
Выглядит законченным.
А Saleae Logic полный отстой.
На эту плату можно навялить. Но там танцы с бубнами.
И зачем это нужно, если 16 каналов без бубна.
 

Stamp

★✩✩✩✩✩✩
12 Янв 2021
62
34
@bort707, Там прога другая. И на той плате, что на АЛИ можно купить, запускается через жо.. и всего 8 каналов.
Да, она работает устойчивее, но именно на этой плате, что на картинке, с запуском геммор.
 

Весьмой Шум

✩✩✩✩✩✩✩
22 Сен 2023
6
0
Москва
wholemy.ru
Интересно, только я не могу скачать дрова для этой платы?))) Потому что нет не русских почтовых адресов, а там надо как-то зарегится, чтобы скачать))) Че за фашисткую плату я купил ахаха) Где бы в другом месте слить дрова?) Это оно или нет?) https://www.phys.hawaii.edu/~mza/USB/cypress-ez-usb-fx2-windows-driver.zip Наверное нет, судя по содержанию) Ааа понятно, это для хрени) https://www.phys.hawaii.edu/~mza/USB/ Понятно, я где-то слил файл CySuiteUSB_3_4_7_B204.zip, при установке дрова в той папке где он установлен) А все равно не ставится на Windows 10) Нет информации о подписи) Так, понятно, для этого нужна третья ссылка)

Рано или поздно я разберусь с этой фигней, и тогда я скажу что тут лажа, а что нет, но на данном этапе, лес темный, метания из стороны в сторону и непонимание, зачем я купил эту плату) А еще, непонятно о чем вы здесь пишите, когда я тупо с самой платой огребаю) Надо было не мучить мозг, а батрачить логический анализатор на STM32, там у меня хоть что-то получается, а тут какая-то помойка прямо из непонятного софта и каких-то дров) Но я добью этот вопрос, так или иначе) Повелся на какие-то глупости, основанные на массовом психозе над этой платой, а по сути левый контроллер, просто с каким-то прямым доступом на USB, тогда как мне и буфера было бы достаточно для анализа) Извините, у меня просто тоже псих включился) Потому что реально тут фашисты издеваются над русскими бомжами)
 
Изменено:

Весьмой Шум

✩✩✩✩✩✩✩
22 Сен 2023
6
0
Москва
wholemy.ru
@Брякомякс, У меня это выглядит так) Ну короче, эта фигня установилась нормально, в отличии от той фигни, которую я скачал раньше) Драйвер обнаружен по человечески)1695427594779.png
1695427901525.png
 
Изменено:

Весьмой Шум

✩✩✩✩✩✩✩
22 Сен 2023
6
0
Москва
wholemy.ru
Короче, ситуация следующая, на этой плате ничего не нужно перепаивать, 2 кило микросхему паять туда не нужно) Жесть конечно) Я посмотрел этот видос и все понял)
64К EPPROM нормально шьется)

Прошивка называется так Cypress EZ-USB FX2LP-based Logic Analyzer using Open Source sigrok PulseView - KBA229176
Ссылки под видосом) Наши видосы лучше не смотреть, там нагоняют пургу)

Все файлы которые нужны:
1695433188705.png
 
Изменено:

Эдуард Анисимов

★★★★★★✩
23 Сен 2019
2,282
945
58
Марий-Эл
Я не понимаю, какие у вас там проблемы с этой платой.
Но я пользуюсь ей уже несколько лет под любой операционкой и со скачиванием дров никогда проблем не возникало.
А то, что там нужно флешки перепаивать я не говорил. Поэтому нехрен смотреть тупые каналы.
 

Весьмой Шум

✩✩✩✩✩✩✩
22 Сен 2023
6
0
Москва
wholemy.ru
Первое что я могу сказать о том что происходит, это то что мне не нравится жать на кнопочку Run чтобы получить тот сигнал который есть) Второе это то что больше 12 мегагерц устройство не работает, хотя позволяет выбрать режим до 48 мегагерц, но всякий раз выдает ошибку, а я гоню на неё сигнал больше 16 мегагерц, по SPI на регистрах, который гоню на мониторы ST7789 в режиме 666, 24 бита на пиксел, а нет конкретно в этом случае 18 бит на пиксел) И складывается такое ощущение, что она тупо засирается этим сигналом и тащит только когда попадаю на начало производства сигнала после секундной задержки) Я на STM32 получал сигнал по мере его возникновения и отсчитывал интервал в тактах процессора, таймер позволяет это делать, точнее его наличие) Собираю в оперативку буфер и после получения буфера где важно только изменение сигнала, возвращал его на сериальный порт) Это было надежно, но тогда я остановился из-за того что не знал как повысить частоту опроса выше 2 микросекунд на прерываниях или выше 1 микросекунды путем сравнения, но я с этим разобрался, а проект остановил, терь буду продолжать с новыми силами) Программа Пур Вьев, висячая глючная, никакущая, хотя возможно как открытие файлов и сохранения подходит, для сопоставления протоколов, но то что я увидел за какое-то время экспериментов, мне не нравится)

Хочется спросить, вы че реально готовы жать на кнопочку Run каждый раз, а если выполняется рестарт и нужно получить сигнал с момента запуска устройства, на удачу кликать?) Это какое-то садо мазо а не логический анализатор) Может для разбора сигналов из файла норм, но как его конечный потребитель с платы, оно не робит толком, высокая нестабильность поставки данных) Остается только проверить что там еще за проги, на дотнете и прошивки) Но пока что это садо мазо для меня)

1695500501553.png
Даже если представить что эта картинка более менее правильная, точности не хватает из-за логической разницы частот) Я надеялся что оно будет работать хотябы на 24 мегагерцах, но теперь я понимаю 48 мегагерц поделить на 4 такта, 12 мегагерц) Пока что я не сделал ничего выше 1 мегагерца, а сделаю ли, пока загадка, время покажет, сможет ли 100(96) мегагерцовый проц получать сигнал выше 12 мегагегц, этого я пока не знаю) В общем я для того и покупал логический анализатор, чтобы разобраться что на какой частоте работает и попытаться это определить, но видно как-то не очень с этим пока получается)
 
Изменено:

Эдуард Анисимов

★★★★★★✩
23 Сен 2019
2,282
945
58
Марий-Эл
@Весьмой Шум, Вы просто не умеете это готовить.
Зачем задирать SPI на максимум?
Можно при отладке частоту снизить.
Программа рассчитана на разные логические анализаторы. Поэтому там такие частоты присутствуют.
Если ядро микросхемы работает на 48МГц, вы уверены, что такой же сигнал и можно отследить? О теореме Котельникова слышали? Она правда для АналоговоЦифрового преобразования звука, но здесь в некоторой степени применима.
это то что мне не нравится жать на кнопочку Run чтобы получить тот сигнал который есть
Это не осцилограф, поэтому нельзя к ней предъявлять такие требования.

Я на STM32 получал сигнал по мере его возникновения и отсчитывал интервал в тактах процессора, таймер позволяет это делать
Вот здесь позвольте не поверить. Интервал в тактах процессора и таймер, немного разные вещи. Что то там попутали.
И PulseView позволяет запускать отсчёт от переднего фронта сигнала, заднего фронта, от любого фронта, от уровня 1, от уровня 0.
 

Весьмой Шум

✩✩✩✩✩✩✩
22 Сен 2023
6
0
Москва
wholemy.ru
Вот здесь позвольте не поверить. Интервал в тактах процессора и таймер, немного разные вещи. Что то там попутали.
И PulseView позволяет запускать отсчёт от переднего фронта сигнала, заднего фронта, от любого фронта, от уровня 1, от уровня 0.
1695502082797.png
На STM32 есть такой код, получения интервала с минимальными доработками функции Micros, для измерения интервала в тиках) Во что вы верите, это вам виднее, я верю только своим глазам, если я чего-то не могу получить, я это вижу, когда могу я это тоже вижу, мне нужно видеть, чтобы во что-то верить или не верить, а не вас в чем-то убеждать) Видеть нужно, убеждать не нужно) Замедлить можно, я это сделаю для сравнения, чтобы видеть, что там правда что нет) Я на C# пишу, если что, 20 лет, я знаю, что говно, а что нет, на винде, притензии к прогам у меня большие и если что, я их сам пытаюсь написать, когда мне это надо сильно)

Когда вы фиксируете состояние регистров портов с неким интервалом, то в зависимости от частоты фиксации возможны грехи и неточности, поэтому фиксировать изменения надо постоянно и прилагать к изменению расстояние во времени, от последнего измерения) А если очень сильно хочется измерять время в тактах, там где нет микросекундного таймера, то его можно измерять нопами)) Я так делал ожидание пересылки по регистру SPI, на нанке без вариантов)
 
Изменено:

Эдуард Анисимов

★★★★★★✩
23 Сен 2019
2,282
945
58
Марий-Эл
@Весьмой Шум, Вот этой лабудой, с мозголомным шрифтом вы меня хотите в чём то убедить?
Получать тики через HAL вмеремешку с CMSIS уже показывает то, что вы вообще не в теме. HALовкие функции очень медленные и рассчитаны для ардуинщиков, а не для тру программистов.

Я прочитал код более внимательно, поэтому и веду правку сообщения.
Более идиотского кода я не видел !!!!!!!

Я не знаю в какой среде идёт программирование. НО
Переменная м0 получает тик из функции HAL
Переменная v0 получает значение из регистра которого нет в CMSIS. Я подозреваю, что это может быть счётчик SysTick
Переменная м1 получает тик из функции HAL.
Переменная v1 получает значение из регистра, которого нет. Я подозреваю, что это может быть счётчик SysTick
Переменная TMS получает значение из регистра которого нет. Но я предполагаю, что это регистр предзагрузки+1

Далее, когда проинициализировалась переменная м0 и затем м1, проходит время и условие м1 != м0 выполняется всегда.
В результате функция возвращает всегда (поздний тик равный м1 умноженный на регистр предзагрузки+1 И (прибавляется к этой лабуде значение регистра предзагрузки за минусом текущего значения счётчика)). И чё? Где здесь 48МГц и таймер, на котором работает ваш крутой логический анализатор?
И да.
1695504886030.png
Вот это регистры таймера SysTick.
А не та ахинея, что в этом коде.