diff --git a/Core/Src/can.c b/Core/Src/can.c index 1311a3c..2a96b47 100644 --- a/Core/Src/can.c +++ b/Core/Src/can.c @@ -38,7 +38,7 @@ void MX_CAN1_Init(void) /* USER CODE END CAN1_Init 1 */ hcan1.Instance = CAN1; - hcan1.Init.Prescaler = 4; + hcan1.Init.Prescaler = 2; hcan1.Init.Mode = CAN_MODE_NORMAL; hcan1.Init.SyncJumpWidth = CAN_SJW_2TQ; hcan1.Init.TimeSeg1 = CAN_BS1_16TQ; @@ -46,7 +46,7 @@ void MX_CAN1_Init(void) hcan1.Init.TimeTriggeredMode = DISABLE; hcan1.Init.AutoBusOff = ENABLE; hcan1.Init.AutoWakeUp = DISABLE; - hcan1.Init.AutoRetransmission = DISABLE; + hcan1.Init.AutoRetransmission = ENABLE; hcan1.Init.ReceiveFifoLocked = DISABLE; hcan1.Init.TransmitFifoPriority = DISABLE; if (HAL_CAN_Init(&hcan1) != HAL_OK) diff --git a/Core/Src/f4_can_app.c b/Core/Src/f4_can_app.c index cf97b2e..600b144 100644 --- a/Core/Src/f4_can_app.c +++ b/Core/Src/f4_can_app.c @@ -17,7 +17,7 @@ volatile uint32_t g_dbg_valid_accept = 0U; /* ================= 机器人底盘物理参数 ================= */ -#define WHEEL_RADIUS_M 0.06f +#define WHEEL_RADIUS_M 0.04f #define WHEEL_TRACK_M 0.30f #define PI_F 3.14159265358979323846f diff --git a/Core/Src/main.c b/Core/Src/main.c index 780edda..7b2873c 100644 --- a/Core/Src/main.c +++ b/Core/Src/main.c @@ -136,9 +136,9 @@ int main(void) MX_CAN1_Init(); MX_UART4_Init(); /* USER CODE BEGIN 2 */ - FourWheel_LADRC_Init(); - HAL_Delay(1000); CAN_App_Init(); + FourWheel_LADRC_Init(); + /* 启动 10ms 硬实时控制节拍。 */ if (HAL_TIM_Base_Start_IT(&htim6) != HAL_OK) diff --git a/Core/Src/motor.c b/Core/Src/motor.c index 5eebd31..1155c6a 100644 --- a/Core/Src/motor.c +++ b/Core/Src/motor.c @@ -261,9 +261,10 @@ void Motor_Update_RPM(float dt_s) s_last_count[MOTOR_RR] = curr_count_rr; /* 左侧输入镜像修正:让“车体前进”统一表现为正脉冲 / 正 RPM。 */ - delta[MOTOR_FL] = (int16_t)(-delta[MOTOR_FL]); - delta[MOTOR_RL] = (int16_t)(-delta[MOTOR_RL]); - + // delta[MOTOR_FL] = (int16_t)(-delta[MOTOR_FL]); + // delta[MOTOR_RL] = (int16_t)(-delta[MOTOR_RL]); + delta[MOTOR_FR] = (int16_t)(-delta[MOTOR_FR]); + delta[MOTOR_RR] = (int16_t)(-delta[MOTOR_RR]); /* 用 32 位内部累加,避免偶发高速度时 16 位回绕。 */ s_odom_acc_ticks[MOTOR_FL] += delta[MOTOR_FL]; s_odom_acc_ticks[MOTOR_RL] += delta[MOTOR_RL]; diff --git a/FDR-Core.ioc b/FDR-Core.ioc index 1c15f2c..7fea9e1 100644 --- a/FDR-Core.ioc +++ b/FDR-Core.ioc @@ -5,11 +5,12 @@ CAD.provider= CAN1.ABOM=ENABLE CAN1.BS1=CAN_BS1_16TQ CAN1.BS2=CAN_BS2_4TQ -CAN1.CalculateBaudRate=500000 -CAN1.CalculateTimeBit=2000 -CAN1.CalculateTimeQuantum=95.23809523809524 -CAN1.IPParameters=CalculateTimeQuantum,CalculateTimeBit,CalculateBaudRate,Prescaler,BS1,BS2,SJW,ABOM -CAN1.Prescaler=4 +CAN1.CalculateBaudRate=1000000 +CAN1.CalculateTimeBit=1000 +CAN1.CalculateTimeQuantum=47.61904761904762 +CAN1.IPParameters=CalculateTimeQuantum,CalculateTimeBit,CalculateBaudRate,Prescaler,BS1,BS2,SJW,ABOM,NART +CAN1.NART=ENABLE +CAN1.Prescaler=2 CAN1.SJW=CAN_SJW_2TQ File.Version=6 GPIO.groupedBy=