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

 
 
 
Reply to this topicStart new topic
> Проблема с записью в SPI Flash SST25VF032B
KnightIgor
сообщение Jul 5 2013, 18:45
Сообщение #1


Знающий
****

Группа: Участник
Сообщений: 643
Регистрация: 29-05-09
Из: Германия
Пользователь №: 49 725



Привет, коллеги.

Не "пишется" в SST25VF032B.

Аппаратура проверена. Питание стабильное, 3,3V. Все другое на плате работает. Состояние ножек: #WP и #HOLD - затянуты в "1".
SPI работает на 24MHz, режим 0. Управление #CE - программное (процессор STM32F103VC). Код "драйвера" самой SPI проверен, т.к. использовался с SD-картой.

Что могу:
- прочесть регистр статуса (вначале было 0x1C, как и указано в доке).
- записать 0x00 в регистр статуса, чтобы сбросить биты защиты записи, и прочитать назад 0x00.
- прочитать RDID, получаю положенные 0xBF и 0x4A.
- прочитать содержимое, все 0xFF, потому не ясно пока, это данные или просто "подтянутый" SO.

Не могу:
- записать побайтно (команда 0x02).
- записать в режиме AAI (команда WREN, затем 0xAD AH AM AL D0 D1, и т.д., согласно докам).

Может есть какие-то незадокументированные штучки?

TIA.
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение Jul 5 2013, 19:17
Сообщение #2


фанат дивана
******

Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684



После команды WREN чипселект отпускаете?


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
alexdos
сообщение Jul 5 2013, 19:23
Сообщение #3


Местный
***

Группа: Участник
Сообщений: 339
Регистрация: 10-07-08
Из: Херсон
Пользователь №: 38 856



Для полной картины, нужна начальная инициализация SST25VF032B, а потом код где производится запись.
Go to the top of the page
 
+Quote Post
KnightIgor
сообщение Jul 6 2013, 10:03
Сообщение #4


Знающий
****

Группа: Участник
Сообщений: 643
Регистрация: 29-05-09
Из: Германия
Пользователь №: 49 725



Цитата(alexdos @ Jul 5 2013, 20:23) *
Для полной картины, нужна начальная инициализация SST25VF032B, а потом код где производится запись.

@AНTOXA - Да, отпускаю.

Послесловие: похоже, начало писаться. Во всяком случае, в режиме AAI. Причина одна: под рукой была "несвежая" документация. Скачал последнюю, обнаружил отличие: в новой сказано, что после цикла AAI и выдачи команды завершения/запрета записи (WRDI) надо еще выдавать команду запрета использования выхода SO как флага неготовности (код команды 0x80), если перед циклом выдавалась команда разрешения использования выхода SO (код команды 0x70) - мой случай был. В старой документации об этом не было речи, даже на картинке!

Продолжу задавать вопросы.
Вышеуказаная проблема возникла в рамках проекта, в котором я хочу использовать вышеуказаную память как FAT том в рамках Flash-FS KEIL.
Дело в том, что имеющиеся "драйверы" в Flash-FS для SPI Flash поддерживают только собственную упрощенную файловую систему EFS, а не FAT. Поэтому я пытаюсь приспособить SPI Flash под запросы NAND-драйвера, работающего по FAT, но даже после настройки записи в SST25VF032B результатов не добился: форматирование якобы идет, запросы на чтение и запись обрабатываются, но результат в буквальном смысле нулевой: форматирование завершается с ошибкой, размер тома остается равен нулю.

У меня есть подозрение, что это может быть как-то связано с дополнительными байтами к каждому блоку (кто спец по NAND - объясните). То есть, алгоритм работы с NAND нельзя 1:1 странслировать в обращения в SPI flash. Буду пытаться далее и надеяться на хинты с форума.

Сообщение отредактировал KnightIgor - Jul 6 2013, 10:05
Go to the top of the page
 
+Quote Post
KnightIgor
сообщение Jul 7 2013, 10:20
Сообщение #5


Знающий
****

Группа: Участник
Сообщений: 643
Регистрация: 29-05-09
Из: Германия
Пользователь №: 49 725



ДОПОЛНЕНИЕ от 07.07.2013:

Я разобрался как с SST25VF032B, так и с Flash-FS.

Для поддержки FAT на SPI flash я взял за основу "драйвер" SD-карты в режиме SDIO, но заглушил собственно драйвер SDIO и обслужил вызовы к драйверу FAT. Для этого пришлось минимально изменить File_lib.c (в каталоге \RV31\INC), а именно объявить __weak перед структурой "FAT_DRV mc1_drv" (mc0_drv используется у меня нормально для SD-карты), а саму структуру разместить в собственном коде и заполнить ее своими функциями. Остальное дело техники.

Кому интересно, могу рассказать подробнее.

Возможно, если напрячь FatFS, то таких заморочек не нужно (кое-что я уже пробовал с FatFS, даже запустил FAT на I2C EEPROM размером в 64KB), но уж так в проекте исторически сложилось, что используется Flash-FS от KEIL. Кстати, есть у кого исходники для Flash-FS более-менее последней версии?
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Jul 7 2013, 11:39
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



А не опасаетесь, что без wear leveling эта флеш под FAT долго не протянет?
Go to the top of the page
 
+Quote Post
KnightIgor
сообщение Jul 7 2013, 12:24
Сообщение #7


Знающий
****

Группа: Участник
Сообщений: 643
Регистрация: 29-05-09
Из: Германия
Пользователь №: 49 725



Цитата(aaarrr @ Jul 7 2013, 12:39) *
А не опасаетесь, что без wear leveling эта флеш под FAT долго не протянет?

Дело в том, что по идее проекта эта flash будет хранить настройки, сигнальные файлы и обновления, которые будут меняться редко. То есть, в основном она для чтения. Тем не менее я применил кэширование страниц (4К), чтобы при записи побайтно или посекторно (512 байт) не протирать всю страницу каждый раз. По идее можно было бы затянуть и EFS (упрощенную собственную файловую KEIL), но FAT задумана для того, чтобы сделать в итоге SPI flash видимой как Mass Storage для PC для записи "базы" данных при сборке системы и редких обновлений в процессе эксплуатации.
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 06:26
Рейтинг@Mail.ru


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