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

 
 
> DMA + SPI, в STM32F103
777777
сообщение Mar 9 2011, 11:07
Сообщение #1


Профессионал
*****

Группа: Участник
Сообщений: 1 091
Регистрация: 25-07-07
Из: Саратов
Пользователь №: 29 357



Нужно по SPI считывать данные с АЦП и складывать в память. Как это сделать с помощью DMA? Во-первых непонятно с самим SPI, там почему-то биты приема и передачи отдельные, хотя в SPI это невозможно. Во-вторых, как я понял DMA запускается по появлению бита RXNE, но кто запустит SPI? Его надо запустить по появлению сигнала готовности АЦП, программно это можно сделать записав ноль в SPI_DR, но кто это сделает если работать в DMA?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
akimych
сообщение Mar 10 2011, 15:15
Сообщение #2


Участник
*

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



Цитата
1. Берутся два канала DMA: один для передачи по SPI, другой - для приема.
2. Тот, который для передачи, толкается разок программно.
3. Если TXE установлен/установился, DMA передачи запускает (очередную) транзакцию, что приводит и к "втягиванию" данных извне со входа SPI.
4. Как только RXNE установится, DMA приема "слизнет" SPI->DR в память.
5. Возвращаемся к пункту 3, пока счетчик DMA не закончится.
6. Обрабатываем прерывание по завершению приема, переходим к пункту 2.

Цитата
Предложение интересное, но беда в том, что оцифровка должна происходить со строго определенным интервалом, задаваемым таймером, а здесь он будет задаваться фактически скоростью SPI.


Так в п.3 надо заменить запуск от TXE на запуск от другого события. От EXTI дма запускаться не умеет, но должно получиться с таймером.
Хотя при 2мкс должно хватить времени на вариант с прерыванием.
Go to the top of the page
 
+Quote Post



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

 


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


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