本帖最后由 jundao721 于 2017-4-5 18:09 编辑
KX022-1020是一款3轴加速度传感器,2g,4g,8g可选,集成FIFO缓冲区。SPI和IIC通讯方式可选,从原理图上可以看出,如图1所示:
默认是IIC通信方式。该IC的详细信息参看附件中的元器件Datasheet。 根据要求,初始化IC,程序如图2所示: - void KX022_Init(void)
- {
- wai = KX022SingleRead(KX022_DEVICE_ADDRESS_1E,KX022_WHO_AM_I);
- I2C_delay();
- I2C_delay();
- //step1
- KX022Write(KX022_DEVICE_ADDRESS_1E,KX022_CNTL1,0x41);//KX022_CNTL1_VAL);//2g
- KX022Write(KX022_DEVICE_ADDRESS_1E,KX022_ODCNTL,0x02);//KX022_ODCNTL_VAL);
- I2C_delay();
- KX022Write(KX022_DEVICE_ADDRESS_1E,KX022_CNTL3,0xD8);
- I2C_delay();
- KX022Write(KX022_DEVICE_ADDRESS_1E,KX022_TILT_TIMER,0x01);
- I2C_delay();
- KX022Write(KX022_DEVICE_ADDRESS_1E,KX022_CNTL1,0xC1);//reg);
-
- I2C_delay();
- }
- u16 XkData,YkData,ZkData;
- void Get_RawVal(void)//2g:16384,4g:8192,8g:4096
- {
- //step4:
-
- XkData =KX022MulRead(KX022_DEVICE_ADDRESS_1E,0x06);//
- YkData =KX022MulRead(KX022_DEVICE_ADDRESS_1E,0x08);
- ZkData =KX022MulRead(KX022_DEVICE_ADDRESS_1E,0x0A);
- KXData =((float)XkData)/16384;//
- KYData =((float)YkData)/16384;//
- KZData =((float)ZkData)/16384;//
- }
复制代码选用不同的精度,处理方式不一样,这里选用2g。
三轴的输出数据通过串口助手显示,垂直放置,如图4所示:
水平方式(由于连线的问题,只能接近水平),数据如图5所示:
变换模块的角度,可以观察数据的变化。关于角度换算,后面再更新。
|