Выбор кристалла (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 в режиме ведомого SPI | SS | низкий | включает 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 прямо называет выбор микросхем среди его назначений.
Источники
- 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 мкА
- Atmel. ATmega128/ATmega128L Datasheet (2467X–AVR–06/11) — разд. SPI — ведущий начинает обмен, опуская SS нужного ведомого, и поднимает его после пакета; ведомый при высоком SS не принимает данные, MISO в третьем состоянии, логика SPI сбрасывается; у ведущего вывод SS не управляется автоматически
- onsemi. MC74HC138A, MC74HCT138A: 1-of-8 Decoder/Demultiplexer (MC74HC138A/D, Rev. 14, March 2024) — три входа выбора кристалла (два активных низким, один высоким) для демультиплексирования, каскада и выбора микросхем
Нашли ошибку?