cancel
Showing results for 
Search instead for 
Did you mean: 

No CAN TX interrupt

avidroneg
Associate III

I've attempted to get an interrupt when one of the three CAN transmit mailboxes empties. In MX:

avidroneg_0-1765403742178.png

It generated:

    /* CAN interrupt Init */
    HAL_NVIC_SetPriority(CAN_TX_IRQn, 0, 0);
    HAL_NVIC_EnableIRQ(CAN_TX_IRQn);
    HAL_NVIC_SetPriority(CAN_RX0_IRQn, 0, 0);
    HAL_NVIC_EnableIRQ(CAN_RX0_IRQn);
    HAL_NVIC_SetPriority(CAN_RX1_IRQn, 0, 0);
    HAL_NVIC_EnableIRQ(CAN_RX1_IRQn);
    HAL_NVIC_SetPriority(CAN_SCE_IRQn, 0, 0);
    HAL_NVIC_EnableIRQ(CAN_SCE_IRQn);

 

I am using the HAL method HAL_CAN_AddTxMessage. This method seems to be working because I see CAN data on the wire. However, I never get an interrupt. I have a breakpoint on this function:

void CAN_TX_IRQHandler(void)
{
  /* USER CODE BEGIN CAN_TX_IRQn 0 */

  /* USER CODE END CAN_TX_IRQn 0 */
  HAL_CAN_IRQHandler(&hcan);
  /* USER CODE BEGIN CAN_TX_IRQn 1 */

  /* USER CODE END CAN_TX_IRQn 1 */
}

 

and it never gets there. Why might this be?

1 ACCEPTED SOLUTION

Accepted Solutions
Karl Yamashita
Principal

More than likely you didn't activate the notification

 

if (HAL_CAN_ActivateNotification(msg->hcan, CAN_IT_RX_FIFO0_MSG_PENDING | CAN_IT_TX_MAILBOX_EMPTY) != HAL_OK)
{
	Error_Handler();
}

 

 

If a reply has proven helpful, click on Accept as Solution so that it'll show at top of the post.
CAN Jammer an open source CAN bus hacking tool
CANableV3 Open Source

View solution in original post

1 REPLY 1
Karl Yamashita
Principal

More than likely you didn't activate the notification

 

if (HAL_CAN_ActivateNotification(msg->hcan, CAN_IT_RX_FIFO0_MSG_PENDING | CAN_IT_TX_MAILBOX_EMPTY) != HAL_OK)
{
	Error_Handler();
}

 

 

If a reply has proven helpful, click on Accept as Solution so that it'll show at top of the post.
CAN Jammer an open source CAN bus hacking tool
CANableV3 Open Source