Content originally posted in LPCWare by sophio on Thu Apr 12 23:54:46 MST 2012
sry, i forgot to put my code, here is my code
[LEFT][SIZE=2][SIZE=2][COLOR=#3f7f5f][SIZE=2][COLOR=#3f7f5f]/* SPI read and write buffer size */[/COLOR][/SIZE][/COLOR][/SIZE][/SIZE][/LEFT]
[SIZE=2][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]#define [/COLOR][/SIZE][/COLOR][/SIZE][/B][SIZE=2]SSP_BUFSIZE 16[/SIZE]
[LEFT][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]#define[/COLOR][/SIZE][/COLOR][/SIZE][/B][SIZE=2] FIFOSIZE 8[/SIZE][/LEFT]
[/SIZE]
[LEFT][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]#define [/COLOR][/SIZE][/COLOR][/SIZE][/B][SIZE=2]SSP_NUM 0[/SIZE]
[SIZE=2][COLOR=#005032][SIZE=2][COLOR=#005032]uint8_t [/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2]src_addr[SSP_BUFSIZE];[/SIZE]
[SIZE=2][COLOR=#005032][SIZE=2][COLOR=#005032]uint8_t[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] dest_addr[SSP_BUFSIZE];[/SIZE] [/LEFT]
[LEFT][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]void[/COLOR][/SIZE][/COLOR][/SIZE][/B] [SIZE=2][B]SSP_LoopbackTest[/B]( [/SIZE][SIZE=2][COLOR=#005032][SIZE=2][COLOR=#005032]uint8_t[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] portNum )[/SIZE][/LEFT]
[LEFT][SIZE=2]{[/SIZE]
[SIZE=2][COLOR=#005032][SIZE=2][COLOR=#005032]uint32_t[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] i;[/SIZE]
[B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]if[/COLOR][/SIZE][/COLOR][/SIZE][/B][SIZE=2] ( portNum == 0 )[/SIZE][/LEFT]
[LEFT][SIZE=2]{[/SIZE][/LEFT]
[LEFT][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]#if[/COLOR][/SIZE][/COLOR][/SIZE][/B][SIZE=2]!USE_CS[/SIZE] [/LEFT]
[LEFT][SIZE=2][COLOR=#3f7f5f][SIZE=2][COLOR=#3f7f5f]/* Set SSEL pin to output low. */[/COLOR][/SIZE][/COLOR][/SIZE][/LEFT]
[LEFT][SIZE=2]GPIOSetValue( PORT0, 2, 0 );[/SIZE][/LEFT]
[LEFT][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]#endif[/COLOR][/SIZE][/COLOR][/SIZE][/B][/LEFT]
[LEFT][SIZE=2]i = 0;[/SIZE]
[B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]while[/COLOR][/SIZE][/COLOR][/SIZE][/B][SIZE=2] ( i <= SSP_BUFSIZE )[/SIZE]
[LEFT][SIZE=2]{[/SIZE]
[SIZE=2][COLOR=#3f7f5f][SIZE=2][COLOR=#3f7f5f]/* to check the RXIM and TXIM interrupt, I send a block data at one time[/COLOR][/SIZE][/COLOR][/SIZE]
[SIZE=2][COLOR=#3f7f5f][SIZE=2][COLOR=#3f7f5f]based on the FIFOSIZE(8). */[/COLOR][/SIZE][/COLOR][/SIZE]
[SIZE=2]SSP_Send( portNum, ([/SIZE][SIZE=2][COLOR=#005032][SIZE=2][COLOR=#005032]uint8_t[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] *)&src_addr, FIFOSIZE );[/SIZE] [/LEFT]
[/LEFT]
[LEFT][SIZE=2][COLOR=#3f7f5f][SIZE=2][COLOR=#3f7f5f]/* Wait until the Busy bit is cleared. */[/COLOR][/SIZE][/COLOR][/SIZE][/LEFT]
[LEFT][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]while[/COLOR][/SIZE][/COLOR][/SIZE][/B][SIZE=2] ( LPC_SSP0->[/SIZE][SIZE=2][COLOR=#0000c0][SIZE=2][COLOR=#0000c0]SR[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] & SSPSR_BSY );[/SIZE] [/LEFT]
[LEFT][SIZE=2][COLOR=#3f7f5f][SIZE=2][COLOR=#3f7f5f]/* If RX interrupt is enabled, below receive routine can be [/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2][COLOR=#3f7f5f][SIZE=2][COLOR=#3f7f5f]also handled inside the ISR. */[/COLOR][/SIZE][/COLOR][/SIZE][/LEFT]
[LEFT][SIZE=2]SSP_Receive( portNum, ([/SIZE][SIZE=2][COLOR=#005032][SIZE=2][COLOR=#005032]uint8_t[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] *)&dest_addr, FIFOSIZE );[/SIZE] [/LEFT]
[LEFT][SIZE=2][COLOR=#3f7f5f][SIZE=2][COLOR=#3f7f5f]/* Wait until the Busy bit is cleared. */[/COLOR][/SIZE][/COLOR][/SIZE][/LEFT]
[LEFT][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]while[/COLOR][/SIZE][/COLOR][/SIZE][/B][SIZE=2] ( LPC_SSP0->[/SIZE][SIZE=2][COLOR=#0000c0][SIZE=2][COLOR=#0000c0]SR[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] & SSPSR_BSY );[/SIZE] [/LEFT]
[LEFT][SIZE=2]i += FIFOSIZE;[/SIZE] [/LEFT]
[LEFT][SIZE=2]}[/SIZE][/LEFT]
[LEFT][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]#if[/COLOR][/SIZE][/COLOR][/SIZE][/B][SIZE=2]!USE_CS[/SIZE]
[SIZE=2][COLOR=#3f7f5f][SIZE=2][COLOR=#3f7f5f]/* Set SSEL pin to output high. */[/COLOR][/SIZE][/COLOR][/SIZE][/LEFT]
[LEFT][SIZE=2]GPIOSetValue( PORT0, 2, 1 );[/SIZE][/LEFT]
[LEFT][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]#endif[/COLOR][/SIZE][/COLOR][/SIZE][/B][/LEFT]
[LEFT][SIZE=2]}[/SIZE]
[SIZE=2]....[/SIZE] [/LEFT]
[LEFT][SIZE=2][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]int [/COLOR][/SIZE][/COLOR][/SIZE][/B][/SIZE][SIZE=2][SIZE=2][B]main[/B] ([/SIZE][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]void[/COLOR][/SIZE][/COLOR][/SIZE][/B][SIZE=2])[/SIZE][/SIZE][/LEFT]
[LEFT][SIZE=2][SIZE=2]{[/SIZE][/SIZE][/LEFT]
[LEFT][SIZE=2][SIZE=2][COLOR=#005032][SIZE=2][COLOR=#005032]uint32_t[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] i;[/SIZE] [/LEFT]
[LEFT][SIZE=2]SystemInit();[/SIZE] [/LEFT]
[LEFT][SIZE=2]SSP_IOConfig( SSP_NUM ); [/SIZE][SIZE=2][COLOR=#3f7f5f][SIZE=2][COLOR=#3f7f5f]/* initialize SSP port*/[/COLOR][/SIZE][/COLOR][/SIZE][/LEFT]
[LEFT][SIZE=2]SSP_Init( SSP_NUM ); [/SIZE][/LEFT]
[LEFT][SIZE=2][COLOR=#3f7f5f][SIZE=2][COLOR=#3f7f5f]/* Initialize GPIO (sets up clock) */[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2][COLOR=#3f7f5f][/LEFT]
[/COLOR][/SIZE][SIZE=2]GPIOInit();[/SIZE]
[LEFT][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]for[/COLOR][/SIZE][/COLOR][/SIZE][/B][SIZE=2] ( i = 0; i < SSP_BUFSIZE; i++ )[/SIZE][/LEFT]
[LEFT][SIZE=2]{[/SIZE][/LEFT]
[LEFT][SIZE=2]src_addr = ([/SIZE][SIZE=2][COLOR=#005032][SIZE=2][COLOR=#005032]uint8_t[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2])i;[/SIZE][/LEFT]
[LEFT][SIZE=2]dest_addr = 0;[/SIZE][/LEFT]
[LEFT][SIZE=2]}[/SIZE][/LEFT]
[SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055][B]while[/B][/COLOR][/SIZE]
[LEFT][/COLOR][/SIZE][SIZE=2][COLOR=#000000](1) [/COLOR][/SIZE][SIZE=2][COLOR=#3f7f5f][SIZE=2][COLOR=#3f7f5f]// loop forever added[/COLOR][/SIZE][/COLOR][/SIZE]
[SIZE=2][B]{[/B][/SIZE]
[LEFT][SIZE=2][B]SSP_LoopbackTest( SSP_NUM );[/B][/SIZE][/LEFT]
[/LEFT]
[LEFT][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055][B]for[/B][/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2][B] ( i = 0; i < SSP_BUFSIZE; i++ )[/B][/SIZE][/LEFT]
[LEFT][SIZE=2][B]{[/B][/SIZE]
[LEFT][B][SIZE=2][COLOR=#642880][SIZE=2][COLOR=#642880]printf[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2]([/SIZE][SIZE=2][COLOR=#2a00ff][SIZE=2][COLOR=#2a00ff]"the send data [%d]is: %d\n"[/COLOR][/SIZE][/COLOR][/SIZE][/B][SIZE=2][B], i,src_addr);[/B][/SIZE]
[B][SIZE=2][COLOR=#642880][SIZE=2][COLOR=#642880]printf[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2]([/SIZE][SIZE=2][COLOR=#2a00ff][SIZE=2][COLOR=#2a00ff]"the receive data [%d] is: %d\n"[/COLOR][/SIZE][/COLOR][/SIZE][/B][SIZE=2][B],i, dest_addr);[/B][/SIZE]
[SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055][B]if[/B][/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2][B] ( src_addr != dest_addr )[/B][/SIZE]
[SIZE=2][B]{[/B][/SIZE]
[B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]while[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2]( 1 ); [/SIZE][SIZE=2][COLOR=#3f7f5f][SIZE=2][COLOR=#3f7f5f]/* Verification failed */[/COLOR][/SIZE][/COLOR][/SIZE][/B]
[SIZE=2][B]}[/B][/SIZE]
[SIZE=2][B]} [/B][/SIZE]
[SIZE=2][B]}[/B][/SIZE]
[SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055][B]return[/B][/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2][B] 0;[/B][/SIZE][/LEFT]
[/LEFT]
[LEFT][SIZE=2][B]}[/B][/SIZE][/LEFT]
[/COLOR][/SIZE][/COLOR][/SIZE][/SIZE]