Когда программатор сообщает об ошибке стирания микросхемы GD25Q64, чаще всего виновата не сама память, а активная защита записи в статусных регистрах или нестабильный контакт в цепи WP#. Эта SPI Flash на 64 Мбит широко применяется в роутерах, видеорегистраторах, ТВ-приставках и материнских платах, и типовая ситуация выглядит одинаково: чтение проходит, идентификатор чипа определяется, а команда стирания завершается ошибкой или «проходит», но данные остаются на месте.

Разберём по порядку, какие проверки стоит выполнить в первую очередь, чем отличается программная блокировка от аппаратной и в каких случаях микросхему придётся признать неисправной.

Как устроено стирание GD25Q64 и почему оно блокируется

Микросхема GD25Q64 от GigaDevice — это serial NOR Flash с интерфейсом SPI. Стирание выполняется командами Sector Erase, Block Erase или Chip Erase, но любая из них сработает только при выполнении нескольких условий: выдана команда Write Enable, в статусных регистрах сняты биты защиты, а вывод WP# не прижат к земле.

Логика защиты двухуровневая. Программный уровень — это биты BP0–BP4 в статусном регистре, которые определяют, какая область памяти защищена от записи и стирания. Аппаратный уровень — выводы WP# и HOLD#: если WP# имеет низкий уровень, микросхема игнорирует команды записи и стирания независимо от содержимого регистров.

Отсюда главный вывод для диагностики: «не стирается» — это почти всегда следствие одной из трёх групп причин: защита в регистрах, проблема с питанием/контактами или неверные настройки программатора. Реже — выработанный ресурс циклов стирания или физический дефект кристалла.

Проверка статусных регистров и битов защиты

Первое, что нужно сделать при ошибке стирания, — считать статусные регистры и посмотреть состояние битов защиты. В популярных программах для программаторов (например, оболочки для CH341A или RT809) есть отдельная кнопка чтения регистров либо пункт меню типа Read Status Register.

Если биты BP установлены, память защищена: стирание будет молча игнорироваться или завершаться ошибкой. Решение — записать в регистры нулевые значения защиты через команду Write Status Register. В некоторых оболочках это делается через пункт вроде Unprotect или Clear BP bits.

  • 🔒 Считайте Status Register 1 и проверьте биты BP0–BP4 — ненулевые значения означают защиту областей памяти
  • 🔓 Проверьте бит SRP (Status Register Protect): если он выставлен, регистры могут быть заблокированы от изменения
  • 📊 Обратите внимание на бит WIP (Write In Progress): если он постоянно в единице, микросхема «зависла» в цикле записи — помогает полное отключение питания
  • ⚙️ После снятия защиты повторно считайте регистры и убедитесь, что изменения применились
💡

Перед любой записью в статусные регистры сохраните их исходные значения — это займёт секунду, но позволит вернуть конфигурацию, если что-то пойдёт не так.