程序如下:
u16 X1=0,Y1=0,Z1=0;
///////////////////////////////
u8 SPI_ReadWrite(u8 data) //????×???????
{
u8 temp=0;
while(SPI_I2S_GetFlagStatus(SPI1,SPI_I2S_FLAG_TXE)==RESET) //SPI1???÷????????1?·±í??????????·?????????????
{
temp++;
if(temp>200) return 0; //????????????
}
temp=0;
SPI_I2S_SendData(SPI1,data);
while(SPI_I2S_GetFlagStatus(SPI1,SPI_I2S_FLAG_RXNE)==RESET)
{
temp++; //??±?????
if(temp>200) return 0; //????????????
}
return (SPI_I2S_ReceiveData(SPI1));
}
u8 ADXL345_Write(u8 add,u8 data) //·???????±ê????
{
u8 temp ;
Clr_ADXL345_CS
temp=SPI_ReadWrite(add&0x7f);
SPI_ReadWrite(data);
Set_ADXL345_CS
return temp;
}
u8 ADXL345_Read(u8 add)
{
u8 temp ;
Clr_ADXL345_CS
SPI_ReadWrite(add|0x80);
temp=SPI_ReadWrite(0xff);
Set_ADXL345_CS
return temp;
}
u8 ADXL345_Init()
{
if(ADXL345_Read(DEVID)==0xE5)
{
printf("\r\n DEIVER IS 0XE5\r\n");
ADXL345_Write(0x31,0x0B); //????????·???+-16G??·?±?????
ADXL345_Write(0x2F,0); //??????????INT1
ADXL345_Write(0x21,0x5f); //?¨?????÷????×??ó?±??59MS
ADXL345_Write(0x22,0xF0); //?¨??????300ms
ADXL345_Write(0x23,0xA0); //
ADXL345_Write(0x2A,0x07); //????X,Y??Z·??ò???÷?ì??
ADXL345_Write(0x1D,0x22); //?¨????????????·§??
ADXL345_Write(0x2c,0x0A); //??????????????????100HZ
ADXL345_Write(0x2D,0x00); //???ú????
ADXL345_Write(0x2D,0x08); //????????
ADXL345_Write(0x2E,0x00); //??????????
ADXL345_Write(0x1e,0x00); //X??×?
ADXL345_Write(0x1F,0x00); //Y??×?
ADXL345_Write(0x20,0x00); //Z??×?
return 0;
}
return 1;
}
、、、、、、、、、、、、、、、、、、、、、、、、、、
这个是主函数:
int main()
{
u8 buf[33]={0};
u8 temp1=' ';
u8 t;
u8 key2=0;
u8 mode=0;
u8 i;
stm32_clock_init(9);//72M,?ò??NRF 9M???ù????????PLL
INit();
USART_init();
printf("\r\n entern \r\n");
if(ADXL345_Init())
{
printf("\r\n error///\r\n");
}
}
串口打印ERROR....
求各位过来人指导 |