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

 
 
 
Reply to this topicStart new topic
> SSC в SAM7S, как работает Frame Synchro?
Shuuura
сообщение Feb 12 2008, 07:12
Сообщение #1


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

Группа: Свой
Сообщений: 80
Регистрация: 23-08-05
Пользователь №: 7 902



Необходимо давать короткий Transmitter Frame Synchro (TF) перед посылкой пакета и одновременно принимать ответ. Не получается синхронизировать начало пакета и TF. Сделал TF вручную (через PIO) - нет сихронизации по приему. Неужели единственный метод - заводить TF на RF внешней цепью?
Была похожая тема http://electronix.ru/forum/lofiversion/index.php/t10345.html (там есть графики). Кто нибудь в этом разобрался?
Go to the top of the page
 
+Quote Post
KRS
сообщение Feb 12 2008, 08:50
Сообщение #2


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

Группа: Модераторы
Сообщений: 1 951
Регистрация: 27-08-04
Из: Санкт-Петербург
Пользователь №: 555



А кто мастер? Сколько бит в пакете?...
RF можно вообще не использовать.
Go to the top of the page
 
+Quote Post
Shuuura
сообщение Feb 12 2008, 09:02
Сообщение #3


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

Группа: Свой
Сообщений: 80
Регистрация: 23-08-05
Пользователь №: 7 902



Цитата(KRS @ Feb 12 2008, 11:50) *
А кто мастер? Сколько бит в пакете?...
RF можно вообще не использовать.

Мастер - SAM7S, пакет из 6 байт. Приемник - PLD, оспользуется как расширитель портов.
Использовать аппратный TF не получается, т.к он генерится когда ему захочется, но не в начале пакета. После переключения на "ручной" TF та же история повторилась с приемом. Осцилографом четко видно что PLD отвечает правильно.
Go to the top of the page
 
+Quote Post
KRS
сообщение Feb 12 2008, 09:12
Сообщение #4


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

Группа: Модераторы
Сообщений: 1 951
Регистрация: 27-08-04
Из: Санкт-Петербург
Пользователь №: 555



Цитата(Shuuura @ Feb 12 2008, 12:02) *
Мастер - SAM7S, пакет из 6 байт. Приемник - PLD, оспользуется как расширитель портов.
Использовать аппратный TF не получается, т.к он генерится когда ему захочется, но не в начале пакета. После переключения на "ручной" TF та же история повторилась с приемом. Осцилографом четко видно что PLD отвечает правильно.

Ну 6 байтный пакет по SSC не передать - максимум 4 байта. Так что вам надо софтом делать синхронизацию и использовать его как SPI.
Можно настроить на 8 бит
Transmit Clock only during data transfers
приемные клоки на TK Clock signal
и не использовать синхронизацию
Go to the top of the page
 
+Quote Post
Shuuura
сообщение Feb 12 2008, 09:22
Сообщение #5


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

Группа: Свой
Сообщений: 80
Регистрация: 23-08-05
Пользователь №: 7 902



Цитата(KRS @ Feb 12 2008, 12:12) *
Ну 6 байтный пакет по SSC не передать - максимум 4 байта. Так что вам надо софтом делать синхронизацию и использовать его как SPI.
Можно настроить на 8 бит
Transmit Clock only during data transfers
приемные клоки на TK Clock signal
и не использовать синхронизацию


Почему не передать? Используя PDC получается. Вижу 48 клоков и паузу между ними и один TF за это время.
Использовать просто как сдвиговый регистр не могу - быстродействие не позволяет. Вся прелесть в PDC - отправил - когда надо проверил ответ - заново отправил
Go to the top of the page
 
+Quote Post
KRS
сообщение Feb 12 2008, 09:35
Сообщение #6


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

Группа: Модераторы
Сообщений: 1 951
Регистрация: 27-08-04
Из: Санкт-Петербург
Пользователь №: 555



Цитата(Shuuura @ Feb 12 2008, 12:22) *
Почему не передать? Используя PDC получается. Вижу 48 клоков и паузу между ними и один TF за это время.
Использовать просто как сдвиговый регистр не могу - быстродействие не позволяет. Вся прелесть в PDC - отправил - когда надо проверил ответ - заново отправил

Так через PDC можно, но у вас 6 посылок по 8 бит без пауз.
А забыл совсем действительно можно один FS сгенерировать есть поле Data Number per frame

Так попробуйте настроить клоки передатчика
Transmit Clock only during data transfers
А приемник
приемные клоки на TK Clock signal
и START Continuous (0) или Transmit start(1)

Сообщение отредактировал KRS - Feb 12 2008, 09:39
Go to the top of the page
 
+Quote Post
Shuuura
сообщение Feb 12 2008, 10:46
Сообщение #7


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

Группа: Свой
Сообщений: 80
Регистрация: 23-08-05
Пользователь №: 7 902



Сейчас настройки передатчика следующие:

AT91C_SSC_CKS_DIV | //clock - from divider
AT91C_SSC_CKO_DATA_TX | //clock output data transfer
AT91C_SSC_START_FALL_RF | //START - falling edge TF
(0 << 16) | //delay = 0
(24 << 24), //period (24+1)*2=50 // \arg Transmitter Clock Parameters

//8 bit, Most Significant Bit First, 6 bytes, sync - 2 bit positive pulse
7 | AT91C_SSC_DATDEF | AT91C_SSC_MSBF | (5 << 8) | (1 << 16) |
AT91C_SSC_FSOS_POSITIVE); // \arg mode Register to be programmed

В этом случае сигналы TF (frame sync) идут постоянно с периодом 50 тактов.
Соответственно передача начинается постоянно - генерируются клоки на TK не зависимо от наличия данных. Если делаем период = 0 то никаких TF нет вообще и фрейм не начинается.
Если сделать старт - continues (по наличию данных), то TF и передача вообще не синхронизированы.
Нужно сделать отправку по наличию данных и в начале фрейма один сигнал TF! Голова болит уже не первый день.

PS. Оформился вопрос: Можно ли по SSC сфомировать посылку ОДНОГО фрейма используя АППАРАТНЫЙ TF?
Go to the top of the page
 
+Quote Post

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

 


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


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