本帖最后由 freeelectron 于 2020-1-19 11:59 编辑
1、基本特性 测量范围可配置±8g, ±16g or ±32g; 输出速率可达25600Hz 2048字节的fifo/filo 支持spi、iic接口 支持自测 3 x 3 x 0.9 mm LGA封装
2、IO口描述 SCLK/SCL:SPI和I2C的信号SDI/SDA:SPI数据输入引脚或者I2C数据引脚SDO/ADDR:4线spi的数据输出引脚或者I2C设备地址配置引脚,不能悬空nCS:SPI片选或者I2C模式下接到IO_VDD引脚,不能悬空NC:内部未连接,可以悬空、可以接到GND、可以接到VDD、也可以接到IO_VDDINT1、INT2:外部中断引脚2,POR期间是高阻状态,POR之后是低电平,不使用保持悬空TRIG:FIFO缓冲的控制触发引脚,不使用接到GND。IO_VDD、VDD:电源输入引脚,需要接0.1uF电容到地。
3、设备I2C地址 Y这一位默认是1,需要改动可联系厂家,X这一位由用户设计,由SDO/ADDR引脚来决定。
4、寄存器描述 5、软件实现 5.1寄存器以及设置参数定义
5.2读取设备ID
设备ID一般都是一个固定值,芯片出厂的时候已经固化在芯片里面了,只读,可用于检测I2C通信是否正常、检测芯片是否存在。 - bool KX224_1053Check(void)
- {
- uint8 chip_id=0;
-
- chip_id=KX224_1053_ReadRegU8(KX224_1053_WHO_AM_I);
-
- if(chip_id==0x2B)
- {
- return true;
- }
- else
- {
- return false;
- }
- }
复制代码
5.3传感器初始化设定
- void KX224_1053Init(void)
- {
- KX224_1053_WriteRegU8(KX224_1053_CNTL1,OPERATE_MODE|HIGH_RESOLUTION|RANGE_8G);、
- //运行模式、高分辨率模式、加速度范围
-
- KX224_1053_WriteRegU8(KX224_1053_ODCNTL,ODR_50HZ);
- //输出数据速率
- }
复制代码
5.4、获取加速度计测量范围、计算精度 由于直接读出来的是数字量,因此需要计算每个count对应的实际值 - uint16 g_sensitive;
- void KX224_1053GetRange(void)
- {
- uint8 range;
- range=KX224_1053_ReadRegU8(KX224_1053_CNTL1);
- range=range&(RANGE_8G|RANGE_16G|RANGE_32G);
-
- switch(range)
- {
- case RANGE_8G:
- g_sensitive=32768/8;
- break;
- case RANGE_16G:
- g_sensitive=32768/16;
- break;
- case RANGE_32G:
- g_sensitive=32768/32;
- break;
- default:
- break;
- }
- }
复制代码
5.5读取数据 - void KX224_1053Read(void)
- {
- sint16 x_count, y_count, z_count;
- float x,y,z;
-
- x_count=KX224_1053_ReadRegU16(KX224_1053_XOUT_L);
- y_count=KX224_1053_ReadRegU16(KX224_1053_YOUT_L);
- z_count=KX224_1053_ReadRegU16(KX224_1053_ZOUT_L);
- printf(“x_count=%d y_count=%d z_count=%d\r\n”,x_count,y_count,z_count);
- x=x_count/(g_sensitive*1.0);
- y=y_count/(g_sensitive*1.0);
- z=z_count/(g_sensitive*1.0);
- printf(“x=%f y=%f z=%f\r\n”,x,y,z);
- }
复制代码注意上面的读数有符号数据,读出来之后再转化为实际的值。测量范围越大,精度越低。
|