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

 
 
> Устал бороться с SSC в AT91SAM7S
vladimir_m
сообщение Sep 10 2008, 11:16
Сообщение #1


Участник
*

Группа: Новичок
Сообщений: 17
Регистрация: 9-07-08
Пользователь №: 38 830



Пытаюсь на SSC сделать SPI в slave mode.

Делаю так:
Recieve Clock Mode: беру клок с внешней ножки, стартую от Detection of a falling edge on RF signal
Recieve Frame: 16 бит слово, 3 слова в посылке, старший бит вперед.
Ну и в принципе все. пока только принимаю.

Ну и falling edge on RF signal не унюхивает...
Осцилографом смотрел - все на месте.
Erratu читал.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 5)
aaarrr
сообщение Sep 10 2008, 11:22
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Код в студию.
Go to the top of the page
 
+Quote Post
vladimir_m
сообщение Sep 11 2008, 11:20
Сообщение #3


Участник
*

Группа: Новичок
Сообщений: 17
Регистрация: 9-07-08
Пользователь №: 38 830



Код
AT91F_PMC_EnablePeriphClock ( AT91C_BASE_PMC, 1 << AT91C_ID_SSC );

AT91F_SSC_Configure (AT91C_BASE_SSC, // \arg pointer to a SSC controller
MCK,  // \arg System Clock Frequency
0,// \arg Expected Baud Rate Frequency
AT91C_SSC_CKS_RK | AT91C_SSC_START_FALL_RF,    // \arg Receiver Clock Parameters
(15 | AT91C_SSC_MSBF | (2 << 8)),    // \arg mode Register to be programmed
AT91C_SSC_CKS_TK | AT91C_SSC_CKI | AT91C_SSC_START_TX,    // \arg Transmitter Clock Parameters
(15 | AT91C_SSC_DATDEF | AT91C_SSC_MSBF | (2 << 8)));     // \arg mode Register to be programmed
AT91F_SSC_EnableTx (AT91C_BASE_SSC);
AT91F_SSC_EnableRx (AT91C_BASE_SSC);

AT91F_PDC_EnableRx(AT91C_BASE_PDC_SSC);
AT91F_PDC_EnableTx(AT91C_BASE_PDC_SSC);
AT91F_PDC_Open(AT91C_BASE_PDC_SSC);


Идея в догонку: если задействована внешняя нога клока, и все тактируется от этого клока, то нужно ли настраивать внутренний делитель на ту же частоту?
Go to the top of the page
 
+Quote Post
vladimir_m
сообщение Sep 11 2008, 12:31
Сообщение #4


Участник
*

Группа: Новичок
Сообщений: 17
Регистрация: 9-07-08
Пользователь №: 38 830



Оказывается, в таком режиме на SSC должен идти постоянный клок. Я так понял, что, без внешнего клока SSC не может детектировать начало фрейма по falling edge on RF signal. Так что SPI slave сделать проблематично.
Go to the top of the page
 
+Quote Post
DmitryM
сообщение Sep 12 2008, 06:06
Сообщение #5


Знающий
****

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



Цитата(vladimir_m @ Sep 11 2008, 16:31) *
Оказывается, в таком режиме на SSC должен идти постоянный клок. Я так понял, что, без внешнего клока SSC не может детектировать начало фрейма по falling edge on RF signal. Так что SPI slave сделать проблематично.


А зачем извращаться с SSC когда есть SPI???
Go to the top of the page
 
+Quote Post
vladimir_m
сообщение Sep 12 2008, 10:58
Сообщение #6


Участник
*

Группа: Новичок
Сообщений: 17
Регистрация: 9-07-08
Пользователь №: 38 830



Цитата
А зачем извращаться с SSC когда есть SPI???

К сожалению, SPI занят.

Кому интересно, проблему решил. Правда SPI так и не удалось раскочегарить.
Дело в том, что я связываю с STR911. У STR оригинальный контроллер последовательной перефирии. Он настраивается на различные форматы. SPI не получилось, зато TI synchronous serial frame format подошел! Я подозреваю, что дело в том, что сигнал начала фрейма сопровождается SCLK. В настройках SSC в AT91SAM7S я изменил условия старта на чтение на AT91C_SSC_START_HIGH_RF. И все. Работает. Правда непонятно, зачем для ловли фронта (AT91C_SSC_START_FALL_RF) нужен внеший клок?
Ну, как бы там не было, SSC заработал.
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 21st July 2025 - 03:34
Рейтинг@Mail.ru


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