Пытаюсь при помощи 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.
Спасибо !
--------------------
Если у Вас нет практического опыта в данной теме- не вступайте в дискуссию и не пишите никаких теоретических рассуждений! Заранее спасибо !
|