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

 
 
> AVR и SD(mini SD) память, связь AVR с SD карточкой памяти
сэр_Илья
сообщение Feb 12 2006, 13:57
Сообщение #1





Группа: Новичок
Сообщений: 2
Регистрация: 12-02-06
Пользователь №: 14 249



Нужно связать AVR c SD карточкой памяти (внешняя память для устройства на AVR). Кто нить может подсказать где подробно можно почитать про SD карточки - протокол связи, распиновка разьёма, потребляемый ток и т.д. Вобщем что есть по этой теме. В поисковиках искал подходящего ничего не нашёл. Хотябы пример устройства на AVR с SD карточкой (схема и подробное описание).
Заранее благодарен. Илья. sad.gif
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
R.Gorsky
сообщение Feb 15 2006, 14:05
Сообщение #2





Группа: Новичок
Сообщений: 7
Регистрация: 11-01-06
Из: Киев
Пользователь №: 13 039



Как долго ты ждешь ответа после CMD1 и что возвращает карточка?

Т.к. ты не описывал схему включения, задам несколько вопросов:
- Какой используется кристалл и какая тактовая частота, с какого порта управляется CS?
- Установлен ли керамический блокировочный конденсатор (около 0.1 мкф) по питанию карточки в непосредственной от неё близости?
- Напряжение питания процессора и карточки в пределах 2.8 - 3.6В?
- Если процессор и карточка питаются от разных напряжений, как сделаны преобразователи уровней сигналов?

Для чего устанавливаешь бит SPI2X в SPSR?

Приведи фрагмент кода (желательно на С), где выполняется обращение к каротчке начиная от установки CS= 0 до выдачи байта в карточку.

В принципе нужно сделать цикл, в котором выполняется обращение к карточке, и смотреть с помощью осциллографа временные соотношения между сигналами.
Go to the top of the page
 
+Quote Post
Spider
сообщение Feb 15 2006, 16:37
Сообщение #3


В поисках истины
***

Группа: Свой
Сообщений: 431
Регистрация: 7-01-06
Из: Россия
Пользователь №: 12 923



Цитата(R.Gorsky @ Feb 15 2006, 20:05) *
Как долго ты ждешь ответа после CMD1 и что возвращает карточка?

Код
unsigned char CMD[] = {0x41,0x00,0x00,0x00,0x00,0xFF};
Timeout = 0;

while (Write_Command_MMC(CMD)!=0x00)
{
    if (Timeout++ > 100)
    {
        return(2); //Error (Return Code2)
    }
}

Цитата(R.Gorsky @ Feb 15 2006, 20:05) *
Т.к. ты не описывал схему включения, задам несколько вопросов:
- Какой используется кристалл и какая тактовая частота, с какого порта управляется CS?

Внешний smile.gif 16Mhz, PB0
Цитата(R.Gorsky @ Feb 15 2006, 20:05) *
- Установлен ли керамический блокировочный конденсатор (около 0.1 мкф) по питанию карточки в непосредственной от неё близости?

да. припаян прям к ней между землёй и питанием (земли 2 - замкнуты)
Цитата(R.Gorsky @ Feb 15 2006, 20:05) *
- Напряжение питания процессора и карточки в пределах 2.8 - 3.6В?

3.1 - 3.2 у карточки и 5.1 у процессора.
Цитата(R.Gorsky @ Feb 15 2006, 20:05) *
- Если процессор и карточка питаются от разных напряжений, как сделаны преобразователи уровней сигналов?

Между карточкой и процессором резисторный делитель 450 и 640 Ом. Пробовал на микрухах типа 155ЛП9, там вообще ответов нет.
Цитата(R.Gorsky @ Feb 15 2006, 20:05) *
Для чего устанавливаешь бит SPI2X в SPSR?

А кто сказал что я устанавливаю? (0<<SPI2X) вообщето даёт 0, просто во время тестов 0 менял на 1 и получал 2x - для простоты.
Цитата(R.Gorsky @ Feb 15 2006, 20:05) *
Приведи фрагмент кода (желательно на С), где выполняется обращение к каротчке начиная от установки CS= 0 до выдачи байта в карточку.

Код
unsigned char Write_Command_MMC (unsigned char *CMD)
{
    unsigned char tmp = 0xff;
    unsigned char Timeout = 0;

    MMC_Disable();

    Write_Byte_MMC(0xFF);

    MMC_Enable();

#ifdef DEBUG
    printf("\nWRITE: ");
#endif
    for (unsigned char a = 0;a<0x06;a++)
    {
#ifdef DEBUG
        printf("0x%02x ",*CMD);
#endif
        Write_Byte_MMC(*CMD++);
    }
#ifdef DEBUG
    printf("\nREAD: ");
#endif

    //Wartet auf ein g№ltige Antwort von der MMC/SD-Karte
    while (tmp == 0xff)    
    {
        tmp = Read_Byte_MMC();
#ifdef DEBUG
        printf("0x%02x ",tmp);
#endif
        if (Timeout++ > 100)
        {
            break; //Abbruch da die MMC/SD-Karte nicht Antwortet
        }
    }
#ifdef DEBUG
    printf("\n");
#endif
    return(tmp);
}

unsigned char Read_Byte_MMC (void)
{
    unsigned char Byte = 0;
    SPDR = 0xff;
    loop_until_bit_is_set(SPSR, SPIF);
    Byte = SPDR;
}

void Write_Byte_MMC (unsigned char Byte)
{
    SPDR = Byte;
    loop_until_bit_is_set(SPSR, SPIF);
}
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- сэр_Илья   AVR и SD(mini SD) память   Feb 12 2006, 13:57
- - Alexey Belyaev   Эх. ДОРОГОЙ! Искать лучше надо было. Ибо всё у...   Feb 12 2006, 15:26
- - R.Gorsky   Старые версии стандартов MMC v.3.1 (2003г.) и SD M...   Feb 12 2006, 17:44
- - Alexey Belyaev   Может ты в курсе почему MMC/SD 16Mb не хочет отдав...   Feb 12 2006, 18:54
|- - R.Gorsky   Цитата(Alexey Belyaev @ Feb 12 2006, 20:5...   Feb 13 2006, 11:08
- - Alexey Belyaev   Я ж сказал что буферы ваще не читаются, не только ...   Feb 13 2006, 12:05
- - R.Gorsky   Может не правильно инициализируешь карточку? Вот ...   Feb 14 2006, 10:28
- - Alexey Belyaev   сделал всё как предложено выше. в результате такая...   Feb 15 2006, 11:51
- - aaarrr   После снятия CS нужно передать пустой байт, иначе ...   Feb 15 2006, 15:02
- - R.Gorsky   Цитатаunsigned char Read_Byte_MMC (void) { uns...   Feb 16 2006, 09:55
- - Alexey Belyaev   Странно куда он делся, но у меня он есть А вот то...   Feb 16 2006, 10:01
- - R.Gorsky   В моем устройстве карточка и процессор питаются от...   Feb 16 2006, 11:11


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

 


RSS Текстовая версия Сейчас: 24th August 2025 - 16:47
Рейтинг@Mail.ru


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