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

 
 
4 страниц V   1 2 3 > »   
Reply to this topicStart new topic
> AVR + DataFlash
DeXteR
сообщение Jan 10 2006, 16:30
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 319
Регистрация: 2-08-05
Из: Одесса
Пользователь №: 7 287



Добрый день уважаемые специалисты smile.gif

Кто нибудь пробывал подключать к AVR DataFlash
Необходимо сделать примерно то что описано в avr335 толька с управлением по I2C

Перекомпилил все под Мегу 8 (поменял ножки)
Собрал схему на макетнице
DataFlash AT45DB081B питаю 3.3 вольтами Атмегу 8 - Пятью

В датащите на AT45DB081B сказано что с 5 вольтовыми сигналами нет проблемм

Тем немение DataFlash ничего не отвечает
несмотря на то что осцилографом видно как Атмега посылает данные.
Сигнала BUSY тоже нету. На выходе ДатаФлеща - 0.

Может спалил
Незнаю

Подскажите пожалуста если кто имеет какието мысли по этому поводу
Go to the top of the page
 
+Quote Post
AndyBig
сообщение Jan 10 2006, 16:54
Сообщение #2


Иногдящий
****

Группа: Свой
Сообщений: 691
Регистрация: 28-02-05
Пользователь №: 2 931



Работал с DataFlash + ATmega64, пользуясь аппаратным SPI. Питание контроллера - 5В, флэшки - 3,3В. Никаких проблем не возникло.
Проверьте:
1. Сконфигурированы ли у Вас соответствующие порты контроллера (MISO на вход, MOSI, ~SS и SCK на выход)
2. Включен ли SPI
3. Правильно ли выставлен режим SPI (должен быть 0 или 3)
4. Перед началом каждой команды, посылаемой в DataFlash, необходимо деактивировать и вновь активировать ChipEnable. Текущая команда выполняется флэшкой именно до деактивации chipenable, а не просто до получения новой команды (я на этом поначалу обжегся).

Кстати, сигнал BUSY, как и соответствующий флаг в регистре статуса, выставляется только на время выполнения нескольких команд (запись буфера в память, чтение памяти в буфер, сравнение памяти и буфера) и не означает, что флэшку вообще нельзя беспокоить. Скажем, получать у нее статус можно в любое время. Читать и писать буфер - тоже. Об этом довольно подробно написано в даташите на флэшку и в аппликейшне AN-4 Using Atmel's DataFlash.
Go to the top of the page
 
+Quote Post
solidreg
сообщение Jan 10 2006, 17:40
Сообщение #3


Участник
*

Группа: Свой
Сообщений: 74
Регистрация: 24-10-05
Пользователь №: 10 056



Работал с AT45DB021B, аппаратный SPI, но только всё 3.3В. Ни наких проблем, всё работает.
Go to the top of the page
 
+Quote Post
DeXteR
сообщение Jan 10 2006, 17:53
Сообщение #4


Местный
***

Группа: Свой
Сообщений: 319
Регистрация: 2-08-05
Из: Одесса
Пользователь №: 7 287



Цитата(AndyBig @ Jan 10 2006, 19:54) *
Работал с DataFlash + ATmega64, пользуясь аппаратным SPI. Питание контроллера - 5В, флэшки - 3,3В. Никаких проблем не возникло.
Проверьте:
1. Сконфигурированы ли у Вас соответствующие порты контроллера (MISO на вход, MOSI, ~SS и SCK на выход)
2. Включен ли SPI
3. Правильно ли выставлен режим SPI (должен быть 0 или 3)
4. Перед началом каждой команды, посылаемой в DataFlash, необходимо деактивировать и вновь активировать ChipEnable. Текущая команда выполняется флэшкой именно до деактивации chipenable, а не просто до получения новой команды (я на этом поначалу обжегся).

Кстати, сигнал BUSY, как и соответствующий флаг в регистре статуса, выставляется только на время выполнения нескольких команд (запись буфера в память, чтение памяти в буфер, сравнение памяти и буфера) и не означает, что флэшку вообще нельзя беспокоить. Скажем, получать у нее статус можно в любое время. Читать и писать буфер - тоже. Об этом довольно подробно написано в даташите на флэшку и в аппликейшне AN-4 Using Atmel's DataFlash.



1. Порты сконфигурированы как нада.
2. СПиАй включен
Обмен по нему видел осцилграфом
Но память ничего не отвечала
3. Насчет режима - содрал с АВР335 точно не проверял - надеюсь ошибка не там - проверю.
4. Насчет ChipEnable такого не видел осцилографом и в коде похоже нету.
Надеюсь что проблемма в этом

Завтра приду на работу - все проверю.

Вопрос: на какой интервал времени достаточно запретить а потом разрешить Флешку ??


Ещораз спасибо



Хотел сделать акцент
Использовал ли кто либо при работе
AVR335: Digital Sound Recorder with AVR and DataFlash
или все сами писали процедуры обмена с ДатаФлешкой ???
Я слышал что а Апноутах часто бывают ошибки
Хотя скорее вего ошибаюсь я

Спасибо
Go to the top of the page
 
+Quote Post
AndyBig
сообщение Jan 10 2006, 21:16
Сообщение #5


Иногдящий
****

Группа: Свой
Сообщений: 691
Регистрация: 28-02-05
Пользователь №: 2 931



Цитата
и в коде похоже нету


Ну как же... Я сам там видел smile.gif. Я тоже ковырял этот аппноут и именно там заметил деактивацию чипселекта.

Например:
Код
void write_to_flash(unsigned char flash_data)
{
    static unsigned int buffer_counter;
    static unsigned int page_counter;
    unsigned char temp = 0x80;
    
    if((ACSR & 0x02))                       // if flag is set that new data has to be written
    {
        buffer_counter = 0;
        page_counter = 0;                   // reset the counter if new data has to be written
        ACSR &= 0xFD;                       // clear the signal flag
    }

    while(!(PINB & 0x02));                  // check if flash is busy

    PORTB &= ~DF_CHIP_SELECT;               // enable DataFlash
    
    SPDR = BUFFER_1_WRITE;
    while (!(SPSR & temp));                 // wait for data transfer to be completed
    SPDR = 0x00;                            // don't cares
    while (!(SPSR & temp));                 // wait for data transfer to be completed
    SPDR = (char)(buffer_counter>>8);       // don't cares plus first two bits of buffer address
    while (!(SPSR & temp));                 // wait for data transfer to be completed        
    SPDR = (char)buffer_counter;            // buffer address (max. 2^8 = 256 pages)
    while (!(SPSR & temp));                 // wait for data transfer to be completed    
    SPDR = flash_data;                      // write data into SPI Data Register
    while (!(SPSR & temp));                 // wait for data transfer to be completed
    
    PORTB |= DF_CHIP_SELECT;                // disable DataFlash
    
    buffer_counter++;
        
    if (buffer_counter > 528)               // if buffer full write buffer into memory page
    {
        buffer_counter = 0;
        if (page_counter < 4096)            // if memory is not full  
        {
            PORTB &= ~DF_CHIP_SELECT;       // enable DataFlash
        
            SPDR = B1_TO_MM_PAGE_PROG_WITHOUT_ERASE; // write data from buffer1 to page
            while (!(SPSR & temp));         // wait for data transfer to be completed
            SPDR = (char)(page_counter>>6);
            while (!(SPSR & temp));         // wait for data transfer to be completed
            SPDR = (char)(page_counter<<2);
            while (!(SPSR & temp));         // wait for data transfer to be completed
            SPDR = 0x00;                    // don't cares
            while (!(SPSR & temp));         // wait for data transfer to be completed                      
        
            PORTB |= DF_CHIP_SELECT;        // disable DataFlash
        
            page_counter++;
        }
        else
        {
            PORTB |= 0x08;                  // turn LED off
            while (!(PIND & 2));            // wait until button for recording (button 1) is released
        }
    }
}


Цитата
Вопрос: на какой интервал времени достаточно запретить а потом разрешить Флешку ??

Учитывая, что флэшка работает на частоте до 20 МГц, никаких пауз между деактивацией и активацией делать не надо. Лишь бы компилятор не "оптимизировал" код, который в результате оставляет содержимое регистра в прежнем виде smile.gif).

На всякий случай прилагаю код, который у меня на атмеге64 работает прекрасно. Просьба ногами не бить, изяществом код не блещет smile.gif))).
Прикрепленные файлы
Прикрепленный файл  at45spi.rar ( 1.4 килобайт ) Кол-во скачиваний: 167
 
Go to the top of the page
 
+Quote Post
beer_warrior
сообщение Jan 11 2006, 07:58
Сообщение #6


Профессионал
*****

Группа: Свой
Сообщений: 1 065
Регистрация: 8-10-05
Из: Kiev, UA
Пользователь №: 9 380



BTW, господа никто не сталкивался с интересным эффектом -
когда пишешь или читаешь большой массив
на границе страниц возникают сбои?
Лечилось задержкой между подачей команд.
В фирменной доке по этому поводу молчание.


--------------------
Вони шукають те, чого нема,
Щоб довести, що його не існує.
Go to the top of the page
 
+Quote Post
AndyBig
сообщение Jan 11 2006, 10:37
Сообщение #7


Иногдящий
****

Группа: Свой
Сообщений: 691
Регистрация: 28-02-05
Пользователь №: 2 931



Я не читал больше 30 КБ за раз и при этих объемах никаких сбоев не замечал.
Go to the top of the page
 
+Quote Post
DeXteR
сообщение Jan 11 2006, 19:18
Сообщение #8


Местный
***

Группа: Свой
Сообщений: 319
Регистрация: 2-08-05
Из: Одесса
Пользователь №: 7 287



Добрый день

Огромное спасибо всем

У меня заработало !!!!

Дело было именно в ноге CS Незная оставил микросхему постоянно выбраной.

Хотел задать ещо пару попроссов

1. Дело в том что Атмега питаеться от 5 В а датафлеш от 3.3
Небудит ли проблемм с уровнем в канале данных от датафлешки к Атмеги Нужен ли там приобразователь уровня ?? Если да - какой посоветуете.

2. Счас Датафлешка питаеться от LM317
Гдето видел схему подачи питания через 3-4 кремниевых диода.
Насколько это приемлимо ???

Ещораз спасибо за участие !
Go to the top of the page
 
+Quote Post
AndyBig
сообщение Jan 11 2006, 19:38
Сообщение #9


Иногдящий
****

Группа: Свой
Сообщений: 691
Регистрация: 28-02-05
Пользователь №: 2 931



1. Проблем не будет, ничего не нужно.
2. А зачем через диоды? Чем не устраивает стабилизатор?
Go to the top of the page
 
+Quote Post
DeXteR
сообщение Jan 11 2006, 22:16
Сообщение #10


Местный
***

Группа: Свой
Сообщений: 319
Регистрация: 2-08-05
Из: Одесса
Пользователь №: 7 287



Цитата(AndyBig @ Jan 11 2006, 22:38) *
1. Проблем не будет, ничего не нужно.
2. А зачем через диоды? Чем не устраивает стабилизатор?


Да здоровый очень
А Маленькую версию в Одессе заказывать нада и ждать долго =(
Да и по деньгам нада быть оптимальным ....

Хотя думаю обойдусь стабилизатором в ТО220 =)
Go to the top of the page
 
+Quote Post
*SERG
сообщение Jan 12 2006, 04:46
Сообщение #11


Местный
***

Группа: Свой
Сообщений: 274
Регистрация: 10-08-05
Из: Екатеринбург
Пользователь №: 7 517



Цитата(DeXteR @ Jan 11 2006, 22:18) *
Дело было именно в ноге CS Незная оставил микросхему постоянно выбраной.


А почему так нельзя??? Как надо, подскажите плиз mellow.gif
Go to the top of the page
 
+Quote Post
Rst7
сообщение Jan 12 2006, 06:22
Сообщение #12


Йа моск ;)
******

Группа: Модераторы
Сообщений: 4 345
Регистрация: 7-07-05
Из: Kharkiv-city
Пользователь №: 6 610



Цитата(*SERG @ Jan 12 2006, 06:46) *
Цитата(DeXteR @ Jan 11 2006, 22:18) *


Дело было именно в ноге CS Незная оставил микросхему постоянно выбраной.


А почему так нельзя??? Как надо, подскажите плиз mellow.gif


Потому что переход CS 0->1 есть признак окончания комманды и старт ее выполнения. А переход 1->0 соответственно начало комманды.


--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
Go to the top of the page
 
+Quote Post
AndyBig
сообщение Jan 12 2006, 07:46
Сообщение #13


Иногдящий
****

Группа: Свой
Сообщений: 691
Регистрация: 28-02-05
Пользователь №: 2 931



Цитата
Да здоровый очень

Ну, если дешево и сердито, то можно использовать схему типового линейного стабилизатора - стабилитрон+резистор+транзистор, но все же лучше использовать интегральный стабилизатор.
Go to the top of the page
 
+Quote Post
IgorKossak
сообщение Jan 12 2006, 08:27
Сообщение #14


Шаман
******

Группа: Модераторы
Сообщений: 3 064
Регистрация: 30-06-04
Из: Киев, Украина
Пользователь №: 221



Цитата(DeXteR @ Jan 11 2006, 21:18) *
1. Дело в том что Атмега питаеться от 5 В а датафлеш от 3.3
Небудит ли проблемм с уровнем в канале данных от датафлешки к Атмеги Нужен ли там приобразователь уровня ?? Если да - какой посоветуете.

Преобразователь уровня желателен именно в случае применения AVR, т. к. у последнего CMOS уровни, в отличие от многих 51-х, у которых TTL уровни.
Цитата(DeXteR @ Jan 11 2006, 21:18) *
2. Счас Датафлешка питаеться от LM317
Гдето видел схему подачи питания через 3-4 кремниевых диода.
Насколько это приемлимо ???

Приемлемо, применял.

Присоединённые файлы разные по содержимому, а не просто перевод!
Прикрепленные файлы
Прикрепленный файл  3V_DataFlash_to_5V_rus.pdf ( 497.39 килобайт ) Кол-во скачиваний: 299
Прикрепленный файл  3V_DataFlash_to_5V.PDF ( 91.92 килобайт ) Кол-во скачиваний: 155
 
Go to the top of the page
 
+Quote Post
defunct
сообщение Jan 12 2006, 09:48
Сообщение #15


кекс
******

Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326



Цитата(DeXteR @ Jan 12 2006, 00:16) *
Цитата(AndyBig @ Jan 11 2006, 22:38) *

1. Проблем не будет, ничего не нужно.
2. А зачем через диоды? Чем не устраивает стабилизатор?


Да здоровый очень
А Маленькую версию в Одессе заказывать нада и ждать долго =(
Да и по деньгам нада быть оптимальным ....

Хотя думаю обойдусь стабилизатором в ТО220 =)


маленькие 3х вольтовые стабилизаторы
TPS76333 - MSOP..
IRU1010-33 - SOT223..
78L03 - как KT3102 ;>
в крайнем случае питайте DataFlash от стабилитрона, SMD стабилитроны тянут 20-30MA должно хватить для флешки.
а можно и дешевым опером запитать, LM358/LM158 - включить по схеме Voltage Follower итого 2 резюка и опер ~70коп ;>
когда была напряженка со стабилизаторами ARM от опера питал, у LM358 как раз два опера в одном корпусе - 2х уровневое напряжения выдавал... smile.gif
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 30th June 2025 - 21:53
Рейтинг@Mail.ru


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