Пытаюсь при помощи SPI0 LPC2148 поуправлять светодиодной матрицей на демо плате.
///////////////////////Инициализация портов//////////////////////////////
void init_GPIO(void)
{
///выходы SPI0
PINSEL0|=(1<<8); // SCK0
PINSEL0|=(1<<10); // MISO0
PINSEL0|=(1<<12); // MOSI0
PINSEL0|=(1<<14); // SSEL0
}
////////////////////////инициализация SPI0////////////////////////////////
void init_SPI(void)
{
S0SPCCR=100;/// частота SPI=тактовая частота/100
S0SPCR|=(1<<2); // включаем возможность выбирать число бит в пакете (16)
S0SPCR|=(1<<5); // выбираем мастер режим
}
///////////////////////передача данный через SPI0/////////////////////////
void transmit_SPI(unsigned int data )
{
char g;
g=S0SPSR;
S0SPDR=0x0000; //данные начинают передаватся сразу после записи
delay(100000);
}
Смотрю под отладкой (ulink) что происходит .
Сразу после
S0SPDR=0x0000;
выставляется бит SPIF в SOSPSR.
Почему ?! Ведь этот бит должен выставится кгда передача закончилась, а не когда началась.
За время задержки SPIF сбрасывается. Почему ?! Ведь он должен сбрасываться чтением SOSPSR.
Спасибо !