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

Здравствуйте.
Хочу показать простой USB-логический анализатор, который можно собрать на любой отладочной плате с микроконтроллером STM32F042 например NUCLEO-F042K6 от ST. А впрочем, по ссылкам найдёте исходники и легко переделаете на любой другой из этого семейства.
В этой конструкции 8 каналов. Под них в микроконтроллере задействованы порты PA0-PA7. Максимальная частота выборки — 8 МГц. Максимальная частота входного сигнала — 2 МГц. Максимальное количество выборок на канал — 4096.
Вот здесь нужно отметить, что логический анализатор это железо & ПО для захвата сигнала и его последующего исследования, измерения, анализа интерфейсов.
tjyqadw0nndzm1mf2loon7_s9xq.jpeg
Оболочка для ПК позволяет после захвата проанализировать сигналы на всех 8 каналах, а также измерить частоту сигналов, период и длительность импульсов. Подсчитать количество фронтов в выделенном участке, длительность этого участка.
А если присосаться к последовательному I2C интерфейсу и активировать анализатор, то будут автоматически расшифрованы все компоненты I2C подкрашены и обозначены в удобном для анализа виде.
Работа логического анализатора начинается с нажатия на кнопку «Начать захват». Дальше происходит следующее:
1) Устройству передаются параметры захвата.
2.а) Если триггер не задан, захват сигнала начинается сразу после получения параметров захвата.
2.б) Если триггер задан, устройство анализирует входной сигнал, не выполняя захват. Захват сигнала начинается после обнаружения условий, заданных установленным триггером.
3) Буфер захвата заполняется в соответствии с заданным количеством выборок.
4) Устройство передает данные на ПК.
5) ПО обрабатывает и отображает полученные данные.
Триггер может быть установлен на один или несколько каналов. Если триггеры заданы для нескольких каналов, захват сигнала начинается при одновременном наступлении всех условий, заданных установленными триггерами, т.е. между триггерами действует логическая связь «И».
Можно изменить имя и цвет каждого канала. Область отображения сигналов можно прокрутить или масштабировать.
С помощью инструмента «Измерение» можно измерить продолжительность выбранного участка, период, частоту, длительность импульса, посчитать количество фронтов.
Инструмент «Линейка» проводит вертикальную линию, охватывающую сигналы всех каналов, в указанном месте с указанием времени. «Линейка» удобна при оценке расположения фронтов разных каналов относительно друг друга и относительно нулевой отметки времени.
В этом ролике на простом примере можно посмотреть, как это всё работает.

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

Скачать инструкцию, прошивку и скетч.

Скачать IAR проект

Скачать Visual Studio проект

© Habrahabr.ru