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

 
 
4 страниц V   1 2 3 > »   
Reply to this topicStart new topic
> Пауза между байтами в SPI DMA, STM32F4xx
Rash
сообщение Sep 19 2013, 07:25
Сообщение #1


Знающий
****

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



Приветствую.
Может кто нибудь подсказать возможно ли сделать паузу между байтами в SPI при использовании DMA, STM32F4xx? например совместно с каким либо таймером. А то многие медленные мс требуют паузы между байтами несколько сотен нсек и для работы с ними по DMA приходится понижать частоту до 1-2 МГц, хотя сами они держат до 8 МГц при побайтовом вычитывании. Мк STM32F4xx.
Go to the top of the page
 
+Quote Post
scifi
сообщение Sep 19 2013, 07:34
Сообщение #2


Гуру
******

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



Таймеры вполне способны генерировать запросы DMA с нужным интервалом и в нужном числе.
Go to the top of the page
 
+Quote Post
Rash
сообщение Sep 19 2013, 08:05
Сообщение #3


Знающий
****

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



а примера случаем нет такого для настройки?
Go to the top of the page
 
+Quote Post
adnega
сообщение Sep 19 2013, 08:15
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 2 724
Регистрация: 14-05-07
Из: Ярославль, Россия
Пользователь №: 27 702



Цитата(Rash @ Sep 19 2013, 11:25) *
А то многие медленные мс требуют паузы между байтами несколько сотен нсек.

Это какие, например?
Go to the top of the page
 
+Quote Post
DmitryM
сообщение Sep 19 2013, 13:30
Сообщение #5


Знающий
****

Группа: Свой
Сообщений: 583
Регистрация: 7-06-06
Из: Таганрог
Пользователь №: 17 840



Цитата(adnega @ Sep 19 2013, 12:15) *
Это какие, например?

например CMX608/CMX618/CMX638
tNXT Inter-Byte time 200 – – ns

Не пойму причем тут таймер, если Вы передаете через DMA. Таймером можно запустить передачу, но не вставить паузу между байтами в пакете. Это работа модуля SPI - поддержка защитных интервалов между байтами, пакетами и пр.
Go to the top of the page
 
+Quote Post
Rash
сообщение Sep 19 2013, 13:36
Сообщение #6


Знающий
****

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



одна из микр это CMX618 имено эти 200 нсек и нужно сделать.
но насколько я понял поддержку защитных интервалов между байтами при использовании DMA не сделаешь?
Или есть варианты?
Go to the top of the page
 
+Quote Post
adnega
сообщение Sep 19 2013, 13:48
Сообщение #7


Гуру
******

Группа: Свой
Сообщений: 2 724
Регистрация: 14-05-07
Из: Ярославль, Россия
Пользователь №: 27 702



Цитата(DmitryM @ Sep 19 2013, 17:30) *
например CMX608/CMX618/CMX638
tNXT Inter-Byte time 200 – – ns

Если внимательно посмотреть картинку, то tNXT расстояние между двумя соседними ФРОНТАМИ тактового сигнала.
При этом на максимальной частоте tNXT = tCK, т.е. никакой дополнительной задержки вставлять не нужно.
Go to the top of the page
 
+Quote Post
Rash
сообщение Sep 19 2013, 13:52
Сообщение #8


Знающий
****

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



это зависимости на какой частоте запустить SPI. При частотах > 4МГц, этого значения не будет хватать.
adnega, Вопрос не в том как обойти какие либо ограничения, а в том возможно ли сделать поддержку защитных интервалов между байтами при использовании DMA
Go to the top of the page
 
+Quote Post
megajohn
сообщение Sep 19 2013, 13:53
Сообщение #9


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

Группа: Свой
Сообщений: 1 080
Регистрация: 16-11-04
Из: СПб
Пользователь №: 1 143



Цитата(Rash @ Sep 19 2013, 17:36) *
Или есть варианты?


там от фронта последнего бита N байта до первого бита N+1 должно быть не менее 200нс, а это 5МГц тактовой
я бы сделал 4МГц и не парился


--------------------
Марс - единственная планета, полностью населенная роботами (около 7 штук).
Go to the top of the page
 
+Quote Post
DmitryM
сообщение Sep 19 2013, 13:55
Сообщение #10


Знающий
****

Группа: Свой
Сообщений: 583
Регистрация: 7-06-06
Из: Таганрог
Пользователь №: 17 840



Цитата(adnega @ Sep 19 2013, 17:48) *
Если внимательно посмотреть картинку, то tNXT расстояние между двумя соседними ФРОНТАМИ тактового сигнала.
При этом на максимальной частоте tNXT = tCK, т.е. никакой дополнительной задержки вставлять не нужно.

Нужно как минимум один такт клока, а SPI может передавать байты сплошным потоком бит без всякой задержки.
Go to the top of the page
 
+Quote Post
adnega
сообщение Sep 19 2013, 14:22
Сообщение #11


Гуру
******

Группа: Свой
Сообщений: 2 724
Регистрация: 14-05-07
Из: Ярославль, Россия
Пользователь №: 27 702



Цитата(Rash @ Sep 19 2013, 17:52) *
это зависимости на какой частоте запустить SPI. При частотах > 4МГц, этого значения не будет хватать.
adnega, Вопрос не в том как обойти какие либо ограничения, а в том возможно ли сделать поддержку защитных интервалов между байтами при использовании DMA

С помощью таймера, SPI, DMA и какой-то матери конечно можно сделать.
Но тут вопрос в другом: интерфейс SPI настолько "дубовый", что делать какие-либо задержки между байтами,
это на мой взгляд нарушение основной его идеологии. Пока не видел ни одного устройства (и которые Вы
привели в пример тоже к ним относятся), которым бы требовалась задержка ежду байтами.
Чисто формально можно называть такие интерфейсы не SPI, а например C-Bus, но в SPI никаких задержек не требуется.
Если один интерфейс для управляемый светодиодных лент, где пауза соответствует защелкиванию данных, но между
байтами поток непрерывный.

Так как будем интерфейс называть?

Цитата(DmitryM @ Sep 19 2013, 17:55) *
Нужно как минимум один такт клока, а SPI может передавать байты сплошным потоком бит без всякой задержки.

Повторяю, задержка не нужна - посмотрите внимательно, что такое tNXT по диаграмме (а не по переводу с английского).

Добавлю: тут недавно обсуждали DMA + SPI на STM. Картина не такая уж и радужная. Гарантировать интервал в 200нс с помощью DMA, таймеров
и прочего, по-моему, не получится. Относитесь к DMA как сущности, которая может быстро и без участия CPU передать БОЛЬШОЙ кусок данных.
Как только речь заходит о единичных транзакциях начинаются проблемы. Время между DMA-запросом и DMA-транзакцией далеко не ноль, "но это
еще пол беды, вся беда в том, что" это время не постоянно.
Go to the top of the page
 
+Quote Post
DmitryM
сообщение Sep 19 2013, 14:36
Сообщение #12


Знающий
****

Группа: Свой
Сообщений: 583
Регистрация: 7-06-06
Из: Таганрог
Пользователь №: 17 840



Цитата(adnega @ Sep 19 2013, 18:22) *
Повторяю, задержка не нужна - посмотрите внимательно, что такое tNXT по диаграмме (а не по переводу с английского).

Задержка нужна, проверено на собственно опыте, иначе мсх (в моем случае CMX638) не дает верные данные. Да можно понизить частоту клока и тем самым выдержать эти несчастные 200нс. В моем случа все решалось просто, у атмела sam7s все это умеет делать модуль SPI, задал параметры и все. В случае с стм32 этого сделать нельзя при работе через DMA, а поллингом как-то некузяво, итак есть чем заниматься. Здесь по-моему только снижением частоты клока.
ЗЫ. Разработчики мсх специально указали Inter-Byte time, могли бы вообще не указывать, tCK сказали, что не меньше такого то и все, ан нет, указали, обратили внимание.
Go to the top of the page
 
+Quote Post
Rash
сообщение Sep 19 2013, 14:42
Сообщение #13


Знающий
****

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



adnega, Задержка байтами в SPI нужна конечно меньше чем tNXT расстояние между двумя соседними ФРОНТАМИ, но если посылать SCK постоянно (при использовании DMA) например с частотой 5МГц, то время tNXT уже не уложиться в требуемые 200 нсек, и часть данных изказиться. Но если Читать данные без DMA с проверкой флагов состояния SPI, на всё тех же 5 МГц, то все данные будут правильные, т.к. есть время на выполнение ассемблерных инструкций и всё укладывается в 200 нсек. Проверено лог. анализатором. Есть ещё и другие микросхемы для которых это время должно быть > 250 нсек.
Также в SPI есть чёткие предделители частоты. И получается большой шаг между выбором частоты SCK.
В результате при использовании DMA для таких микр. получается время вычитывания будет в несколько раз > если это сделать по прерываниям или с ожиданием флагов.

А теперь давайте по существу вопроса. Я просил рассказать какие есть возможности сделать задержку между байтами (если они есть), а не разъяснить как работать с какой либо микрой. Я таких возможностей пока не нашёл.
Go to the top of the page
 
+Quote Post
DmitryM
сообщение Sep 19 2013, 14:45
Сообщение #14


Знающий
****

Группа: Свой
Сообщений: 583
Регистрация: 7-06-06
Из: Таганрог
Пользователь №: 17 840



Цитата(Rash @ Sep 19 2013, 18:42) *
А теперь давайте по существу вопроса. Я просил рассказать какие есть возможности сделать задержку между байтами (если они есть), а не разъяснить как работать с какой либо микрой. Я таких возможностей пока не нашёл.

В STM32F4 при SPI c DMA этого сделать нельзя, по крайней мере я смотрел STM32F407. В SAM7S как я уже писал выше - можно.
Go to the top of the page
 
+Quote Post
adnega
сообщение Sep 19 2013, 15:08
Сообщение #15


Гуру
******

Группа: Свой
Сообщений: 2 724
Регистрация: 14-05-07
Из: Ярославль, Россия
Пользователь №: 27 702



Цитата(Rash @ Sep 19 2013, 18:42) *
А теперь давайте по существу вопроса. Я просил рассказать какие есть возможности сделать задержку между байтами (если они есть), а не разъяснить как работать с какой либо микрой. Я таких возможностей пока не нашёл.

У STM я таких возможностей не видел.

Добавлю: сейчас посмотрел на STM32F3xx (у них SPI другой)
Цитата
SPI special features
26.4.1 NSS pulse mode
This mode is activated by the NSSP bit in the SPIx_CR1 register and it takes effect only if
the SPI interface is configured as Motorola SPI master with capture on the first edge
(SPIx_CR1 CPHA = 0). When activated, an NSS pulse is generated between two
consecutive data frame transfers when NSS stays at high level for the duration of one clock
period at least. This mode allows the slave to latch data. NSSP pulse mode is designed for
applications with a single master-slave pair.


На картинке таки вставляет один пробел в SCK, но не знаю будет ли работать с DMA.
Могу как-нить попробовать, или F3 для Вас не вариант.
Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post

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

 


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


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