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

 
 
> DMA - для чего он и как его использовать
Abakt
сообщение Jan 30 2007, 22:39
Сообщение #1


Участник
*

Группа: Новичок
Сообщений: 73
Регистрация: 10-01-07
Пользователь №: 24 292



Подскажите для чего нужен DMA и если можно пример как его использовать. Пример "фирменный" или свой - в чем "СОЛЬ" DMA ?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
beer_warrior
сообщение Jan 31 2007, 22:35
Сообщение #2


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

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



Цитата
C сточностью до наоборот - курить будет процессор, а DMA будет его тормозить и тупо выполнять его приказ.

А и действительно. Не дадите ли ссылку на доку? Момент ведь весьма принципиальный.


--------------------
Вони шукають те, чого нема,
Щоб довести, що його не існує.
Go to the top of the page
 
+Quote Post
sonycman
сообщение Feb 1 2007, 00:40
Сообщение #3


Любитель
*****

Группа: Свой
Сообщений: 1 864
Регистрация: 20-08-06
Из: Тольятти
Пользователь №: 19 695



Цитата(beer_warrior @ Jan 31 2007, 23:35) *
А и действительно. Не дадите ли ссылку на доку? Момент ведь весьма принципиальный.

Вот что написано в мануале к SAM7S:

The Memory Controller has a simple, hard-wired priority bus arbiter that gives the control of the
bus to one of the two masters. The Peripheral DMA Controller has the highest priority; the ARM
processor has the lowest one.
[AT91SAM7S.pdf, 6175G–ATARM–22-Nov-06, page 120]

Действительно, курить в сторонке будет процессор, а не DMA...

Сообщение отредактировал sonycman - Feb 1 2007, 00:41
Go to the top of the page
 
+Quote Post
Karl
сообщение Feb 1 2007, 08:49
Сообщение #4


Частый гость
**

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



Помогите, пожалуйста, с конкретной задачей: Необходимо через ДМА передавать массив в SPI и получать из него ответ (контроллер SAM7S64). Какие операции необходимо произвести?
Go to the top of the page
 
+Quote Post
Kitsok
сообщение Feb 1 2007, 12:23
Сообщение #5


Местный
***

Группа: Свой
Сообщений: 211
Регистрация: 9-11-06
Пользователь №: 22 136



Цитата(Karl @ Feb 1 2007, 08:49) *
Помогите, пожалуйста, с конкретной задачей: Необходимо через ДМА передавать массив в SPI и получать из него ответ (контроллер SAM7S64). Какие операции необходимо произвести?


Вот как делаю я (коментарии от специалистов приветствуются wink.gif )
Здесь только отсылка, ну и особенности от FreeRTOS, но общий смысл должен быть понятен.

Код
void SPI_task(void *pvParameters)
{
    unsigned portCHAR i;
    unsigned portCHAR SPI_buf[8];
    ( void ) pvParameters;
    portENTER_CRITICAL();

    AT91F_PMC_EnablePeriphClock(AT91C_BASE_PMC, 1 << AT91C_ID_SPI);
    AT91F_PIO_CfgPeriph(AT91C_BASE_PIOA, AT91C_PA11_NPCS0 |
        AT91C_PA12_MISO |
        AT91C_PA13_MOSI |
        AT91C_PA14_SPCK, 0);
    AT91F_SPI_Reset(AT91C_BASE_SPI);

    AT91C_BASE_SPI->SPI_MR=0x0E0011;//Master mode, fixed select, disable decoder, FDIV=0 (MCK), PCS=1110

    AT91F_SPI_CfgCs(AT91C_BASE_SPI, 0,  AT91C_SPI_NCPHA | (128 << 8) | 0x04 );
    AT91F_SPI_Enable(AT91C_BASE_SPI);
    AT91F_PDC_Open(AT91C_BASE_PDC_SPI);
    for(i=0;i<8;i++) SPI_buf[i]=i;
    portEXIT_CRITICAL();

    for(;;)

     {
        while(AT91F_SPI_SendFrame(AT91C_BASE_SPI,(char*) &SPI_buf[0],8,0,0) == 0)
          vTaskDelay(portTICK_RATE_MS * 10);
        i++;
        SPI_buf[7]=i;
        vTaskDelay(portTICK_RATE_MS * 1000);
     }
}
Go to the top of the page
 
+Quote Post
Karl
сообщение Feb 1 2007, 13:26
Сообщение #6


Частый гость
**

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



Спасибо, вроде все понятно. А с приемом Вы не разбирались?
Go to the top of the page
 
+Quote Post
Kitsok
сообщение Feb 1 2007, 14:08
Сообщение #7


Местный
***

Группа: Свой
Сообщений: 211
Регистрация: 9-11-06
Пользователь №: 22 136



Цитата(Karl @ Feb 1 2007, 13:26) *
Спасибо, вроде все понятно. А с приемом Вы не разбирались?

Нет, мне пока без надобности. Я на прием PDC использую с ADC. Код надо?
Go to the top of the page
 
+Quote Post
Karl
сообщение Feb 1 2007, 16:47
Сообщение #8


Частый гость
**

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



Цитата(Kitsok @ Feb 1 2007, 16:08) *
Цитата(Karl @ Feb 1 2007, 13:26) *

Спасибо, вроде все понятно. А с приемом Вы не разбирались?

Нет, мне пока без надобности. Я на прием PDC использую с ADC. Код надо?


Да, пригодится. Кстати, передача заработала сразу smile.gif Спасибо!

У меня на SPI АЦП сидит. Так что надо и передачу и прием.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Abakt   DMA - для чего он и как его использовать   Jan 30 2007, 22:39
- - beer_warrior   DMA aka Direct Memory Access - дает возможность п...   Jan 31 2007, 01:07
- - Abakt   Спасибо. подскажите апноут какой нить чтоб посмотр...   Jan 31 2007, 01:20
- - Abakt   и какова скорость приема дданных ? например по пар...   Jan 31 2007, 01:45
- - defunct   DMA - это маленький простеникий и тупой slave сопр...   Jan 31 2007, 02:36
|- - zltigo   Цитата(defunct @ Jan 31 2007, 01:36) Доми...   Jan 31 2007, 20:34
- - beer_warrior   ЦитатаСпасибо. подскажите апноут какой нить чтоб п...   Jan 31 2007, 10:27
- - Abakt   большое спасибо за помощь. сижу разбираюсь.   Jan 31 2007, 11:40
- - Dron_Gus   Цитата(zltigo @ Jan 31 2007, 20:34) C сто...   Jan 31 2007, 22:17
|- - ASN   zltigo Режим работы контроллера DMA определяется ...   Jan 31 2007, 23:05
||- - Kitsok   Это инициализация Код#define NCHANNELS 8 extern ...   Feb 2 2007, 11:48
||- - Karl   Можно ли одновременно передавать массив данных в S...   Feb 6 2007, 13:16
||- - Kitsok   Цитата(Karl @ Feb 6 2007, 13:16) Можно ли...   Feb 6 2007, 15:28
||- - Karl   Цитата(Kitsok @ Feb 6 2007, 17:28) Цитата...   Feb 7 2007, 08:44
||- - Kitsok   Цитата(Karl @ Feb 7 2007, 08:44) Спасибо,...   Feb 12 2007, 19:01
|- - zltigo   Цитата(sonycman @ Jan 31 2007, 23:40) The...   Feb 1 2007, 19:38
|- - defunct   Цитата(zltigo @ Feb 1 2007, 18:38) Причем...   Feb 2 2007, 01:46
- - Dron_Gus   Цитата(Kitsok @ Feb 1 2007, 14:08) Нет, м...   Feb 1 2007, 14:53
- - Karl   Цитата(Kitsok @ Feb 12 2007, 21:01) Цитат...   Feb 15 2007, 07:26
|- - Kitsok   Спасибо большое! Я так и думал, что в общем-т...   Feb 15 2007, 18:55
|- - beer_warrior   ЦитатаСобственно работа: Кодfor(;;) { whi...   Feb 15 2007, 19:59
|- - Karl   Цитата(beer_warrior @ Feb 15 2007, 21:59)...   Feb 16 2007, 09:29
|- - Kitsok   Цитата(beer_warrior @ Feb 15 2007, 19:59)...   Feb 16 2007, 11:46
|- - HARMHARM   Цитата(Kitsok @ Feb 16 2007, 10:46) Друго...   Feb 16 2007, 12:39
|- - Karl   Цитата(Kitsok @ Feb 16 2007, 13:46) Вот д...   Feb 16 2007, 12:53
|- - Kitsok   Цитата(Karl @ Feb 16 2007, 12:53) SPI раб...   Feb 20 2007, 01:03
|- - Karl   Цитата(Kitsok @ Feb 20 2007, 03:03) Цитат...   Feb 20 2007, 06:54
|- - Kitsok   Всем привет! Вчера вперся в непонятную пробле...   Feb 20 2007, 12:23
- - Slonic   Подскажите, пожалуйста, можно ли использовать DMA ...   Feb 16 2007, 14:35
- - Dron_Gus   А обьясните мне глупому по PDC у SAM7. Предположим...   Feb 20 2007, 17:21
- - Сергей Борщ   Цитата(Dron_Gus @ Feb 20 2007, 16:21) Зна...   Feb 20 2007, 18:01


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

 


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


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