zhangbo
7 天以前 dd08a0f8ffd2c5ae1db9ba5aa90f3c41e264749c
keil/include/drivers/SC7A22H_example.c
@@ -111,8 +111,41 @@
}
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()
{
@@ -155,6 +188,7 @@
      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)
@@ -177,7 +211,7 @@
         {
             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);
            
         }
                  
@@ -190,6 +224,7 @@
void double_click_interrupt_callback()
  double_click_flag=1;
}
@@ -365,14 +400,14 @@
//低功耗模式使能, 低功耗模式: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, &reg_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, &reg_value);
//自测试模式使能---正方向,   偏转低振幅         
@@ -388,3 +423,6 @@
    }
}