На прошлом уроке мы научились работать с шиной SPI только на передачу данных, а сегодня мы уже попытаемся что-нибудь по данной шине принять от подключаемого устройства.
Как нельзя лучше для этой цели подойдёт микросхема FLASH-памяти семейства W25Q . Есть много других вариантов работы с шиной SPI на приём, но с данной микросхемой мы уже работали с применением контроллера STM32 и поэтому я считаю, что лучше идти уже по изученному, чем сталкиваться с кучей проблем.
Повторю некоторые характеристики данной микросхемы FLASH-памяти.
Потребляемая мощность и температурный диапазон:
- Напряжение питания 2.7…3.6 В
- Типичный потребляемый ток: 4 мА (активный режим),
- Рабочий температурный диапазон -40°C…+85°C.
Гибкая архитектура с секторами размером 4 кбайт:
- Посекторное стирание (размер каждого сектора 4 кбайт)
- Блочное стирание (32кбайт и 64 кбайт)
- Программирование от 1 до 256 байт
- До 100 тыс. циклов стирания/записи
- 20-летнее хранение данных
Максимальная частота работы микросхемы:
Tv RCA no encendía, se programo la memoria spi flash
- 104 МГц в режиме SPI
- 208/416 МГц — Dual / Quad SPI
Есть ещё много различных возможностей, но это самые основные.
Также микросхема существует в различных корпусах, но в большинстве случаев распространён корпус SMD SO8 .
Распиновка микросхемы следующая
Назначение каждого вывода:
Согласно распиновке схема у нас получится вот такая
Следует отметить, что микросхема W25Q устроена так же как FLASH-память у stm32, то есть память у неё разбита на страницы по 256 байт, страницы объединены в секторы по 4096 байт, а секторы в блоки по 65536 байт. Организацию памяти микросхемы можно посмотреть на схеме
Перед тем как что-то записать, нужно стереть сектор (4096 байт) или блок (65536 байт). Можно стереть несколько секторов или блоков, или весь чип полностью. Во время стирания ячейки заполняются значениями 0xFF.
Каким образом организован процесс стирания, а также чтения и записи микросхемы, мы разберём в дальнейших занятиях, а сегодня наша задача — подключить микросхему к контроллеру, настроить проект для организации кода работы контроллера с микросхемой и в качестве испытания считать некоторые данные из неё.
Поэтому мы пока не будем забивать себе голову изучением всех регистров и их битов данной микросхемы W25Q, так как их там очень много, а будем их изучать по мере их использования.
Я буду использовать микросхему 25Q32FVSIG в корпусе SMD SO8, в которой 32 мегабита памяти, которую я припаял на переходник SO8-DIP, а также распаял штырьевые линейки для удобства подключения к контроллеру, получилась вот такая табуреточка
Подключим нашу микросхему к отладочной плате, также для большего контроля за передачей данных подключим логический анализатор и в результате получим получим вот такую схему
Проект урока был сделан из проекта прошлого урока с именем и назван был SPI_25Q_INFO .
Whiteboard Wednesday: Memory Extraction from SPI Flash Devices
Прежде, чем открыть наш проект в среде программирования, в файл Kconfig.projbuild каталога main мы добавим ещё один пункт для ножки MISO
Файлы max7219.h и max7219.c переименуем соответственно в w25q_spi.h и w25q_spi.c , очистим их и пока они будут такого содержания:
UEFI- ПЗУ. Микросхемы SpiFlash памяти с интерфейсами SPI, Dual-SPI, Quad-SPI, QPI-SPI.
Существенным недостатком использования ПЗУ была и остается их низкая производительность. Ее помогает обойти только использование «теневой памяти» (Shadow RAM) в которую для ускорения доступа копируется BIOS (а теперь и UEFI). Поэтому появилась идея попытаться выполнить старт персональной платформы, полностью отказавшись от использования оперативной памяти.
Возможности современных реализаций флеш-памяти рассмотрены далее на примере чипа W25Q64FV, используемого для хранения кода UEFI BIOS. Компания Winbond, разработавшая этот чип, позиционирует его как устройство, способное выполнять программы непосредственно из исходного носителя. Данная технология получила название Execute In Place (XIP) и по идее должна заменить режим Shadow RAM.
Обычные м икросхемы SPI-Flash (рис. 1) используют 3 сигнала для приема/передачи данных:
— SCK (Serial Clock) – вход тактовой частоты;
— SI (Serial Input) – вход данных (побитно адрес/данные/коды команд);
-SO(Serial Output) – выход данных (побитно данные/состояние микросхемы). Обращение к ПЗУ BIOS начинается с выдачи активного низкого уровня сигнала на вход CE#.
Расширения SPI- протокола (Dual SPI, Quad SPI).
Режим Dual SPI увеличивает разрядность передаваемых данных от одного бита (классической реализации) до двух. Согласно документации, функциональность контактов микросхемы флеш-памяти переопределяется следующим образом:
— DI (Data Input, контакт 5) = IO0;
— DO (Data Output, контакт 2) = IO1.
В результате линии, образующие однобитовую двунаправленную шину, становятся шиной двухбитовой.
Режим Quad SPI увеличивает разрядность передаваемых данных до четырех. Согласно документации, функциональность контактов микросхемы переопределяется следующим образом:
— DI (Data Input, контакт 5) = IO0;
— DO (Data Output, контакт 2) = IO1;
— WP (Write Protect, контакт 3) = IO2;
— HOLD (State hold, контакт 7) = IO3.
Линии, образующие однобитовую двунаправленную шину и сигналы управления, переопределяются с использованием мультиплексирования в четырехбитовую шину (рис. 2).
SPI с указанными расширениями уже не является последовательным. Пропускная способность возрастает пропорционально увеличенной разрядности. Использование описанных функциональных расширений возможно только в том случае, если SPI хост-контроллер их поддерживает. Обычно, хост-контроллер входит в состав микросхемы PCH (Platform Controller Hub), либо находится в составе центрального процессора.
Рассматриваемые функциональные расширения являются программно-управляемыми. Серии микросхем памяти Winbond W25X и WQ имеют популярный последовательный периферийный интерфейс (SPI), плотности от 512 Кбит до 512 Мбит, небольшие стираемые сектора и самую высокую производительность. Семейство W25X поддерживает Dual-SPI, удваивая стандартные частоты SPI. Семейство W25Q является «надстройкой» семейства 25X с Dual-I/O и Quad-I/O SPI с еще большей производительностью.
Тактовые частоты до 104 МГц достигают эквивалента 416 МГц (со скоростью передачи данных 50 Мбайт/с) при использовании Quad-SPI. Это более чем в восемь раз превышает производительность обычной последовательно Flash памяти (50 МГц) и даже превосходит асинхронные параллельные Flash памяти при использовании меньшего количества выводов и меньшего места.
UEFI- ПЗУ. Микросхемы SpiFlash памяти с интерфейсом QPI-SPI.
Режим QPI (Quad Peripheral Interconnect) в чипе W25Q64FV по праву можно назвать XIP-оптимизацией. Он использует тот же набор сигналов, что и Quad SPI. Отличие в том, что в режиме QPI, увеличение разрядности шины в 4 раза затрагивает не только передачу адреса и данных, но и управляющих команд: 8-битная команда передается не за восемь, а за два такта (рис. 3).
В результате снижается латентность (минимизируется потеря времени на восприятие новой команды). Как было показано выше, латентность особенно важна для XIP при доступе к мелко-разбросанным данным.
Рис 3. Прием команды. Режим SPI (слева) и режим QPI (справа)
Для декларирования функциональных различий микросхема изменяет код идентификатора устройства (Device ID), если включен режим QPI (в режиме SPI, код Device а в режиме QPI, он становится равным 6017h).
Рассматриваемые функциональные расширения являются программно-управляемыми, желательно чтобы поддержка расширенной функциональности носителя firmware была реализована в составе процедур UEFI BIOS.
Источник: al-tm.ru
SPI и W25Q32 Serial Flash Memeory подключение.
Конкретные имена портов интерфейса SPI могут различаться в зависимости от производителя аппаратных средств, при этом возможны следующие варианты:
- MOSI: SIMO, SDO (на устройстве), DO, DON, SO, MRSR;
- MISO: SOMI, SDI (на устройстве), DI, DIN, SI, MTST;
- SCLK: SCK, CLK, SPC (SPI serial port clock);
- SS: nCS, CS, CSB, CSN, nSS, STE, SYNC.
Но в итоге получается что нужно подключать вот так:
Posted by admin at 10:58 Tagged with: SPI, W25Q32
Leave a Reply Cancel reply
Разделы
- Новости (129)
- Умный Дом (40)
- 3-Relay-Модуль (3)
- 5-Relay-Module (1)
- 8-Relay-Module-Tasmota (1)
- BIG-Tasmota (1)
- ESP32-GSM (2)
- Ethernet-Tasmota (2)
- SSR-4 (2)
- SSR-WS2812B (1)
- Пульт управления (2)
- ESP-ZigBee (2)
- ZigBee-SSR-Relay (2)
Arduino
- Применение Arduino
- tronixstuff.com
- student-proger.ru
AVR
- AVR Libc
- Радиолюбительские схемы и устройства на микроконтроллерах AVR
Источник: www.letsmakerobot.ru