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

QSPI (Quad SPI)

Флеш-память с программой обычно подключают к микроконтроллеру не обычным SPI, а Quad SPI: четыре линии данных вместо одной дают вчетверо больше данных за такт, и код можно исполнять прямо из памяти.

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

QSPI (Quad SPI) — вариант шины SPI, в котором данные идут по четырём линиям одновременно. Его используют для микросхем флеш-памяти и PSRAM: за один такт передаётся четыре бита вместо одного, и процессор успевает исполнять программу прямо из внешней памяти — это XIP.

Одни и те же выводы памяти в разных режимах работают по-разному. По таблицам выводов даташитов ESP32-C3 и ESP32-S3:

ВыводSingle SPIQuad SPIOctal SPI
CLKтакттакттакт
CS#выбор кристаллавыбор кристаллавыбор кристалла
DI (SPID)данные в памятьлиния 0DQ0
DO (SPIQ)данные из памятилиния 1DQ1
WP# (SPIWP)защита от записилиния 2DQ2
HOLD# (SPIHD)паузалиния 3DQ3
ещё 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, поэтому у модулей с октальной памятью эти выводы заняты.

Источники

  1. 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#
  2. 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
  3. Raspberry Pi. RP2350 Datasheet — внешняя флеш-память Quad-SPI с исполнением на месте (XIP); QMI CS1n — второй выбор кристалла шины QSPI

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