Присосаться к I2C. Сделай простой логический анализатор

    Здравствуйте. Хочу показать простой USB-логический анализатор, который можно собрать на любой отладочной плате с микроконтроллером STM32F042 например NUCLEO-F042K6 от ST. А впрочем, по ссылкам найдёте исходники и легко переделаете на любой другой из этого семейства. В этой конструкции 8 каналов. Под них в микроконтроллере задействованы порты PA0-PA7. Максимальная частота выборки – 8 МГц. Максимальная частота входного сигнала – 2 МГц. Максимальное количество выборок на канал – 4096.

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



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

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

    Работа логического анализатора начинается с нажатия на кнопку «Начать захват». Дальше происходит следующее:

    1) Устройству передаются параметры захвата.
    2.а) Если триггер не задан, захват сигнала начинается сразу после получения параметров захвата.
    2.б) Если триггер задан, устройство анализирует входной сигнал, не выполняя захват. Захват сигнала начинается после обнаружения условий, заданных установленным триггером.
    3) Буфер захвата заполняется в соответствии с заданным количеством выборок.
    4) Устройство передает данные на ПК.
    5) ПО обрабатывает и отображает полученные данные.

    Триггер может быть установлен на один или несколько каналов. Если триггеры заданы для нескольких каналов, захват сигнала начинается при одновременном наступлении всех условий, заданных установленными триггерами, т.е. между триггерами действует логическая связь «И».
    Можно изменить имя и цвет каждого канала. Область отображения сигналов можно прокрутить или масштабировать.

    С помощью инструмента «Измерение» можно измерить продолжительность выбранного участка, период, частоту, длительность импульса, посчитать количество фронтов.

    Инструмент «Линейка» проводит вертикальную линию, охватывающую сигналы всех каналов, в указанном месте с указанием времени. «Линейка» удобна при оценке расположения фронтов разных каналов относительно друг друга и относительно нулевой отметки времени.

    В этом ролике на простом примере можно посмотреть, как это всё работает:



    В заключении хочу добавить, что оболочка написана в Visual Studio, ПО для микроконтроллера в IAR. В ближайшее время подарю 16+ канальный логический анализатор с I2C, SPI, UART, I2S. Для построения рассматриваются два микроконтроллера: stm32f730, stm32f446.

    Спасибо всем, пользуйтесь на здоровье!

    Скачать инструкцию, прошивку и скетч.
    Скачать IAR проект
    Скачать Visual Studio проект
    Поделиться публикацией
    Комментарии 30
      0
      Не вполне понял, триггеры срабатывают на уровне транзакций I2C или просто по сигналам?
        0
        Только по сигналам
          0
          Жалко. Без этого получается просто интеллектуальный осциллограф. Я так понимаю, разбор протокола на стороне GUI происходит?
        +15
        Видео. Как же я ненавижу видео и видеоблоги.
          +2

          Лучше бы вы своё устройство научились к оболочке от Saleae цеплять. Да и тот же клон их логического анализатора стоит на Ali дешевле, чем ваша плата. И скорость там побольше будет.

            –1
            Первое. Saleae коммерческий, закрытый продукт.
            Второе. Клон ворованный.
            Ни к первому, ни тем более ко второму отношения не имею
              0

              Ну, если вы клон своровали, то конечно ворованный. А так там схемотехника тривиальная, это как сказать, что ардуины все друг у друга ворованные.

                0
                У ардуины вся архитектура открыта, это не воровство.
                0
                Если Вы противник проприетарного софта, то использование Visual Studio для написания оболочки выглядит несколько непоследовательно.
                  +1
                  Visual Studio Community — абсолютно бесплатная IDE от Miscrosoft для опенсорсных проектов.
                    0
                    Автора не устроила оболочка Saleae по причине своей проприетарности, хотя она тоже бесплатна. Бесплатный софт != свободный.
                      0

                      софт, раздаваемый с исходниками под свободной лицензией, предназначенный для компиляции под проприетарный процессор — является свободным? :)

                        0
                        А разве Вам кто то запрещает портировать его под другую аппаратную платформу, в том числе и открытую? Только давайте сейчас не будем вдаваться в вопросы целесообразности портирования абстрактного продукта X под не менее абстрактную платформу Y.

                        Если вопрос задан с целью троллинга, о чем можно судить по смайлику, то просто отсылаю Вас на профильные ресурсы, например FSF.
                          0

                          Про свободную программу — "у пользователей есть свобода выполнять, копировать, распространять, изменять и улучшать программу" (с) gnu.org


                          В файлах исходников у автора в заголовке:


                          /*
                          ***************************************************************
                          * COPYRIGHT(c) ЗАО «ЧИП и ДИП», 2018
                          * 
                          * Программное обеспечение предоставляется на условиях «как есть» (as is).
                          * При распространении указание автора обязательно.
                          ***************************************************************
                          */

                          Так что подытоживая — свободной программы не получилось.
                          Хотя и на Visual Studio можно писать вполне себе свободный C++/С# код. В определении свободной программы нет обязательности работы именно под GNU/Linux, да и инструменты для работы с кодом и компиляции тоже как-то не ограничены.

                      0
                      Бесплатный != непроприетарный
                    0
                    те же осциллографы на стм32 китайцы воруют и продают как оригинальные и закрытые. А если и меняют схему (чтоб не воровство), то почти всегда в сторону ухудшения. И я не настолько богат чтобы покупать хорошее и/или фирменное. Буду жить лучше — буду покупать хорошее и дорогое.
                    +2
                    Тогда уже к sigrok, с которым клон Saleae тоже отлично работает.
                      0

                      Во, точно, я и забыл об этом проекте.

                        +1
                        Угу, а именно PulseView:

                        image

                        Одно из больших преимуществ проекта — большое количество поддерживаемого оборудования и декодеров сигналов.
                          0

                          Отличный проект, но опять же не хватает триггеров и поиска по протокольным событиям. Вот у меня Tektronix умеет запускать триггер, скажем по определённому адресу I2C или отсутствию ответа на шине, например. Этого, а так же поиска по данным/событиям PulseView не хватает катастрофически.

                            0
                            Он очень тормознут и малофункционален, увы.
                        +1

                        Почему IAR? Я понимаю, что у некоторых есть на работе, у некоторых тыреный… но не лучше бы взять что нибудь бесплатное?
                        Atollic TrueStudio стал бесплатным. Есть ещё System WorkBench for STM32 — полностью бесплатная среда разработки(Eclipse + gcc), поддерживаемая в CubeMX. Для своих домашних поделок я использую именно последнюю, хотя на работе использую IAR.

                          –1
                          Забавно, когда вместо одного древнего гуано мамонта (IAR) советую такое же гуано, но более современное и с другими болячками. Если уж эклипс, то хотя бы чистый. Воркбенч баганый как не знаю что, особенно отладчик, хотя казалось бы все эти баги отсутствуют в эклипсе. ТруСтудио сейчас привязана только к stm, а это плохо и неудобно.
                            0

                            Не вижу никаких проблем, главное ведь — исходный код. А собрать можно и GCC, нужно только совсем немного потрудиться над make файлом.

                              0
                              Не сталкивался с багами в Воркбенче. Какие именно баги?
                              Вот в коде генерируемым CubeMX — там да, баг на баге сидит и багом погоняет. Но с каждой новой версией их правят потихоньку.
                              Привязка это проблема только если вы часто меняете платформы. Для хобби не всегда это нужно.
                              +1
                              У IAR тоже есть бесплатная лицензия с ограничением по коду: для ядер cortex-m0 и cortex-m0+ 16 кб, для других 32 кб.
                              +4
                              Ожидал увидеть какие-то детали по реализации. А оказалась очередная короткая реклама личного проекта
                                –1
                                PulseView отличный!
                                Но и Электронные Войска надо понять — чем-то надо заниматься.
                                Выборы только в ноябре — свободное время есть.
                                  +1
                                  Мне нравится идея. Если USB-пакеты будете разбирать — шикарно. Про UART и CAN не забудете? И было бы удобнее на githab'e разместить, если это всё OpenSource.
                                  Пользовательский интерфейс надо бы доработать. Например, убрать диагональные полосы. При наводке мыши на сигнал сразу в статусе можно показывать частоту/длину периода и т.д. Окошко с расшифровкой данных и таймингами надо бы снабдить Header'ом и поиском. Спасибо.
                                    0
                                    загрузил проект на github

                                  Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                                  Самое читаемое