Вопрос по DATAFLASH

Mar 15, 2006 9 Replies

Доброго всем дня!



Что-то я всю голову сломал. Имеется AT45DB041B. Хотел предварительно ее запрограммировать, прежде чем в разрабатываемый девайс впаивать. Есть такой программатор "Хамелеон". В нем на Си подобном языке можно писать собственные модули для программирования микросхем. Есть кабель STK200/300 совместимый. Написал модуль для этой ИМС. Ну не получается записать и считать одно и тоже. Полагаю, что конечно возможны ошибки в логике. Хорошо. В программаторе есть возможность вручную выставлять и читать все биты LPT-порта. Так я уже вручную смоделировал ситуацию чтения регистра состояния. Считывается 98h, хотя должно быть 9Ch (судя по мануалу). Ну не получается 9Ch никак. Кабель нормальный, претензий к "Хамеленону" нет - я им уже несколько видов контроллеров зашивал. Может что есть какие-нибудь тонкости для работы с DATAFLASH? Пните что-ль, не обижусь. Сам я вот как делаю. Выставляю CS=1, SCK=0, SI=0. Затем CS=0, код команды D7h побитно, старшим битом вперед, тактируется последовательностью SCK=1, SCK=0. На 8 такте, по заднему фронту SCK на SO должен появиться старший бит из регистра состояния (это опять же судя по графикам в мануале). Затем еще семь импульсов и оставшиеся 7 бит. Все это и появляется, но только 98h а не 9Ch. И не понятно вот еще что, на графике в мануале 0-й бит появляется после 16-го импульса SCK. Я специально нарисовал на бумаге этот график - получается после



15-го. Чего я не понимаю?

Hello, Lomaka! You wrote to <All>to All on 15 Mar 06 09:14:41:

LV> бит. Все это и появляется, но только 98h а не 9Ch. И не понятно вот еще

В мануале последние три бита Х Х Х.

With best regards, . E-mail: snipped-for-privacy@p80.f.n6023.z2.fidonet.org

AL> В мануале последние три бита Х Х Х.

Странно. У меня два мануала: последний (версия С от 5.05) и какая-то предыдущая. В обоих написано так: bit7 - RDY/BUSY bit6 - COMP bit5 - 0 bit4 - 1 bit3 - 1 bit2 - 1 bit1 - 0 bit0 - 0

У вас более новый даташит?

Hello, Lomaka! You wrote to "Alexander Lavrov" snipped-for-privacy@p80.f.n6023.z2.fidonet.org>to Alexander Lavrov on 15 Mar

06 12:27:18:

AL>> В мануале последние три бита Х Х Х.

LV> Странно. У меня два мануала: последний (версия С от 5.05) и какая-то LV> предыдущая. В обоих написано так: LV> bit7 - RDY/BUSY LV> bit6 - COMP LV> bit5 - 0 LV> bit4 - 1 LV> bit3 - 1 LV> bit2 - 1 LV> bit1 - 0 LV> bit0 - 0

LV> У вас более новый даташит? От 2000г. В общем не заморачивайся. Кроме RDY/BUSY и COMP здесь еще значащие bit5-3, говорят о том что это 041.

With best regards, . E-mail: snipped-for-privacy@p80.f.n6023.z2.fidonet.org

AL> От 2000г. В общем не заморачивайся. Кроме RDY/BUSY и COMP AL> здесь еще значащие bit5-3, говорят о том что это 041.

Спасибо. Немного полегчало. Теперь дальше буду биться.

AL> От 2000г. В общем не заморачивайся. Кроме RDY/BUSY и COMP AL> здесь еще значащие bit5-3, говорят о том что это 041.

Раз пошла такая песня, не просветите меня зачем нужен режим Inactive Clock Polarity Low. Зачем нужен этот лишний импульс SCK (по сравнению с SPI mode 0)? И еще - он лишний только для последовательности передачи команды или для остальных случаев тоже нужно передавать дополнительный SCK?

Hello, Lomaka! You wrote to "Alexander Lavrov" snipped-for-privacy@p80.f.n6023.z2.fidonet.org>to Alexander Lavrov on 16 Mar

06 13:46:07:

LV> Раз пошла такая песня, не просветите меня зачем нужен режим Inactive LV> Clock Polarity Low. Зачем нужен этот лишний импульс SCK (по сравнению с LV> SPI mode 0)? И еще - он лишний только для последовательности передачи LV> команды или для остальных случаев тоже нужно передавать дополнительный LV> SCK? Hадо помнить простое правило: данные на входе SI берутся по фронту SCK, а данные на выход SO выставляются по спаду SCK. Если посчитать спады, то и в mode0 и в mode3 их одинаковое количество.

With best regards, . E-mail: snipped-for-privacy@p80.f.n6023.z2.fidonet.org

AL> Hадо помнить простое правило: данные на входе SI берутся по фронту SCK, AL> а данные на выход SO выставляются по спаду SCK. Если посчитать спады, AL> то и в mode0 и в mode3 их одинаковое количество.

Да, это я понял. Я имел ввиду еще два режима, которые к SPI не относятся. У них и код команд чтения другой. Бьюсь уже третий день и все без толку. Записываю байт 0 - читается 0, 01 - 01, а записываю 02 - читается 03. Какой-то сдвиг происходит. Уже вручную эти чертовы биты подаю...

Hello, Lomaka! You wrote to "Alexander Lavrov" snipped-for-privacy@p80.f.n6023.z2.fidonet.org>to Alexander Lavrov on 16 Mar

06 17:19:18:

LV> Я имел ввиду еще два режима, которые к SPI не LV> относятся. У них и код команд чтения другой Это какие?

LV> Бьюсь уже третий день и все без толку. Записываю байт 0 - читается 0, LV> 01 - 01, а записываю 02 - читается 03. Какой-то сдвиг происходит. Уже LV> вручную эти чертовы биты подаю... Hу не знаю, у меня проблем с атмеловскими флешками не возникало. Вернее были, но совсем по другому поводу. Ищи ошибки в коде. К стати, на чем реализовано?

With best regards, . E-mail: snipped-for-privacy@p80.f.n6023.z2.fidonet.org

AL> Это какие?

Ну например, чтение первого буфера: 54h - non SPI-mode, 0D4h - SPI-mode И это относится ко всем командам чтения. Команды записи не отличаются.

AL> Hу не знаю, у меня проблем с атмеловскими флешками не возникало. AL> Вернее были, но совсем по другому поводу. Ищи ошибки в коде.

Я тоже так думаю. Но вручную, побитно прогоняю, тоже нефига не получается.

AL> К стати, на чем реализовано?

Я в первом вопросе писал - программатор "Хамелеон". Он имеет возможность подключать к себе модули, написанные на СИ-подобном языке. Причин жаловаться на программатор - нет. На нем же зашивал и ATmega16 и кучу AT89LS53. Причем, модули самописные были под эти МК. Тут мне прислали пример работы с DATAFLASH. Поразбираюсь еще, где затык. Ну вообщем, ладно я снимаю этот вопрос. Попробовал через МК со встроенным SPI программировать DATAFLASH - все получилось. Проще мне будет прямо в системе залить данные в нее.

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required