Serial flasher config → Flash SPI mode Печать
Добавил(а) microsin   

В меню Serial flasher config → Flash SPI mode команды idf.py menuconfig можно выбрать один из 4 режимов подключения Flash SPI:

( ) QIO
( ) QOUT
(X) DIO
( ) DOUT

Режимы SPI flash отличаются количеством контактных линий для передачи данных и адреса, а также скоростью работы. Выбор режима влияет на производительность и зависит от возможностей вашей микросхемы flash памяти и платы.

Для быстрого сравнения ознакомьтесь с таблицей:

Режим Название Сигналы Скорость (относительно QIO) Лучше всего подходит для
QIO Quad I/O 4 линии для адреса и данных Самая высокая Платы с полной разводкой и поддерживаемыми flash-чипами
QOUT Quad Output 4 линии только для данных ~ На 15% медленнее Flash-чипы, не поддерживающие QIO
DIO Dual I/O 2 линии для адреса и данных ~ На 45% медленнее Проблемные платы; надежная замена QIO
DOUT Dual Output 2 линии только для данных ~ На 50% медленнее Устаревшие или ограниченные flash-чипы

Как работают режимы. В основе всех режимов лежит стандартный SPI, который использует отдельные линии для передачи данных от ведущего к ведомому (MOSI) и обратно (MISO). Более быстрые режимы задействуют эти линии иначе.

    - Dual SPI: линии MOSI и MISO превращаются в две равнозначные линии данных (D0, D1), что позволяет передавать по два бита за такт.

    - Quad SPI: для передачи данных используются уже четыре линии (D0, D1, D2, D3), что позволяет передавать четыре бита за такт. Для этого могут быть задействованы сигналы WP (Write Protect) и HOLD (Удержание) flash-чипа.

Пример подключения W25Q128 к ESP32-S3:

ESP32 S3 W25Q128

Ключевое различие I/O против Output: режимы I/O (Input/Output) эффективнее, так как используют несколько линий не только для приема данных, но и для передачи адреса команды. Это ускоряет весь процесс чтения. В режимах Output адрес передается по одной линии, и только данные читаются по нескольким.

DOUT - это режим работы SPI Flash, при котором данные на чтение передаются по двум линиям (IO0 и IO1), в то время как команда и адрес по-прежнему передаются по одной линии. Это следующий шаг после стандартного SPI, который значительно увеличивает скорость чтения.

Эволюция интерфейсов:

1. Standard SPI: данные на вход и выход по одной линии (SI, SO)
2. DOUT (Dual Output): данные на чтение по двум линиям (IO0, IO1)
3. DIO (Dual I/O): команды, адреса и данные по двум линиям
4. QOUT (Quad Output): данные на чтение по четырем линиям
5. QIO (Quad I/O): Полностью 4-проводный интерфейс

[Примеры популярных микросхем с поддержкой DOUT]

1. Winbond - W25X/W25Q Series

Winbond является одним из самых популярных производителей SPI Flash, и многие их микросхемы поддерживают режим DOUT.

Модель: W25X32
Объем: 32 Мбит (4 МБ)
Интерфейсы: Standard SPI, DOUT
Скорость в DOUT: До 80 МГц = 20 МБайт/с
Особенности: классическая модель, хорошая совместимость

Модель: W25Q32
Объем: 32 Мбит (4 МБ)
Интерфейсы: Standard SPI, DOUT, Dual SPI, Quad SPI
Скорость в DOUT: до 104 МГц = 26 МБайт/с
Особенности: более новая версия с поддержкой всех современных режимов

2. Macronix - MX25L Series

Модель: MX25L3206E
Объем: 32 Мбит (4 МБ)
Интерфейсы: SPI, DOUT, Dual I/O
Скорость в DOUT: до 86 МГц = 21.5 МБайт/с
Особенности: надежная работа, промышленный температурный диапазон

Модель: MX25L6406E
Объем: 64 Мбит (8 МБ)
Интерфейсы: SPI, DOUT, Dual I/O
Скорость в DOUT: до 86 МГц = 21.5 МБайт/с
Особенности: удвоенный объем при сохранении характеристик

3. Micron - M25P Series

Модель: M25P32
Объем: 32 Мбит (4 МБ)
Интерфейсы: Standard SPI, DOUT
Скорость в DOUT: до 50 МГц = 12.5 МБайт/с
Особенности: проверенная временем надежность

4. Spansion/Cypress - S25FL Series

Модель: S25FL032P
Объем: 32 Мбит (4 МБ)
Интерфейсы: SPI, DOUT, Dual I/O
Скорость в DOUT: до 104 МГц = 26 МБайт/с
Особенности: высокая производительность, автомобильный класс

5. GigaDevice - GD25 Series

Модель: GD25Q32
Объем: 32 Мбит (4 МБ)
Интерфейсы: SPI, DOUT, Dual SPI, Quad SPI
Скорость в DOUT: до 104 МГц = 26 МБайт/с
Особенности: хорошее соотношение цена/качество, популярна в Китае

[Сравнительная таблица примеров DOUT Flash]

Производитель Модель Объем Макс. скорость DOUT Особенности
Winbond W25X32 32 Мбит (4 мегабайта) 20 МБайт/с Классическая модель
W25Q32 26 МБайт/с Полная поддержка всех режимов
Macronix MX25L3206E 32 Мбит (4 мегабайта) 21.5 МБайт/с Промышленный температурный диапазон
MX25L6406E Больший объем
Micron M25P32 32 Мбит (4 мегабайта) 12.5 МБайт/с Проверенная надежность
Spansion S25FL032P 32 Мбит (4 мегабайта) 26 МБайт/с Высокая производительность
GigaDevice GD25Q32 32 Мбит (4 мегабайта) 26 МБайт/с Бюджетное решение

[Как активировать режим DOUT?]

Для использования режима DOUT необходимо:

1. Использовать специальную команду чтения для Dual Output режима

2. Команда чтения в режиме DOUT обычно имеет код 0x3B (Fast Read Dual Output)

3. Последовательность передачи:

   - Команда (1 байт) передается по SI
   - Адрес (3 байта) передается по SI
   - Данные читаются одновременно по IO0 и IO1

Пример последовательности для DOUT:

Команда: 0x3B (Fast Read Dual Output)
Адрес: 3 байта [A23-A16][A15-A8][A7-A0]
Dummy cycles: 1-8 тактов (зависит от микросхемы)
Данные: читаются по IO0 и IO1

Преимущества DOUT перед стандартным SPI:

- В 2 раза выше скорость чтения по сравнению с Standard SPI
- Обратная совместимость со стандартным SPI
- Простота реализации - не требует сложной конфигурации
- Широкая поддержка практически всеми современными микроконтроллерами

[Скоростные характеристики]

Режим Линии данных Скорость (при 80 МГц) Пропускная способность
Standard SPI 1 80 Мбит/с 10 МБайт/с
DOUT 2 160 Мбит/с 20 МБайт/с
DIO 2 160 Мбит/с 20 МБайт/с
QOUT 4 320 Мбит/с 40 МБайт/с

[Когда использовать DOUT?]

DOUT идеально подходит для:

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

Важные замечания:

1. Только для чтения - режим DOUT используется только для операций чтения
2. Запись всегда через SI - операции записи выполняются через стандартную линию SI
3. Dummy cycles - требуются дополнительные такты для внутренней работы памяти
4. Проверьте даташит - конкретные команды и количество dummy cycles могут отличаться

Большинство современных SPI Flash микросхем поддерживают DOUT, что делает этот режим отличным компромиссом между скоростью и сложностью реализации. Даташиты на некоторые микросхемы Flash SPI DOUT см. в архиве [1].

QOUT - это режим работы SPI Flash, при котором данные на чтение передаются по четырем линиям (IO0-IO3), в то время как команда и адрес по-прежнему передаются по одной линии (MOSI). Это не то же самое, что полноценный QPI (Quad Peripheral Interface), где и команды, и адреса, и данные передаются по четырем линиям.

Эволюция интерфейсов:

1. Standard SPI: данные на вход и выход по одной линии (SO, SI)
2. Dual SPI: данные на чтение и запись по двум линиям (IO0, IO1)  
3. QOUT (Quad Output): данные только на чтение по четырем линиям
4. QIO (Quad I/O): данные на чтение и запись по четырем линиям
5. QPI (Quad Peripheral Interface): полностью 4-линейный интерфейс

[Примеры популярных микросхем с поддержкой QOUT]

1. Winbond - W25Q Series

Winbond является одним из самых популярных производителей SPI Flash, и многие микросхемы их серии W25Q поддерживают режим QOUT.

Модель: W25Q128JV
Объем: 128 Мбит (16 МБ)
Интерфейсы: Standard SPI, Dual SPI, QOUT, QIO, QPI
Скорость в QOUT: до 80 МГц = 40 МБайт/с
Особенности: одна из самых распространенных микросхем на рынке. Поддержка всех современных режимов.

Модель: W25Q256JV
Объем: 256 Мбит (32 МБ)
Интерфейсы: Standard SPI, Dual SPI, QOUT, QIO, QPI
Скорость в QOUT: До 80 МГц = 40 МБайт/с
Особенности: больший объем при сохранении совместимости с предыдущими моделями.

2. Macronix - MX25L Series

Macronix также предлагает широкий ассортимент SPI Flash с поддержкой Quad режимов.

Модель: MX25L25645G
Объем: 256 Мбит (32 МБ)
Интерфейсы: SPI, Dual SPI, QOUT, QIO
Скорость в QOUT: до 80 МГц = 40 МБайт/с
Особенности: высокая надежность, широкий температурный диапазон.

Модель: MX25L51245G
Объем: 512 Мбит (64 МБ)
Интерфейсы: SPI, Dual SPI, QOUT, QIO
Скорость в QOUT: до 80 МГц = 40 МБайт/с
Особенности: один из самых больших объемов в серии MX25L.

3. Micron - MT25Q Series

Micron (ранее Numonyx) производит высоконадежные SPI Flash микросхемы.

Модель: MT25QL256ABA
Объем: 256 Мбит (32 МБ)
Интерфейсы: SPI, Dual SPI, QOUT, QIO
Скорость в QOUT: до 80 МГц = 40 МБайт/с
Особенности: Поддержка 4-байтной адресации, высокая производительность.

4. Adesto (Renesas) - AT25 Series

Модель: AT25SF641
Объем: 64 Мбит (8 МБ)
Интерфейсы: SPI, Dual SPI, QOUT
Скорость в QOUT: до 66 МГц = 33 МБайт/с
Особенности: фокус на низкое энергопотребление для IoT устройств.

[Сравнительная таблица примеров QOUT Flash]

Производитель Модель Объем Макс. скорость QOUT Особенности
Winbond W25Q128JV 128 Мбит (16 мегабайт) 40 МБайт/с Самая популярная, полная поддержка Quad
W25Q256JV 256 Мбит (32 мегабайта) Больший объем, обратная совместимость
Macronix MX25L25645G 256 Мбит (32 мегабайта) 40 МБайт/с Высокая надежность
MX25L51245G 512 Мбит (64 мегабайта) Больший объем
Micron MT25QL256ABA 256 Мбит (32 мегабайта) 40 МБайт/с Промышленные применения
Adesto AT25SF641 64 Мбит (8 мегабайт) 33 МБайт/с Высокая производительность

[Как активировать режим QOUT?]

Для использования режима QOUT необходимо:

1. Отправить специальную команду включения Quad режима (обычно команда `0x35` или `0x38`)
2. Установить соответствующие биты в регистрах конфигурации
3. Для чтения данных использовать команды Quad Output Read (например, `0x6B`)

Пример последовательности команд для QOUT:

1. Write Enable (0x06)
2. Write Status Register (0x01) - установить биты для QE (Quad Enable)
3. Quad Output Read (0x6B) - команда чтения в режиме QOUT

Преимущества QOUT перед стандартным SPI:

- В 4 раза выше скорость чтения по сравнению с Standard SPI
- Обратная совместимость с контроллерами, не поддерживающими полноценный QPI
- Простота реализации - не требуется переводить всю микросхему в Quad режим

[Когда использовать QOUT?]

QOUT идеально подходит для:

- Систем загрузки, где требуется быстрая загрузка прошивки
- Приложений с преимущественно операциями чтения
- Проектов, где важна обратная совместимость со старыми контроллерами
- Устройств с ограниченными выводами микроконтроллера

Важные замечания:

1. QE (Quad Enable) бит должен быть установлен в регистре конфигурации перед использованием QOUT
2. Проверьте даташит - конкретные команды и биты конфигурации могут отличаться у разных производителей
3. Настройка задержки - может потребоваться настройка dummy cycles для оптимальной работы

Большинство современных SPI Flash микросхем поддерживают QOUT, что делает этот режим отличным выбором для ускорения операций чтения без перехода на более сложные интерфейсы типа Octal SPI. Даташиты на некоторые микросхемы Flash SPI QOUT см. в архиве [1].

Практический выбор для ESP32-S3:

    - Начните с DIO: этот режим часто является самым надежным по умолчанию для прошивки и начальной загрузки, даже если в проекте затем активируется QIO.
    - Перейдите на QIO для скорости: если ваша плата и flash-чип поддерживают Quad SPI (все необходимые выводы подключены, а чип из списка поддерживаемых, например, от ISSI, GD, Winbond или MXIC), смело выбирайте QIO в menuconfig для максимальной производительности готового устройства.
    - Проверьте поддержку железа: Режимы QIO/QOUT могут не работать, если на плате не подключены выводы WP и HOLD flash-чипа или если сам чип их не поддерживает.

[Enable Octal Flash]

Опция Enable Octal Flash (или CONFIG_ESPTOOLPY_OCT_FLASH) активирует поддержку работы с чипами внешней flash-памяти, которые используют высокоскоростной 8-битный интерфейс (OPI), что значительно увеличивает скорость обмена данными по сравнению со стандартным 4-битным (Quad SPI) режимом.

Пример подключения MT35XU512 к ESP32-S3:

ESP32 S3 MT35XU512

Что такое Octal Flash: это flash-память с 8-линейным (Octal) интерфейсом. Вместо традиционной передачи 1 или 4 бит за такт, такой чип может передавать 8 бит одновременно. В конфигурации ESP-IDF эта опция сообщает системе, что на вашей плате установлен именно такой чип. Главное преимущество такого подключения — многократное увеличение пропускной способности при работе с внешней памятью. Это критически важно для задач, требующих обработки больших объемов данных: распознавание речи и изображений, работа с графическими интерфейсами (LVGL), аудио-потоки.

Совместная работа с PSRAM: часто высокоскоростная Octal flash используется в паре с Octal PSRAM, что позволяет создать мощную связку для хранения и выполнения ресурсоемких приложений.

Активировать опцию можно командой idf.py menuconfig в разделе Serial flasher config.

Чтобы избежать ошибок, важно понимать разницу между типами памяти. В таблице ниже сравниваются два основных типа:

Аспект Quad SPI Flash (F4Rx) Octal Flash (F8Rx)
Интерфейс 4-битный 8-битный
Скорость Стандартная, ниже Высокая, может в 2 раза превышать Quad SPI
Типичные модули (на примере ESP32-S3) ESP32-S3-WROOM-1, ESP32-S3-MINI-1 ESP32-S3-WROOM-2

Octal SPI Flash это развитие стандартной SPI Flash (Serial Peripheral Interface). Если классическая SPI использует 4 линии для данных (SI, SO, WP#, HOLD#), а в режиме Quad SPI — все 4 линии для передачи данных, то Octal SPI использует 8 линий данных (IO0-IO7) для передачи.

Основные преимущества:

- Высокая скорость: скорость передачи данных может достигать 400 МБайт/с и выше, что в 4-8 раз быстрее, чем у обычной NOR Flash.
- Широкая шина: 8 бит за такт вместо 1 или 4.
- XIP (Execute-In-Place): позволяет процессору исполнять код напрямую из flash-памяти, без предварительной загрузки в оперативную память, что критично для высокопроизводительных встроенных систем.

Они часто используются в качестве загрузочной памяти в устройствах, требующих высокой скорости: маршрутизаторы, автомобильные системы, телевизоры, SSD-накопители (для хранения прошивки контроллера) и т.д.

[Примеры микросхем по производителям]

1. Micron / Winbond

Эти производители являются одними из лидеров на рынке.

Модель: MT35 Series (от Micron)
Пример: MT35XU512ABA1G12
Объем: 512 Мбит (64 МБ)
Интерфейс: Octal SPI (x8 DDR)
Скорость: lо 200 МГц (DDR) = 400 МБайт/с
Особенности: gоддержка режима XIP, низкое энергопотребление, высокая надежность. Часто используется в сетевом оборудовании и автомобильной электронике.

Модель: W25Q Series (от Winbond)
Пример: W25Q256JWDIQ / W25Q01JVEIQ
Объем: 256 Мбит (32 МБ) и 1 Гбит (128 МБ) соответственно.
Интерфейс: Quad SPI / Dual SPI, но с поддержкой QPI (Quad Peripheral Interface) и команд для ускоренной работы. Некоторые модели в этой линейке имеют режимы, близкие к Octal.
Скорость: до 166 МГц (в режиме QPI) = ~80 МБайт/с.
Особенности: очень популярная серия благодаря надежности и доступности. Winbond также имеет более новые серии (например, W74M), которые являются полноценными Octal Flash.

2. Macronix

Macronix активно развивает эту технологию и предлагает решения с очень высокой скоростью.

Модель: MX66U Series
Пример: MX66U2G45GXDI00
Объем: 2 Гбита (256 МБ)
Интерфейс: Octal DDR SPI
Скорость: до 200 МГц (DDR) = 400 МБайт/с
Особенности: один из самых больших объемов в классе Octal SPI NOR Flash. Идеально для хранения и исполнения сложной прошивки и графических данных.

Модель: MX25U Series
Пример: MX25UM51345GXDI00
Объем: 512 Мбит (64 МБ)
Интерфейс: Octal DDR SPI
Скорость: до 166 МГц (DDR) = 332 МБайт/с
Особенности: поддержка HyperBus (об этом ниже), что делает их совместимыми с широким спектром процессоров.

3. Cypress (ныне часть Infineon)

Cypress (ранее Spansion) — пионер в области высокоскоростной flash-памяти. Их интерфейс HyperFlash™ является фактическим стандартом для Octal SPI.

Модель: S26KS Series (HyperFlash™)
Пример: S26KS512SDPBHI020
Объем: 512 Мбит (64 МБ)
Интерфейс: HyperBus™ (который использует 8-битную шину данных + сигналы дифференциальных тактовых импульсов)
Скорость: до 166 МГц (DDR) = 332 МБайт/с
Особенности: специально разработан для режима XIP. Широко используется в промышленных и автомобильных применениях. HyperBus — это не "чистый" SPI, а более продвинутый протокол, построенный на той же физической 8-битной шине.

4. Adesto (ныне часть Dialog Semiconductor, а затем Renesas)

Модель: ATXP Series
Пример: ATXP032
Объем: 32 Мбит (4 МБ)
Интерфейс: Octal SPI
Скорость: до 80 МГц (SDR) = 80 МБайт/с.
Особенности: фокус на низкое энергопотребление и надежность для IoT-устройств.

[Ключевые отличия и что искать в даташите]

Когда вы ищете микросхему Octal Flash, обращайте внимание на следующие параметры в документации:

1. Интерфейс

Octal SPI (иногда "OSPI").
HyperFlash™ (Cypress/Infineon).
OctaFlash (Macronix).

2. Режим передачи

SDR (Single Data Rate): данные передаются только по одному фронту тактового импульса.
DDR (Double Data Rate): данные передаются и по фронту, и по спаду тактового импульса. DDR — это то, что дает максимальную производительность.

3. Тактовая частота: указывается в МГц. Для DDR скорость в МБайт/с = (Частота * 8 бит * 2) / 8 = Частота * 2.

4. Напряжение питания

3.0V - 3.6V (основной диапазон).
1.7V - 2.0V (для низковольтных систем).
1.65V - 3.6V (широкий диапазон).

5. Тип памяти

NOR Flash: Подавляющее большинство Octal-микросхем — это NOR. Они обеспечивают быстрый произвольный доступ, что необходимо для XIP.
NAND Flash: Существуют и Octal NAND решения (например, от Micron), но они используются для последовательного хранения больших объемов данных, а не для исполнения кода.

[Сравнительная таблица примеров]

Производитель Модель Объем Интерфейс Макс. скорость Ключевая особенность
Micron MT35XU512ABA1G12 512 Мбит (64 мегабайта) Octal DDR SPI 400 МБайт/с Высокая надежность, XIP
Macronix MX66U2G45GXDI00 2 Гбита (256 мегабайт) Очень большой объем
Cypress S26KS512SDPBHI020 512 Мбит (64 мегабайта) HyperBus 332 МБайт/с Стандарт HyperFlash, XIP
Winbond W25Q256JWDIQ 256 Мбит (32 мегабайта) Quad SPI ~80 МБайт/с Популярность, доступность

Выбор конкретной микросхемы Octal SPI зависит от требований вашего проекта:

- Для максимальной производительности и XIP смотрите в сторону Micron MT35 или Cypress HyperFlash.
- Для больших объемов данных рассматривайте Macronix MX66U.
- Для бюджетных решений, где достаточно высокой скорости Quad SPI, подойдут Winbond W25Q.

Перед выбором всегда проверяйте совместимость с вашим процессором или микроконтроллером, так как для работы с Octal SPI требуется аппаратная поддержка этого интерфейса на стороне хоста.

Даташиты на некоторые микросхемы Octal Flash SPI см. в архиве [1].

Важные предупреждения и частые ошибки:

- Самая распространенная ошибка — активировать `Enable Octal Flash` на плате с обычной Quad flash. Это приведет к ошибке на этапе загрузки, так как система не сможет найти и проинициализировать ожидаемый чип памяти.

- Проверка eFuse: для работы Octal flash на аппаратном уровне должен быть записан специальный eFuse-бит `FLASH_TYPE`. На модулях от Espressif (например, WROOM-2) это делается на производстве. Если вы собираете собственную плату, может потребоваться записать этот бит самостоятельно командой `idf.py efuse-burn FLASH_TYPE 1`. Помните, что эта операция необратима.

- Типичные симптомы ошибки: если вы столкнулись с ошибками `Octal Flash option selected, but EFUSE not configured!` или `Detected MXIC Flash, but memory type is not Octal` — первым делом проверьте, тот ли тип памяти вы выбрали в menuconfig.

[Ссылки]

1. 251124ESP32-SPI-Flash.zip - даташиты на различные микросхемы памяти SPI Flash.