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

 
 
> SPI по DMA на разные м/с
Rash
сообщение Jun 6 2017, 10:54
Сообщение #1


Знающий
****

Группа: Свой
Сообщений: 639
Регистрация: 5-09-05
Пользователь №: 8 231



Добрый день.
Подскажите, возможно, ли опрашивать последовательно несколько м/с по SPI переключать при этом CS и использовать DMA и таймер(ы)? Если да, то как?
МК STM32F401, два датчика: акселерометр и гироскоп подключены параллельно с раздельным CS. Частота опроса 400 Гц. Последовательность следующая: выбор и опрос датчик1, выбор и опрос датчик2, ожидание готовности данных, и т.д. Таким образом делать N-выборок без участия CPU.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
AlexandrY
сообщение Jun 6 2017, 21:06
Сообщение #2


Ally
******

Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050



Цитата(Rash @ Jun 6 2017, 13:54) *
Добрый день.
Подскажите, возможно, ли опрашивать последовательно несколько м/с по SPI переключать при этом CS и использовать DMA и таймер(ы)? Если да, то как?
МК STM32F401, два датчика: акселерометр и гироскоп подключены параллельно с раздельным CS. Частота опроса 400 Гц. Последовательность следующая: выбор и опрос датчик1, выбор и опрос датчик2, ожидание готовности данных, и т.д. Таким образом делать N-выборок без участия CPU.

На серии Kinetis от NXP это делается элементарно в одной пересылке DMA. Там вместе с данными в буфер записывается состояние CS.
А в STM32 вижу да, дикая проблема. Даже сцепленных DMA структур не имеет.
Как выход можно было бы применить промежуточный контроллер из серии Kinetis.
Скажем серия KS22 имеет и SPI с аппаратным управлением более 16-ю CS-ами, и DMA со сцепленными блоками и еще такую фичу, как FlexIO, где можно творить какой угодно сериальный стрим.
Go to the top of the page
 
+Quote Post
jcxz
сообщение Jun 6 2017, 21:55
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(AlexandrY @ Jun 6 2017, 23:06) *
На серии Kinetis от NXP это делается элементарно в одной пересылке DMA. Там вместе с данными в буфер записывается состояние CS.

Такое управление CS-ами есть и в Infineon и в Tiva и в OMAP-L. Нету только в STM32, так как его периферию упростили по самое нехочу.

Цитата(Rash @ Jun 6 2017, 16:31) *
Да я не первый год в теме и если бы бросал чем то заниматься, как только, что-то запустилось, то много бы не узнал.
МК 401, а не 407, но в SPI без разницы, вот таймеров меньше и работать с GPIO через DMA можно только одним таймером TIM1.

ну если из любви к искусству и если Вы действительно так въедливы как пишете, то изучите от корки до корки всю периферию своего камня и думаю сможете что-нить придумать.
Тут подобные темы уже не раз обсасывались - поднимите историю.
Как зацепка Вам:
Выделяете один канал DMA, синхронизируемый событиями от таймера, который при каждом event-е от таймера засылает блок конфигурации в регистры другого DMA-канала. А уже тот второй DMA-канал выполняет пересылки память-память, программируя различную периферию и другие DMA-каналы.
Если DMA-контроллер вашего STM может по событию таймера выполнить пересылку блока байт память-память, а по следующему событию таймера - следующего блока из списка в памяти по тому-же целевому адресу, то должно получиться. Мне открывать мануал на периферию STM лень. wink.gif
Ещё можно придумать разные фокусы с подсчётом SCLK вашего SPI каким-то таймером и формированию события по достижении некоего числа SCLK (например - фронта CS, или опять-же - event к DMA).
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Rash   SPI по DMA на разные м/с   Jun 6 2017, 10:54
- - nanorobot   Цитата(Rash @ Jun 6 2017, 15:54) Добрый д...   Jun 6 2017, 11:00
- - Rash   CS в ручную это понятно, тогда от DMA толку нет, в...   Jun 6 2017, 11:11
|- - nanorobot   Цитата(Rash @ Jun 6 2017, 16:11) CS в руч...   Jun 6 2017, 11:16
- - scifi   Можно попробовать замутить хитрую схему с таймерам...   Jun 6 2017, 11:16
|- - nanorobot   Цитата(Rash @ Jun 6 2017, 16:18) nanorobo...   Jun 6 2017, 11:24
|- - jcxz   Цитата(nanorobot @ Jun 6 2017, 13:24) все...   Jun 6 2017, 12:01
- - Rash   nanorobot, Смысла нет передавать 2-3 байта через D...   Jun 6 2017, 11:18
- - Rash   Цитата(nanorobot @ Jun 6 2017, 14:24) все...   Jun 6 2017, 11:27
|- - nanorobot   Цитата(Rash @ Jun 6 2017, 16:27) там SPI ...   Jun 6 2017, 11:31
- - Rash   это не вариант, проще сделать опрос полингом, как ...   Jun 6 2017, 12:16
|- - nanorobot   Цитата(Rash @ Jun 6 2017, 17:16) это не в...   Jun 6 2017, 12:44
|- - scifi   Цитата(Rash @ Jun 6 2017, 15:16) это не в...   Jun 6 2017, 12:48
- - Rash   То что нужно каждые 2.5 мсек по таймеру читать нов...   Jun 6 2017, 13:03
|- - jcxz   Цитата(Rash @ Jun 6 2017, 15:03) Так было...   Jun 6 2017, 13:09
|- - scifi   Цитата(Rash @ Jun 6 2017, 16:03) То что н...   Jun 6 2017, 13:47
- - Rash   А при чём здесь AVR? И чем архитектура не подошла?...   Jun 6 2017, 13:18
|- - jcxz   Цитата(Rash @ Jun 6 2017, 15:18) А при чё...   Jun 6 2017, 13:28
- - Rash   Управлять несколькими CS аппаратно не является при...   Jun 6 2017, 13:41
- - Rash   Ну да, сам, побитно ручками вынимаю. scifi, если е...   Jun 6 2017, 14:04
|- - scifi   Цитата(Rash @ Jun 6 2017, 17:04) scifi, е...   Jun 6 2017, 14:11
- - Rash   Вы меня наверное с кем то путаете. Да я не первый ...   Jun 6 2017, 14:31
|- - scifi   Цитата(Rash @ Jun 6 2017, 17:31) Да я не ...   Jun 6 2017, 18:59
- - amiller   Цитата(jcxz @ Jun 7 2017, 01:55) ну если ...   Jun 7 2017, 03:07
- - AlexandrY   Цитата(jcxz @ Jun 7 2017, 00:55) Такое уп...   Jun 7 2017, 07:34
- - jcxz   Цитата(AlexandrY @ Jun 7 2017, 09:34) В к...   Jun 7 2017, 09:06


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

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 01:27
Рейтинг@Mail.ru


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