Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: SSC в SAM7S
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
Shuuura
Необходимо давать короткий Transmitter Frame Synchro (TF) перед посылкой пакета и одновременно принимать ответ. Не получается синхронизировать начало пакета и TF. Сделал TF вручную (через PIO) - нет сихронизации по приему. Неужели единственный метод - заводить TF на RF внешней цепью?
Была похожая тема http://electronix.ru/forum/lofiversion/index.php/t10345.html (там есть графики). Кто нибудь в этом разобрался?
KRS
А кто мастер? Сколько бит в пакете?...
RF можно вообще не использовать.
Shuuura
Цитата(KRS @ Feb 12 2008, 11:50) *
А кто мастер? Сколько бит в пакете?...
RF можно вообще не использовать.

Мастер - SAM7S, пакет из 6 байт. Приемник - PLD, оспользуется как расширитель портов.
Использовать аппратный TF не получается, т.к он генерится когда ему захочется, но не в начале пакета. После переключения на "ручной" TF та же история повторилась с приемом. Осцилографом четко видно что PLD отвечает правильно.
KRS
Цитата(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
и не использовать синхронизацию
Shuuura
Цитата(KRS @ Feb 12 2008, 12:12) *
Ну 6 байтный пакет по SSC не передать - максимум 4 байта. Так что вам надо софтом делать синхронизацию и использовать его как SPI.
Можно настроить на 8 бит
Transmit Clock only during data transfers
приемные клоки на TK Clock signal
и не использовать синхронизацию


Почему не передать? Используя PDC получается. Вижу 48 клоков и паузу между ними и один TF за это время.
Использовать просто как сдвиговый регистр не могу - быстродействие не позволяет. Вся прелесть в PDC - отправил - когда надо проверил ответ - заново отправил
KRS
Цитата(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)
Shuuura
Сейчас настройки передатчика следующие:

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?
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.