|
STM32F4, DMA GPIO event, нельзя начать транзакцию по событию от GPIO? |
|
|
|
 |
Ответов
|
Sep 12 2014, 13:36
|
Гуру
     
Группа: Свой
Сообщений: 2 724
Регистрация: 14-05-07
Из: Ярославль, Россия
Пользователь №: 27 702

|
Цитата 1) можно ли решить задачу используя два DMA и один таймер? Можно с использованием EXTI. Т.е. прерывание по каждому сигналу готовности. Цитата 2) не понятно как именно осуществляется транзакция нескольких байт последовательно в SPI_TX через DMA. Я понимаю так: как только DMA получает сигнал о готовности данных (от таймера или от флага, установленного в обработчике прерывания GPIO) то, в соответствии с настройками, DMA отправляет последовательно 16-байт в SPI_TX. Не понятно как именно DMA узнает что байт улетел наружу и можно кидать следующий байт в SPI_TX. если ниак, то получается что DMA тупо перезапишет регистр 16-раз. О готовности данных он узнает по запросам на DMA-транзакцию. Например, SPI_TX. Не от таймера или флага GPIO, а именно от SPI_TX. Однако, ничто не мешает копировать в SPI_DR по запросам от таймера или GPIO, но в этом случае программист должен гарантировать, что не будет перезаписи, а ранее записанные данные уже обработаны. Вопрос в том, как заставить таймер сказать DMA, что можно начинать передавать данные в SPI_DR по запросам от SPI_TX?
|
|
|
|
|
Sep 12 2014, 14:06
|
Знающий
   
Группа: Свой
Сообщений: 688
Регистрация: 4-09-09
Пользователь №: 52 195

|
Цитата(adnega @ Sep 12 2014, 17:36)  О готовности данных он узнает по запросам на DMA-транзакцию. Например, SPI_TX. Не от таймера или флага GPIO, а именно от SPI_TX. запрос на транзакцию от SPI_TX для DMA может быть только по готовности данных в SPI_TX. Т.е. появился байт в SPI_TX - возникает событие для DMA. У меня два DMA: один передает "тупые" данные, другой принимает валидные. Так вот первый должен как-то узнать о том что отправлять надо не сразу 16 байт один за другим, а только когда один отправился - -отправлять другой, при этом запрос на транзакцию он принимает от флага GPIO(или таймера). Вы предлагаете третий DMA завести, который будет принимать запрос от SPI_TX? но как это поможет первому DMA узнать когда нужно отправить слудующий байт из 16ти... не понимаю логику...  P.S. или существует механизм(наличие флага?), позволяющий определить что SPI_TX пуст?
|
|
|
|
|
Sep 12 2014, 14:42
|
Гуру
     
Группа: Свой
Сообщений: 2 724
Регистрация: 14-05-07
Из: Ярославль, Россия
Пользователь №: 27 702

|
Цитата(TigerSHARC @ Sep 12 2014, 18:06)  запрос на транзакцию от SPI_TX для DMA может быть только по готовности данных в SPI_TX. Т.е. появился байт в SPI_TX - возникает событие для DMA. У меня два DMA: один передает "тупые" данные, другой принимает валидные. Так вот первый должен как-то узнать о том что отправлять надо не сразу 16 байт один за другим, а только когда один отправился - -отправлять другой, при этом запрос на транзакцию он принимает от флага GPIO(или таймера). Вы предлагаете третий DMA завести, который будет принимать запрос от SPI_TX? но как это поможет первому DMA узнать когда нужно отправить слудующий байт из 16ти... не понимаю логику...  P.S. или существует механизм(наличие флага?), позволяющий определить что SPI_TX пуст? Допустим мы используем SPI1. SPI1_TX можно найти на канале 3 в DMA2_Stream3, SPI1_RX можно найти на канале 3 в DMA2_Stream2. Настраиваем DMA2_Stream3 на копирование данных из памяти, в которой лежит 0xFF, в SPI1->DR. Длина 16 транзакций. Настраиваем DMA2_Stream2 на копирование данных из SPI1->DR в буфер приема. Длина 16 транзакций. Устанавливаем в SPI1 TXDMAEN и RXDMAEN. В SPI будет отправлено 16 раз 0xFF и принято 16 байт в буфер приема.
|
|
|
|
Сообщений в этой теме
TigerSHARC STM32F4, DMA GPIO event Sep 10 2014, 12:38 adnega Цитата(TigerSHARC @ Sep 10 2014, 16:38) Ч... Sep 10 2014, 12:45 TigerSHARC Цитата(adnega @ Sep 10 2014, 16:45) Можно... Sep 10 2014, 12:47  adnega Цитата(TigerSHARC @ Sep 10 2014, 16:47) Я... Sep 10 2014, 13:00   TigerSHARC Цитата(adnega @ Sep 10 2014, 17:00) А вы ... Sep 10 2014, 13:17    adnega Цитата(TigerSHARC @ Sep 10 2014, 17:17) е... Sep 10 2014, 13:42     TigerSHARC Цитата(adnega @ Sep 10 2014, 17:42) Можно... Sep 10 2014, 15:26      adnega Цитата(TigerSHARC @ Sep 10 2014, 19:26) В... Sep 10 2014, 16:01      jcxz Цитата(TigerSHARC @ Sep 10 2014, 21:26) С... Sep 12 2014, 02:52       AHTOXA Цитата(jcxz @ Sep 12 2014, 08:52) Так как... Sep 12 2014, 10:09        adnega Цитата(AHTOXA @ Sep 12 2014, 14:09) Не бо... Sep 12 2014, 10:11       TigerSHARC Цитата(jcxz @ Sep 12 2014, 06:52) Так как... Sep 12 2014, 10:29        adnega Цитата(TigerSHARC @ Sep 12 2014, 14:29) Т... Sep 12 2014, 11:09         AHTOXA А я б не парился, и сделал запуск DMA-обмена с SPI... Sep 12 2014, 11:28          TigerSHARC Цитата(AHTOXA @ Sep 12 2014, 15:28) А я б... Sep 12 2014, 11:35           AHTOXA Цитата(TigerSHARC @ Sep 12 2014, 17:35) Э... Sep 12 2014, 16:34            adnega Цитата(AHTOXA @ Sep 12 2014, 20:34) Ещё о... Sep 12 2014, 16:45            jcxz Цитата(AHTOXA @ Sep 12 2014, 22:34) Насчё... Sep 12 2014, 19:46             adnega Цитата(jcxz @ Sep 12 2014, 23:46) Вот это... Sep 12 2014, 20:14              jcxz Цитата(adnega @ Sep 13 2014, 02:14) 1. DM... Sep 13 2014, 08:24               adnega До сих пор не ясно нужно ли обрабатывать пришедшие... Sep 13 2014, 08:57               AHTOXA Цитата(jcxz @ Sep 13 2014, 14:24) Вы сейч... Sep 13 2014, 12:04             AHTOXA Цитата(jcxz @ Sep 13 2014, 01:46) Вот это... Sep 13 2014, 06:35 Сергей Борщ А там таймер не может запускать DMA по capture? Sep 12 2014, 11:52 adnega Цитата(Сергей Борщ @ Sep 12 2014, 15:52) ... Sep 12 2014, 12:14 Golikov A. почему 16 раз?
нельзя сказать чтобы ДМА забрало 16... Sep 12 2014, 12:16 adnega Цитата(Golikov A. @ Sep 12 2014, 16:16) п... Sep 12 2014, 13:10    TigerSHARC Цитата(adnega @ Sep 12 2014, 18:42) Допус... Sep 12 2014, 14:46     adnega Цитата(TigerSHARC @ Sep 12 2014, 18:46) В... Sep 12 2014, 15:11 Golikov A. В LPC ДМА следит как за флагом готовности данных е... Sep 12 2014, 13:30 TigerSHARC В моей задаче нужно записывать данные в буфер. В м... Sep 13 2014, 11:04 adnega Цитата(TigerSHARC @ Sep 13 2014, 15:04) В... Sep 14 2014, 05:55 Golikov A. АНТОХА вы иногда резковаты, иногда не по делу.
jc... Sep 13 2014, 17:08 jcxz Цитата(Golikov A. @ Sep 13 2014, 23:08) j... Sep 14 2014, 13:52
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|