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

 
 
> STM32F4+HAL+FIFO_DMA+UART_TX
vitmeat
сообщение Aug 26 2015, 14:26
Сообщение #1





Группа: Участник
Сообщений: 13
Регистрация: 22-01-11
Пользователь №: 62 402



Доброго времени суток.

Я пытаюсь настроить передачу по UART при помощи кольцевого FIFO буфера с использованием соответствующего режима DMA.
Но как то не получилось у меня приостанавливать передачу, и стартовать ее заново с того же места, всегда получается с начала.
Функции HAL_UART_DMAPause и HAL_UART_DMAResume не работают, по крайней мере так, как я ожидаю.
__HAL_DMA_GET_COUNTER - возвращает количество еще не переданных данных.
__HAL_DMA_SET_COUNTER - устанавливает количество еще не переданных данных, но она опять же не работает.

Настройки DMA
Код
    hdma_tx.Init.Channel             = USARTx_TX_DMA_CHANNEL;
    hdma_tx.Init.Direction           = DMA_MEMORY_TO_PERIPH;
    hdma_tx.Init.PeriphInc           = DMA_PINC_DISABLE;
    hdma_tx.Init.MemInc              = DMA_MINC_ENABLE;
    hdma_tx.Init.PeriphDataAlignment = DMA_PDATAALIGN_BYTE;
    hdma_tx.Init.MemDataAlignment    = DMA_MDATAALIGN_BYTE;
    hdma_tx.Init.Mode                = DMA_CIRCULAR;
    hdma_tx.Init.Priority            = DMA_PRIORITY_LOW;
    hdma_tx.Init.FIFOMode            = DMA_FIFOMODE_ENABLE;
    hdma_tx.Init.FIFOThreshold       = DMA_FIFO_THRESHOLD_FULL;
    hdma_tx.Init.MemBurst            = DMA_MBURST_SINGLE;
    hdma_tx.Init.PeriphBurst         = DMA_MBURST_SINGLE;


В итоге сейчас остановился на реализации отдельного кольцевого FIFO буфера и обычной передаче по DMA, а в прерывании DMA дописываю в буфер то, что еще пришло за время передачи. Но получается что у меня два буфера, один FIFO другой DMA.

Подскажите пожалуйста, как правильно работать с кольцевым режимом DMA.
То есть, хочется докладывать в кольцевой буфер пока DMA передает, и не блокировать процесс, и чтобы это был всего один буфер.
Или этого нельзя делать пока DMA не отработал?

Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Golikov A.
сообщение Aug 26 2015, 19:48
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454



Цитата
- записал на скрижали ... sm.gif

копирайт не забудьте....

Цитата
Ну, в общем, один и тот же:

ну тогда это не совсем то что вы на самом деле хотите менять...

Я думаю стоит почитать про ДМА первоисточник, и забить на эти библиотеки. По мануалу там как-то все не сложно.

Go to the top of the page
 
+Quote Post
king2
сообщение Aug 26 2015, 22:05
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 255
Регистрация: 17-08-06
Из: Москва
Пользователь №: 19 646



Можно еще настроить DMA в режим curcular? чтобы он осылал буфер с начала до конца и потом начинал снова с начала?
тогда по прерыванию half transfer complete докидываете в буфер первую половину, по прерыванию full transfer complete докидываете вторую.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- vitmeat   STM32F4+HAL+FIFO_DMA+UART_TX   Aug 26 2015, 14:26
- - DrGluck   Этимологию и топонимику DMA в студию ... ( дубль 2...   Aug 26 2015, 14:41
- - Golikov A.   да ничего они не индифферентны.... они шаряться по...   Aug 26 2015, 16:22
- - vitmeat   Ну в общем суть такая: * Послали данных, настрои...   Aug 26 2015, 16:51
|- - SSerge   Цитата(vitmeat @ Aug 26 2015, 23:51) Как ...   Aug 26 2015, 17:33
|- - vitmeat   Цитата(SSerge @ Aug 26 2015, 20:33) А зач...   Aug 26 2015, 17:39
- - Golikov A.   __HAL_DMA_SET_COUNTER __HAL_DMA_GET_COUNTER как ...   Aug 26 2015, 17:03
- - vitmeat   Ну, в общем, один и тот же: #define __HAL_DMA_SET_...   Aug 26 2015, 17:11
- - DrGluck   "... да ничего они не индифферентны.... они ш...   Aug 26 2015, 17:18
- - SSerge   Настроить в регистрах DMA начальный адрес и количе...   Aug 26 2015, 18:04
- - SasaVitebsk   Работаешь - работаешь. Читаешь доки - читаешь. А п...   Aug 27 2015, 05:14
|- - SSerge   Цитата(SasaVitebsk @ Aug 27 2015, 12:14) ...   Aug 27 2015, 07:30
|- - SasaVitebsk   Цитата(SSerge @ Aug 27 2015, 10:30) Буфер...   Aug 27 2015, 09:02
- - SSerge   Ну так модбасу больше одного пакета за раз передав...   Aug 27 2015, 09:21


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

 


RSS Текстовая версия Сейчас: 21st July 2025 - 12:40
Рейтинг@Mail.ru


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