在线时间5 小时
UID3254709
注册时间2016-6-17
NXP金币0
该用户从未签到
新手上路

- 积分
- 28
- 最后登录
- 2017-11-14
|
void MMA845x_Standby (void)
{
u8 n;
n = MMA845x_readbyte(CTRL_REG1);
MMA845x_writebyte(CTRL_REG1, n & ~ACTIVE_MASK);
}
void MMA845x_Init (void)
{
MMA845x_Standby();
u8 id = MMA845x_readbyte(0xd);
printf("id:%x\n",id);
u16 x=0,y=0,z=0;
MMA845x_writebyte(0x2A, 0x18); // 0x18: 100hz,DR=011, Active=0, F_Read=0
// MMA845x_writebyte(0x09, 0x40); // 0x40: fifo 01
// MMA845x_writebyte(0x2d, 0x40);
// MMA845x_writebyte(0x2e, 0x40);
MMA845x_writebyte(0x0e, 0x11); // 0x11:HPF_OUT set, 4g mode.
temp_data = MMA845x_readbyte(0x2A);
temp_data |= 0x01;
MMA845x_writebyte(0x2A, temp_data);
}
main()
{
MMA845x_Init ();
for(j=0;j<10000;j++)
{ x=0;
y=0;
z=0;
xx = MMA845x_readbyte(0x0);
if( (xx & 0x8) == 0)
{ continue;
printf("aaa\n");
}
k = MMA845x_readbyte(0x1);
x = k<<8;
k = MMA845x_readbyte(0x2);
x |= k;
x = x>>2;
k = MMA845x_readbyte(0x3);
y = k<<8;
k = MMA845x_readbyte(0x4);
y |= k;
y = y>>2;
k = MMA845x_readbyte(0x5);
z = k<<8;
k = MMA845x_readbyte(0x6);
z |= k;
z = z>>2;
printf("HH:%x:%x:%x\n",x,y,z);
nrf_delay_ms(50);
}
}
以上是驱动程序,读取id是0x1a, 板子平放,但是打印的加速度值如下,
HH:3fff:8:3ffd
HH:3fff:5:3ffd
HH:3:4:2
HH:3ffe:3ffe:7
HH:3ffe:9:0
HH:3:3ffd:3ff9
HH:3ffc:3ffe:3
x,y,z轴数据不正常,哪里出问题了?
|
|