重力分量去除后仍有偏差

This commit is contained in:
lmx
2025-11-13 20:30:10 +08:00
parent 046986c5c3
commit b621ef7e44
29 changed files with 168502 additions and 167884 deletions

View File

@ -280,14 +280,25 @@ void sensor_read_data(){
memcpy(&combined_raw_data[3], tmp.gyr_data, 3 * sizeof(signed short));
if (!calibration_done) { //第1次启动开启零漂检测
status = SL_SC7U22_Angle_Output(1, combined_raw_data, tmp.angle, 0);
// status = SL_SC7U22_Angle_Output(1, combined_raw_data, tmp.angle, 0);
status = Original_SL_SC7U22_Angle_Output(1, combined_raw_data, tmp.angle, 0);
// static count = 0;
// if(count > 100){
// count = 0;
// xlog("SL_SC7U22_Angle_Output status:%d",status);
// xlog("RawData:AX=%d,AY=%d,AZ=%d,GX=%d,GY=%d,GZ=%d\r\n",tmp.acc_data[0],tmp.acc_data[1],tmp.acc_data[2],tmp.gyr_data[0],tmp.gyr_data[1],tmp.gyr_data[2]);
// }
// count++;
if (status == 1) {
calibration_done = 1;
printf("Sensor calibration successful! Skiing mode is active.\n");
}
} else {
// printf("Calculate the time interval =============== start\n");
status = SL_SC7U22_Angle_Output(0, combined_raw_data, tmp.angle, 0);
// status = SL_SC7U22_Angle_Output(0, combined_raw_data, tmp.angle, 0);
status = Original_SL_SC7U22_Angle_Output(0, combined_raw_data, tmp.angle, 0);
memcpy(tmp.acc_data, &combined_raw_data[0], 3 * sizeof(signed short));
memcpy(tmp.gyr_data, &combined_raw_data[3], 3 * sizeof(signed short));
circle_buffer_write(&sensor_read, &tmp);
@ -320,16 +331,23 @@ void calculate_data(){
static int count = 0;
extern char xt_Check_Flag;
void BLE_send_data(){
// xlog("=======start\n");
if(circle_buffer_is_empty(&sensor_send)){
// xlog("sensor_send_buffer: send buffer empty\n");
return;
}
#ifdef XTELL_TEST
// #if 0
BLE_send_data_t tmp;
circle_buffer_read(&sensor_send, &tmp);
if(count >=50){
if(count >=100){
// extern debug_t debug2;
// xlog("s %d, %dcm/s, %dcm\n",tmp.skiing_state, tmp.speed_cms, tmp.distance_cm);
// xlog("Acc:%d, %d, %d\n",tmp.acc_data[0],tmp.acc_data[1],tmp.acc_data[2]);
// xlog("Gyr:%d, %d, %d\n", tmp.gyr_data[0],tmp.gyr_data[1],tmp.gyr_data[2]);
// xlog("debug2.acc_magnitude:%.2f\n", debug2.acc_magnitude);
int num_chars_written;
count = 0;
char* division = "==========\n";
@ -396,7 +414,7 @@ void BLE_send_data(){
// xlog("GYR:%d, %d, %d\n", tmp.gyr_data[0],tmp.gyr_data[1],tmp.gyr_data[2]);
}
count++;
// xlog("=======end\n");
#else
#endif
}
@ -488,7 +506,8 @@ void xtell_task_create(void){
gpio_set_pull_up(IO_PORTE_05,1);
gpio_direction_output(IO_PORTE_05,1);
os_time_dly(10);
// os_time_dly(10);
delay_2ms(10);
SL_SC7U22_Config();
// extern u8 LIS2DH12_Config(void);
@ -511,7 +530,7 @@ void xtell_task_create(void){
create_process(&sensor_read_data_id, "read",NULL, sensor_read_data, 10);
create_process(&calculate_data_id, "calculate",NULL, calculate_data, 5);
create_process(&calculate_data_id, "calculate",NULL, calculate_data, 6);
create_process(&ble_send_data_id, "send",NULL, BLE_send_data, 1);