roboforum.ru

Технический форум по робототехнике.
Текущее время: 04 июн 2025, 16:37

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




Начать новую тему Ответить на тему  [ Сообщений: 19 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: SPI флеш AT25DF041 и AVR
СообщениеДобавлено: 03 июл 2013, 19:34 
Не в сети

Зарегистрирован: 16 сен 2009, 15:41
Сообщения: 159
Откуда: Арзамас
Добрый день.Подскажите как заставить записывать и считывать на данный тип флехи SPI флеш AT25DF041 - AVR. Может кто выложит рабочий код с данным типом флешки. Не могу записать и прочить байт. Может она не пишет побайтно. Если не так поправьте меня.
Код:
//****************** SPI Definitions **************//
#define CHIP_SELECT_AT25   PORTE.3=0;delay_ms(100);
#define CHIP_UNSELECT_AT25 PORTE.3=1;delay_ms(100);
//******************* SPI Definitions *************//

//******************* Instruction Set ************//
// Read Commands
#define SPI_FLASH_INS_READ             0x03 // Read array                                 
#define SPI_FLASH_INS_FAST_READ        0x0B // Read array(low frequency)

// Program and Erase Commands
#define SPI_FLASH_INS_BLOCK_ERASE_4K   0x20 // Sector erase
#define SPI_FLASH_INS_BLOCK_ERASE_32K  0x52 // Sector erase
#define SPI_FLASH_INS_BLOCK_ERASE_64K   0xD8 // Sector erase
#define SPI_FLASH_INS_CHIP_ERASE_1   0x60 // Sector erase
#define SPI_FLASH_INS_CHIP_ERASE_2   0xC7 // Sector erase
#define SPI_FLASH_INS_PAGE_PROGRAM        0x02 // Byte/Page program

// Protection commands
#define SPI_FLASH_INS_WRITE_ENABLE      0x06 // Write enable
#define SPI_FLASH_INS_WRITE_DISABLE      0x04 // Write disable
#define SPI_FLASH_INS_PROTECT_SECTOR      0x36 // Write disable
#define SPI_FLASH_INS_UNPROTECT_SECTOR      0x39 // Write disable

// Status register commands

#define SPI_FLASH_INS_READ_STATUS_REGISTER      0x05 // Read status register                                   
#define SPI_FLASH_INS_WRITE_STATUS_REGISTER      0x01 // Write status register

// Miscellanous Commands
#define SPI_FLASH_INS_READ_DEVICE_ID      0x9F // Read  identification
#define SPI_FLASH_INS_DEEP_POWER_DOWN 0xB9 // Deep power-down                                 
#define SPI_FLASH_INS_RESUME_FROM_DEEP_POWER_DOWN       0xAB // Release from deep power- down
//*************** Instruction Set ***************//

while (1)
{     
     PORTE.2=0;
         if(getchar()==0x31)
         {
         CHIP_SELECT_AT25 // _S Low
         PORTE.2=1;
         spi(SPI_FLASH_INS_PAGE_PROGRAM);
         spi(0x00);
         spi(0xFF); 
         spi(0x00);  // adress 000005
         spi(0x68);  // данные
         delay_ms(1);
         putchar('w');
         delay_ms(100);
         CHIP_UNSELECT_AT25 // _S High 
         PORTE.2=0;
         }
         
                 
          if(getchar()==0x32)
         {
         CHIP_SELECT_AT25 // _S Low
         PORTE.2=1;
         //spi(SPI_FLASH_INS_READ_STATUS_REGISTER); 
         spi(SPI_FLASH_INS_READ );
         spi(0x00);
         spi(0xFF); 
         spi(0x00);// adress 000005
         receivedchar[0]=spi(0xFF); // считываем  значение в переменную
         delay_ms(1);
         putchar('r');
         delay_ms(1);
         putchar(receivedchar[0]);
         delay_ms(1);
         CHIP_UNSELECT_AT25 // _S High 
         PORTE.2=0;
         }
     }
}


вот запись и вывод значения по 485 порту но постоянно вижу FF. Подскажите как правильно считать данные с флешки данного типа?

И статус регистор тоже не читает, FF постоянно
Код:
if(getchar()==0x32)
         {
         CHIP_SELECT_AT25 // _S Low
         PORTE.2=1;
         spi(SPI_FLASH_INS_READ_STATUS_REGISTER); 
         /*spi(SPI_FLASH_INS_READ );
         spi(0x00);
         spi(0xFF); 
         spi(0x00);// adress 000005
         */
         //receivedchar[0]=spi(0xFF); // считываем  значение в переменную   
         receivedchar[0]=spi(0x00); // считываем  значение в переменную
         delay_ms(1);
         putchar('r');
         delay_ms(1);
         putchar(receivedchar[0]);
         delay_ms(1);
         CHIP_UNSELECT_AT25 // _S High 
         PORTE.2=0;
         }


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: SPI флеш AT25DF041 и AVR
СообщениеДобавлено: 08 июл 2013, 03:17 
Не в сети

Зарегистрирован: 16 сен 2009, 15:41
Сообщения: 159
Откуда: Арзамас
Подскажите на какой минимальной частоте работает данная флешка ?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: SPI флеш AT25DF041 и AVR
СообщениеДобавлено: 08 июл 2013, 18:44 
Не в сети
отсылающий читать курс
Аватара пользователя

Зарегистрирован: 06 ноя 2005, 04:18
Сообщения: 14195
Откуда: Москва
Наверно даже в статике будет работать.

_________________
Читайте !


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: SPI флеш AT25DF041 и AVR
СообщениеДобавлено: 08 июл 2013, 20:14 
Не в сети

Зарегистрирован: 16 сен 2009, 15:41
Сообщения: 159
Откуда: Арзамас
Флешка стала отвечать, дело было в опторазвязке, которая стоит между контроллером и флеш. ADUM1401 может, что упустил в ее работе по SPI. Пока пробую без нее, настрою и потом буду искать в чем же проблема.
Код:
   PORTE.2=0;// прием по RS485
         if(getchar()==0x31) // запрос ID
             {
             PORTE.2=1; // вкл передачу RS485       
             CHIP_SELECT_AT25 // _S Low        // разрешение работы AT25
             spi(SPI_FLASH_INS_READ_DEVICE_ID);         // передача оптокода SPI_FLASH_INS_READ_DEVICE_ID ответ FF его не принимаем
             receivedchar[0]=spi(0xFF);           // принимает код предприятия от AT25
             receivedchar[1]=spi(0xFF);           // и соответствующее данные(для ответа подаем FF)
             receivedchar[2]=spi(0xFF);
             delay_ms(1);     
             CHIP_UNSELECT_AT25 // _S High;     // запрет работы AT25
             putchar(receivedchar[0]);          // вывод значение принятых данных в терминал
             delay_ms(1);
             putchar(receivedchar[1]);
             delay_ms(1);
             putchar(receivedchar[2]);
             delay_ms(1);
             putchar('I');
             delay_ms(1000);       
             PORTE.2=0;// прием по RS485
             }


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: SPI флеш AT25DF041 и AVR
СообщениеДобавлено: 08 июл 2013, 20:31 
Не в сети

Зарегистрирован: 04 май 2013, 10:35
Сообщения: 203
Откуда: Тюмень
ХМ, а зачем между контроллером и флэшкой гальваноразвязка?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: SPI флеш AT25DF041 и AVR
СообщениеДобавлено: 09 июл 2013, 01:03 
Не в сети

Зарегистрирован: 16 сен 2009, 15:41
Сообщения: 159
Откуда: Арзамас
Схема такая ,что требуется развязка и в принципе она должна работы.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: SPI флеш AT25DF041 и AVR
СообщениеДобавлено: 09 июл 2013, 12:51 
Не в сети

Зарегистрирован: 16 сен 2009, 15:41
Сообщения: 159
Откуда: Арзамас
Что то я немного не понимаю, микросхема AT25DF041A-SSH-B работает от 5V , а от 3.3V не работает хотя по даташит от 2.3 до 3.6 ? Очень интересно,пробовал разные микросхемы. Обе работают от 5 V.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: SPI флеш AT25DF041 и AVR
СообщениеДобавлено: 09 июл 2013, 17:39 
Не в сети
Аватара пользователя

Зарегистрирован: 15 сен 2007, 13:03
Сообщения: 6338
Откуда: Красноярск
прог. языки: ASM(МК), C(PC)
ФИО: Гагарский Андрей Александрович
а вы у нее на ногах измеряете ? и 0 и 3.3 прям с ее ног берете ?

_________________
«Как сердцу выразить себя? … Мысль изреченная есть ложь!»
В этом мире меня подводит доброта и порядочность...
"двое смотрят в лужу, один видит лужу, другой отраженные в ней звезды"


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: SPI флеш AT25DF041 и AVR
СообщениеДобавлено: 09 июл 2013, 18:10 
Не в сети

Зарегистрирован: 04 май 2013, 10:35
Сообщения: 203
Откуда: Тюмень
>>микросхема AT25DF041A-SSH-B работает от 5V , а от 3.3V
скорее всего память-то работает, только контроллер её не понимает (работающий от 5 В).
Приведите свою схему.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: SPI флеш AT25DF041 и AVR
СообщениеДобавлено: 09 июл 2013, 19:49 
Не в сети

Зарегистрирован: 16 сен 2009, 15:41
Сообщения: 159
Откуда: Арзамас
Сначала стояло так. Контролер Mega (5V) потом развязка Adum1401 с одной стороны ее 5v, со стороны флешки все питания 3.6 V. Не работает импульсы от нее исходили непонятные.Потом напрямую без развязки питания +5V, отвечает(по даташит не слова про 5v?). Далее решил попробовать +3.3 на питания выводы все управления остались на 5V не работает. Конечно правильнее и управление сделать на 3.6V , но так к сожалению не пробовал. Хотя как я думаю эти уровни для меги не должны быть креичными.

Цитата:
а вы у нее на ногах измеряете ? и 0 и 3.3 прям с ее ног берете ?


мерил все на ее ножках.

Добавлено спустя 7 минут 45 секунд:
Может кто то выложит рабочий код записи и чтения. Не получается нечего записать. Как будто защита стоит. Хотя по статус регистру sowtware protection status все секторы защищены и как выключить не понятно. Бит SPRL тоже не пишется. Вроде все не так сложно, по описанию, но запихнуть в нее не как не могу.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: SPI флеш AT25DF041 и AVR
СообщениеДобавлено: 15 июл 2013, 15:37 
Не в сети

Зарегистрирован: 16 сен 2009, 15:41
Сообщения: 159
Откуда: Арзамас
Работает и на 3 и на 5 вольтах. Все данные надо отправлять и передавать через запрос регистра статуса.

На приеме на контролер стоят две оптики, и у каждой выход заведен на контролер на вход MISO и вот они негодуют друг с другом, так они оба выхода. Вот думаю как решить этот вопрос. Через оптику по SPI идут ответы с разных устройств на один и тот же выход контролера .


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: SPI флеш AT25DF041 и AVR
СообщениеДобавлено: 15 июл 2013, 16:02 
Не в сети
Аватара пользователя

Зарегистрирован: 10 ноя 2011, 12:02
Сообщения: 5691
Откуда: Turku, Finland
Skype: elmot73
прог. языки: Java и все-все=все
ФИО: Илья
http://www.google.com/url?sa=t&rct=j&q= ... 5608,d.bGE


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: SPI флеш AT25DF041 и AVR
СообщениеДобавлено: 15 июл 2013, 17:53 
Не в сети

Зарегистрирован: 16 сен 2009, 15:41
Сообщения: 159
Откуда: Арзамас
У меня выходы с оптики сидят вместе и идут на одну ногу микроконтроллера. И при такой схеме они уменьшают напряжение сигнала. Может конечно резисторы маловаты. Но по моему проблема в другом. Соответственно если поставить один резистор 500 ом то одна часть работает. А нужно чтобы обе работали и принимали от разных устройств в определенный момент времени.
Можно конечно добавить еще элементов в схему, но хотелось бы простого решения.


Вложения:
1.JPG
1.JPG [ 19.85 КиБ | Просмотров: 4277 ]
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: SPI флеш AT25DF041 и AVR
СообщениеДобавлено: 15 июл 2013, 18:02 
Не в сети
отсылающий читать курс
Аватара пользователя

Зарегистрирован: 06 ноя 2005, 04:18
Сообщения: 14195
Откуда: Москва
либо открытые коллекторы использовать или открытые стоки 2N7002 или логику 2ИЛИ если в неактивном устройстве "0" на выходе. Если там "1" то используйте логику 2И, есть и логика с открытым стоком. Либо буферы управл тем же сигналом выбора микрухи CS.

_________________
Читайте !


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: SPI флеш AT25DF041 и AVR
СообщениеДобавлено: 15 июл 2013, 18:21 
Не в сети

Зарегистрирован: 16 сен 2009, 15:41
Сообщения: 159
Откуда: Арзамас
Цитата:
либо открытые коллекторы использовать или открытые стоки 2N7002 или логику 2ИЛИ если в неактивном устройстве "0" на выходе. Если там "1" то используйте логику 2И, есть и логика с открытым стоком. Либо буферы управл тем же сигналом выбора микрухи CS.


Это все понятно. Я просто не думал, что выход будет сажать другой выход. Честно говоря так и не понимаю почему.Может еще попробовать выходом управления оптики поиграться, на одной из оптик всегда на управляющем сигнале висит 1(на VCC всегда разрешена работа). Такое ощущения, что один из входов вешиется на 0 и получается делитель и соответственно не хватает уровня сигнала для микроконтроллера.

У меня сейчас нет возможности подключить реальное второе устройство slave к выводу SPI, пока висит только память.


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

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


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

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


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

Найти:
Перейти:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
phpBB SEO