Перейти к содержанию

Выбор кристалла (Chip Select)

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

Обновлено Редакция GAW

Выбор кристалла (chip select, CS) — вход микросхемы, которым ведущее устройство сообщает: «обращаюсь к тебе». В интерфейсе SPI его называют SS (slave select), у памяти и логики встречаются CE (chip enable) и CS. Почти всегда он активен низким уровнем — в даташитах это обозначают чертой над названием или знаком # и n.

Зачем он нужен на общей шине:

  • Не мешать другим. Невыбранная микросхема отключает свой выход. По даташиту ATmega128 ведомый SPI при высоком SS не принимает данные, а MISO стоит в третьем состоянии — поэтому несколько ведомых могут делить одну линию MISO.
  • Синхронизировать кадр. Фронт CS отмечает начало и конец обмена. У ATmega128 подъём SS немедленно сбрасывает логику приёма и передачи и отбрасывает недопринятые биты — так ведомый восстанавливается после сбоя.
  • Управлять режимом. У АЦП MCP3008 вывод так и называется — CS/SHDN: низкий уровень начинает обмен, высокий завершает преобразование и переводит микросхему в дежурный режим с током 5 нА типично. Microchip требует поднимать CS между преобразованиями.
МикросхемаВходАктивный уровеньЧто делает
MCP3008 (Microchip)CS/SHDNнизкийначало обмена; высокий — конец и дежурный режим
ATmega128 в режиме ведомого SPISSнизкийвключает SPI; высокий — MISO отключён, логика сброшена
74HC138 (onsemi)CS1–CS3один высокий, два низкихразрешают дешифратор

У ведущего SPI вывод CS не управляется автоматически: по даташиту ATmega128 его переключает программа до начала и после конца обмена. Когда выводов для отдельных CS не хватает, их формирует дешифратор, например 74HC138: три адресные линии выбирают одну из восьми микросхем. Режимы тактирования SPI разобраны в статье о режимах SPI.

Частые вопросы

Что такое CS и SS в SPI?

Одно и то же: вход выбора ведомой микросхемы. CS — chip select, SS — slave select. Обычно он активен низким уровнем. По даташиту ATmega128 ведущий опускает SS нужного ведомого, обменивается данными и поднимает SS после пакета; невыбранный ведомый не принимает данные, а его выход MISO находится в третьем состоянии.

Можно ли держать CS всё время в нуле?

Если микросхема на шине одна — иногда можно, но многие микросхемы используют фронт CS для синхронизации. По даташиту MCP3008 высокий уровень на CS/SHDN завершает преобразование, и между преобразованиями CS обязательно поднимают. У ATmega128 в режиме ведомого подъём SS сбрасывает логику SPI и счётчик битов.

Как подключить несколько устройств SPI?

Линии SCK, MOSI и MISO общие, а у каждой микросхемы свой провод CS от отдельного вывода микроконтроллера. Если выводов не хватает, CS формирует дешифратор: например, 74HC138 по трём адресным линиям выбирает одну из восьми микросхем, а onsemi прямо называет выбор микросхем среди его назначений.

Источники

  1. Microchip. MCP3004/3008: 2.7V 4-Channel/8-Channel 10-Bit A/D Converters with SPI Serial Interface (DS20001295E, 2022) — разд. 3.7 — низкий уровень на CS/SHDN начинает обмен, высокий завершает преобразование и переводит АЦП в дежурный режим; между преобразованиями CS обязательно поднимают; ток в дежурном режиме 5 нА типично, до 2 мкА
  2. Atmel. ATmega128/ATmega128L Datasheet (2467X–AVR–06/11) — разд. SPI — ведущий начинает обмен, опуская SS нужного ведомого, и поднимает его после пакета; ведомый при высоком SS не принимает данные, MISO в третьем состоянии, логика SPI сбрасывается; у ведущего вывод SS не управляется автоматически
  3. onsemi. MC74HC138A, MC74HCT138A: 1-of-8 Decoder/Demultiplexer (MC74HC138A/D, Rev. 14, March 2024) — три входа выбора кристалла (два активных низким, один высоким) для демультиплексирования, каскада и выбора микросхем

Нашли ошибку?