QSPI (Quad SPI)
Флеш-память с программой обычно подключают к микроконтроллеру не обычным SPI, а Quad SPI: четыре линии данных вместо одной дают вчетверо больше данных за такт, и код можно исполнять прямо из памяти.
Обновлено Редакция GAW
QSPI (Quad SPI) — вариант шины SPI, в котором данные идут по четырём линиям одновременно. Его используют для микросхем флеш-памяти и PSRAM: за один такт передаётся четыре бита вместо одного, и процессор успевает исполнять программу прямо из внешней памяти — это XIP.
Одни и те же выводы памяти в разных режимах работают по-разному. По таблицам выводов даташитов ESP32-C3 и ESP32-S3:
| Вывод | Single SPI | Quad SPI | Octal SPI |
|---|---|---|---|
| CLK | такт | такт | такт |
| CS# | выбор кристалла | выбор кристалла | выбор кристалла |
| DI (SPID) | данные в память | линия 0 | DQ0 |
| DO (SPIQ) | данные из памяти | линия 1 | DQ1 |
| WP# (SPIWP) | защита от записи | линия 2 | DQ2 |
| HOLD# (SPIHD) | пауза | линия 3 | DQ3 |
| ещё 5 выводов | — | — | DQ4–DQ7, строб DQS |
В режиме Single SPI флеш-память работает как обычное устройство SPI. В Quad SPI сигналы WP# и HOLD# перестают быть служебными и становятся линиями данных. Octal SPI у ESP32-S3 добавляет ещё четыре линии данных и строб — это GPIO33–GPIO37.
Где встречается. У RP2040 и RP2350 программа хранится во внешней флеш-памяти Quad SPI, у ESP32-C3 и ESP32-S3 — во флеш-памяти в корпусе чипа или в модуле. Выводы, занятые памятью, на отладочных платах обычно не выводят, а если выводят — помечают как недоступные. У RP2350 шина QSPI поддерживает второе устройство: дополнительный выбор кристалла QMI CS1n на GPIO0, GPIO8 или GPIO19.
Режимы тактирования обычного SPI разобраны в термине «Режимы SPI».
Частые вопросы
Чем QSPI отличается от SPI?
Числом линий данных. В обычном SPI данные идут по двум линиям — одна туда, другая обратно. В Quad SPI четыре двунаправленные линии, и за такт передаётся четыре бита. По таблицам выводов Espressif в режиме Quad SPI линии WP# и HOLD# флеш-памяти превращаются в третью и четвёртую линии данных.
Зачем микроконтроллеру QSPI?
Чтобы быстро читать программу из внешней флеш-памяти. У RP2040, RP2350 и ESP32 программа хранится во внешней или встроенной в корпус флеш-памяти Quad SPI, и процессор исполняет код прямо из неё через кэш — это называют XIP.
Что такое Octal SPI?
Следующий шаг: восемь линий данных и строб данных DQS. По таблице выводов ESP32-S3 в этом режиме к выводам Quad SPI добавляются GPIO33–GPIO37, поэтому у модулей с октальной памятью эти выводы заняты.
Источники
- Espressif. ESP32-C3 Series Datasheet v2.4 — табл. 2-12 — выводы флеш-памяти в режимах Single, Dual и Quad SPI/QPI: SPICLK — CLK, SPICS0 — CS#, SPID — DI, SPIQ — DO, SPIWP — WP#, SPIHD — HOLD#
- Espressif. ESP32-S3 Series Datasheet v2.2 — табл. 2-14 — выводы флеш-памяти и PSRAM в режимах Single, Dual, Quad SPI/QPI и Octal SPI/OPI: в Quad SPI линии HOLD# и WP# становятся SIO3 и SIO2, в Octal SPI добавляются DQ4–DQ7 и DQS на GPIO33–GPIO37
- Raspberry Pi. RP2350 Datasheet — внешняя флеш-память Quad-SPI с исполнением на месте (XIP); QMI CS1n — второй выбор кристалла шины QSPI
Нашли ошибку?