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

Не получается соединить STM32L152 и N25Q128!

Всем доброго времени суток.

 

Работаю с N25Q256 по интерфейсу SPI extended.

Идентификатор микросхемы командой READ ID считывается верно. Пытаюсь записать/читать в память. Для этого ставлю выставляю бит Write Enable в статусном регистре. Проверяю - бит установлен. Пишу массив из 32-х байт по нулевому адресу. Последующее считывание статусного регистра показывает, что бит занятости (busy) устанавливается на какое-то время, т.е. команда выполняется. После того, как бит занятости сбрасывается, пытаюсь считать эти же 32 байта по нулевому адресу. Считываются нули. Собственно в этом и проблема.

 

При этом, если перед командой чтения, проверить статусный регистр, то выяснится, что бит Write Enable там уже сброшен. Как будто его нужно выставлять перед каждой записью.

Можно было бы предположить, что после команды записи, SPI перестает правильно все читать: и статусный регистр, и данные. Но при этом команда READ ID правильно считывает идентификатор девайса, т.е. она не поломалась.

 

В общем такие пироги. Буду благодарен за помощь в разрешении вопроса.

Прошу простить за вопрос - а перед записью данных в сектор 0 (вероятно, командой программирования страницы Page Program 0x02) Вы сектор очищаете (стираете) командой Sector Erase 0x20? Или Вы в этот сектор еще никогда не записывали и считается, что сектор чист?

Действительно, бит Write Enable сбрасывается аппаратно после КАЖДОЙ операции записи/программирования или стирания. Т.е. перед каждой операцией записи/программирования/стирания нужно посылать команду Write Enable 0x06.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Считываются нули. Собственно в этом и проблема.

Видимо сектор надо было предварительно стереть.

 

Как будто его нужно выставлять перед каждой записью.

Так и есть. Почитайте даташит на чип.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Прошу простить за вопрос - а перед записью данных в сектор 0 (вероятно, командой программирования страницы Page Program 0x02) Вы сектор очищаете (стираете) командой Sector Erase 0x20? Или Вы в этот сектор еще никогда не записывали и считается, что сектор чист?

Я только стер всю флеш командой Bulk Erase. Думал, что этого достаточно. Я вообще не думал, что это необходимо - в доке вроде указаний на то, что обязательно стирать перед записью нет. Там только везде напоминают, что Write Enable надо выставить.

 

Попробую стереть предварительно, отпишусь, что получится. Спасибо за совет.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Да, действительно, после предварительного стирания командой Sector Erase 0x20 все заработало. Большое спасибо за помощь!)

Изменено пользователем RoadRunner

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...