- Как прочитать шину I2C на осциллографе
- Получение области
- Обзор проекта
- Настройка цепи
- Настройка осциллографа
- Как сохранить данные с осциллографа на компьютер
- Вывод
- Радиолюбительские измерения: анализ сигналов шины I2C
- Цифровой двухканальный осциллограф с памятью
- Логический анализатор цифровых сигналов
- Цифровой осциллограф vs логический анализатор
- И такое программное обеспечение существует
- Краткие выводы:
- 🎥 Видео
Видео:I2c шина в iPhone, способы диагностики, причины циклического перезапуска.Скачать
Как прочитать шину I2C на осциллографе
Осциллографы предлагают различные инструменты для диагностики проблемных цепей. В этом уроке мы будем использовать осциллограф для чтения последовательной шины I²C.
Получение области
Для получения дополнительной информации о том, как получить осциллограф, обратитесь к части 1.
Обзор проекта
Я буду использовать многодоменный осциллограф 3104 Tektronix для декодирования данных I²C и определения адреса I²C для устройства путем последовательного опроса всех адресов и поиска сигнала подтверждения (ACK). Любое устройство I²C будет работать. Я получил оценочный комплект для Infineon 3D Hall-Effect Sensor, и я буду использовать его в качестве своего устройства I²C.
Продукт | Стоимость (и ссылка на продукт) | Дополнительная информация |
---|---|---|
Infineon 3D Магнитный датчик 2 Go Kit | $ 28 | Руководство по установке | Руководство по датчикам | Краткое описание продукта |
4 Position Header (0.100 «) | $ 1 | Техническая спецификация |
Arduino Uno R3 | $ 15 | Информация о товаре |
Двунаправленный логический преобразователь уровня | $ 3 | Техническая спецификация |
Провода для перемычек | $ 3 |
Как упоминалось выше, любой I²C-совместимый датчик или дисплей приемлемы здесь. Вам не нужно использовать комплект Magnetic Sensor 2 Go Kit.
Настройка цепи
- GND от Arduino до GND на BD-LLC
- GND от BD-LLC до GND на 3D2GO
- 3, 3 В от Arduino до низкого напряжения (LV) на BD-LLC
- LV на BD-LLC до 3, 3 В на 3D2GO
- Arduino 5V — высокое напряжение (HV) на BD-LLC
- Arduino SDA для HV1
- Arduino SCL для HV2
- BD-LLC LV1 to 3D2GO SDA
- BD-LLC LV2 to 3D2GO SCL
Настройка осциллографа
Затем вам нужно настроить осциллограф. Для этого выполните следующие действия:
- Включите осциллограф и дождитесь завершения его самотестирования.
- Вставьте пробники в каналы 1 и 2.
- Подсоедините заземляющий зажим зонда к точке заземления в цепи (при необходимости используйте перемычку).
- Подключите пробник 1 к SDA и зонд 2 к SCL (при необходимости используйте перемычку).
Теперь вы можете открыть IDE Arduino и загрузить на свой компьютер следующий код. Это сканер I²C, который сканирует все адреса для устройств и ищет ответы ACK.
Теперь, каждые 5 секунд, Arduino будет опросить I²C адреса 1-127. Если устройство существует в запрошенном адресе, он отправит сигнал подтверждения в Arduino, потянув линию SDA на низком уровне после того, как адресный байт будет передан.
Теперь мы можем перейти к использованию осциллографа для декодирования шины I²C.
Используйте следующие шаги для осциллографа серии Tektronix MDO3000 или MDO4000 с общими инструкциями для любого осциллографа в круглых скобках.
- Нажмите кнопку канала 1 (включите канал осциллографа 1)
- Нажмите «Метка» (отметьте свои входы, если сможете)
- Используйте Multipurpose b для прокрутки вниз до «DATA» (канал метки 1 «Данные»)
- Выберите «Вставить предустановленную метку»
- Используйте ручку вертикальной шкалы под кнопкой Channel 1, чтобы установить 2 вольта на деление (уменьшите высоту сигнала, чтобы он заполнил меньше половины вашего экрана)
- Используйте ручку над кнопкой Channel 1, чтобы переместить сигнал в верхнюю среднюю часть экрана.
- Используйте Multipurpose b для прокрутки вниз до «CLK» (канал метки 2 «Часы»)
- Выберите «Вставить предустановленную метку»
- Используйте ручку под кнопкой Channel 2, чтобы установить 2 вольта на деление (уменьшите высоту сигнала, чтобы он заполнил меньше половины экрана)
- Используйте ручку над кнопкой Channel 2, чтобы переместить сигнал в нижнюю среднюю часть экрана (это отделяет трассировку для тактового сигнала от трассы для сигнала данных)
- Нажмите «Bus B1» и используйте Multipurpose a для выбора «I2C» (скажите осциллографу, какой тип данных ожидать)
- Выберите «Определить входы»
- Используйте Multipurpose a для выбора «SCL» на канале 2 (назначьте CLK-канал SCL)
- Используйте Multipurpose b для выбора «SDA» на канале 1 (назначьте канал DATA для SDA)
- Установите «Пороги» на «1 В» на обоих SDA и SCL, используя Multipurpose a и Multipurpose b
- Установите «Включить R / W In Address» в «yes»
- Установите «B1 Label» на «I2C» (просто для отслеживания вещей)
- Установите «Дисплей шины» на «Шина и форма волны»
- Установите «Hex»
- Выберите «Шина»
- Выберите «Источник B1-I2C»
- Выберите «Триггер при запуске»
Читайте также: Шины amtel семь холмов
Следующее видео проведет шаги, необходимые для декодирования шины I²C.
Как сохранить данные с осциллографа на компьютер
Декодированные данные хранятся в таблице событий. Вы можете сохранить его на USB-накопитель или на свой компьютер.
Поскольку подключение USB-накопителя является тривиальным примером, мы сделаем это с трудом, дистанционно управляя областью. Следующие шаги относятся к Microsoft Windows и сериям Tektronix MDO3000 и MDO4000.
С другой стороны, то, что мы собираемся сделать, — потенциальный риск безопасности данных. Поговорите со своим ИТ-отделом, прежде чем делать это на работе.
Мой компьютер находится на 192.168.0.18, а осциллограф — на 192.168.0.40. Внесите соответствующие настройки в свои команды.
- Запустите CMD.EXE в качестве администратора и введите следующую команду для создания общего ресурса:
- mkdir C: \ Осциллограф
- NET SHARE Scope = C: \ Осциллограф / примечание: «TEK3104 Data» / grant: domain \ user, FULL // Это создает общий ресурс с именем «Область» на вашем основном жестком диске. Вы можете изменить его в любом месте, которое вам нравится. Обязательно измените домен \ пользователь на имя домена, к которому подключен компьютер, или имя ПК, за которым следует имя пользователя, которое вы использовали для входа в Windows.
- ipconfig // Обратите внимание на адрес IPv4 для подключения к локальной сети. В моем примере это 192.168.0.18.
- TELNET -O 192.168.0.40 4000 // Измените 192.168.0.40 на IP вашей области действия, отображаемый на главном экране при запуске.
- ! d // Это очищает устройство.
- файлы: установить: список? // Это покажет все смонтированные диски.
- файлы: mount: drive «H:; 192.168.0.18; Scope; user; pass;» // Это создает постоянный диск на машине по адресу 192.168.0.18.
- файлы: установить: список? // Это должно привести к появлению нового диска.
- files: mkdir «H: / NewArticles» // Это делает каталог под названием «Новые статьи» на компьютере.
- files: cwd «H: / NewArticles» // Это изменяет фокус на этот каталог.
- save: eventtable: B1 «eventtable.csv» // Это (наконец) сохраняет данные на компьютере.
Вывод
Менее 15 минут мы расшифровали шину I²C и, со всех сторон, сохранили данные на компьютере для анализа.
И теперь, когда установлена общая папка, будущая работа может быть выполнена всего за несколько минут. Этот процесс автоматического декодирования намного эффективнее, чем просто зондирование сигналов и попытка ручного интерпретации логических уровней.
Читайте также: Шины для газели voltyre
Я использовал масштаб и процедуры, показанные в этой статье, для декодирования данных шины I²C для нескольких различных режимов 3D Magnetic Sensor 2 Go и определения того, какие команды соответствуют режимам питания.
Видео:Логический анализатор шины i2cСкачать
Радиолюбительские измерения: анализ сигналов шины I2C
Как я уже неоднократно упоминал в своих публикациях, любительские проекты финансируются из семейного бюджета, и радиолюбитель, обычно, не может себе позволить покупку дорогостоящего измерительного оборудования. Приходится довольствоваться тем, что есть. Или тем, что удаётся взять попользоваться «на время». А иногда от безысходности радиолюбителю приходится «сверлить пилой и пилить буравчиком».
Недавно я испытал потребность выяснить, что на самом деле передаётся в разрабатываемом мной устройстве по шине I2C. Это был тот счастливый момент, когда можно было себе позволить «пилить пилой».
Как происходит обмен данными между устройствами по протоколу I2C можно узнать здесь. Для анализа сигналов на шине I2C можно применить, как цифровой двухканальный осциллограф с памятью, так и логический анализатор.
Видео:Шина данных i2c - декодируем/синхронизируем с помощью осциллографа Lecroy!Скачать
Цифровой двухканальный осциллограф с памятью
При работе с радиоэлектронной аппаратурой осциллограф является наиболее универсальным инструментом. Современные цифровые осциллографы обладают рядом полезных свойств, позволяющих производить, в том числе, и анализ сигналов шины I2C.
В данном случае мне достался «на время» цифровой двухканальный осциллограф с памятью Rigol DS1102 (цена на сайте производителя $461). У этого прибора есть два канала измерения с полосой пропускания до 100 MHz и частотой выборки сигнала 1 GSa/s.
К сигналу SCL был подключен CH1. К сигналу SDA был подключен CH2. Для обоих каналов был установлен масштаб 1.00 V/дел. Масштаб развёртки – 10 us/дел. Для наглядности луч первого канала смещён в верхнюю половину экрана, а луч второго канала – в нижнюю.
В меню Trigger осциллограф был настроен на однократное измерение с запуском по достижению передним фронтом в канале CH1 уровня 1.00 V:
После включения тестируемого оборудования была нажата большая красная кнопка Run/Stop. Осциллограф встал в режим ожидания, затем запустился. Через несколько секунд запись была остановлена вручную.
Полученная осциллограмма записывалась на внешний носитель поэкранно:
Произведём разбор записанных сигналов. На первом экране мы видим отображение настроек прибора и осциллограмму сигналов SCL (верхняя часть) и SDA (нижняя часть экрана), на которой читаем слева направо:
- сигнал START: ведущее устройство выставляет низкий уровень сначала на шине SDA, а затем на шине SCL;
- 7-bit адрес: читаем 0x60 (1100000) на шине SDA по передним фронтам SCL;
- признак режима записи: читаем на шине SDA низкий уровень по следующему переднему фронту SCL;
- сигнал ACK: ведущее устройство после передачи байта переключается на приём по шине SDA, на SDA устанавливается высокий уровень, ведомое устройство по заднему фронту SCL выставляет на SDA низкий уровень (собственно, сигнал ACK), который ведущее устройство считывает по переднему фронту SCL;
- сигнал STOP: ведущее устройство выставляет высокий уровень сначала на шине SCL, а затем на шине SDA
Подобным образом, медленно, но верно, можно произвести вручную дешифровку остальных частей записи.
Видео:Урок 24. Узнаём адреса устройств на шине I2CСкачать
Логический анализатор цифровых сигналов
Дешифрацию протокола можно произвести более простым методом, используя логический анализатор и соответствующее программное обеспечение.
Для использования в качестве логического анализатора мне был любезно предоставлен коллегами Saleae Logic 8 (цена на сайте производителя $399). В качестве программного обеспечения использовалась демо-версия Saleae Logic 1.2.18, взятая с официального сайта. Устанавливая данное программное обеспечение, я принял лицензионное соглашение с условием, в том числе, не использовать данное программное обеспечение с оборудованием сторонних производителей.
В программе был включен анализатор протокола I2C. Для сигнала SCL был назначен канал CH0, а для сигнала SDA – канал CH1. Частота выборки сигнала 24 MSa/s.
Запуск был настроен по «переднему» фронту CH0. Для отображения данных был выбран шестнадцатеричный формат.
Читайте также: Шины o green ag566
После включения тестируемого оборудования была нажата большая зелёная кнопка Start, и через несколько секунд на экран вывелась диаграмма:
Максимум пользы в применении логического анализатора я вижу в том, что программа сама дешифрует полученные данные. Результаты дешифровки заносятся построчно в окно Decoded Protocols. При выборе в окне строки данных, программа показывает расположение этих данных на диаграмме.
Видео:SPI шина на осциллографеСкачать
Цифровой осциллограф vs логический анализатор
Для сравнения вариантов я «склеил» в графическом редакторе четыре снимка экрана осциллографа и фрагмент диаграммы логического анализатора:
Start обозначен зеленым кружочком, Stop – красным кружочком. На диаграмме сначала происходит проверка наличия на шине устройства с адресом 0x60, а затем производится запись в регистр 0xB7 этого устройства значения 0x80.
Если подходить к сравнению вариантов «с пристрастием», то можно заметить, что на диаграмме логического анализатора (частота выборки 24 MSa/s) присутствует «джиттер» сигнала SCL, которого нет, как такового, на осциллограмме с частотой выборки 1 GSa/s. В остальном картина совпадает, а логическим анализатором ещё и производится правильная дешифрация данных в автоматическом режиме.
При выборе «или-или» в «сухом остатке» имеем, в случае осциллографа, дорогое универсальное устройство, не такое удобное для анализа шины, как логический анализатор, но за сопоставимые с ним деньги. В этих условиях лично я, как инженер «старой закалки», приобрёл бы цифровой осциллограф.
Однако, если бы существовало программное обеспечение с лицензионным соглашением, позволяющим использование недорогих клонов популярных логических анализаторов, типа Saleae Logic 8 или DSLogic Plus…
Видео:Логический LIN пробник, цифровой тестер лин, к лайн шины автомобиля. На Ардуино, OLED I2C, TJA 1020Скачать
И такое программное обеспечение существует
Недорогие клоны популярных логических анализаторов, и не только их, поддерживает программное обеспечение open source проекта sigrok.
Было собрано рабочее место:
После чего начались «танцы с бубном». На Windows 10 запустилась только 32-разрядная версия PulseView. Наличие в системе недорогого китайского клона Saleae Logic (цена на сайте продавца $7) она не определила.
После этого, в Zadig для устройства Logic были установлены драйверы WinUSB, и после повторного сканирования оно определилось в Zadig, как устройство fx2latw:
После этого для устройства fx2latw в Zadig снова были установлены драйверы WinUSB, и только после этого PulseView увидела в списке устройство «Saleae Logic». Устройство было подключено.
После подключения устройства были произведены следующие настройки программы (слева направо по панели инструментов, начиная с надписи «Saleae Logic»):
- выставлено Pre-trigger capture ratio = 2% по нажатию кнопки с ключом и отвёрткой;
- отключены лишние входы по нажатию кнопки с красным щупом;
- выставлен объем записи 100 К выборок;
- выставлена частота выборки 24 MHz;
- включен анализатор протокола I2C по нажатию кнопки с жёлто-зелёным значком.
Далее в панели слева от каналов:
- каналам присвоены соответствующие сигналам текстовые метки;
- условием запуска назначен задний фронт сигнала SDA;
- сигналам I2C назначены соответствующие каналы.
После включения тестируемого оборудования была нажата кнопка Run. Получен уже знакомый результат:
Похоже, «танцы с бубном» того стоили!
UPD: После ручной установки в Диспетчере устройств для устройства USB Logic драйвера libusb-win32 программа PulseView начала стабильно определять наличие в системе «Saleae Logic» без манипуляций с Zadig.
Краткие выводы:
В статье была описана методика проведения анализа сигналов шины I2C с помощью цифрового осциллографа с памятью и логических анализаторов с пакетами прикладного программного обеспечения.
Универсальным методом анализа сигналов, но недешёвым и небыстрым, является применение цифрового осциллографа с памятью.
Быстрым и бюджетным методом анализа сигналов, но с нетривиальной задачей подключения оборудования, является применение недорогого клона логического анализатора в связке с PulseView.
Буду рад, если своей публикацией помог сэкономить читателям время и деньги.
В следующей публикации расскажу, как измерял частоту, на которой запустился кварцевый резонатор в синтезаторе частоты, без частотомера. Но это уже другая история…
- Свежие записи
- Нужно ли менять пружины при замене амортизаторов
- Скрипят амортизаторы на машине что делать
- Из чего состоит стойка амортизатора передняя
- Чем стянуть пружину амортизатора без стяжек
- Для чего нужны амортизаторы в автомобиле
🎥 Видео
Введение в шину I2CСкачать
Проверка работоспособности шины I2CСкачать
Как узнать адрес устройства подключенного к шине I2CСкачать
CAN шина на осциллографе FINIRSI ADS1013DСкачать
Шина I2C.Скачать
Анализ шины CANСкачать
Лекция 308. Шина I2CСкачать
Декодер протоколов | Часть первая I2C снифферСкачать
Подключение нескольких устройств, датчиков по I2C (АйТуСи) шинеСкачать
Двухканальный Осциллограф-пробник в диагностике автомобиля. Нужен ли он?Скачать
Осциллограф Tektronix MSO44 | Декодировка I2CСкачать
Установщик адресов Flash-i2cСкачать
Шина I2CСкачать
Урок 9. Адреса модулей на шине I2C. Arduino (что такое I2C, адресация, как изменить адрес модуля)Скачать