реклама на сайте
подробности

 
 
4 страниц V  « < 2 3 4  
Reply to this topicStart new topic
> Не получается соединить STM32L152 и N25Q128!
TrestConsom
сообщение Oct 4 2017, 05:12
Сообщение #46





Группа: Участник
Сообщений: 12
Регистрация: 27-01-17
Пользователь №: 95 180



Цитата(RoadRunner @ Oct 3 2017, 19:58) *
Всем доброго времени суток.

Работаю с 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.
Go to the top of the page
 
+Quote Post
jcxz
сообщение Oct 4 2017, 05:23
Сообщение #47


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(RoadRunner @ Oct 3 2017, 20:58) *
Считываются нули. Собственно в этом и проблема.

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

Цитата(RoadRunner @ Oct 3 2017, 20:58) *
Как будто его нужно выставлять перед каждой записью.

Так и есть. Почитайте даташит на чип.
Go to the top of the page
 
+Quote Post
RoadRunner
сообщение Oct 4 2017, 08:31
Сообщение #48


Частый гость
**

Группа: Участник
Сообщений: 136
Регистрация: 13-05-11
Пользователь №: 64 972



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

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

Попробую стереть предварительно, отпишусь, что получится. Спасибо за совет.
Go to the top of the page
 
+Quote Post
RoadRunner
сообщение Oct 9 2017, 09:48
Сообщение #49


Частый гость
**

Группа: Участник
Сообщений: 136
Регистрация: 13-05-11
Пользователь №: 64 972



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

Сообщение отредактировал RoadRunner - Oct 9 2017, 09:48
Go to the top of the page
 
+Quote Post

4 страниц V  « < 2 3 4
Reply to this topicStart new topic
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 21st July 2025 - 13:47
Рейтинг@Mail.ru


Страница сгенерированна за 0.01374 секунд с 7
ELECTRONIX ©2004-2016