Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: STM32F378 атомарная запись в два SPI DAC AD5443
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
nanorobot
Заппрограммирован вывод в интерфейс SPI с помощью DMA от таймера. Глубина буфера два 16 битовых слова. Метод циркулярный. Каждый раз по событию таймера выводится одно 16 битовое слово. Требуется каждый раз по событию таймера выводить ДВА 16 битовых слова, соответственно глубина буфера станет равной 4. Можно ли как то извернуться с использованием например еще одного канала DMA, что бы решить данную задачу не используя прерываний ?
ryabikin
Можно попробовать.
Зарядить второй ДМА на другой SPI и в таймере просто выставить флаг старта ДМА1 и ДМА2.
Но как будет обстоять дело с синхронностью - вопрос.
klen
а что вы делаете с чип селектом? его через дма не пртащишь, а именно он синхронность задает...
HardEgor
Цитата(klen @ Jan 23 2018, 01:21) *
а что вы делаете с чип селектом? его через дма не пртащишь, а именно он синхронность задает...

Можно с этого же таймера через channel output вытащить. Или прикрутить к нему подчиненный таймер и уже с него вытащить.
jcxz
Цитата(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 записи в порт.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.