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

 
 
> Помогите разобраться с SSP LPC2366 в режиме SLAVE
Yaumen
сообщение Aug 18 2015, 09:21
Сообщение #1


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

Группа: Свой
Сообщений: 187
Регистрация: 22-06-05
Из: Минск, Беларусь
Пользователь №: 6 213



Есть некое устройство (МАСТЕР) которое каждые 20 мс по SPI (частота SCK = 50кГц) посылает команду состоящую из 4-х байт:
[HEADER = 0x69] [СОСТОЯНИЕ 1] [СОСТОЯНИЕ 2] [КОНТРОЛЬНАЯ СУММА]

В моем устройстве, выполненном на LPC2366, эта команда поступает на интерфейс SSP0, который я настроил на режим SLAVE.
Код
    SSP0CPSR = ...;

    SSP0CR0 = 0x107; //8bit, SPI, CPOL=CPHA=0, SCR=1

        install_irq(SSP0_INT, (void*)SSP0Handler, HIGHEST_PRIORITY);

    SSP0CR1 = SSP0CR1_SSE|SSP0CR1_MS;        //SSP enabled in slave mode

        SSP0IMSC = 0x04; // Enable Receive Interrupt (RXIM only)


Прерывания от SSP срабатывают, однако сколько бы я не вычитывал SSP0DR, вычитывается только байт HEADER = 0x69, т.е весь массив bySpiData заполняется значениями 0x69
Код
volatile BYTE bySpiData[256];
volatile BYTE bySpiIndex = 0;
volatile DWORD dwSpiReceived = 0;

void SSP0Handler (void) __irq
{
    while (SSP0MIS_RXMIS & SSP0MIS)
    {    
        bySpiData[bySpiIndex++] = m_SSP0.Read() & 0xFF;
        dwSpiReceived++;
    }
    
    VICVectAddr = 0;            // Acknowledge Interrupt
}


Что я делаю не так?
Go to the top of the page
 
+Quote Post



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

 


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


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