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

 
 
> STM32F103. DMA Mem-to-Mem
ViKo
сообщение Feb 17 2011, 08:55
Сообщение #1


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Правильно ли я понимаю, что во время работы DMA нельзя программе залазить в память, с которой работает DMA?
Вот такую функцию исследую, пока не дожусь конца передачи, дальше не иду. (Не показана установка режима работы, и разрешение тактирования, это делается однократно в начальной установке). Тогда все работает. Иначе, если программа пишет туда, откуда читает DMA, появляется прерывание TEIFx Channel x transfer error flag. А прерывания, что дошло до конца, уже нет.
Если все так, то ценность такого DMA уменьшается. Почти то же можно реализовать, как у меня в закомментированном коде.
Код
void ExtDpy2LCD_copy(uint32_t Offset, uint32_t Size)
{
  LED_On();
  DMA2->IFCR |= DMA_IFCR_CTCIF1;
  DMA2_Channel1->CCR &= ~0x00000001;  // запретить пересылку
  DMA2_Channel1->CPAR = EXTDPY + Offset; // начальный адрес буфера экрана
  DMA2_Channel1->CMAR = 0x6c020000 + Offset; // начальный адрес памяти ЖКИ
  DMA2_Channel1->CNDTR = Size;   // 16-битовые пересылки  
  DMA2_Channel1->CCR |= 0x00000001;  // разрешить пересылку
  while (!(DMA2->ISR & DMA_ISR_TCIF1));
  LED_Off();
/*
  uint16_t *pSour = (uint16_t *)(EXTDPY + Offset);
  uint16_t *pDist = (uint16_t *)(0x6c020000 + Offset);
  LED_On();
  for (uint32_t i=Size; i--; ) {
    *pDist++ = *pSour++;
  }
  LED_Off();
*/
}


Еще один факт для размышлений. Измерил осциллографом время работы показанной выше функции. Для Size = 320*240/2.
С DMA имею 20ms, без DMA 21.5ms.
Естественно, польза от DMA будет, если, пока байты перекидываются с места на место, процессор будет занят чем-нибудь другим. Например, принимать данные по другим интерфейсам и складывать во внутреннее ОЗУ. Надеюсь, это не притормозит работу DMA.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- ViKo   STM32F103. DMA Mem-to-Mem   Feb 17 2011, 08:55
- - AlexandrY   Цитата(ViKo @ Feb 17 2011, 10:55) Еще оди...   Feb 17 2011, 09:04
|- - ViKo   Цитата(AlexandrY @ Feb 17 2011, 11:04) Та...   Feb 17 2011, 10:13
|- - scifi   Цитата(ViKo @ Feb 17 2011, 13:13) Контрол...   Feb 17 2011, 10:26
|- - ViKo   Цитата(scifi @ Feb 17 2011, 12:26) Я прав...   Feb 17 2011, 10:32
|- - scifi   Цитата(ViKo @ Feb 17 2011, 13:32) На вопр...   Feb 17 2011, 10:42
|- - ViKo   Цитата(scifi @ Feb 17 2011, 12:42) 1. Пол...   Feb 17 2011, 12:03
|- - scifi   Цитата(ViKo @ Feb 17 2011, 15:03) Вопрос ...   Feb 17 2011, 12:35
- - ViKo   Попытал счастья с кодом, выполняемым из Flash. Пок...   Feb 18 2011, 08:43
|- - HardEgor   Цитата(ViKo @ Feb 18 2011, 14:43) То есть...   Feb 18 2011, 09:38
|- - ViKo   Цитата(HardEgor @ Feb 18 2011, 11:38) Мож...   Feb 18 2011, 09:47
- - HardEgor   И еще, может быть ты попадаешь на момент когда сов...   Feb 18 2011, 09:50
|- - ViKo   Цитата(HardEgor @ Feb 18 2011, 11:50) пиш...   Feb 18 2011, 12:47
- - HardEgor   Так проверить просто - выведи TEIFx на внешний пор...   Feb 18 2011, 15:18
|- - ViKo   Цитата(HardEgor @ Feb 18 2011, 17:18) Так...   Feb 18 2011, 15:43
- - HardEgor   Появляется ошибка при передаче DMA или нет, при от...   Feb 18 2011, 20:06
- - ViKo   Проверил работу программы из Flash без отладчика. ...   Feb 21 2011, 14:33
- - ViKo   После того, как переписал все свои программы для р...   Feb 25 2011, 08:25
- - scifi   Цитата(ViKo @ Feb 25 2011, 11:25) А то и ...   Feb 25 2011, 09:00
- - ViKo   Цитата(scifi @ Feb 25 2011, 11:00) Ещё мо...   Feb 25 2011, 10:09


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

 


RSS Текстовая версия Сейчас: 18th July 2025 - 17:45
Рейтинг@Mail.ru


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