cancel
Showing results for 
Search instead for 
Did you mean: 

CAN Bus DATA IS NOT GETTING RECEIVE NOT BY POLLING NOR Rx NOTIFICATION INTERRUPT ITS STUCKs IN TO "HAL_CAN_GetRxMessage(&hcan1,CAN_RX_FIFO0,&Rx_Header,Rx_Data);" if this receive API we are using polling mode instead of interrupt one

Ravi_STM32
Associate II

As per CAN new API i have implemented as followed sequence:-

MX_CAN1_Init();

CAN_filterConfig();

if (HAL_CAN_Start(&hcan1) != HAL_OK)

{

Error_Handler();

}

if (HAL_CAN_ActivateNotification(&hcan1, CAN_IT_RX_FIFO0_FULL |CAN_IT_TX_MAILBOX_EMPTY) != HAL_OK)

{

Error_Handler();

}

void HAL_CAN_RxFifo0FullCallback(CAN_HandleTypeDef *hcan)

{

HAL_CAN_GetRxMessage(&hcan1,CAN_RX_FIFO0,&Rx_Header,Rx_Data);

}

void HAL_CAN_TxMailbox2CompleteCallback(CAN_HandleTypeDef *hcan)

{

}

static void MX_CAN1_Init(void)

{

/* USER CODE BEGIN CAN1_Init 0 */

/* USER CODE END CAN1_Init 0 */

/* USER CODE BEGIN CAN1_Init 1 */

/* USER CODE END CAN1_Init 1 */

hcan1.Instance = CAN1;

hcan1.Init.Prescaler = 4;

hcan1.Init.Mode = CAN_MODE_NORMAL;

hcan1.Init.SyncJumpWidth = CAN_SJW_1TQ;

hcan1.Init.TimeSeg1 = CAN_BS1_12TQ;

hcan1.Init.TimeSeg2 = CAN_BS2_2TQ;

hcan1.Init.TimeTriggeredMode = DISABLE;

hcan1.Init.AutoBusOff = ENABLE;

hcan1.Init.AutoWakeUp = DISABLE;

hcan1.Init.AutoRetransmission = ENABLE;

hcan1.Init.ReceiveFifoLocked = DISABLE;

hcan1.Init.TransmitFifoPriority = DISABLE;

if (HAL_CAN_Init(&hcan1) != HAL_OK)

{

Error_Handler();

}

Pls look in to it, if any mistake is there...

0 REPLIES 0