ExptNo9 - SPI
ExptNo9 - SPI
MAX7221
#include<lpc21xx.h>
void spi_ini(void);
void spi_tr1(unsigned int x);
char spi_re(void);
void spi_tr(unsigned char cmd,unsigned char data);
void spi_str(unsigned char *str);
void pll(void);
int main()
{
//int i;
PINSEL0=0X00000000;
IO0DIR=0XFFFFFFFF;
pll();
spi_ini();
spi_tr(0x0a,0x0f);
spi_tr(0x09,0xff);
spi_tr(0x0b,0x07);
spi_tr(0x0c,0x01);
spi_tr(0x01,0x08);
spi_tr(0x02,0x07);
spi_tr(0x03,0x06);
spi_tr(0x04,0x05);
spi_tr(0x05,0x04);
spi_tr(0x06,0x03);
spi_tr(0x07,0x02);
spi_tr(0x08,0x01);
while(1)
{
}
}
void pll()
{
/*PLL IS CONFIGURED TO GET 60HZ pCLK*/
PLLCFG=0X24; // SET PSEL=2 AND MSEL=5
PLLCON=0X01; //PLL IS ACTIVE BUT NOT YET CONNECT
PLLFEED=0XAA; //FEED SEQUENCE
PLLFEED=0X55; //FEED SEQUENCE
while((PLLSTAT & 0X400)==0); //WAIT FOR FEED SEQUENCE TO BE INSERTED
PLLCON=0X03; // PLL HAS BEEN ACTIVE AND BEING CONNECTRD
VPBDIV=0X00; // SET PCLK SAME AS FCCLK
PLLFEED=0XAA; //FEED SEQUENCE
PLLFEED=0X55; //FEED SEQUENCE
}
void spi_ini()
{
PINSEL0 |=0x1500; /* P0.4, P0.5, P0.6, P0.7 are set as SCK, MISO, MOSI and GPIO */
//IODIR0 |= 0X80; /* SSEL is output */
//IOSET0 |=0X80; /* set SSEL to high */
S0SPCCR=8; /* SPI clock prescale register minimum value is 8. */
S0SPCR=0x0030; /* Device select as master, Set data to 8-bit, CPOL = 0, CPHA = 0*/
}
char spi_re()
{
while ( !(S0SPSR & 0x80) ); /* Wait until the SPIF bit is set to indicate trabsfer complete */
spi_rec= S0SPDR;
return spi_rec;
}