Comments 36
Только один вопрос: зачем?
В ремонте пригождается, можно увидеть какой адрес не отвечает и что за схема сидит на этом адресе.
А что еще делать если собрал схему, а оно не работает ? Всё проверил, а оно не пашет. И совершенно непонятно в чём проблема, толи МК не те сигналы дает, толи периферия не отвечает. Как еще разобраться то ?
Ниже уже дали пример анализатора, который делает это на порядок лучше осциллографа...
И у меня была проблема с 24LC01. Разобрался по исходникам библиотек - у 24lc01 и 02 адрес передается одним байтом, а не двумя. Причем этой информации не нашел и в документации. И чем бы тут помог осциллограф?
Чаще всего нет задачи "сделать на порядок лучше", есть задача "собрали макет, но что-то I2C-дисплей ничего не показывает" (например). Подключаешь осциллограф и смотришь что мы хотя бы что-то передаём. Это для начала.
На осцилографе вы как минимум видите, что идут импульсы и их форму. И если они треугольные :) то что-то пошло не так...
Ну т.е. анализатор это тоже хорошо, но в зависимости от конкретной проблемы может оказаться, что осцилографом даже быстрее найдете(им попутно можно питание проверить итд итп). Хотя, лучше бы иметь и то и другое.
У кого что под рукой, тот это что-то и втыкает..... Но хоть что-то многократно лучше, чем ничего...
Ну справедливости ради, осцил или же ЛА помогает при аппаратных проблемах. Вы же описали программную проблему. При этом, в вашем случае на экране осциллографа (ой, ну ладно - ЛА) вы бы увидели что на шине присутствует ровно то, что вы отправляете в программе.
Было время делали такое. Если нет логического анализатора то это лучше чем ничего.
Но даже самый дешевый китайский анализатор, удобней чем такой метод с офцилографом.
Сейчас ослик декодирует эту шину.Сам не пробовал, только читал в описании.
Пробовал. Стоит MSO5074 полностью разлоченный. Скажем так это удобней чем самому руками по клокам, но анализатору сливает. В плане удобства очень сильно(ну по крайней мере на приборах такого класса).
Предназначение у осциллографа всё таки другое.
Все верно, тот же Siglent SPS 1104X-E имеет свой ЛА. Я уж не говорю про всякие Rohde&Schwarz и т.п.
Если количества каналов осциллографа хватает, то можно использовать программный анализатор.
Ну в этом 4 аналоговых. И есть ещё расширение модулем до 16 цифровых. Но честно скажу неудобно. А уж если надо отловить то что иногда приходилось ловить анализатором(по времени иногда несколько минут хватается) то крайне неудобно.
Ну, если нужно отловить какие-то события именно по их кодам, то без аппаратного анализатора (хотя бы встроенного в осциллограф) не обойтись.
А если удается записать нужную последовательность непосредственно осциллографом, то расшифровку нередко проще делать с осциллограммы. К тому же на осциллограмме хорошо видно качество сигнала, и при расшифровке можно поиграться допусками преобразования в цифру, оценить вероятность ошибок.
Я как-то разбирал работу управления фарами автомобиля по LIN, так доставать USB-анализатор и подключать его параллельно осциллографу было откровенно лень. :) Перекидывал осциллограммы на флешке в ноутбук, и там смотрел в PulseView.
Современние осцилографы умеют декодировать i2c шину.
а I2C injection примеры будут? ;-)
А можно еще UART и SPI. А при наличии хорошего осцила можно даже HDMI, LVDS, MIPI, Ethernet, USB, PCI-e... И даже без декодирования шины это бывает полезно.
В частности на ваших осцилограммах куда как информативнее ФОРМА сигнала, нежели его содержание. Но эта информация куда как более актуальна для схемотехника, чем для программиста. А для схемотехника осцил - родной инструмент.
Для анализа сигналов цифровых интерфейсов, в частности I2C, рекомендую пользоваться не осциллографом, а логическим анализатором, который к тому же позволяет расшифровать протокол и получить все тайминги .
Можно взять самый простой и дешевый (сам его использую лет двадцать) , например, такой:

Спецификация:
Максимальная скорость дискретизации: 24 Мбит/с
Диапазон входного напряжения: 0 ~ 5 В
Цифровой канал: 8
Входной низкий уровень: <0,8 В
Входной высокий уровень:> 1,4 В
Протокол поддержки: SPI, IIC, UART, SMBus, I2S, CAN, параллельный, пользовательский, поиск, Async, 1-Wite, PS/2
Входное сопротивление: 1 МОм | 10 пФ (типичное, приблизительное)
Кристалл: ± 20ppm, 24 МГц
Ошибка/точность: измерение ширины импульса: ± 42 НС (при 24 МГц)

Пожалуй закажу такую штуку, видится полезной.
Да, спасибо. Есть такой. В этой статье можно было бы и им обойтись. Зато на осцилле прекрасно видно как работает сигнал АСК. Когда мастер его выставляет, и слейв его тут же роняет на землю.
Согласен! Шикарный и дешевый анализатор!
Еще к нему можно крючки с алиэкспресса заказать удобные. "10pcs,Quality test of the quality test hook clip. Logic analyzer test folder. For USB 24M 8CH"
Скрытый текст

Сильно мне помог, когда надо было в первый раз с I2S разбираться, а также им удобно слушать I2C, UART и SPI, когда не знаешь, какого хрена не работает.
Статье нехватает акцента на то, что погромисту важно понимать, что будет происходить в физическом мире при выполнении его программ. Что бы за строчкой кода чтения байта из еепромки, было понимание, что на scl/sda будут электрические сигналы. Чтобы было понимание важности между намерением что-то сделать и тем, что в реальности происходит. И что самое главное, это стремление к тому чтобы не было никакого отличия между намерением и происходящим. И вот на этом пути и нужен инструмент для "разглядывания" физического мира. И очень важно, особенно на первых шагах, физически убедится, что выставляя адрес на шине он в реальности там именно такой, что ACK на него получен.
А дальше нужно разобраться, что важно, а что второстепенно. И под эту важность подбирать инструмент. Если разово поймать один ACK - убедиться что переферия отвечает, то и осцилла хватит. А если нужно весь обмен посмотреть и найти неутченный глитч на десятом мегабайте обмена, тут может и ЛА с потоковой записью на комп придется расчехлять.
Тема Старт/Стоп/Рестарт практически не затронута. Надо бы привести как выглядят на осцилографе эти события и что такое рестарт.
картинки красивые, но не помешало бы рассмотреть что твориться на шине когда преобразователи питания начинают добавлять проблем, или опять же пакеты начинают теряться при переключении нагрузки....т.е реальны как выглядит реально сигнал с выбросами и затянувшимися спадами..в свое время сталкивался что на стенде устройство работало замечательно, а когда пошли предсерийные сборки начинались какие проблемы с обменом - оказалось трансформаторы от общих преобразователей с соседнего "мезонина" иногда доставали либо до процессора либо до шины обмена процессора и все изделие наглухо висло....
Странно, что совсем не раскрыта тема просмотра осциллограмм в анализаторах вроде PulseView.
Почему бы не использовать хал-функции рид и врайт вместо последовательности трансмит и ресив? ))
Согласно описанию на микросхему ее адрес на шине – 1010ххх(7бит), где ХХХ – не имеет значения, хоть ноль, хоть единицы.
Вы, видимо, очень плохо читали описание на микросхему. Биты XXX значение таки имеют, причём, важное. У микросхем 24-ой серии есть три вывода - 1, 2 и 3, обозначаемые соответственно A0, A1 и A2. При разводке надо прицепить эти выводы либо к земле, либо к питанию. Вот куда подтяните эти выводы, какие логические уровни будут установлены на входах A0, A1 и A2, вот с такими битами вместо XXX и надо обращаться к этой микросхеме. Поскольку у всех микросхем 24-ой серии четыре старших бита одинаковые - 1010, то, как легко догадаться, на одной шине I2C можно подключить до 8 микросхем, задав им разные адреса. Ну или использовать их из каких-то других соображений.
Спасибо за комментарий. Я очень хорошо читал описание на микросхему. Не у всех микросхем 24й серии есть указанные вами выводы.
вот описание этой микросхемы https://static.chipdip.ru/lib/202/DOC012202053.pdf
В свою очередь видимо Вы очень плохо читали статью и не раскрывали спойлер с выпиской из даташита. Ведь этой выписке черным по-белому написано "don't care"
Я DSLogic использую вместо осциллографа, он декодит пакеты и больше пригоден для анализа логического уровня, а осциллограф скорее про отладку физического уровня
Смотрим на шину I2C через осциллограф