|
楼主 |
发表于 2013-6-26 11:29:52
|
显示全部楼层
int32 WriteSPI1(uint32 config, uint8 mode)
{
int32 msb;
uint32 temp;
volatile int32 dummy;
temp = config;
if (mode==1) temp = config | 0x8000;
#if 1
while ( (SSP0SR & (SSPSR_TNF)) != SSPSR_TNF );
SSP0DR =(temp >> 8 );
while ( (SSP0SR & (SSPSR_BSY|SSPSR_RNE)) != SSPSR_RNE );
msb = SSP0DR;
msb=msb<<8;
while ( (SSP0SR & (SSPSR_TNF)) != SSPSR_TNF );
SSP0DR=temp&0x00ff;
while ( (SSP0SR & (SSPSR_BSY|SSPSR_RNE)) != SSPSR_RNE );
msb |=SSP0DR;
while ( (SSP0SR & (SSPSR_TNF)) != SSPSR_TNF );
SSP0DR=(temp>>8);
while ( (SSP0SR & (SSPSR_BSY|SSPSR_RNE)) != SSPSR_RNE );
dummy = SSP0DR; /* Flush the RxFIFO */
while ( (SSP0SR & (SSPSR_TNF)) != SSPSR_TNF );
S0SPDR=temp&0x00ff;
while ( (SSP0SR & (SSPSR_BSY|SSPSR_RNE)) != SSPSR_RNE );
// while ( (SSP0SR & (SSPSR_BSY|SSPSR_RNE)) != SSPSR_RNE );
dummy = SSP0DR; /* Flush the RxFIFO */
#else
msb=SSP0_SendData((temp >> 8));
msb=msb<<8;
msb |=SSP0_SendData((temp&0x00ff));
SSP0_SendData((temp >> 8));
SSP0_SendData((temp&0x00ff));
#endif
return msb;
} |
|