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

 
 
 
Reply to this topicStart new topic
> Снхронные SPI/I2S ?
Allregia
сообщение Jun 4 2012, 12:56
Сообщение #1


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

Группа: Свой
Сообщений: 1 047
Регистрация: 28-06-07
Из: Israel
Пользователь №: 28 763



Интересно, а не пробовал ли кто сделать такую штуку - запустить два SPI/I2S на передачу, чтобы они работали синхронно?
Т.е. чтобы их SCLK и MOSI (или WCLK,BCLK и SD) совпадали по фазе.
У меня пока не получилось.

P.S. STM32F1/F4
Go to the top of the page
 
+Quote Post
esaulenka
сообщение Jun 4 2012, 13:11
Сообщение #2


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

Группа: Свой
Сообщений: 1 032
Регистрация: 13-03-08
Из: Маськва
Пользователь №: 35 877



Самый тупой и "неэкономичный" способ: три штуки SPI - мастер и два слэйва.
Клок передаёт мастер, данные - слэйвы.


--------------------
Тут обсуждается творческий порыв, а не соответствие каким-либо стандартам ©
Go to the top of the page
 
+Quote Post
maksimp
сообщение Jun 4 2012, 15:32
Сообщение #3


Местный
***

Группа: Участник
Сообщений: 313
Регистрация: 2-07-11
Пользователь №: 66 023



Цитата(esaulenka @ Jun 4 2012, 17:11) *
Самый тупой и "неэкономичный" способ: три штуки SPI - мастер и два слэйва.
Клок передаёт мастер, данные - слэйвы.

Чтобы передавать тактовый сигнал достаточно таймер взять а не SPI. И тогда хватит двух SPI.
Go to the top of the page
 
+Quote Post
Allregia
сообщение Jun 5 2012, 21:00
Сообщение #4


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

Группа: Свой
Сообщений: 1 047
Регистрация: 28-06-07
Из: Israel
Пользователь №: 28 763



Этот вариант не подходит, т.к. смысло в том, чтобы к примеру - у одного из SPI не использовать пин на котором CLK (он занят другим), а только MOSI.
Повидимому, то что хотелось сделать нельзя, так как нет доступа к внутренним счетчикам, чтобы их одновременно сбросить.
Go to the top of the page
 
+Quote Post
rx3apf
сообщение Jun 5 2012, 21:15
Сообщение #5


Гуру
******

Группа: Участник
Сообщений: 3 834
Регистрация: 14-06-06
Из: Moscow, Russia
Пользователь №: 18 047



Строго синхронно ? А, может быть, удастся решить задачу, сдвинув один канал на один байт (однократно, при инициализации) ?
Go to the top of the page
 
+Quote Post
Allregia
сообщение Jun 6 2012, 12:59
Сообщение #6


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

Группа: Свой
Сообщений: 1 047
Регистрация: 28-06-07
Из: Israel
Пользователь №: 28 763



Цитата(rx3apf @ Jun 5 2012, 23:15) *
Строго синхронно ? А, может быть, удастся решить задачу, сдвинув один канал на один байт (однократно, при инициализации) ?


Нет, разница в фазе двух SPI/I2S получается во 1-х не кратная байту а гораздо меньше, во 2-х - она не стабильна.
Go to the top of the page
 
+Quote Post
rx3apf
сообщение Jun 6 2012, 20:07
Сообщение #7


Гуру
******

Группа: Участник
Сообщений: 3 834
Регистрация: 14-06-06
Из: Moscow, Russia
Пользователь №: 18 047



Цитата(Allregia @ Jun 6 2012, 16:59) *
Нет, разница в фазе двух SPI/I2S получается во 1-х не кратная байту а гораздо меньше, во 2-х - она не стабильна.

Я имею в виду, что второй запустить строго таким образом, чтобы первый байт в втором канале совпадал по тактам с вторым байтом на первом. От загрузки первого канала добить nop-ами до загрузки второго. И, само собой, потом уже поддерживать непрерывную загрузку (а там хоть какой FIFO есть, хоть на байт ? А то все равно не выйдет...), чтобы передача не прерывалась. Тогда разница должна быть постоянной.
Go to the top of the page
 
+Quote Post

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

 


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


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