ADXL345SPI通讯
0赞
发表于 3/6/2012 1:12:47 PM
阅读(2110)
#include<ADuC7026.h>
#include"Common.h"
BYTE RXBYTE;
unsigned char spiwrite(unsigned int data){
unsigned char r_data;
SPITX = (0xFF & (data));
while ((SPISTA & 0x08) != 0x08) ;
r_data = SPIRX;
SPITX = (0xFF & (data));
while ((SPISTA & 0x08) != 0x08) ;
r_data = SPIRX;
return r_data;
}
BYTE spiread(unsigned int data){ //read 1 Byte data
SPITX = (0xFF & (data)); //Send dummy date
while ((SPISTA & 0x08) != 0x08) ;
data = SPIRX; // recieve high-byte
return data;
}
void spiMread(unsigned int data, BYTE RXCONT){ //read 1 Byte data
RXBYTE = 0x00;
while(RXBYTE<RXCONT){
SPITX = (0xFF & (data)); //Send dummy date
while ((SPISTA & 0x08) != 0x08) ;
r_data[RXBYTE] = SPIRX; // recieve high-byte
RXBYTE++;
}
SPITX = (0xFF & (data)); //Send dummy date
while ((SPISTA & 0x08) != 0x08) ;
r_data[RXBYTE] = SPIRX; // recieve high-byte
RXBYTE++;
}
}
void spiread_16bit(unsigned int data, BYTE *data_H, BYTE *data_L){ //read 16bit data
SPITX = (0xFF & (data)); //Send dummy date
while ((SPISTA & 0x08) != 0x08) ;
*data_H = SPIRX; // recieve high-byte
SPITX = (0xFF & (data)); //Send dummy data
while ((SPISTA & 0x08) != 0x08) ;
*data_L = SPIRX; // recieve low-byte
}
