From dd08a0f8ffd2c5ae1db9ba5aa90f3c41e264749c Mon Sep 17 00:00:00 2001 From: zhangbo <zhangbo@qq.com> Date: 星期二, 15 七月 2025 17:39:12 +0800 Subject: [PATCH] 测试通过XYZ的1g加速度 --- keil/include/drivers/SC7A22H_example.c | 48 +++++++++++++++++++++++++++++++++++++++++++----- 1 files changed, 43 insertions(+), 5 deletions(-) diff --git a/keil/include/drivers/SC7A22H_example.c b/keil/include/drivers/SC7A22H_example.c index be59a54..884052e 100644 --- a/keil/include/drivers/SC7A22H_example.c +++ b/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, ®_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); //自测试模式使能---正方向, 偏转低振幅 @@ -388,3 +423,6 @@ } } + + + -- Gitblit v1.9.3