This commit is contained in:
lmx
2025-11-13 11:13:03 +08:00
parent 5e587e0527
commit 046986c5c3
28 changed files with 983 additions and 1666 deletions

View File

@ -2,7 +2,7 @@
#include "SC7U22.h"
#include "math.h"
#include "os/os_api.h"
#include "../xtell.h"
// #define ENABLE_XLOG 1
#ifdef xlog
@ -129,7 +129,8 @@ unsigned char SL_SC7U22_Config(void)
SL_SC7U22_I2c_Spi_Write(SL_SPI_IIC_INTERFACE, 0x40, 0xBC);//ACC_CON 高性能模式1600Hz -- lmx
// SL_SC7U22_I2c_Spi_Write(SL_SPI_IIC_INTERFACE, 0x40, 0xBB);//ACC_CON 高性能模式800Hz -- lmx
SL_SC7U22_I2c_Spi_Write(SL_SPI_IIC_INTERFACE, 0x41, 0x01);//ACC_RANGE 10±8G 01±4G
// SL_SC7U22_I2c_Spi_Write(SL_SPI_IIC_INTERFACE, 0x41, 0x01);//ACC_RANGE 01±4G
SL_SC7U22_I2c_Spi_Write(SL_SPI_IIC_INTERFACE, 0x41, 0x03);//ACC_RANGE 03±16G
// SL_SC7U22_I2c_Spi_Write(SL_SPI_IIC_INTERFACE, 0x42, 0x86);//GYR_CONF 0x87=50Hz 0x86=25Hz
// SL_SC7U22_I2c_Spi_Write(SL_SPI_IIC_INTERFACE, 0x42, 0x8C);//GYR_CONF 1600Hz -- lmx
@ -810,9 +811,19 @@ unsigned char SL_SC7U22_Angle_Output(unsigned char calibration_en, signed short
#endif
// --- 2.2 使用加速度计计算姿态角 ---
// 将加速度原始值转换为归一化的重力分量
#if ACC_RANGE==4
//4g
angle_acc[0] = (float)Temp_Accgyro[0] / 8192; //ax
angle_acc[1] = (float)Temp_Accgyro[1] / 8192; //ay
angle_acc[2] = (float)Temp_Accgyro[2] / 8192; //az
#endif
#if ACC_RANGE==16
//±16g 2048
angle_acc[0] = (float)Temp_Accgyro[0] / 2048; //ax
angle_acc[1] = (float)Temp_Accgyro[1] / 2048; //ay
angle_acc[2] = (float)Temp_Accgyro[2] / 2048; //az
#endif
// 限制范围防止asinf/atanf计算错误
if (angle_acc[0] > 1.0) angle_acc[0] = 1.0;