修扩展can
This commit is contained in:
parent
22cdb32157
commit
93759801cc
@ -106,7 +106,7 @@ void MX_FDCAN2_Init(void)
|
|||||||
hfdcan2.Init.ExtFiltersNbr = 0;
|
hfdcan2.Init.ExtFiltersNbr = 0;
|
||||||
hfdcan2.Init.RxFifo0ElmtsNbr = 32;
|
hfdcan2.Init.RxFifo0ElmtsNbr = 32;
|
||||||
hfdcan2.Init.RxFifo0ElmtSize = FDCAN_DATA_BYTES_8;
|
hfdcan2.Init.RxFifo0ElmtSize = FDCAN_DATA_BYTES_8;
|
||||||
hfdcan2.Init.RxFifo1ElmtsNbr = 0;
|
hfdcan2.Init.RxFifo1ElmtsNbr = 32;
|
||||||
hfdcan2.Init.RxFifo1ElmtSize = FDCAN_DATA_BYTES_8;
|
hfdcan2.Init.RxFifo1ElmtSize = FDCAN_DATA_BYTES_8;
|
||||||
hfdcan2.Init.RxBuffersNbr = 0;
|
hfdcan2.Init.RxBuffersNbr = 0;
|
||||||
hfdcan2.Init.RxBufferSize = FDCAN_DATA_BYTES_8;
|
hfdcan2.Init.RxBufferSize = FDCAN_DATA_BYTES_8;
|
||||||
@ -151,10 +151,10 @@ void MX_FDCAN3_Init(void)
|
|||||||
hfdcan3.Init.DataTimeSeg2 = 1;
|
hfdcan3.Init.DataTimeSeg2 = 1;
|
||||||
hfdcan3.Init.MessageRAMOffset = 0x812;
|
hfdcan3.Init.MessageRAMOffset = 0x812;
|
||||||
hfdcan3.Init.StdFiltersNbr = 1;
|
hfdcan3.Init.StdFiltersNbr = 1;
|
||||||
hfdcan3.Init.ExtFiltersNbr = 0;
|
hfdcan3.Init.ExtFiltersNbr = 1;
|
||||||
hfdcan3.Init.RxFifo0ElmtsNbr = 32;
|
hfdcan3.Init.RxFifo0ElmtsNbr = 32;
|
||||||
hfdcan3.Init.RxFifo0ElmtSize = FDCAN_DATA_BYTES_8;
|
hfdcan3.Init.RxFifo0ElmtSize = FDCAN_DATA_BYTES_8;
|
||||||
hfdcan3.Init.RxFifo1ElmtsNbr = 0;
|
hfdcan3.Init.RxFifo1ElmtsNbr = 32;
|
||||||
hfdcan3.Init.RxFifo1ElmtSize = FDCAN_DATA_BYTES_8;
|
hfdcan3.Init.RxFifo1ElmtSize = FDCAN_DATA_BYTES_8;
|
||||||
hfdcan3.Init.RxBuffersNbr = 0;
|
hfdcan3.Init.RxBuffersNbr = 0;
|
||||||
hfdcan3.Init.RxBufferSize = FDCAN_DATA_BYTES_8;
|
hfdcan3.Init.RxBufferSize = FDCAN_DATA_BYTES_8;
|
||||||
|
|||||||
@ -120,22 +120,25 @@ FDCAN2.AutoRetransmission=ENABLE
|
|||||||
FDCAN2.CalculateBaudRateNominal=1000000
|
FDCAN2.CalculateBaudRateNominal=1000000
|
||||||
FDCAN2.CalculateTimeBitNominal=1000
|
FDCAN2.CalculateTimeBitNominal=1000
|
||||||
FDCAN2.CalculateTimeQuantumNominal=200.0
|
FDCAN2.CalculateTimeQuantumNominal=200.0
|
||||||
FDCAN2.IPParameters=CalculateTimeQuantumNominal,CalculateTimeBitNominal,CalculateBaudRateNominal,MessageRAMOffset,RxFifo0ElmtsNbr,TxFifoQueueElmtsNbr,NominalPrescaler,StdFiltersNbr,NominalTimeSeg1,AutoRetransmission
|
FDCAN2.IPParameters=CalculateTimeQuantumNominal,CalculateTimeBitNominal,CalculateBaudRateNominal,MessageRAMOffset,RxFifo0ElmtsNbr,TxFifoQueueElmtsNbr,NominalPrescaler,StdFiltersNbr,NominalTimeSeg1,AutoRetransmission,RxFifo1ElmtsNbr
|
||||||
FDCAN2.MessageRAMOffset=0x406
|
FDCAN2.MessageRAMOffset=0x406
|
||||||
FDCAN2.NominalPrescaler=24
|
FDCAN2.NominalPrescaler=24
|
||||||
FDCAN2.NominalTimeSeg1=3
|
FDCAN2.NominalTimeSeg1=3
|
||||||
FDCAN2.RxFifo0ElmtsNbr=32
|
FDCAN2.RxFifo0ElmtsNbr=32
|
||||||
|
FDCAN2.RxFifo1ElmtsNbr=32
|
||||||
FDCAN2.StdFiltersNbr=1
|
FDCAN2.StdFiltersNbr=1
|
||||||
FDCAN2.TxFifoQueueElmtsNbr=32
|
FDCAN2.TxFifoQueueElmtsNbr=32
|
||||||
FDCAN3.AutoRetransmission=ENABLE
|
FDCAN3.AutoRetransmission=ENABLE
|
||||||
FDCAN3.CalculateBaudRateNominal=1000000
|
FDCAN3.CalculateBaudRateNominal=1000000
|
||||||
FDCAN3.CalculateTimeBitNominal=1000
|
FDCAN3.CalculateTimeBitNominal=1000
|
||||||
FDCAN3.CalculateTimeQuantumNominal=200.0
|
FDCAN3.CalculateTimeQuantumNominal=200.0
|
||||||
FDCAN3.IPParameters=CalculateTimeQuantumNominal,CalculateTimeBitNominal,CalculateBaudRateNominal,MessageRAMOffset,RxFifo0ElmtsNbr,TxFifoQueueElmtsNbr,NominalPrescaler,StdFiltersNbr,NominalTimeSeg1,AutoRetransmission
|
FDCAN3.ExtFiltersNbr=1
|
||||||
|
FDCAN3.IPParameters=CalculateTimeQuantumNominal,CalculateTimeBitNominal,CalculateBaudRateNominal,MessageRAMOffset,RxFifo0ElmtsNbr,TxFifoQueueElmtsNbr,NominalPrescaler,StdFiltersNbr,NominalTimeSeg1,AutoRetransmission,RxFifo1ElmtsNbr,ExtFiltersNbr
|
||||||
FDCAN3.MessageRAMOffset=0x812
|
FDCAN3.MessageRAMOffset=0x812
|
||||||
FDCAN3.NominalPrescaler=24
|
FDCAN3.NominalPrescaler=24
|
||||||
FDCAN3.NominalTimeSeg1=3
|
FDCAN3.NominalTimeSeg1=3
|
||||||
FDCAN3.RxFifo0ElmtsNbr=32
|
FDCAN3.RxFifo0ElmtsNbr=32
|
||||||
|
FDCAN3.RxFifo1ElmtsNbr=32
|
||||||
FDCAN3.StdFiltersNbr=1
|
FDCAN3.StdFiltersNbr=1
|
||||||
FDCAN3.TxFifoQueueElmtsNbr=32
|
FDCAN3.TxFifoQueueElmtsNbr=32
|
||||||
FREERTOS.IPParameters=Tasks01,configTOTAL_HEAP_SIZE
|
FREERTOS.IPParameters=Tasks01,configTOTAL_HEAP_SIZE
|
||||||
|
|||||||
@ -165,11 +165,6 @@
|
|||||||
<WinNumber>1</WinNumber>
|
<WinNumber>1</WinNumber>
|
||||||
<ItemText>shoot</ItemText>
|
<ItemText>shoot</ItemText>
|
||||||
</Ww>
|
</Ww>
|
||||||
<Ww>
|
|
||||||
<count>2</count>
|
|
||||||
<WinNumber>1</WinNumber>
|
|
||||||
<ItemText>dr16</ItemText>
|
|
||||||
</Ww>
|
|
||||||
</WatchWindow1>
|
</WatchWindow1>
|
||||||
<Tracepoint>
|
<Tracepoint>
|
||||||
<THDelay>0</THDelay>
|
<THDelay>0</THDelay>
|
||||||
@ -925,7 +920,7 @@
|
|||||||
|
|
||||||
<Group>
|
<Group>
|
||||||
<GroupName>User/bsp</GroupName>
|
<GroupName>User/bsp</GroupName>
|
||||||
<tvExp>0</tvExp>
|
<tvExp>1</tvExp>
|
||||||
<tvExpOptDlg>0</tvExpOptDlg>
|
<tvExpOptDlg>0</tvExpOptDlg>
|
||||||
<cbSel>0</cbSel>
|
<cbSel>0</cbSel>
|
||||||
<RteFlg>0</RteFlg>
|
<RteFlg>0</RteFlg>
|
||||||
|
|||||||
Binary file not shown.
File diff suppressed because it is too large
Load Diff
@ -27,13 +27,13 @@
|
|||||||
#define FDCAN2_FILTER_CONFIG_TABLE(X) \
|
#define FDCAN2_FILTER_CONFIG_TABLE(X) \
|
||||||
X(0, FDCAN_STANDARD_ID, FDCAN_FILTER_MASK, 0x000 , 0x000 , 0) \
|
X(0, FDCAN_STANDARD_ID, FDCAN_FILTER_MASK, 0x000 , 0x000 , 0) \
|
||||||
X(1, FDCAN_EXTENDED_ID, FDCAN_FILTER_MASK, 0x00000000, 0x00000000, 0)
|
X(1, FDCAN_EXTENDED_ID, FDCAN_FILTER_MASK, 0x00000000, 0x00000000, 0)
|
||||||
#define FDCAN2_GLOBAL_FILTER FDCAN_REJECT, FDCAN_REJECT, FDCAN_FILTER_REMOTE, FDCAN_FILTER_REMOTE/* 全局过滤器参数(用于 HAL_FDCAN_ConfigGlobalFilter) */
|
#define FDCAN2_GLOBAL_FILTER FDCAN_REJECT, FDCAN_ACCEPT_IN_RX_FIFO1, FDCAN_FILTER_REMOTE, FDCAN_FILTER_REMOTE/* 全局过滤器参数(用于 HAL_FDCAN_ConfigGlobalFilter) */
|
||||||
#endif
|
#endif
|
||||||
#ifdef FDCAN3_EN
|
#ifdef FDCAN3_EN
|
||||||
#define FDCAN3_FILTER_CONFIG_TABLE(X) \
|
#define FDCAN3_FILTER_CONFIG_TABLE(X) \
|
||||||
X(0, FDCAN_STANDARD_ID, FDCAN_FILTER_MASK, 0x000 , 0x000 , 0) \
|
X(0, FDCAN_STANDARD_ID, FDCAN_FILTER_MASK, 0x000 , 0x000 , 0) \
|
||||||
X(1, FDCAN_EXTENDED_ID, FDCAN_FILTER_MASK, 0x00000000, 0x00000000, 0)
|
X(1, FDCAN_EXTENDED_ID, FDCAN_FILTER_MASK, 0x00000000, 0x00000000, 0)
|
||||||
#define FDCAN3_GLOBAL_FILTER FDCAN_REJECT, FDCAN_REJECT, FDCAN_FILTER_REMOTE, FDCAN_FILTER_REMOTE/* 全局过滤器参数(用于 HAL_FDCAN_ConfigGlobalFilter) */
|
#define FDCAN3_GLOBAL_FILTER FDCAN_REJECT, FDCAN_ACCEPT_IN_RX_FIFO1, FDCAN_FILTER_REMOTE, FDCAN_FILTER_REMOTE/* 全局过滤器参数(用于 HAL_FDCAN_ConfigGlobalFilter) */
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* ====宏展开实现==== */
|
/* ====宏展开实现==== */
|
||||||
|
|||||||
@ -207,7 +207,7 @@ int8_t Chassis_Init(Chassis_t *c, Chassis_Params_t *param, float target_freq) {
|
|||||||
param->low_pass_cutoff_freq.out);
|
param->low_pass_cutoff_freq.out);
|
||||||
LowPassFilter2p_Init(&c->filter.wheel_out[1], target_freq,
|
LowPassFilter2p_Init(&c->filter.wheel_out[1], target_freq,
|
||||||
param->low_pass_cutoff_freq.out);
|
param->low_pass_cutoff_freq.out);
|
||||||
|
Chassis_MotorEnable(c);
|
||||||
/*初始化机体状态*/
|
/*初始化机体状态*/
|
||||||
c->chassis_state.position_x = 0.0f;
|
c->chassis_state.position_x = 0.0f;
|
||||||
c->chassis_state.velocity_x = 0.0f;
|
c->chassis_state.velocity_x = 0.0f;
|
||||||
@ -391,9 +391,19 @@ void Chassis_Output(Chassis_t *c) {
|
|||||||
LowPassFilter2p_Apply(&c->filter.joint_out[2], c->output.joint[2]);
|
LowPassFilter2p_Apply(&c->filter.joint_out[2], c->output.joint[2]);
|
||||||
c->output.joint[3] =
|
c->output.joint[3] =
|
||||||
LowPassFilter2p_Apply(&c->filter.joint_out[3], c->output.joint[3]);
|
LowPassFilter2p_Apply(&c->filter.joint_out[3], c->output.joint[3]);
|
||||||
float out[4] = {c->output.joint[0], c->output.joint[1], c->output.joint[2],
|
// float out[4] = {c->output.joint[0], c->output.joint[1], c->output.joint[2],
|
||||||
c->output.joint[3]};
|
// c->output.joint[3]};
|
||||||
// Virtual_Chassis_SendJointTorque(&virtual_chassis, out);
|
// Virtual_Chassis_SendJointTorque(&virtual_chassis, out);
|
||||||
|
MOTOR_LZ_MotionParam_t motion_param = {
|
||||||
|
.torque=0.0f,
|
||||||
|
.target_angle=0.0f,
|
||||||
|
.target_velocity=0.0f,
|
||||||
|
.kp=0.0f,
|
||||||
|
.kd=0.0f,
|
||||||
|
};
|
||||||
|
for (int i = 0; i < 4; i++) {
|
||||||
|
MOTOR_LZ_MotionControl(&c->param->joint_param[i],&motion_param);
|
||||||
|
}
|
||||||
c->output.wheel[0] =
|
c->output.wheel[0] =
|
||||||
LowPassFilter2p_Apply(&c->filter.wheel_out[0], c->output.wheel[0]);
|
LowPassFilter2p_Apply(&c->filter.wheel_out[0], c->output.wheel[0]);
|
||||||
c->output.wheel[1] =
|
c->output.wheel[1] =
|
||||||
|
|||||||
@ -28,14 +28,14 @@ Config_RobotParam_t robot_config = {
|
|||||||
.can = BSP_CAN_1,
|
.can = BSP_CAN_1,
|
||||||
.id = 0x201,
|
.id = 0x201,
|
||||||
.module = MOTOR_M3508,
|
.module = MOTOR_M3508,
|
||||||
.reverse = true,
|
.reverse = false,
|
||||||
.gear=false,
|
.gear=false,
|
||||||
},
|
},
|
||||||
.fric_motor_param[1] = {
|
.fric_motor_param[1] = {
|
||||||
.can = BSP_CAN_1,
|
.can = BSP_CAN_1,
|
||||||
.id = 0x202,
|
.id = 0x202,
|
||||||
.module = MOTOR_M3508,
|
.module = MOTOR_M3508,
|
||||||
.reverse = false,
|
.reverse = true,
|
||||||
.gear=false,
|
.gear=false,
|
||||||
},
|
},
|
||||||
.trig_motor_param = {
|
.trig_motor_param = {
|
||||||
|
|||||||
@ -133,7 +133,7 @@ int8_t Shoot_Init(Shoot_t *s, Shoot_Params_t *param, float target_freq)
|
|||||||
|
|
||||||
memset(&s->shoot_Anglecalu,0,sizeof(s->shoot_Anglecalu));
|
memset(&s->shoot_Anglecalu,0,sizeof(s->shoot_Anglecalu));
|
||||||
memset(&s->output,0,sizeof(s->output));
|
memset(&s->output,0,sizeof(s->output));
|
||||||
s->target_variable.target_rpm=500.0f;
|
s->target_variable.target_rpm=4000.0f;
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -62,8 +62,7 @@ void Task_ctrl_chassis(void *argument) {
|
|||||||
|
|
||||||
Chassis_UpdateFeedback(&chassis);
|
Chassis_UpdateFeedback(&chassis);
|
||||||
|
|
||||||
Chassis_Control(&chassis, &chassis_cmd);
|
Chassis_Control(&chassis, &chassis_cmd);
|
||||||
|
|
||||||
/* USER CODE END */
|
/* USER CODE END */
|
||||||
osDelayUntil(tick); /* 运行结束,等待下一次唤醒 */
|
osDelayUntil(tick); /* 运行结束,等待下一次唤醒 */
|
||||||
}
|
}
|
||||||
|
|||||||
@ -44,6 +44,7 @@ void Task_ctrl_shoot(void *argument) {
|
|||||||
Shoot_UpdateFeedback(&shoot);
|
Shoot_UpdateFeedback(&shoot);
|
||||||
// Shoot_Test(&shoot);
|
// Shoot_Test(&shoot);
|
||||||
Shoot_Control(&shoot,&shoot_cmd);
|
Shoot_Control(&shoot,&shoot_cmd);
|
||||||
|
|
||||||
/* USER CODE END */
|
/* USER CODE END */
|
||||||
osDelayUntil(tick); /* 运行结束,等待下一次唤醒 */
|
osDelayUntil(tick); /* 运行结束,等待下一次唤醒 */
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user