Массив и DMA
Массив и DMA
Здравствуйте, такой вопрос, Есть массив uint8_t А[8][16] и два масссива uint8_t B[16] C[16] можноли как то настроить DMA memory to memory чтобы в массив В заносились данные с массива А построчно сначала А[0][ ] потом А[1][ ] а в С с массива А начиная с А[4]
- Реклама
- AlanDrakes
- Прорезались зубы
- Сообщения: 236
- Зарегистрирован: Пн июл 04, 2016 16:51:22
- Откуда: Россия, Омск
Re: Массив и DMA
Такой код сработал бы в STM32F4/F7 и аналогичных.
Для F1/F0/F3 придётся подобрать соответствующие названия регистров.
Либо я неправильно понял Ваше пожелание.
Если нужно сделать так:
A[0][0] -> B[0]
A[0][1] -> B[1]
A[0][2] -> B[2]
<...>
То всё сработает.
Если так:
A[0][0] -> B[0]
A[1][0] -> B[1]
A[2][0] -> B[2]
То не сработает. DMA проходит по памяти побайтно и не будет прыгать через массив.
И, да, запрягать DMA для копирования 16 байт - стрелять по воробьям из пушки. Проще сделать самим процессором.
Для F1/F0/F3 придётся подобрать соответствующие названия регистров.
Код: Выделить всё
DMAx_StreamY->M0AR = (uint32_t)&(A[0][0]);
DMAx_StreamY->PAR = (uint32_t)&(B[0]);
DMAx_StreamY->NDTR = 16;
Если нужно сделать так:
A[0][0] -> B[0]
A[0][1] -> B[1]
A[0][2] -> B[2]
<...>
То всё сработает.
Если так:
A[0][0] -> B[0]
A[1][0] -> B[1]
A[2][0] -> B[2]
То не сработает. DMA проходит по памяти побайтно и не будет прыгать через массив.
И, да, запрягать DMA для копирования 16 байт - стрелять по воробьям из пушки. Проще сделать самим процессором.
Re: Массив и DMA
[uquote="SyncM",url="/forum/viewtopic.php?p=3656358#p3656358"]Здравствуйте, такой вопрос, Есть массив uint8_t А[8][16] и два масссива uint8_t B[16] C[16] можноли как то настроить DMA memory to memory чтобы в массив В заносились данные с массива А построчно сначала А[0][ ] потом А[1][ ] а в С с массива А начиная с А[4][/uquote]
Да, возможно. Например EDMA3 в OMAP-L1xx-процессорах умеет выполнять 3-х-мерные передачи и может как угодно переставлять строки/столбцы массивов при пересылке.
Добавлено after 46 seconds:
[uquote="AlanDrakes",url="/forum/viewtopic.php?p=3656692#p3656692"]То не сработает. DMA проходит по памяти побайтно и не будет прыгать через массив.[/uquote]
Не говорите за все процессоры - вы всех не знаете.
Да, возможно. Например EDMA3 в OMAP-L1xx-процессорах умеет выполнять 3-х-мерные передачи и может как угодно переставлять строки/столбцы массивов при пересылке.
Добавлено after 46 seconds:
[uquote="AlanDrakes",url="/forum/viewtopic.php?p=3656692#p3656692"]То не сработает. DMA проходит по памяти побайтно и не будет прыгать через массив.[/uquote]
Не говорите за все процессоры - вы всех не знаете.
- 240265
- Электрический кот
- Сообщения: 1029
- Зарегистрирован: Сб мар 09, 2013 11:29:22
- Откуда: 40RUS, Жуков
Re: Массив и DMA
jcxz
[uquote="AlanDrakes",url="/forum/viewtopic.php?p=3656692#p3656692"]Такой код сработал бы в STM32F4/F7 и аналогичных.
Для F1/F0/F3 придётся подобрать соответствующие названия регистров.[/uquote]
[uquote="AlanDrakes",url="/forum/viewtopic.php?p=3656692#p3656692"]Такой код сработал бы в STM32F4/F7 и аналогичных.
Для F1/F0/F3 придётся подобрать соответствующие названия регистров.[/uquote]
IVL ex UA6PJ
Re: Массив и DMA
[uquote="240265",url="/forum/viewtopic.php?p=3656910#p3656910"]jcxz[/uquote]
И...?
И...?
- Реклама
Re: Массив и DMA
Спасибо за ответы, да мне нужно было бы
A[0][0] -> B[0]
A[1][0] -> B[1]
A[2][0] -> B[2]
проц STM32F1,
придется делать в цикле
A[0][0] -> B[0]
A[1][0] -> B[1]
A[2][0] -> B[2]
проц STM32F1,
придется делать в цикле
- AlanDrakes
- Прорезались зубы
- Сообщения: 236
- Зарегистрирован: Пн июл 04, 2016 16:51:22
- Откуда: Россия, Омск
Re: Массив и DMA
[uquote="jcxz",url="/forum/viewtopic.php?p=3656876#p3656876"]Не говорите за все процессоры - вы всех не знаете.
[/uquote]
Согласен, всех не знаю
Но предположил (и неожиданно, угадал) что это STM32Fx
Про F1 подумывал.
Как-никак они больше распространены среди любителей (да и на прилавках магазинов тоже).
Согласен, всех не знаю
Но предположил (и неожиданно, угадал) что это STM32Fx
Про F1 подумывал.
Как-никак они больше распространены среди любителей (да и на прилавках магазинов тоже).


