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

 
 
> Параллельная флешь. Программирование и polling., Atmel AT49BV162AT.
dxp
сообщение Apr 25 2006, 06:32
Сообщение #1


Adept
******

Группа: Свой
Сообщений: 3 469
Регистрация: 6-12-04
Из: Novosibirsk
Пользователь №: 1 343



Может не в тот форум попал, но более подходящего не нашел, т.ч. не обессудьте. smile.gif

Вопрос следующий: вот есть параллельная флешка AT49BV162AT от Atmel, микросхема хорошая, всем требованиям удовлетворяет, кроме одного нефатального, но досадного момента. Программирование флеши (как и стирание и другие режимы) реализуется путем подачи специальной цепочки адресов/данных (адрес 0х555, данные 0хаа, адрес 0хааа, данные 0х55 и т.д.) - это обычное дело для таких дивайсов. Время программирования ячейки (16-бит слова) типовое - 12 мкс, максимальное 200 мкс. Т.е. для гарантированной зашивки, если по времени, то надо ждать эти самые 200 мкс. Для оптимизации этого момента микросхема имеет режим поллинга, т.е. можно после посылки данных на программирование делать чтение и по определенным битам результата чтения определять, запрограммировалось ли слово или нет.

И вот тут то и затаилась засада: выяснилось, что несмотря на поллинг некоторые данные пишутся с ошибками. Причем получается как бы порциями - блок из нескольких подряд данных пишется нормально, затем блок выпадает, затем опять нормально. Если сделать выход из режима программирования не по результату поллинга, а по времени, то все пишется, как часы, т.е. флешь сама нормальная.

В случае стирания, например, сектора, окончание процесса стирания (там время заметное - порядка 0.3 секунд) определяется также с помощью аналогичного поллинга и тут вопросов нет, все замечательно работает.

Если кто сталкивался с подобным и победил (или не победил smile.gif ), поделитесь опытом?


--------------------
«Отыщи всему начало, и ты многое поймёшь» К. Прутков
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
DS
сообщение Apr 25 2006, 07:54
Сообщение #2


Гуру
******

Группа: СуперМодераторы
Сообщений: 3 096
Регистрация: 16-01-06
Из: Москва
Пользователь №: 13 250



А что про поллинг в datasheet написано? Он ведь может двояко работать - показывать, что алгоритм программирования выполнен, или что программуруемые биты начали опознаваться как 0. Во втором случае надо еще ждать некоторое время для гарантированного программирования. Можно, кончено, и экспериментально подобрать это время, но ядумаю, что если спецмально ничего не сказано, то алгроитм заканчивает работу через 200 мкс, и быстрее не предусмотрено. Остальное рекламный трюк.


--------------------
Не бойтесь тюрьмы, не бойтесь сумы, не бойтесь мора и глада, а бойтесь единственно только того, кто скажет - "Я знаю как надо". А. Галич.
Go to the top of the page
 
+Quote Post
dxp
сообщение Apr 25 2006, 08:59
Сообщение #3


Adept
******

Группа: Свой
Сообщений: 3 469
Регистрация: 6-12-04
Из: Novosibirsk
Пользователь №: 1 343



Цитата(DS_ @ Apr 25 2006, 14:54) *
А что про поллинг в datasheet написано? Он ведь может двояко работать - показывать, что алгоритм программирования выполнен, или что программуруемые биты начали опознаваться как 0. Во втором случае надо еще ждать некоторое время для гарантированного программирования.

Про это конкретно сказано:

The AT49BV162A(T)/163A(T) features Data Polling to indicate the end of a program cycle. ... Once the program cycle has been completed, true data is valid on all outputs and the next cycle may begin. ...

Т.е. конкретно сказано, что означает конец программирования. Другое, имхо, и не нужно - бесполезно оно. Пользователя интересует, когда можно начинать писать следующее слово, а не когда начало "проявляться" текущее.

Цитата(DS_ @ Apr 25 2006, 14:54) *
Можно, кончено, и экспериментально подобрать это время, но ядумаю, что если спецмально ничего не сказано, то алгроитм заканчивает работу через 200 мкс, и быстрее не предусмотрено. Остальное рекламный трюк.

Да не похоже на рекламу - зачем оно им? А поллинг - нормальный способ определить конец программирования. Еще помню, когда году в 1998-м лепили самодельный программатор для AVR, там тоже использовали поллинг. Штатное время программирования было 4 мс, а с поллингом реально при 5 В получалось около 2.2 мс (это были старые чипы AT908515/2313/m103). Т.е. все работало. Что-то сомнительно, чтобы эта микруха работала неправильно - Атмел давно такие штуки делает, собаку уже съел. Что-то, боюсь, я недопонял, что-то не так сделал. А вот что, не пойму, вроде просто все.


--------------------
«Отыщи всему начало, и ты многое поймёшь» К. Прутков
Go to the top of the page
 
+Quote Post



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

 


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


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