Easyelectronics.ru

Электроника для всех
Текущее время: 20 июн 2019, 14:23

Часовой пояс: UTC + 5 часов



JLCPCB – Прототипы печатных плат за $2/10pcs (Любой цвет!)
Крупнейший производитель печатных плат и прототипов. Более 600000 клиентов и свыше 10000 заказов в день!
Получите скидку на почтовую отправку при первом заказе в JLCPCB!

Начать новую тему Ответить на тему  [ Сообщений: 2 ] 
Автор Сообщение
 Заголовок сообщения: Работа с NAND FLASH.
СообщениеДобавлено: 19 июн 2018, 10:31 
Старожил

Зарегистрирован: 17 фев 2016, 17:31
Сообщения: 226
При обращении к памяти (чтение, запись) я передаю адрес (на картинке)
Скажем при стирании блока (на картинке) - я должен передать адрес блока – 11 бит? Или адрес блока – 11 бит + адрес страницы – 6 бит?
Если блок + страница то получается так?
Код:
//////////////////////////////////// ERASE BLOCK  /////////////////////////////
   SPI2_CS0_OFF;
   SPI_rw_flash(NAND_FLASH_BLOCK_ERASE, &dummy);
   temp = 0 | block_addr >> 10;
   SPI_rw_flash(temp, &dummy);  // Dummy+A16
   temp = block_addr >> 8;
   SPI_rw_flash(temp, &dummy);   //A15-A8
   temp =( block_addr<<3) | page_addr;
     SPI_rw_flash(temp, &dummy);   //A7-A0
   SPI2_CS0_ON;


или нет.
У нас дано
Block Address (2048 blocks/device): 11 bits
Page Address (64 pages/block): 6 bits
Исходя из этого строим Row Address uint32_t row_address = (block_address<<6) | page_address;
а теперь это адрес нужно передать тремя байтами
первый - temp = row_address >> 16;
второй - temp = row_address >> 8;
третий - temp = row_address & 0xFF;
получается так ?


Вложения:
erase.png
erase.png [ 142.18 Кб | Просмотров: 867 ]
addr.png
addr.png [ 103.31 Кб | Просмотров: 867 ]
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Работа с NAND FLASH.
СообщениеДобавлено: 27 июн 2018, 15:00 
Старожил

Зарегистрирован: 13 фев 2011, 01:25
Сообщения: 617
Откуда: Севастополь
При слове NAND FLASH все автоматически представляют Parallel NAND flash стоящую в разного рода накопителях, мобилках и телевизорах. С ней как рпавило вообще никаких проблем нет - адресуется все как память - через отображенные на память регистры без танцев с бубном.

Что касается вашего случая то заголовок должен начинаться словами SPI NAND FLASH( или Serial NAND FLASH). Плюс в тексте вопроса - было бы неплохо указать модель микросхемы, ваш инит ее и для быстроты реакции - ссылку на даташит. Тогда количество желающих оказать помощь увеличится. Пока из того что я вижу - я даже не понимаю с чем вам помочь - с осознанием устройства SPI шины и пониманием ее работы , или таки у вас проблема с пониманием работы NAND части. Вырванного из контекста куска даташита совершенно не хватает для осознания ширины регистра адреса в микросхеме. Но по логике все что MSB и LSB говорит что адрес лежит судя по всему в виде 32 бита величины расположенной в четырех байтах и передается в виде одной посылки из 4 байтов ( если аппаратно ваш контроллер поддерживает ширину сдвигового регистра в 32 бита).

Если диаграмма из даташита то адрес - 3 байта. и Не понятно что физически означает команда CS_OFF в начале работы с SPI . если продавливание пина в низ - то да. А если логика другая то возможно как раз прямое отключение девайса выставлением пина в еденицу - так как в реальности чип селект инверсный сигнал как правило и ON как правило означает его перевод в активное ( низкое состояние) а OFF в неактивное ( высокое).


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 2 ] 

Часовой пояс: UTC + 5 часов


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB