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

 
 
> Кто использовал SPI в slave mode AT91SAM7S?
vladimir_m
сообщение Sep 20 2008, 13:33
Сообщение #1


Участник
*

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



Инициализация:
Код
    AT91F_PMC_EnablePeriphClock ( AT91C_BASE_PMC, 1 << AT91C_ID_SPI );
            AT91F_SPI_Disable(AT91C_BASE_SPI);
            AT91F_SPI_Reset(AT91C_BASE_SPI);
    AT91F_SPI_CfgMode(AT91C_BASE_SPI,  AT91C_SPI_PS_FIXED |  AT91C_SPI_MODFDIS);
    AT91F_SPI_CfgCs(AT91C_BASE_SPI,
                    0,
                    AT91C_SPI_BITS_16 |
                    ((50 <<  8) & AT91C_SPI_SCBR) //Serial Clock Baud Rate ?????
                     );

    AT91F_AIC_ConfigureIt (AT91C_BASE_AIC, AT91C_ID_SPI, SPI_INTERRUPT_LEVEL,  AT91C_AIC_SRCTYPE_INT_POSITIVE_EDGE, spi_irq_handler);
    AT91F_SPI_EnableIt (AT91C_BASE_SPI,  AT91C_SPI_RDRF);
    AT91F_AIC_EnableIt (AT91C_BASE_AIC, AT91C_ID_SPI);
    AT91F_SPI_Enable(AT91C_BASE_SPI);

Прерывание:
Код
void spi_irq_handler(){
  unsigned int status = AT91C_BASE_SPI->SPI_SR;
  if (status & AT91C_SPI_RDRF)
  {
    debug_cnt++;
    ssc_buf_in[0] = ssc_buf_in[1];
    ssc_buf_in[1] = ssc_buf_in[2];
    ssc_buf_in[2] = AT91C_BASE_SPI->SPI_RDR;

  }
}

Передается последовательно 0xAA55, 0xAA56, 0xAA57. Смотрел осциллографом - все четко.
Принимается каша. При каждом запуске - разное. Причем такое впечатление, что начинает
вдвигаться в регистр SPI слово не с первого байта, а со случайного. В результате в приемном буфере
может оказаться, например 12 последних бит первого слова и 4 бита второго.
Передача идет на частоте 100КГц. Режимы передатчика и приемника совпадают.
Иногда, очень редко, все работает правильно.
В чем могут быть грабли?

Сообщение отредактировал vladimir_m - Sep 20 2008, 13:44
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
vladimir_m
сообщение Sep 27 2008, 13:02
Сообщение #2


Участник
*

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



Цитата
Вот делюсь кодом, как есть - потратил на него недели две, наверное.

Спасибо.
Буду внимательно изучать. Правда времени на борьбу со spi больше у меня не было, поэтому исправил алгоритм работы и использую SAM в master mode. Повезло, что я его связываю с другим процем, там хоть глюков нет.
В любом случае, спасибо.
Go to the top of the page
 
+Quote Post



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

 


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


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