还有个问题问下原子,ADXL345正确配置后,上电能检测到,但是我打印出来的信息却不对,如下:
DEVICE_ID:0xe5
ADXL345 CHECK OK!
加速度值: x轴:128 y轴:0 z轴:0
角度值: x:0.0 y:0.0 z:0.0
加速度值: x轴:2 y轴:0 z轴:0
角度值: x:0.0 y:0.0 z:0.0
加速度值: x轴:50 y轴:0 z轴:0
角度值: x:0.0 y:0.0 z:0.0
加速度值: x轴:1 y轴:0 z轴:0
角度值: x:0.0 y:0.0 z:0.0
加速度值: x轴:76 y轴:0 z轴:0
角度值: x:0.0 y:0.0 z:0.0
加速度值: x轴:50 y轴:0 z轴:0
角度值: x:0.0 y:0.0 z:0.0
加速度值: x轴:1 y轴:0 z轴:0
角度值: x:0.0 y:0.0 z:0.0
加速度值: x轴:0 y轴:0 z轴:0
角度值: x:0.0 y:0.0 z:0.0
加速度值: x轴:25 y轴:0 z轴:0
角度值: x:0.0 y:0.0 z:0.0
加速度值: x轴:1 y轴:0 z轴:0
角度值: x:0.0 y:0.0 z:0.0
ADXL345校准中......
ADXL345校准完成!
加速度值: x轴:220 y轴:0 z轴:0
角度值: x:0.0 y:0.0 z:0.0
加速度值: x轴:220 y轴:0 z轴:0
角度值: x:0.0 y:0.0 z:0.0
加速度值: x轴:220 y轴:0 z轴:0
角度值: x:0.0 y:0.0 z:0.0
加速度值: x轴:220 y轴:0 z轴:0
角度值: x:0.0 y:0.0 z:0.0
ADXL345校准中......
ADXL345校准完成!
加速度值: x轴:240 y轴:0 z轴:0
角度值: x:0.0 y:0.0 z:0.0
加速度值: x轴:240 y轴:0 z轴:0
角度值: x:0.0 y:0.0 z:0.0
加速度值: x轴:240 y轴:0 z轴:0
角度值: x:0.0 y:0.0 z:0.0
加速度值: x轴:240 y轴:0 z轴:0
代码:初始化除了IO口改动了,其他的都是参照原子的代码:
初始化代码:
[mw_shl_code=c,true]u8 ADXL345_Init(void)
{
RCC->APB2ENR |= 1<<2;
GPIOA->CRH &= 0xFFF00FFF;
GPIOA->CRH |= 0x00033000;
GPIOA->ODR |= 3<<11;
if(ADXL345_RD_Reg(DEVICE_ID)==0XE5)
{
ADXL345_WR_Reg(DATA_FORMAT,0X2B);
ADXL345_WR_Reg(BW_RATE,0x0A);
ADXL345_WR_Reg(POWER_CTL,0x28);
ADXL345_WR_Reg(INT_ENABLE,0x00);
ADXL345_WR_Reg(OFSX,0x00);
ADXL345_WR_Reg(OFSY,0x00);
ADXL345_WR_Reg(OFSZ,0x00);
return 0;
}
return 1;
} [/mw_shl_code]
测试代码:
检测ADXL345通过后,在主函数死循环中打印信息,相应按键按下后开始校准,校准完成后继续打印信息
[mw_shl_code=c,true]void ADXL345_Test(void)
{
short x,y,z;
float angx,angy,angz;
if(adxl345_read)
{
adxl345_read = 0;
ADXL345_Read_Average(&x,&y,&z,10);
printf("????????: x?á:%d y?á:%d z?á:%d\r\n",(int)x,(int)y,(int)z);
angx=ADXL345_Get_Angle(x,y,z,1);
angy=ADXL345_Get_Angle(x,y,z,2);
angz=ADXL345_Get_Angle(x,y,z,0);
printf("??????: x:%2.1f y:%2.1f z:%2.1f\r\n",angx,angy,angz);
printf("\r\n");
Delay_ms(1000);
}
if(keyr_adjust_adxl345)
{
keyr_adjust_adxl345 = 0;
LEDL = 0;
printf("ADXL345??×???......\r\n");
ADXL345_AUTO_Adjust((char*)&x,(char*)&y,(char*)&z);
LEDL = 1;
printf("ADXL345??×??ê??!\r\n");
}
}[/mw_shl_code]
问题:
1,板子是平放着的,没校准的时候x轴数据跳动很大,
校准多次之后,x 轴数据稳定一些,得出x轴的范围在220到250之间,跳动还是太大,而且为什么不是0左右?
2,而且仅x轴有数据,y,z怎么晃动板子都是0,为什么?
|