ST意法半导体
直播中

陈勇

7年用户 1177经验值
私信 关注
[问答]

如何通过CANbus中断从睡眠模式唤醒MCU?

我正在研究电源管理,我将 MCU 置于睡眠模式(无低功耗),但它在接收到 CAN 帧时不会唤醒,它保持在睡眠模式。我想要任何 CAN 帧来唤醒 MCU。
要切换到睡眠模式,我使用:
  • HAL_Suspendtick();
  •                   HAL_TIM_Base_Stop(&htim1);
  •                   HAL_PWR_EnterSLEEPMode(PWR_MAINREGULATOR_ON, PWR_SLEEPENTRY_WFI);
  •                   HAL_TIM_Base_Start(&htim1);
  •                   HAL_ResumeTick();
  •                   tick_sleep = HAL_GetTick();
CAN总线配置:
  • void MX_CAN_Init(void)
  • {
  •   /* USER CODE BEGIN CAN_Init 0 */
  •   /* USER CODE END CAN_Init 0 */
  •   /* USER CODE BEGIN CAN_Init 1 */
  •   /* USER CODE END CAN_Init 1 */
  •   hcan.Instance = CAN1;
  •   hcan.Init.Prescaler = 6;
  •   hcan.Init.Mode = CAN_MODE_NORMAL;
  •   hcan.Init.SyncJumpWidth = CAN_SJW_1TQ;
  •   hcan.Init.TimeSeg1 = CAN_BS1_2TQ;
  •   hcan.Init.TimeSeg2 = CAN_BS2_1TQ;
  •   hcan.Init.TimeTriggeredMode = DISABLE;
  •   hcan.Init.AutoBusOff = ENABLE;
  •   hcan.Init.AutoWakeUp = ENABLE;
  •   hcan.Init.AutoRetransmission = ENABLE;
  •   hcan.Init.ReceiveFifoLocked = DISABLE;
  •   hcan.Init.TransmitFifoPriority = DISABLE;
  •   if (HAL_CAN_Init(&hcan) != HAL_OK)
  •   {
  •     Error_Handler();
  •   }
  •   /* USER CODE BEGIN CAN_Init 2 */
  •   HAL_CAN_Start(&hcan);
  •     CAN_FilterTypeDef  sFilterConfig;
  •     sFilterConfig.FilterIdHigh   = 0xFFFF;
  •     sFilterConfig.FilterIdLow   = 0xFFFF;
  •     sFilterConfig.FilterMaskIdHigh = 0;
  •     sFilterConfig.FilterMaskIdLow = 0;
  •     sFilterConfig.FilterFIFOAssignment = CAN_RX_FIFO0;
  •     sFilterConfig.FilterBank = 0;
  •     sFilterConfig.FilterMode = CAN_FILTERMODE_IDMASK;
  •     sFilterConfig.FilterScale = CAN_FILTERSCALE_16BIT;
  •     sFilterConfig.FilterActivation = ENABLE;
  •     sFilterConfig.SlaveStartFilterBank = 0;
  •     HAL_CAN_ConfigFilter(&hcan,&sFilterConfig);
  •   /* USER CODE END CAN_Init 2 */
  • }
在我的代码中,我将 CAN Rx 配置为中断。







回帖(1)

巩潇然

2022-12-5 14:11:23
好的,我找到了解决方案。我忘了添加
HAL_CAN_ActivateNotification(&hcan, CAN_IT_RX_FIFO0_MSG_PENDING);
举报

更多回帖

发帖
×
20
完善资料,
赚取积分