Ещё немного про флэшку 45DB161D-SU. На «их» сайте (AVR) в ноуте doc1456.pdf и в avr335, листинг из pdf убрали, а ошибку так и не исправили, наверно Termostata не читали (это про буфер 528 – 527). Попытался написать «проверятор» для 7бита регистра статуса флэшки, в симуляторе Studio вроде работает, в «железе» не кочет…
//====================================
FLASH_CS = 0; // enable DataFlash
SPCR = 0x5C; // включить SPI(если выключен), для проверки готовности флэши
line1: SPDR = 0xD7;
while (!SPSR.7); //ожидание конца передачи опкода по SPI происходит на 8 такт
while (!SPDR.7) {goto line1;}; // 7бит=1 ожидание готовности флэши на 8 такт
//====================================
Вот, опять «изобрёл велосипед»… Протестировав память 45DB161D-SU по «хайдеру» at45d161.h написанным Termostatom, пришёл к выводу, что программный опрос состояния «занят-готов» не оптимален. Для «D» версии немного изменился опкод, хотя, работает и старый, но «АТ» не рекомендует его в новых разработках.
/#define BUFFER_1_READ 0x54 // buffer 1 read, для 45DB161 0x54
//#define BUFFER_2_READ 0x56 // buffer 2 read, для 45DB161 0x56
#define BUFFER_1_READ 0xD4 // buffer 1 read, для 45DB161D
#define BUFFER_2_READ 0xD6 // buffer 2 read, для 45DB161D
//#define MAIN_MEMORY_PAGE_READ 0x52 // main memory page readm,для 45DB161 0x52
#define MAIN_MEMORY_PAGE_READ 0xD2 // main memory page read, для 45DB161D
#define STATUS_REGISTER 0xD7
//(0x57-для 45DB161) DataFlash status register for reading density, compare status,and ready/busy status//
Программный опрос состояния 45DB161D в связке с Mega16/8MHz (SPI-2MHz) составляет – посылка опкода 8 тактов SPI = 4msec, анализ состояния 7 бита и конца передачи ещё такт. Время тратится много. В некоторых операциях оно даже излишне, как например по ДШ для 45DB161D “Page to Buffer Transfer(Compare) Taime”- 400мксек.
Реально получились такие значения:
Для «BLOCK erasing» = 45 мсек, ниже 43 –42 стирает с ошибками – пропускает некоторые страницы, по ДШ от 45 до 100 мсек;
write_to_flash = 0,5 мсек (500мксек) – работает без ошибок, конечно это экстремальный , по ДШ “Page Programming Time” от 3 до 6 мсек.
Очистку памяти перед стартом можно и задрать до 50 –100мсек как по ДШ (допустим, включение питания или reset), а дальше по времени даже выигрываем, чем посылка и обработка опкода.
Я тут маленько изменил at45d161.h в at45d161D.h на Меге16-8МГц/SPI- 2МГц пробовал для AT45DB161D-SU, то что менял я закомментировал. Просьба Termostata не бить меня по мяукалке…:)
Простите,-спросили Мартовского Кота,-действительно ли в марте месяце? Какая чушь,- ответил Мартовский Кот,- и март месяц не исключение! http://martkot.embedders.org
Это сообщение редактировалось 13.06.2007 в 23:47