| | |
| | | } |
| | | |
| | | |
| | | float g_x, g_y, g_z; |
| | | void test_gravity_reading() |
| | | { |
| | | |
| | | // SL_SC7A22H_I2c_Spi_Init(SL_SC7A22H_SPI_IIC_MODE); |
| | | // SL_SC7A22H_Soft_Reset(); |
| | | // SL_SC7A22H_Check(); |
| | | |
| | | // SL_SC7A22H_I2c_Spi_Write(SL_SPI_IIC_INTERFACE, 0x7D, 0x04); // 使能加速度计 |
| | | // SL_SC7A22H_Delay_Ms(50); |
| | | // SL_SC7A22H_I2c_Spi_Write(SL_SPI_IIC_INTERFACE, 0x41, 0x00); // ±2g量程 |
| | | // SL_SC7A22H_I2c_Spi_Write(SL_SPI_IIC_INTERFACE, 0x40, 0x0A); // 400Hz输出速率 |
| | | |
| | | //转换数据 |
| | | signed short x_raw, y_raw, z_raw; |
| | | const float sensitivity = 16384; |
| | | //16位数据 1g值 量程 2G 4G 8G 16G |
| | | |
| | | //16384 1gֵ 1g 2g 4g 8g |
| | | |
| | | |
| | | while(1) |
| | | { |
| | | SL_SC7A22H_RawData_Read(&x_raw, &y_raw, &z_raw); |
| | | |
| | | // 转换为重力加速度值(g) |
| | | g_x = (float)x_raw/sensitivity; |
| | | g_y = (float)y_raw/sensitivity; |
| | | g_z = (float)z_raw/sensitivity; |
| | | |
| | | SL_SC7A22H_Delay_Ms(250); // 250ms采样间隔 |
| | | } |
| | | } |
| | | uint8_t double_click_flag=0; |
| | | unsigned char click_flag; |
| | | /*******双击检测示例*********/ |
| | | void SC7A22H_get_double_click() |
| | | { |
| | |
| | | SL_SC7A22H_I2c_Spi_Write(SL_SPI_IIC_INTERFACE, 0x7F, 0x90);//goto 0x90 |
| | | SL_SC7A22H_Delay_Ms(1); |
| | | //输出中断必须满足设置的敲击阈值个数才能输出中断,否则无中断输出 |
| | | |
| | | //锁存CLICK 中断状态,:使能 XYZ 轴数据参与敲击检测 |
| | | SL_SC7A22H_I2c_Spi_Write(SL_SPI_IIC_INTERFACE, 0x38, 0x1F);//XYZ CLICK ENABLE AND LATCH INT LEVEL |
| | | //敲击前数据稳定时长设置------20ms(400hz) |
| | |
| | | { |
| | | double_click_flag=0; |
| | | SL_SC7A22H_I2c_Spi_Read(SL_SC7A22H_SPI_IIC_MODE, 0x39, 1, &CLICK_status); |
| | | printf("SC7A22H_INT1_SRC:%x\r\n",CLICK_status); |
| | | |
| | | |
| | | } |
| | | |
| | |
| | | void double_click_interrupt_callback() |
| | | { |
| | | double_click_flag=1; |
| | | |
| | | } |
| | | |
| | | |
| | |
| | | //低功耗模式使能, 低功耗模式:1个数据平均一次,50Hz输出 |
| | | |
| | | //全量程选择:±8G |
| | | SL_SC7A22H_I2c_Spi_Write(SL_SPI_IIC_INTERFACE, 0x41, 0x02);//ACC_RANGE ±8G |
| | | SL_SC7A22H_I2c_Spi_Write(SL_SPI_IIC_INTERFACE, 0x41, 0x02);//ACC_RANGE ±8G |
| | | SL_SC7A22H_I2c_Spi_Read(SL_SC7A22H_SPI_IIC_MODE, 0x6D, 1, ®_value); |
| | | delay_ms(60); |
| | | delay_ms(60); |
| | | |
| | | SL_SC7A22H_I2c_Spi_Write(SL_SPI_IIC_INTERFACE, 0x40, 0xac);//ACC_CONF 0x07=50Hz |
| | | SL_SC7A22H_I2c_Spi_Write(SL_SPI_IIC_INTERFACE, 0x40, 0xac);//ACC_CONF 0x07=50Hz |
| | | delay_ms(60); |
| | | //地址自增,连续读写时地址自增,连续更新 |
| | | SL_SC7A22H_I2c_Spi_Write(SL_SPI_IIC_INTERFACE, 0x05, 0x10);//I2C_CFG |
| | | SL_SC7A22H_I2c_Spi_Write(SL_SPI_IIC_INTERFACE, 0x05, 0x10);//I2C_CFG |
| | | delay_ms(60); |
| | | // SL_SC7A22H_I2c_Spi_Read(SL_SC7A22H_SPI_IIC_MODE, 0x6D, 1, ®_value); |
| | | //自测试模式使能---正方向, 偏转低振幅 |
| | |
| | | } |
| | | } |
| | | |
| | | |
| | | |
| | | |