DMA

Кто любит RISC в жизни, заходим, не стесняемся.
Ответить
Опытный кот
Аватара пользователя
Сообщения: 721
Зарегистрирован: Ср июн 11, 2014 09:43:13
Откуда: США
DMA

Сообщение Pink-Pank »

Подскажите, хочу скопировать из одной области памяти в другую.

Код: Выделить всё

unsigned long Buffer1[] = {0,1,2,3,4,5,6,7,8,9}, Buffer2[10];
...
	RCC->AHB1ENR |= (1<<22); // вкл DMA2

	DMA2_Stream0->M0AR = &Buffer2;
	DMA2_Stream0->PAR = &Buffer1;
	DMA2_Stream0->NDTR = 10;

	DMA2_Stream0->CR = (1<<25) //канал 1
| (0b10<<6) // направление M->M
| (0b10<<11) // размер данных периферии (32)
| (0b10<<13) // размер данных памяти (32)
| 1;// вкл
но что-то не копирует.. После включения потока ДМА, регистр NDTR резко сбрасывается в 0, как будто бы все передал и DMA отключается, но Buffer2 не меняет своего значения.
Пробовал разные каналы включать - не помогает.

Вообще, для общения памяти с самой собой имеет значение, какой поток и канал включать? или можно любой?
СпойлерИзображение
Вложения
12345.png
(40.8 КБ) 481 скачивание
Fucking static initialization order fiasco
Контактная информация:
Реклама
Опытный кот
Аватара пользователя
Сообщения: 721
Зарегистрирован: Ср июн 11, 2014 09:43:13
Откуда: США

Сообщение Pink-Pank »

О, пардон! Забыл инкрементировать адреса памяти. Все заработало!
Fucking static initialization order fiasco
Контактная информация:
Реклама
Ответить

Вернуться в «ARM»