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

 
 
2 страниц V  < 1 2  
Reply to this topicStart new topic
> STM32F2xx - как покрасивее считывать внешнее АЦП черз SPI, с DMA и желательно в автомате
Сергей Борщ
сообщение May 22 2012, 17:28
Сообщение #16


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



QUOTE (SBE @ May 17 2012, 16:50) *
На поверхностный взгляд по спаду BUSY можно сгенерировать событие триггера таймера с вывода внешнего триггера TIM _ETR или захвата TIM_CH1 для запроса к DMA, а этим DMA пулять в SPI на выход.
Правильно ли я понимаю, что по захвату DMA может пульнуть байты никак не связанные с таймером? Как-то мутно у них в документации написано:
QUOTE
After an event, the peripheral sends a request signal to the DMA controller. The DMA
controller serves the request depending on the channel priorities. As soon as the DMA
controller accesses the peripheral, an Acknowledge signal is sent to the peripheral by the
DMA controller. The peripheral releases its request as soon as it gets the Acknowledge
signal from the DMA controller. Once the request has been deasserted by the peripheral
Вот и пойми их - в выделенных местах имеется ввиду одна и та же периферия, т.е. в данном случае - таймер, или разные?


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
Tolyaha
сообщение May 23 2012, 08:47
Сообщение #17


Частый гость
**

Группа: Свой
Сообщений: 116
Регистрация: 2-03-07
Из: Украина
Пользователь №: 25 826



Цитата(Сергей Борщ @ May 11 2012, 17:41) *
Если бы я мог инициировать транзакцию DMA внешним сигналом - проблем мы не было.

Почти у всех таймеров есть входы TIMx_CH1, TIMx_CH2,TIMx_CH3,TIMx_CH4, которые по изменению уровня могут генерить транзакцию DMA, (проверено, работает), а DMA запишет в SPIDR данные и SPI считает АЦП, по завершению чтения АЦП другой канал DMA сохранит измерение в памяти. Все без участия ядра. Причем таймер при этом может жить своей жизнью и на него эти входы никак не влияют, кроме того, что значение таймера будет сохраняться в регистре захвата таймера.

PS. на этих входах таймера и DMA у меня построен вобще хитрый спец интерфейс и многоходовые транзакции (по смене сигнала на одном пине, DMA изменяет уровень на другом пине, при этом еще один канад ДМА сохраняет данные с порта, а на другой порт по еще одному каналу данные из памяти перемещаются в порт). Эти входы таймеров имеют еще и фильтр настраеваемый на различное количество тактов, что позволяет делать задержку транзакции ДМА на нужное время.
Go to the top of the page
 
+Quote Post
SBE
сообщение May 23 2012, 09:32
Сообщение #18


Частый гость
**

Группа: Участник
Сообщений: 108
Регистрация: 8-09-05
Пользователь №: 8 384



Цитата(Сергей Борщ @ May 22 2012, 21:28) *
Правильно ли я понимаю, что по захвату DMA может пульнуть байты никак не связанные с таймером? Как-то мутно у них в документации написано:

Написано действительно мутно. А вот AN2548 "Using the STM32F101xx and STM32F103xx DMA controller" описывает подходящий пример, когда по захвату внешнего строба таймером генерируется DMA, записывающее из порта в память. Как бы должно жить и с записью в SPI.
Цитата
On the rising edge of the external trigger, the timer generates a DMA request. As the GPIO data register address is
set to DMA1 channel 6 peripheral address, the DMA controller reads the data from the
GPIO port on each DMA request, and stores it into an SRAM buffer.

Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение May 23 2012, 09:55
Сообщение #19


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Спасибо всем - да, до AN2548 я не добрался. Посмотрел - действительно, то, что нужно. Разводка упростилась. Так и буду действовать.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 9th August 2025 - 16:38
Рейтинг@Mail.ru


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