Практическая диагностика цифровых шин
Куда исчезли биты?
Код компилируется, провода вроде на месте, а датчик молчит. Раскладываем сбой на слои: от питания и логических уровней до ACK, CPOL/CPHA, baud rate и формы фронтов. На каждом шаге задаём прибору вопрос, на который он может ответить.
Семь проверок до первого декодера
Скетч компилируется, библиотека не ругается, а периферия хранит гордое молчание. В этот момент очень хочется переписать половину программы. Не спешите: компилятор не проверяет медь, питание, уровни напряжения или контакт в макетной плате.
Рассматривайте обмен как цепочку доказательств. Сначала периферийное устройство должно получить правильное питание и общую точку отсчёта. Затем проверяем, безопасны ли и распознаваемы сигналы. Только тогда берёмся за адреса, режимы и команды. Такой порядок кажется медленным ровно до первого вечера, который он спасает.
- 01ПитаниеИзмерить напряжение непосредственно на выводах устройства, проверить reset и enable.
- 02GNDУбедиться, что передатчик и приёмник имеют общую опорную землю или задокументированную изоляцию.
- 03Логические уровниСверить гарантированные
VOH/VOLсVIH/VILи отдельно проверить absolute maximum. - 04ПодключениеСверить pinout, ориентацию разъёма, pin mux, CS, reset и адрес.
- 05АктивностьУвидеть, создаёт ли контроллер вообще clock, start bit или CS frame.
- 06ОтветПроверить ACK, MISO, RX и статусные биты, а не только факт передачи.
- 07НастройкиСопоставить частоту, режим, формат кадра, последовательность команд и временные параметры с datasheet.
На третьем шаге названия «3,3 В» и «5 В» ещё ничего не гарантируют. Для HIGH нужно условие VOH(min) ≥ VIH(min), для LOW — VOL(max) ≤ VIL(max). После этого отдельно проверяют допустимое напряжение на входе: absolute maximum является границей повреждения, а не рекомендуемым рабочим режимом.[9] Подробнее эта тема разобрана в материале «Тайны логических уровней».
Три прибора, три разных вопроса
Мультиметр, логический анализатор и осциллограф смотрят на ту же линию, но видят разные вещи. Противоречия между их показаниями часто нет: просто один прибор говорит о напряжении, второй о логическом состоянии, а третий о форме перехода.
Мультиметр
Отвечает на базовые вопросы: есть ли питание, соединена ли земля, какой уровень покоя, не оборван ли провод. Для проверки continuity питание выключают.[17]
Логический анализатор
Фиксирует моменты пересечения входного порога, показывает временную последовательность и декодирует элементы протокола. Он находит неправильный адрес или границы CS, но не показывает аналоговую форму фронта.
Осциллограф
Показывает напряжение во времени: амплитуду, VOL/VOH, время нарастания и спада, шум, overshoot и ringing. С ним видно, имеет ли сигнал запас до порогов.
Почему мультиметр видит «нормально», а шина не работает
При быстром переключении мультиметр обычно показывает усреднённый или нестабильный результат. На I2C он может честно сообщить, что idle равен 3,3 В, но ничего не сказать о фронте, который слишком медленно проходит зону неопределённости. На UART он не покажет отдельный start bit, а на SPI не отличит правильную фазу clock от неправильной. Это не недостаток мультиметра, а граница его работы.
Что доказывает логический анализатор
Анализатор сравнивает входное напряжение со своим порогом и сохраняет 0 или 1. Декодер собирает из этих состояний адрес, байт, ACK или ошибку кадра. Успешное декодирование означает, что конкретный анализатор при своих порогах и настройках прочитал последовательность. Это ещё не сертификат здоровья аналогового сигнала.[12]
Частоту дискретизации выбирают с запасом относительно самых быстрых событий, которые надо различить. Для собственных приборов Saleae рекомендует цифровую частоту дискретизации как минимум в четыре раза выше полосы пропускания сигнала. Это практическая рекомендация производителя, а не универсальный закон для любого анализатора и любого фронта.[14] Пороги, допустимые напряжения и защита входов также зависят от модели. Их нельзя переносить с оригинального Saleae на безымянную совместимую плату.[15]
Для первого знакомства с активностью на линиях и декодированием протокола подойдёт восьмиканальный USB-анализатор из каталога MyProject. Ссылка помогает найти класс инструмента, но не устанавливает точный порог, полосу пропускания или защиту конкретной платы.
Когда нужен осциллограф
Если декодер показывает лишние фронты, обмен зависит от длины провода или устройство работает только с подключённым щупом, нужна аналоговая картина. Медленный или зашумлённый фронт может несколько раз пересечь порог анализатора и создать ложный цифровой импульс. Контроллер и другой приёмник могут увидеть его иначе.[16]
Щуп тоже является частью схемы. Его ёмкость нагружает линию, а длинный провод земли может добавить собственный ringing. Фиксируйте модель щупа, коэффициент ослабления, ограничение полосы пропускания и точку измерения. Для быстрых фронтов используйте короткий путь земли.[13]
I2C: шина, которая отпускает HIGH через резистор
В обычных режимах I2C выходы SDA и SCL стягивают линию в LOW, но не толкают её в HIGH. Возвращение в HIGH обеспечивают подтягивающие резисторы. Из-за этого шина очень чувствительна не к «правильному номиналу из интернета», а к сочетанию сопротивления, напряжения, ёмкости и способности устройств тянуть LOW.[1]
Сначала практическое правило, потом формула
Слишком большой pull-up даёт медленный RC-фронт: линия запаздывает с переходом в HIGH. Слишком малый заставляет open-drain транзистор пропускать больший ток в LOW и может поднять VOL выше гарантированной границы. Рабочее сопротивление должно поместиться между этими двумя ограничениями.[2]
Rp(min) = (Vpullup − VOL(max)) / IOL
Rp(max) = tr(max) / (0,8473 × Cb)
В первой формуле IOL и VOL(max) берут из гарантированных условий конкретного устройства. Во второй Cb охватывает входы, дорожки, провода, разъёмы, преобразователи уровней и щуп. Лимиты времени нарастания из спецификации составляют 1000 нс для Standard-mode, 300 нс для Fast-mode и 120 нс для Fast-mode Plus. Это границы спецификации, а не типовые результаты измерения.[1]
| Величина | Результат | Что это означает |
|---|---|---|
Rp(min) |
966,7 Ом | Нижняя граница при принятых VOL/IOL. |
Rp(max), Standard-mode |
11,80 кОм | Верхняя граница для tr(max)=1000 нс. |
Rp(max), Fast-mode |
3,54 кОм | Верхняя граница для tr(max)=300 нс. |
Rp(max), Fast-mode Plus |
1,42 кОм | Верхняя граница для tr(max)=120 нс. |
Эта таблица не назначает резистор вашей шине. Она показывает, как один и тот же Cb сужает верхнюю границу с ростом скорости. Перед выбором номинала проверьте, поддерживают ли конкретные устройства нужный режим, какое VOL они гарантируют при указанном токе и какая суммарная ёмкость сложилась на плате.
Четыре разных pull-up неисправности
Pull-up нет
Линия может не возвращаться в HIGH или возвращаться через слабые внутренние подтяги и leakage. Сначала проверьте схему и сопротивление до линии питания в выключенном состоянии.
Сопротивление слишком велико
Idle HIGH выглядит нормально, но фронт слишком медленный. Типичный симптом: 100 кбит/с работает, а 400 кбит/с даёт нестабильный ACK или extra edges.
Сопротивление слишком мало
LOW-driver должен стягивать больший ток. На осциллографе ищите повышенный VOL, а при выключенном питании посчитайте все параллельные подтягивания.
Не то напряжение
Pull-up к 5 В на 3,3-вольтовой нетолерантной шине является проблемой совместимости и возможного back-powering, а не способом сделать HIGH «надёжнее».
tr определяют между 30% и 70% амплитуды; иллюстрация поясняет принцип, но не является масштабированной кривой или измерением.Когда на каждом модуле уже есть «нормальные» 4,7 кОм
Подтягивающие резисторы к той же линии питания соединены параллельно. Два резистора по 4,7 кОм дают 2,350 кОм, четыре — 1,175 кОм. При иллюстративных 3,3 В и VOL=0,4 В open-drain выход соответственно стягивает примерно 1,234 мА или 2,468 мА. Отдельный модуль может быть вполне нормальным, а собранная из четырёх модулей шина уже окажется у нижней границы.
Если резисторы идут к разным напряжениям, простая формула параллельного сопротивления уже не описывает проблему. Нужно проследить топологию, последовательность подачи питания и возможный ток в выключенную область. Для двунаправленной open-drain I2C можно рассматривать документированный класс FET-преобразователей; четырёхканальный модуль из каталога является примером такого класса, но его точную схему и маркировку следует проверить перед использованием.
START есть, ACK нет
Первым делом посмотрите, какой адрес передаёт контроллер и в каком формате он записан в datasheet. На шине I2C адрес обычно имеет 7 бит, а направление чтения или записи передаётся отдельным битом. Старые документы иногда печатают уже сдвинутые 8-битные значения. Если бездумно вставить такое значение в библиотеку, которая ожидает 7-битный адрес, устройство не обязано догадываться о наших намерениях.[1]
NACK тоже не переводится одним предложением «устройства нет». Спецификация описывает несколько причин: по адресу никто не отвечает; адресованное устройство временно занято; команда или данные не поддерживаются; приёмник не может принять больше; контроллер-приёмник завершает чтение. Так что смотрите не только на адресный байт, а на всю транзакцию.
Два одинаковых адреса
Два устройства с тем же адресом могут одновременно стянуть ACK в LOW. Сканер покажет, что адрес существует, но не посчитает физические устройства. При записи команду могут получить оба; при чтении результат зависит от их поведения и open-drain взаимодействия, поэтому предсказывать конкретный байт без точных данных об обоих устройствах нельзя.
Самые чистые решения: изменить address straps, управлять enable pins или разнести устройства по каналам I2C-switch. TCA9548A имеет восемь управляемых каналов и несколько вариантов собственного адреса на уровне IC.[4] Модуль TCA9548A в каталоге MyProject уместен как пример класса, но не как доказательство неизвестных onboard pull-up или current limits его конкретной PCB.
Шина зависла LOW
Сначала различите SDA и SCL. Если SCL удерживается в LOW, причиной может быть короткое замыкание, неисправное устройство или штатный clock stretching. Проверьте, поддерживает ли его конкретное устройство и какой timeout ожидает контроллер. Когда SCL заблокирован, отправить им импульсы восстановления физически невозможно; спецификация рекомендует аппаратный reset или power-cycle.
Если SDA удерживается в LOW, а SCL можно управлять, процедура bus clear предусматривает до девяти тактов SCL с проверкой, отпустило ли устройство SDA. Если нет, нужен reset или power-cycle. Девять импульсов не являются универсальным заклинанием для любой I2C-неисправности.[1]
UART: правильные биты с неправильным паспортом
UART не имеет адреса и отдельной линии clock, поэтому выглядит проще I2C и SPI. Вместо этого обе стороны должны одинаково понимать длительность бита, длину кадра, parity, stop bits и polarity. Провод передаёт напряжение, а не надпись «115200 8N1».
TX, RX и третий участник — GND
В обычном полнодуплексном UART логических уровней выход TX одной стороны идёт на RX другой, а второе направление подключают накрест. Если нет гальванической изоляции или дифференциального физического уровня, нужна общая опорная земля. Без неё приёмник сравнивает сигнал с неизвестной точкой отсчёта, и даже красивые 3,3 В на передатчике могут превратиться в случайность на другом конце.
При диагностике двух уже запитанных плат часто достаточно TX, RX и GND. Не соединяйте VCC или выводы 3V3/5V адаптера наугад: на разных платах они могут быть входами, выходами стабилизатора или иметь другое назначение. USB–UART адаптер CP2102 удобен как инструмент класса, но его точный pinout и уровни конкретной ревизии надо сверить перед подачей питания.
Baud rate — лишь начало договорённости
Запись 8N1 означает восемь data bits, без parity и один stop bit. К этому добавляются bit rate и polarity. Для неинвертированного CMOS UART idle обычно HIGH, start bit переходит в LOW, а data часто передаются от младшего бита к старшему. Конкретная реализация может иметь inversion options и другие режимы, поэтому финальное слово принадлежит manual контроллера.[7]
Для расчётного примера 115200 бит/с один бит длится примерно 8,681 мкс. Кадр 8N1 имеет десять битовых интервалов: start, восемь data bits и stop, следовательно занимает около 86,806 мкс. Это ориентиры для курсоров, а не универсальный допуск ошибки. Реальная граница зависит от генераторов, baud-rate generator, oversampling, длины кадра и логики конкретного приёмника.
Паттерн 0x55 чередует биты и даёт много переходов. На нём удобно измерить ширину битовой ячейки, увидеть inversion и проверить выравнивание start. Меняйте настройки декодера на той же записи: провод и сигнал остаются неизменными, а меняется наше прочтение.[16]
Framing, parity и overrun — разные аварии
Framing error
Приёмник не увидел ожидаемого stop state в нужный момент. Ищите неправильный bit rate, format, inversion или повреждённую линию.
Parity error
Принятые data bits не совпадают с ожидаемой parity. Причиной может быть разная настройка сторон или настоящая ошибка передачи.
Overrun
Новые данные пришли раньше, чем firmware освободил buffer или FIFO. Осциллограмма может быть безупречной, а байты будет терять программный тракт.
Названия flags, способ очистки ошибки и глубина FIFO зависят от MCU. В PIC32 эти состояния разделены, но его register names не надо механически переносить на AVR, STM32 или ESP.[7]
UART не равен RS-232
UART описывает формат асинхронного кадра внутри микроконтроллера. RS-232 задаёт другой электрический физический уровень, в частности биполярные и инвертированные относительно обычного logic UART сигналы. GPIO не подключают непосредственно к разъёму RS-232; между ними ставят соответствующий transceiver, например микросхему класса MAX3232.[8]
Для длинной или шумной линии часто уместны дифференциальные RS-485 или RS-422, но они не имеют универсальной пары «длина/скорость». Результат зависит от кабеля, termination, topology, common-mode range и transceiver.[11]
SPI: когда все линии движутся, но разговор не складывается
SPI не имеет одной универсальной транзакции. Контроллер создаёт SCK, активирует CS и одновременно сдвигает биты через MOSI и MISO, но polarity CS, mode, bit order, command phases и dummy cycles определяет конкретное периферийное устройство.[5]
Тишина, 0xFF и 0x00 — это подсказки
- CS меняется, SCK молчит. Проверьте peripheral enable, pin mux, zero-length transfer и правильный instance контроллера.
- SCK и MOSI есть, MISO постоянно HIGH. Устройство может быть не выбрано, не запитано или не поддерживать команду; floating MISO часто читается как единицы через pull-up.
- MISO постоянно LOW. Ищите short, reset state, bus contention или устройство, которое не освободило линию.
- Байты стабильно сдвинуты. Сверьте CPOL/CPHA, bit order, bits per word и decoder settings с firmware и datasheet.
0xFF не означает автоматически «плохой MISO», а 0x00 не доказывает короткого замыкания. Они лишь сужают список следующих проверок.
CPOL и CPHA без гадания над номером mode
CPOL определяет idle state SCK. CPHA задаёт, на первом или втором clock edge приёмник берёт образец. Вместо запоминания числа mode полезнее спросить: какой уровень clock в покое, на каком фронте data должна быть стабильной и когда transmitter её меняет.
| Mode | CPOL | CPHA | SCK idle | Фронт выборки |
|---|---|---|---|---|
| 0 | 0 | 0 | LOW | первый, rising |
| 1 | 0 | 1 | LOW | второй, falling |
| 2 | 1 | 0 | HIGH | первый, falling |
| 3 | 1 | 1 | HIGH | второй, rising |
CS — рамка предложения
Некоторые устройства ожидают, что CS поднимется после каждой команды. Другие сохраняют внутреннее состояние, пока CS активен. Команда может содержать opcode, адрес, dummy clocks и фазу данных. Если первый байт правильный, а дальше всё сдвигается, проверьте не только mode, но и границы транзакции и количество импульсов clock.
Datasheet 25LC256 даёт точный пример для одного устройства: он документирует поддерживаемые SPI modes, поведение CS, command format и high-Z состояние SO после deselect.[6] Эти детали объясняют способ чтения datasheet, но не переходят автоматически на дисплей, АЦП или радиомодуль.
Общая MISO и несколько устройств
На общей MISO только выбранное устройство должно активно управлять линией. Остальные должны перейти в high-Z в срок, определённый их datasheets. Если каждое устройство работает отдельно, а вместе они ломают обмен, запишите все CS lines одновременно с MISO. Один короткий импульс CS может активировать двух собеседников, и тогда на шине начинается не SPI, а очень невежливое совещание.
Правильный mode, плохая форма сигнала
Даже правильно настроенный декодер не гарантирует setup/hold у вывода устройства. Проверяйте осциллографом SCK и data на приёмнике, а не только у MCU: оцените амплитуду, временные соотношения фронтов, ringing и взаимное положение сигналов. Максимальную SCK, CS setup/hold и data timing берут из datasheet конкретного устройства.
Снижение SCK полезно как A/B проверка: оно даёт больше времени между событиями. В то же время оно не обязательно замедляет фронт выходного драйвера, поэтому ringing от длинного провода или плохого обратного пути тока может остаться. В SPI нет универсальной максимальной длины кабеля; низкая clock frequency сама по себе не превращает быстрый CMOS edge в медленный.[10]
На столе работает, в корпусе — нет
Макетная плата не получает иммунитета от законов физики. Просто после монтажа меняются длина и геометрия проводников, площадь контура, обратный путь тока, путь через разъём, соседство с DC-DC преобразователем или мотором и суммарная ёмкость.
Особенно коварен обратный ток. Сигнал и его обратный путь образуют контур. Если сигнальный провод и GND расходятся разными маршрутами, площадь контура растёт, а вместе с ней чувствительность к помехам и излучение. Разрыв опорной плоскости, слабый контакт в разъёме или общая тонкая земля для моторного тока и UART способны испортить обмен без единого изменения кода.[10]
Как провести честный A/B тест
- Оставьте те же firmware, clock/mode и источник питания.
- Измените одну физическую переменную: длину жгута, разъём, трассировку у импульсного узла или обратный провод.
- Зафиксируйте геометрию и точку измерения, а не только фразу «длинные провода».
- Если возможно, сравните сигнал у передатчика и у приёмника.
- Повторите несколько раз, чтобы отличить закономерность от случайного контакта.
Симптом «работает только с анализатором» тоже является подсказкой. Щуп может добавить ёмкость, демпфирование, лучшую опорную землю или просто прижать плохой контакт. Повторяйте A/B с неизменными условиями запуска и не объявляйте прибор лечебным компонентом.[13]
Краткие диагностические таблицы
Таблица не заменяет схему и datasheet, зато не даёт перескочить от симптома сразу к любимой причине. Начинайте с первого прибора, а следующий подключайте только тогда, когда предыдущий слой уже проверен.
| Симптом | Первый инструмент | Что ищем | Следующий шаг |
|---|---|---|---|
| SDA и SCL idle LOW | Мультиметр | питание, короткое замыкание, устройство удерживает LOW, reset | изолировать устройства; отдельно диагностировать SDA и SCL |
| START/address есть, ACK нет | Логический анализатор | 7-bit address, R/W, состояние устройства, канал | проверить осциллографом VOL/VIH у устройства; сверить всю команду |
| 100 кбит/с работает, 400 кбит/с нет | Осциллограф | 30–70% rise time, Cb, parallel pull-ups | уменьшить нагрузку или подобрать Rp в рассчитанном окне |
| Два устройства, один адрес | Логический анализатор | один адрес с ACK, конфликт данных | отключить по одному; адресные перемычки, enable или I2C-коммутатор |
| Симптом | Первый инструмент | Что ищем | Следующий шаг |
|---|---|---|---|
| Полная тишина | Мультиметр + анализатор | состояние покоя, вывод TX, pin mux, общая GND | проверить источник, затем приёмник; сверить TX→RX |
| Работает только в одну сторону | Логический анализатор | активность каждого TX отдельно, RX enable | проследить оба направления; проверить flow control, если он используется |
| «Кракозябры» | Логический анализатор | длительность бита, формат кадра, parity и инверсию | измерить амплитуду осциллографом; рассчитать BRG для конкретного MCU |
| Первые байты есть, потом стоп | Анализатор + флаги MCU | передача продолжается, переполнение приёмника или заполненный буфер | отладить обслуживание ISR/task/FIFO по документации MCU |
| Симптом | Первый инструмент | Что ищем | Следующий шаг |
|---|---|---|---|
| CS движется, SCK нет | Логический анализатор | enable, pin mux, transfer length | проверить осциллографом короткие импульсы у MCU |
MISO постоянно 0xFF | Логический анализатор | полярность CS, питание, контакт, команда | проверить осциллографом CS у устройства; сверить его временные параметры |
| Байты сдвинуты | Логический анализатор | CPOL/CPHA, порядок битов, длина слова | проверить setup/hold на выводе устройства |
| На коротких проводах работает | Осциллограф | искажения фронтов, обратный путь тока, разъём, перекрёстные помехи | A/B одной физической переменной; проверить осциллографом оба конца |
Что записать перед запросом о помощи
Фраза «не работает I2C» заставляет других гадать. Небольшой технический паспорт неисправности превращает форумную археологию в нормальную диагностику.
- точные названия плат, маркировка IC, ревизии и фото обеих сторон модуля;
- напряжение питания на выводах устройства, уровни покоя и способ соединения GND;
- схема или чёткий pin map, ориентация разъёма, состояния reset и enable;
- для I2C: 7-битный адрес, режим шины и список всех pull-up с напряжением подтягивания и измеренным сопротивлением;
- для UART: bit rate, data bits, parity, stop bits, inversion и физический уровень;
- для SPI: CPOL/CPHA, bit order, SCK, полярность CS и полная последовательность команд;
- сырой файл логического анализатора, а не только обрезанный скриншот одного байта;
- для осциллографа: модель щупа, коэффициент ослабления, ограничение полосы, частота дискретизации, volts/div, time/div и точка измерения;
- что именно изменилось между рабочей и нерабочей конфигурациями.
Даже если ответ не найдётся сразу, эти данные не пропадут: они позволяют повторить тест и не сравнивать два разных стенда под одним словом «так же».
Часто задаваемые вопросы
- Всегда ли для I2C нужны 4,7 кОм?
- Нет. Pull-up выбирают между нижней границей по
VOL/IOLи верхней по rise time иCb. Несколько onboard резисторов надо учитывать параллельно. - Почему I2C-сканер видит адрес, а драйвер не читает регистр?
- ACK на адрес доказывает только, что кто-то ответил. Дальше могут быть неправильный адрес регистра, порядок команд, repeated START, формат данных, busy state или конфликт двух устройств с одинаковым адресом.
- Почему анализатор декодирует, а устройство всё равно ошибается?
- Анализатор видит сигнал через собственный порог. Приёмник может иметь другие пороги, а на его выводе фронт может быть медленнее или зашумлённее. Сравните аналоговую форму и декодирование того же события.
- Можно ли подать 5-вольтовый UART на 3,3-вольтовый MCU?
- Только если datasheet конкретного MCU гарантирует соответствующую tolerance для этого вывода и режима. Название напряжения питания не заменяет проверку
VIH/VIL,VOH/VOLи absolute maximum. - Почему SPI ломается после удлинения проводов?
- Меняются ёмкость, обратный путь тока, отражения, перекрёстные помехи и путь через разъём. Проверьте сигнал у устройства и сделайте A/B с одной физической переменной. Универсальной безопасной длины нет.
- Когда достаточно мультиметра?
- Для питания, continuity, статического уровня и грубой проверки idle. Для отдельных бит нужен анализатор, а для rise/fall, noise, ringing и voltage margin — осциллограф.
- Лечат ли девять импульсов SCL любую зависшую I2C?
- Нет. Это путь восстановления для SDA, удерживаемой в LOW, когда SCL ещё можно переключать. SCL stuck LOW, короткое замыкание, штатный clock stretching или неправильное питание требуют другой диагностики.
Биты редко исчезают без следа
Когда интерфейс молчит, не начинайте с перестановки библиотек. Измерьте питание на выводах устройства, проверьте GND, логические уровни и pin mapping. Затем найдите активность и ответ, а уже тогда разбирайте настройки протокола. Если цифровое декодирование не объясняет поведение, спускайтесь к напряжению и фронтам.
Хорошая диагностика не угадывает одну причину. Она ставит узкий вопрос правильному прибору и сохраняет ответ вместе с условиями. После этого даже молчащий датчик обычно оставляет вполне говорящие доказательства.
Технические источники
- NXP — UM10204, I2C-bus specification and user manual, Rev. 7.0, 1 Oct 2021. Поддерживает open-drain SDA/SCL, ACK/NACK, addressing, clock stretching, timing/rise-time limits и bus clear. Официальный PDF.
- Texas Instruments — SLVA689, I2C Bus Pullup Resistor Calculation, Feb 2015. Поддерживает уравнения
Rp(min)иRp(max). Официальный PDF. - Texas Instruments — SLVA675B, Voltage-Level Translation With the LSF Family, Dec 2014, rev. Mar 2015. Поддерживает FET-switch translation и bidirectional I2C как документированный класс применения. Официальный PDF.
- Texas Instruments — TCA9548A Low-Voltage 8-Channel I2C Switch, SCPS207H, rev. Sep 2024. Поддерживает channel control и address options на уровне IC. Официальный PDF.
- Texas Instruments — SBOA621, Understanding the SPI Bus, Aug 2025. Поддерживает signal roles, CS, full-duplex transfer и CPOL/CPHA modes. Официальный PDF.
- Microchip — 25AA256/25LC256 256-Kbit SPI EEPROM, DS20001822J, 2003–2021. Поддерживает exact-target пример CS, SPI modes, high-Z SO и timing. Официальный PDF.
- Microchip — PIC32 Family Reference Manual, Section 21 UART, DS60001107H, 2007–2017. Поддерживает one-family frame, BRG и error-state example. Официальный PDF.
- Texas Instruments — MAX3232, SLLS410O, rev. Jun 2021. Поддерживает границу между logic-level UART и RS-232. Официальный PDF.
- Texas Instruments — Logic Guide, SDYU001AC, rev. Nov 2025. Поддерживает
VIH,VIL,VOH,VOL, noise margins и translator context. Официальный документ. - Texas Instruments — High-Speed Layout Guidelines, SCAA082A, rev. Aug 2017. Поддерживает edge, return current, loop area, crosstalk, reflection, connector и probe-loading mechanisms. Официальный PDF.
- Texas Instruments — The RS-485 Design Guide, SLLA272D, rev. May 2021. Поддерживает differential signaling и system-specific cable/termination trade-offs. Официальный PDF.
- Tektronix — Logic Analyzer Fundamentals. Поддерживает thresholded logic-analyzer view и analog oscilloscope waveform view. Официальный primer.
- Tektronix — ABCs of Probes Primer. Поддерживает probe loading, ground-lead ringing и protective-earth safety. Официальный primer.
- Saleae — What Sampling Rate Should I Use? Поддерживает только Saleae sample-rate rule of thumb и timing-resolution guidance. Официальная документация.
- Saleae — Supported Voltages. Поддерживает model-specific thresholds/protection и threshold artifacts. Официальная документация.
- Saleae — analyzer guides for I2C, SPI и Async Serial. Поддерживают decoder settings и interpretation, но не универсальные electrical limits.
- Fluke — What is a Digital Multimeter? и A Guide to Continuity Testing with a Multimeter. Поддерживают voltage/resistance и continuity role DMM. Обзор DMM; continuity guide.
Написать комментарий