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

 
 
> Отличия NAND Flash различных производителей, Hynix, Micron, others
InvisibleFed
сообщение Dec 21 2007, 13:11
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 401
Регистрация: 18-11-06
Из: Хабаровск
Пользователь №: 22 469



Здравствуйте, делаю обмен МК с NAND Flash (устройство сбора видеоинформации) и наткнулся на такую вещь. Судя по даташитам, скажем на Hynix HY27USxxxxxx и Micron (например, MT29F2G...), микросхемы имеют существенные различия в протоколе обмена. Так при выполнении операции чтения/записи сраницы в Hynix необходимо передать 4 байта адреса (4 адресных цикла), а в Micron целых 5. Это я еще как-то могу переварить. Но вот второе. При выполнении операции чтения страницы, у Micron-а после пяти адресных циклов идет команда 30h (своего рода подтверждение окончания ввода адреса и начало выбрки из массива). Однако Hynix-у эти 30h вообще не упали - сразу после передачи последнего, четвертого байта адреса, R/B благополучно падает '0' (устройство занято) и производится выборка. Кто сталкивался, можете прояснить:

1. Все ли я правильно описал (ошибка даташит, не туда посмотрел, и пр.)?
1. Существует ли хоть како-то стандарт на NAND Flash (или че хочу то и творю..)?
2. Какие еще особенности организации обмена характерны для разных производителей?

P.S. Извиняюсь за небольшой оффтоп. Пазбираю код Micron-а nand_low_level_drivers (скачал с их сайта). Там в NAND_LLD.h такое вот:

Код
#define CLE_OFFSET 0xFFFFF    /*The offset value is for example purpose only */
#define ALE_OFFSET 0xFFFFE  /*The offset value is for example purpose only */
#define RW_OFFSET  0xFFFFD  /*The offset value is for example purpose only */

#define WRITE_NAND_CLE(command)(nand_Write_Cmd(CLE_OFFSET, command))
#define WRITE_NAND_ALE(address)(nand_Write_Addr(ALE_OFFSET, address))
//#define WRITE_NAND_BYTE(data) (nand_Write_byte(RW_OFFSET, 1))
#define WRITE_NAND_ARRAY(data,n) (nand_Write(RW_OFFSET, data, n))
#define READ_NAND_BYTE(data)(nand_Read_byte(RW_OFFSET, &(data), 1))
#define READ_NAND_ARRAY(data,n) (nand_Read(RW_OFFSET, data, n))


Что это за смещение (CLE_OFFSET, ALE_OFFSET, RW_OFFSET) используется в функциях? Точнее не "используется", а "предполагается использовать" - функции эти (nand_Write_Cmd и пр.) должен написать сам разработчик под конкретную реализацию. Может кто пользовал, знает...
Go to the top of the page
 
+Quote Post

Сообщений в этой теме


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

 


RSS Текстовая версия Сейчас: 29th July 2025 - 17:05
Рейтинг@Mail.ru


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