This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

LPC2148 SPI Problem

Hi

I have been working on LPC2148 for a project.
I have tried to get the spi0 working.

Currently the code compiles without a problem but is not responding as it is supposed to.
I would like to know if there is any problem with the code in terms of SPI.

#include <lpc214x.h> //Includes LPC2148 register definitions

void spi_init();
void spi_send(char p);
char spi_receive();

int main(void)
{ char p; int i=0; PINSEL0 = (1<<8)|(1<<10)|(1<<12)|(1<<14); // Enable UART1 Rx and Tx pins PINSEL1 = 0x00000000; PINSEL2 = 0x00000000; IO0DIR = (1<<14); IO0CLR |=(1<<14); IO1DIR = (1<<19) | (1<<18) | (1<<17) | (1<<16); spi_init();

while (1) { spi_send('0'); while(p!='0') { p=spi_receive(); }

spi_send('x'); while(p!='x') { p=spi_receive(); }

spi_send('f'); while(p!='f') { p=spi_receive(); }

spi_send('f'); while(p!='f') { p=spi_receive(); } i+=1; p='o'; switch(i%4) { case 1: IO1CLR=(1<<19)|(1<<18)|(1<<17)|(1<<16); IO1SET=(1<<19); break; case 2: IO1CLR=(1<<19)|(1<<18)|(1<<17)|(1<<16); IO1SET=(1<<18); break; case 3: IO1CLR=(1<<19)|(1<<18)|(1<<17)|(1<<16); IO1SET=(1<<17); break; case 0: IO1CLR=(1<<19)|(1<<18)|(1<<17)|(1<<16); IO1SET=(1<<16); break;

}
} }
void spi_init()
{ S0SPCR|=(1<<5); S0SPCCR=0x60;

}
void spi_send(char p)
{ int value; value=(int)p; S0SPDR = value; while (!(S0SPSR & 0x80));
} char spi_receive()
{ char p; while (!(S0SPSR & 0x80)); p=(char)S0SPDR; return p;
}

Thanks for the help!!

0