|
@@ -46,17 +46,16 @@ CAN_HandleTypeDef hcan;
|
|
|
/* CAN init function */
|
|
|
void MX_CAN_Init(void)
|
|
|
{
|
|
|
-
|
|
|
hcan.Instance = CAN1;
|
|
|
- hcan.Init.Prescaler = 24;
|
|
|
+ hcan.Init.Prescaler = 18; //波特率 = 36MHz / 18 / (1 + 6 + 1) = 250K
|
|
|
hcan.Init.Mode = CAN_MODE_NORMAL;
|
|
|
- hcan.Init.SJW = CAN_SJW_1TQ;
|
|
|
- hcan.Init.BS1 = CAN_BS1_4TQ;
|
|
|
+ hcan.Init.SJW = CAN_SJW_1TQ; //采样点 = (1 + 6) / (1 + 6 + 1) = 87.5%
|
|
|
+ hcan.Init.BS1 = CAN_BS1_6TQ;
|
|
|
hcan.Init.BS2 = CAN_BS2_1TQ;
|
|
|
hcan.Init.TTCM = DISABLE;
|
|
|
hcan.Init.ABOM = ENABLE;
|
|
|
hcan.Init.AWUM = ENABLE;
|
|
|
- hcan.Init.NART = DISABLE;
|
|
|
+ hcan.Init.NART = DISABLE; //开启自动重传
|
|
|
hcan.Init.RFLM = DISABLE;
|
|
|
hcan.Init.TXFP = DISABLE;
|
|
|
if (HAL_CAN_Init(&hcan) != HAL_OK)
|
|
@@ -135,27 +134,13 @@ void HAL_CAN_MspDeInit(CAN_HandleTypeDef* canHandle)
|
|
|
}
|
|
|
|
|
|
/* USER CODE BEGIN 1 */
|
|
|
-#define ID_TO_MC_FILTER 0x701
|
|
|
-#define ID_TO_MC_MASK 0x70F
|
|
|
+#define ID_TO_MC_FILTER 0x751
|
|
|
+#define ID_TO_MC_MASK 0x7FF
|
|
|
|
|
|
-#define ID_BC_FILTER 0x700
|
|
|
-#define ID_BC_MASK 0x70F
|
|
|
void Can_Filter_Config(void)
|
|
|
{
|
|
|
CAN_FilterConfTypeDef sFilterConfig;
|
|
|
|
|
|
-// sFilterConfig.FilterNumber = 0;
|
|
|
-// sFilterConfig.FilterMode = CAN_FILTERMODE_IDMASK;
|
|
|
-// sFilterConfig.FilterScale = CAN_FILTERSCALE_32BIT;
|
|
|
-// sFilterConfig.FilterIdHigh = 0x0000;
|
|
|
-// sFilterConfig.FilterIdLow = 0x0000;
|
|
|
-// sFilterConfig.FilterMaskIdHigh = 0x0000;
|
|
|
-// sFilterConfig.FilterMaskIdLow = 0x0000;
|
|
|
-// sFilterConfig.FilterFIFOAssignment = 0;
|
|
|
-// sFilterConfig.FilterActivation = ENABLE;
|
|
|
-// sFilterConfig.BankNumber = 14;
|
|
|
-// HAL_CAN_ConfigFilter(&hcan, &sFilterConfig);
|
|
|
-
|
|
|
//设置过滤器组0,指定接收发送给PBU的数据
|
|
|
sFilterConfig.FilterNumber = 0;
|
|
|
sFilterConfig.FilterMode = CAN_FILTERMODE_IDMASK;
|
|
@@ -176,28 +161,6 @@ void Can_Filter_Config(void)
|
|
|
{
|
|
|
Error_Handler();
|
|
|
}
|
|
|
-
|
|
|
- //设置过滤器组1,指定接收广播数据
|
|
|
- sFilterConfig.FilterNumber = 1;
|
|
|
- sFilterConfig.FilterMode = CAN_FILTERMODE_IDMASK;
|
|
|
- sFilterConfig.FilterScale = CAN_FILTERSCALE_32BIT;
|
|
|
-
|
|
|
- //设置过滤寄存器
|
|
|
- sFilterConfig.FilterIdHigh = (uint16_t)((((uint32_t)ID_BC_FILTER << 21) & 0xFFFF0000) >> 16);
|
|
|
- sFilterConfig.FilterIdLow = (uint16_t)(((uint32_t)ID_BC_FILTER << 21) | CAN_ID_STD | CAN_RTR_DATA) & 0xFFFF;
|
|
|
-
|
|
|
- //设置屏蔽寄存器
|
|
|
- sFilterConfig.FilterMaskIdHigh = (uint16_t)((((uint32_t)ID_BC_MASK << 21) & 0xFFFF0000) >> 16);;
|
|
|
- sFilterConfig.FilterMaskIdLow = 0xFFFF;
|
|
|
-
|
|
|
- sFilterConfig.FilterFIFOAssignment = 0;
|
|
|
- sFilterConfig.FilterActivation = ENABLE;
|
|
|
-
|
|
|
- if(HAL_CAN_ConfigFilter(&hcan, &sFilterConfig) != HAL_OK)
|
|
|
- {
|
|
|
- Error_Handler();
|
|
|
- }
|
|
|
-
|
|
|
}
|
|
|
/* USER CODE END 1 */
|
|
|
|