Вам не всегда нужны подтягивающие резисторы на линиях SPI

Закарайа Петерсон
|  Создано: 19 Октября, 2023  |  Обновлено: 11 Ноября, 2024
подтягивающие резисторы SPI

Существует популярное заблуждение, что подтягивающие резисторы необходимы или обязательны на линиях в шине SPI. Я здесь, чтобы однозначно сказать вам, что подтягивающие резисторы не требуются на шине SPI для выполнения её основной функции передачи и приёма цифровых данных.

Буфер в интерфейсе SPI имеет топологию push-pull, которая (на высоком уровне) включает в себя переключающие MOSFET высокого и низкого уровня, фактически формируя инвертор CMOS. Как мы увидим в этой статье, наличие подтягивающих резисторов не оказывает влияния на функциональность шины push-pull.

Тем не менее, есть случаи, когда имеет смысл разместить подтягивающий резистор на шине push-pull, и в некоторых технических описаниях производитель компонентов может рекомендовать или требовать его. Мы рассмотрим эти ситуации и как это влияет на поведение вашей системы. Хотя могут быть более сложные решения, которые устраняют необходимость в подтягивающих резисторах в этих ситуациях, размещение подтягивающего резистора может быть решением, которое упрощает вашу конструкцию и обеспечивает страховку, что интерфейс будет работать правильно.

Как работает шина SPI с подтягивающими резисторами

Давайте рассмотрим типичную модель буфера в интерфейсе SPI. Все буферы SPI имеют топологию толкатель-тягатель, которая состоит из коммутации на высокой и низкой стороне, которая передает сигнал на шину, и каждый сигнал в шине SPI (CS, MOSI, MISO и SCLK) будет иметь эту топологию. Пример такой схемы показан ниже. Обратите внимание, что реальный буфер SPI не так прост, как два транзистора MOSFET, но в общем случае применяется та же идея.

Инвертор CMOS в качестве драйвера SPI. Выход соединяется с дорожкой (представленной как сосредоточенные элементы) и схемой нагрузки (эквивалентная модель RC).

Unparalleled Schematic Capture

Easily design schematics of any complexity.

Основная причина использования этой топологии заключается в том, чтобы разрядные емкости в буферной схеме обеспечивали достаточно быстрые скорости нарастания и спада сигнала на выходе, которые будут значительно короче, чем период тактового сигнала на шине. Это то, что позволяет достигать более высоких скоростей передачи данных, чем в протоколе с открытым стоком (например, I2C).

SPI-шина, включающая подтягивающие резисторы, по сути, является драйвером инвертора CMOS с резистором, подключенным параллельно высокоомному полевому транзистору (FET) в выходном буфере. Теперь давайте посмотрим, что происходит в каждом состоянии переключения в драйвере, и мы сможем увидеть, что происходит на шине.

Логический ВЫСОКИЙ уровень

В состоянии логического ВЫСОКОГО уровня NMOS выключен, а PMOS включен. VDDIO теперь подает ток на подключенную дорожку и нагрузку. Емкость в дорожке и нагрузке начинает заряжаться до тех пор, пока напряжение на нагрузке не сравняется с VDDIO. Здесь сопротивление включенного PMOS составляет порядка мОм, в то время как подтягивающий резистор имеет порядок от 1 до 10 кОм. Очевидно, что подтягивающий резистор настолько велик, что по сути он короткозамкнут PMOS в состоянии ВЫСОКОГО логического уровня.

Поскольку весь ток течет через PMOS в состоянии ВЫСОКОГО логического уровня независимо от наличия подтягивающего резистора, характеристики переключения не будут затронуты.

Easy, Powerful, Modern

The world’s most trusted PCB design system.

Логический НИЗКИЙ уровень

Теперь рассмотрим, что схема перешла в состояние логического НИЗКОГО выхода. В этом состоянии NMOS включен, а PMOS выключен, так что след и емкость нагрузки разряжаются через NMOS в сеть GND. Поскольку PMOS выключен, он выглядит как очень высокое сопротивление (порядка МОм), что значительно больше, чем значение подтягивающего резистора (1 до 10 кОм).

Поскольку подтягивающий резистор в данном случае является меньшим, он позволит течь току величиной VDDIO/R(pu) к NMOS. Для подтягивающего резистора 1 до 10 кОм и VDDIO = 3,3 В, ток утечки в NMOS будет составлять 0,33 до 3,3 мА. Это значительно меньше, чем типичный ток SPI около ~50 мА, так что снова мы не заметим никаких эффектов на характеристиках переключения. Время спада на шине будет ограничено емкостями нагрузки и следа, выходным резистивным импедансом буферной схемы и сопротивлением включенного состояния NMOS.

Если переключение не затрагивается, зачем использовать подтягивающий резистор?

Очевидно, размещение подтягивающего резистора на линии SPI не влияет на его способность передавать сигнал на шину. Следовательно, подтягивающий резистор должен выполнять какую-то другую функцию, не связанную с передачей данных, иначе резистор не использовался бы.

Причины использования подтягивающего резистора на одной или нескольких линиях в интерфейсе SPI различаются в зависимости от предполагаемой ситуации. Некоторые ситуации, при которых используются подтягивающие резисторы, включают:

Easy, Powerful, Modern

The world’s most trusted PCB design system.

  • Размещение на линии CS для периферийного устройства
  • Размещение на линии MISO для хост-устройства
  • Размещение на линии MOSI для периферийного устройства
  • Размещение на всех линиях шины рядом с выходными контактами

Объяснение причин размещения в любой из этих ситуаций заключается в установлении логического состояния на одном из периферийных компонентов в шине. Наиболее распространенная рекомендация - разместить подтягивающий резистор на контакте CS периферийного устройства, чтобы подтянуть его к высокому уровню. Если у периферийного устройства есть активный низкий вход enable, то это всегда будет подтягивать контакт к высокому уровню, если только сторона драйвера не установит контакт в низкий уровень.

Пример такого использования показан ниже. На плате PCB резистор подтяжки должен быть размещен рядом с выводом CS этого периферийного устройства.

Типичное размещение резистора подтяжки на выводе CS шины SPI.

Почему это используется? Указанная причина заключается в том, что во время запуска системы вывод CS может находиться в любом состоянии и это создает риск, что шум может искажать данные на шине. Более того, если устройство-хост запускается раньше периферийного устройства и вывод CS становится активным непреднамеренно, хост может начать манипулировать данными в периферийном устройстве. Иногда это указывается как причина для установки подтягивающего резистора на периферийные устройства памяти.

На сегодняшний день я не могу найти убедительной причины для установки подтягивающего резистора на линию SCLK (часы). Причина в том, что логическая схема приемника не будет переключаться, если не выполнены другие условия (в частности, состояние линии CS), независимо от наличия сигнала тактовой частоты. Некоторые приложения и технические описания рекомендуют подтягивающие резисторы для MISO или MOSI по разным причинам, но проверить, работает ли это, просто, и резистор всегда можно отпаять, когда вы работаете с вашим прототипом.

Последовательное включение питания - более сложное решение

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

Независимо от того, нужно ли вам создать надежную электронику питания или передовые цифровые системы, используйте полный набор функций для проектирования печатных плат и мирового класса инструменты CAD в Altium Designer®. Для реализации сотрудничества в современной междисциплинарной среде инновационные компании используют платформу Altium 365™ для легкого обмена данными проектирования и запуска проектов в производство.

Мы только начали раскрывать возможности Altium Designer на Altium 365. Начните ваш бесплатный пробный период Altium Designer + Altium 365 сегодня.

Об авторе

Об авторе

Закарайа Петерсон (Zachariah Peterson) имеет обширный технический опыт в научных кругах и промышленности. До работы в индустрии печатных плат преподавал в Портлендском государственном университете. Проводил магистерское исследование на хемосорбционных газовых датчиках, кандидатское исследование – по теории случайной лазерной генерации. Имеет опыт научных исследований в области лазеров наночастиц, электронных и оптоэлектронных полупроводниковых приборов, систем защиты окружающей среды и финансовой аналитики. Его работа была опубликована в нескольких рецензируемых журналах и материалах конференций, и он написал сотни технических статей блогов по проектированию печатных плат для множества компаний.

Связанные ресурсы

Связанная техническая документация

Вернуться на главную
Thank you, you are now subscribed to updates.
Altium Need Help?