Jump to content

    
Sign in to follow this  
jenya7

Проблема с NAND Flash

Recommended Posts

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

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

например

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

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

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

 

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

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

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

Share this post


Link to post
Share on other sites
1 hour ago, Pengozoid said:

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

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

Edited by jenya7

Share this post


Link to post
Share on other sites
27 minutes ago, jenya7 said:

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

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

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

 

Share this post


Link to post
Share on other sites
1 hour ago, aaarrr said:

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

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

 

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

Share this post


Link to post
Share on other sites

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

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

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

 

ID читается.

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

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

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

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

 

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

NAND.zip

Share this post


Link to post
Share on other sites
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()?

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this