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

 
 
2 страниц V  < 1 2  
Reply to this topicStart new topic
> SPI по DMA на разные м/с
Rash
сообщение Jun 6 2017, 13:18
Сообщение #16


Знающий
****

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



А при чём здесь AVR? И чем архитектура не подошла?
Захотелось улучшить процесс опроса. Сам пока не дошёл как, поинтересовался и коллег, может кто делал или видит способ.
Go to the top of the page
 
+Quote Post
jcxz
сообщение Jun 6 2017, 13:28
Сообщение #17


Гуру
******

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



Цитата(Rash @ Jun 6 2017, 15:18) *
А при чём здесь AVR? И чем архитектура не подошла?

Вы когда с AVR слазили, выбирали новый МК. Почему тогда не выбрали МК, который умеет управлять несколькими CS в одном SPI?
Go to the top of the page
 
+Quote Post
Rash
сообщение Jun 6 2017, 13:41
Сообщение #18


Знающий
****

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



Управлять несколькими CS аппаратно не является приоритетной задачей, что бы ради неё выбирать контроллер. Можно - хорошо, нельзя - есть другие способы.
Вопрос в первом сообщение не о выборе архитектуры.
Go to the top of the page
 
+Quote Post
scifi
сообщение Jun 6 2017, 13:47
Сообщение #19


Гуру
******

Группа: Свой
Сообщений: 3 020
Регистрация: 7-02-07
Пользователь №: 25 136



Цитата(Rash @ Jun 6 2017, 16:03) *
То что нужно каждые 2.5 мсек по таймеру читать новое значение (этим временем не ограничен).

И что? Не сами же считываете, а микроконтроллер. Или боитесь, что он перетрудится? А не боитесь его без работы оставить своим излишним усердием? biggrin.gif
Go to the top of the page
 
+Quote Post
Rash
сообщение Jun 6 2017, 14:04
Сообщение #20


Знающий
****

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



Ну да, сам, побитно ручками вынимаю.
scifi, если есть что-то по делу, расскажите, нет зачем тему засорять.
Go to the top of the page
 
+Quote Post
scifi
сообщение Jun 6 2017, 14:11
Сообщение #21


Гуру
******

Группа: Свой
Сообщений: 3 020
Регистрация: 7-02-07
Пользователь №: 25 136



Цитата(Rash @ Jun 6 2017, 17:04) *
scifi, если есть что-то по делу, расскажите, нет зачем тему засорять.

По делу: "работает - не трогай". Вы будете смеяться, но это очень дельный совет.
Если это такое улучшательство ради улучшательства, лучше бросьте. Тем более, что на 407 это неблагодарное занятие. На более поздних STM32 вроде бы всякие приятные мелочи появились, но не уверен, что конкретно для этой задачи и там что-то удобное есть.
Go to the top of the page
 
+Quote Post
Rash
сообщение Jun 6 2017, 14:31
Сообщение #22


Знающий
****

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



Вы меня наверное с кем то путаете.
Да я не первый год в теме и если бы бросал чем то заниматься, как только, что-то запустилось, то много бы не узнал.
МК 401, а не 407, но в SPI без разницы, вот таймеров меньше и работать с GPIO через DMA можно только одним таймером TIM1.
Go to the top of the page
 
+Quote Post
scifi
сообщение Jun 6 2017, 18:59
Сообщение #23


Гуру
******

Группа: Свой
Сообщений: 3 020
Регистрация: 7-02-07
Пользователь №: 25 136



Цитата(Rash @ Jun 6 2017, 17:31) *
Да я не первый год в теме и если бы бросал чем то заниматься, как только, что-то запустилось, то много бы не узнал.

Чего там узнавать? Мануал - вот он перед глазами. Не военная тайна же.
Все такие обидчивые, блин...
Go to the top of the page
 
+Quote Post
AlexandrY
сообщение Jun 6 2017, 21:06
Сообщение #24


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
Сообщение #25


Гуру
******

Группа: Свой
Сообщений: 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
amiller
сообщение Jun 7 2017, 03:07
Сообщение #26


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

Группа: Участник
Сообщений: 176
Регистрация: 20-02-14
Из: Томск
Пользователь №: 80 612



Цитата(jcxz @ Jun 7 2017, 01:55) *
ну если из любви к искусству и если Вы действительно так въедливы как пишете, то изучите от корки до корки всю периферию своего камня и думаю сможете что-нить придумать.

Думаю, что более просто будет так:
При условии, что CS-ы посажены на один порт.
Задействовать 1 дополнительный канал DMA, который будет синхронно писать данные в регистр BSRR соответствующего порта, тем самым дергая нужные CS.
Go to the top of the page
 
+Quote Post
AlexandrY
сообщение Jun 7 2017, 07:34
Сообщение #27


Ally
******

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



Цитата(jcxz @ Jun 7 2017, 00:55) *
Такое управление CS-ами есть и в Infineon и в Tiva и в OMAP-L. Нету только в STM32, так как его периферию упростили по самое нехочу.

В каких Infineon вы такое видели? В их серии XMC4xxx нет даже SPI отдельного как такового, а есть некий Universal Serial Interface Channel (USIC) на котором делают все подряд: UART, SPI, I2C, I2S...
Это скорее похоже на FlexIO у Kinetis. Управления CS как в Kinetis там конечно нет.
Tiva уже проверять не стал. Предлагаю вам самим сознаться что немного пофантазировали. biggrin.gif
Go to the top of the page
 
+Quote Post
jcxz
сообщение Jun 7 2017, 09:06
Сообщение #28


Гуру
******

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



Цитата(AlexandrY @ Jun 7 2017, 09:34) *
В каких Infineon вы такое видели?

Я это не видел. Я с этим сейчас работаю. И управляю двумя CS-ами на XMC4700.

Цитата(AlexandrY @ Jun 7 2017, 09:34) *
В их серии XMC4xxx нет даже SPI отдельного как такового, а есть некий Universal Serial Interface Channel (USIC) на котором делают все подряд: UART, SPI, I2C, I2S...

И что? Этот USIC может быть запрограммирован в одном из режимов UART/SPI/I2C/I2S. От этого SPI не перестаёт быть SPI. Подобная организация портов встречается и в других МК.

Цитата(AlexandrY @ Jun 7 2017, 09:34) *
Это скорее похоже на FlexIO у Kinetis. Управления CS как в Kinetis там конечно нет.

Да ладно. А чего именно нет? Что такое уникальное есть в Kinetis? cool.gif

Цитата(AlexandrY @ Jun 7 2017, 09:34) *
Tiva уже проверять не стал. Предлагаю вам самим сознаться что немного пофантазировали. biggrin.gif

Насчёт Tiva - да я возможно перепутал - там я это не использовал. Но OMAP-L и XMC4xx - точно есть.
Go to the top of the page
 
+Quote Post

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

 


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


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