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

 
 
 
Reply to this topicStart new topic
> STM32F378 атомарная запись в два SPI DAC AD5443, Переформулировал вопрос более внятно....
nanorobot
сообщение Jan 12 2018, 11:07
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 205
Регистрация: 29-02-08
Пользователь №: 35 503



Заппрограммирован вывод в интерфейс SPI с помощью DMA от таймера. Глубина буфера два 16 битовых слова. Метод циркулярный. Каждый раз по событию таймера выводится одно 16 битовое слово. Требуется каждый раз по событию таймера выводить ДВА 16 битовых слова, соответственно глубина буфера станет равной 4. Можно ли как то извернуться с использованием например еще одного канала DMA, что бы решить данную задачу не используя прерываний ?

Сообщение отредактировал nanorobot - Jan 12 2018, 20:30
Go to the top of the page
 
+Quote Post
ryabikin
сообщение Jan 13 2018, 16:09
Сообщение #2





Группа: Участник
Сообщений: 5
Регистрация: 13-01-18
Пользователь №: 101 042



Можно попробовать.
Зарядить второй ДМА на другой SPI и в таймере просто выставить флаг старта ДМА1 и ДМА2.
Но как будет обстоять дело с синхронностью - вопрос.
Go to the top of the page
 
+Quote Post
klen
сообщение Jan 22 2018, 18:21
Сообщение #3


бессмертным стать можно тремя способами
*****

Группа: Свой
Сообщений: 1 392
Регистрация: 9-05-06
Из: Москва
Пользователь №: 16 912



а что вы делаете с чип селектом? его через дма не пртащишь, а именно он синхронность задает...
Go to the top of the page
 
+Quote Post
HardEgor
сообщение Jan 22 2018, 19:43
Сообщение #4


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

Группа: Свой
Сообщений: 1 976
Регистрация: 3-03-06
Из: Tomsk
Пользователь №: 14 925



Цитата(klen @ Jan 23 2018, 01:21) *
а что вы делаете с чип селектом? его через дма не пртащишь, а именно он синхронность задает...

Можно с этого же таймера через channel output вытащить. Или прикрутить к нему подчиненный таймер и уже с него вытащить.
Go to the top of the page
 
+Quote Post
jcxz
сообщение Jan 23 2018, 12:00
Сообщение #5


Гуру
******

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



Цитата(nanorobot @ Jan 12 2018, 13:07) *
Можно ли как то извернуться с использованием например еще одного канала DMA, что бы решить данную задачу не используя прерываний ?

Можно решить данную задачу вообще не используя DMA и при этом обеспечив синхронность не только передаваемых данных на MOSI, но и сигналов CS обоих SPI.
...заменив STM на МК с более продвинутой периферией. sm.gif
Например: на XMC4xxx (Infineon) можно, предварительно записав данные в FIFO двух SPI-портов, запустить их передачу от двух синхронно работающих таймеров (или даже от одного, выбрав такой таймер, который может триггерить передачу обоих последовательных портов). И сигналы CS будут формироваться аппаратно.
А ещё можно (если позволяет алгоритм работы) смешать оба передаваемых слова черезбитно и выплюнуть их в dual-SPI порт. Тогда нужен всего один SPI-порт.
Так можно сделать на любом МК, имеющем dual-SPI (но не на STM32, где, к сожалению, как всегда всё сильно упрощено). Только потребуется 2 записи в порт.
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 26th April 2018 - 16:33
Рейтинг@Mail.ru


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