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, &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 @@
     }
 }
 
+
+
+

--
Gitblit v1.9.3