| Serial flasher config → Flash SPI mode |
|
| Добавил(а) microsin | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
В меню Serial flasher config → Flash SPI mode команды idf.py menuconfig можно выбрать один из 4 режимов подключения Flash SPI: ( ) QIO Режимы SPI flash отличаются количеством контактных линий для передачи данных и адреса, а также скоростью работы. Выбор режима влияет на производительность и зависит от возможностей вашей микросхемы flash памяти и платы. Для быстрого сравнения ознакомьтесь с таблицей:
Как работают режимы. В основе всех режимов лежит стандартный SPI, который использует отдельные линии для передачи данных от ведущего к ведомому (MOSI) и обратно (MISO). Более быстрые режимы задействуют эти линии иначе. - Dual SPI: линии MOSI и MISO превращаются в две равнозначные линии данных (D0, D1), что позволяет передавать по два бита за такт. - Quad SPI: для передачи данных используются уже четыре линии (D0, D1, D2, D3), что позволяет передавать четыре бита за такт. Для этого могут быть задействованы сигналы WP (Write Protect) и HOLD (Удержание) flash-чипа. Пример подключения W25Q128 к ESP32-S3:
Ключевое различие I/O против Output: режимы I/O (Input/Output) эффективнее, так как используют несколько линий не только для приема данных, но и для передачи адреса команды. Это ускоряет весь процесс чтения. В режимах Output адрес передается по одной линии, и только данные читаются по нескольким. DOUT - это режим работы SPI Flash, при котором данные на чтение передаются по двум линиям (IO0 и IO1), в то время как команда и адрес по-прежнему передаются по одной линии. Это следующий шаг после стандартного SPI, который значительно увеличивает скорость чтения. Эволюция интерфейсов: 1. Standard SPI: данные на вход и выход по одной линии (SI, SO) [Примеры популярных микросхем с поддержкой DOUT] 1. Winbond - W25X/W25Q Series Winbond является одним из самых популярных производителей SPI Flash, и многие их микросхемы поддерживают режим DOUT. Модель: W25X32 Модель: W25Q32 2. Macronix - MX25L Series Модель: MX25L3206E Модель: MX25L6406E 3. Micron - M25P Series Модель: M25P32 4. Spansion/Cypress - S25FL Series Модель: S25FL032P 5. GigaDevice - GD25 Series Модель: GD25Q32 [Сравнительная таблица примеров DOUT Flash]
[Как активировать режим DOUT?] Для использования режима DOUT необходимо: 1. Использовать специальную команду чтения для Dual Output режима 2. Команда чтения в режиме DOUT обычно имеет код 0x3B (Fast Read Dual Output) 3. Последовательность передачи: - Команда (1 байт) передается по SI Пример последовательности для DOUT: Команда: 0x3B (Fast Read Dual Output) Преимущества DOUT перед стандартным SPI: - В 2 раза выше скорость чтения по сравнению с Standard SPI [Скоростные характеристики]
[Когда использовать DOUT?] DOUT идеально подходит для: - Систем, где требуется повышенная скорость чтения Важные замечания: 1. Только для чтения - режим DOUT используется только для операций чтения Большинство современных SPI Flash микросхем поддерживают DOUT, что делает этот режим отличным компромиссом между скоростью и сложностью реализации. Даташиты на некоторые микросхемы Flash SPI DOUT см. в архиве [1]. QOUT - это режим работы SPI Flash, при котором данные на чтение передаются по четырем линиям (IO0-IO3), в то время как команда и адрес по-прежнему передаются по одной линии (MOSI). Это не то же самое, что полноценный QPI (Quad Peripheral Interface), где и команды, и адреса, и данные передаются по четырем линиям. Эволюция интерфейсов: 1. Standard SPI: данные на вход и выход по одной линии (SO, SI) [Примеры популярных микросхем с поддержкой QOUT] 1. Winbond - W25Q Series Winbond является одним из самых популярных производителей SPI Flash, и многие микросхемы их серии W25Q поддерживают режим QOUT. Модель: W25Q128JV Модель: W25Q256JV 2. Macronix - MX25L Series Macronix также предлагает широкий ассортимент SPI Flash с поддержкой Quad режимов. Модель: MX25L25645G Модель: MX25L51245G 3. Micron - MT25Q Series Micron (ранее Numonyx) производит высоконадежные SPI Flash микросхемы. Модель: MT25QL256ABA 4. Adesto (Renesas) - AT25 Series Модель: AT25SF641 [Сравнительная таблица примеров QOUT Flash]
[Как активировать режим QOUT?] Для использования режима QOUT необходимо: 1. Отправить специальную команду включения Quad режима (обычно команда `0x35` или `0x38`) Пример последовательности команд для QOUT: 1. Write Enable (0x06) Преимущества QOUT перед стандартным SPI: - В 4 раза выше скорость чтения по сравнению с Standard SPI [Когда использовать QOUT?] QOUT идеально подходит для: - Систем загрузки, где требуется быстрая загрузка прошивки Важные замечания: 1. QE (Quad Enable) бит должен быть установлен в регистре конфигурации перед использованием QOUT Большинство современных SPI Flash микросхем поддерживают QOUT, что делает этот режим отличным выбором для ускорения операций чтения без перехода на более сложные интерфейсы типа Octal SPI. Даташиты на некоторые микросхемы Flash SPI QOUT см. в архиве [1]. Практический выбор для ESP32-S3: - Начните с DIO: этот режим часто является самым надежным по умолчанию для прошивки и начальной загрузки, даже если в проекте затем активируется QIO. [Enable Octal Flash] Опция Enable Octal Flash (или CONFIG_ESPTOOLPY_OCT_FLASH) активирует поддержку работы с чипами внешней flash-памяти, которые используют высокоскоростной 8-битный интерфейс (OPI), что значительно увеличивает скорость обмена данными по сравнению со стандартным 4-битным (Quad SPI) режимом. Пример подключения MT35XU512 к ESP32-S3:
Что такое Octal Flash: это flash-память с 8-линейным (Octal) интерфейсом. Вместо традиционной передачи 1 или 4 бит за такт, такой чип может передавать 8 бит одновременно. В конфигурации ESP-IDF эта опция сообщает системе, что на вашей плате установлен именно такой чип. Главное преимущество такого подключения — многократное увеличение пропускной способности при работе с внешней памятью. Это критически важно для задач, требующих обработки больших объемов данных: распознавание речи и изображений, работа с графическими интерфейсами (LVGL), аудио-потоки. Совместная работа с PSRAM: часто высокоскоростная Octal flash используется в паре с Octal PSRAM, что позволяет создать мощную связку для хранения и выполнения ресурсоемких приложений. Активировать опцию можно командой idf.py menuconfig в разделе Serial flasher config. Чтобы избежать ошибок, важно понимать разницу между типами памяти. В таблице ниже сравниваются два основных типа:
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. Они часто используются в качестве загрузочной памяти в устройствах, требующих высокой скорости: маршрутизаторы, автомобильные системы, телевизоры, SSD-накопители (для хранения прошивки контроллера) и т.д. [Примеры микросхем по производителям] 1. Micron / Winbond Эти производители являются одними из лидеров на рынке. Модель: MT35 Series (от Micron) Модель: W25Q Series (от Winbond) 2. Macronix Macronix активно развивает эту технологию и предлагает решения с очень высокой скоростью. Модель: MX66U Series Модель: MX25U Series 3. Cypress (ныне часть Infineon) Cypress (ранее Spansion) — пионер в области высокоскоростной flash-памяти. Их интерфейс HyperFlash™ является фактическим стандартом для Octal SPI. Модель: S26KS Series (HyperFlash™) 4. Adesto (ныне часть Dialog Semiconductor, а затем Renesas) Модель: ATXP Series [Ключевые отличия и что искать в даташите] Когда вы ищете микросхему Octal Flash, обращайте внимание на следующие параметры в документации: 1. Интерфейс Octal SPI (иногда "OSPI"). 2. Режим передачи SDR (Single Data Rate): данные передаются только по одному фронту тактового импульса. 3. Тактовая частота: указывается в МГц. Для DDR скорость в МБайт/с = (Частота * 8 бит * 2) / 8 = Частота * 2. 4. Напряжение питания 3.0V - 3.6V (основной диапазон). 5. Тип памяти NOR Flash: Подавляющее большинство Octal-микросхем — это NOR. Они обеспечивают быстрый произвольный доступ, что необходимо для XIP. [Сравнительная таблица примеров]
Выбор конкретной микросхемы Octal SPI зависит от требований вашего проекта: - Для максимальной производительности и XIP смотрите в сторону Micron MT35 или Cypress HyperFlash. Перед выбором всегда проверяйте совместимость с вашим процессором или микроконтроллером, так как для работы с 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. |