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

Проблема с NAND Flash

Есть память - NAND Flash (TC58CVG2S0HxAIx). Я пишу на нее логи и потом читаю.

Иногда при чтении я получаю битый байт.

например

до записи в память - 0x09  после чтения из памяти - 0x01

до записи в память - 0x02  после чтения из памяти - 0x00

то есть один бит единичка становиться ноликом, что вобщем то логично, флэш пишется обнулением единичек.

 

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

Но я заметил что если я пишу всю страницу целиком то такого не происходит. По крайней мере до сих пор не видел. А если я пишу на страницу частями то проблема проявляется.

Кто нибудь встречал такую проблему?

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


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

1 hour ago, Pengozoid said:

А читаете сразу после записи или через какое-то время?

через время.
если верить спецификации -  Programming Time 450 µs/page. я читаю в гораздо более длинные интервалы.

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

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


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

27 minutes ago, jenya7 said:

Но я заметил что если я пишу всю страницу целиком то такого не происходит. По крайней мере до сих пор не видел. А если я пишу на страницу частями то проблема проявляется.

В ДШ есть такой параметр - Number of Partial Program Cycles in the Same Page = 4

При превышении будет сыпаться.

 

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


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

1 hour ago, aaarrr said:

В ДШ есть такой параметр - Number of Partial Program Cycles in the Same Page = 4

При превышении будет сыпаться.

 

ого! а я не заметил! вот спасибо! похоже на мой случай.

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


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

Доброго времени!

Пытаюсь запустить SPI NAND Flash TC58CVG2S0HxAI на LPC4088 от NXP.

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

 

ID читается.

Стирание, запись и чтение происходит без ошибок.

Но какой блок бы я не считывал — они содержат то что я

в последний зписывал. Сохраняется и после сенятия/подачи напряжения.

Пишу всегда блоком 4224 Байт (ECC включена).

 

Может кто поделится опытом что я не так делаю?

NAND.zip

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


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

int8_t nand_spi_flash_read(uint8_t dev_nr,uint8_t *buff, uint32_t addr,uint32_t...
{
  unsigned nand_block_page = addr >> NSF_COLUMN_BITS; // DIV 4096
  // read page to nand cache buffer
  (*nor_send[dev_nr])(NSF_CMD_READ_CELL_TO_CACHE);
  (*nor_send[dev_nr])((nand_block_page & 0xff0000) >>16);
  (*nor_send[dev_nr])((nand_block_page &   0xff00) >> 8);
  (*nor_send[dev_nr])((nand_block_page &     0xff)     );
  NOR_DeSelect(dev_nr);

А где NOR_Select()?

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


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

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

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

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

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

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

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

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

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

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