Hello,
I just started to using TC27x microcontroller, and I need some help. I try to setup CAN communication and I don't understand how to setup CAN Rx interrupt via iLLD library. I didn't find anything in documentations or application notes (from myinfineon for Aurix), but from search on forum I found
that I need to configure:
For CAN itself:
Code:
canConfig.nodePointer[IfxMultican_SrcId_0].priority = CAN2_RX_INTERRUPT_PRIORITY;
canConfig.nodePointer[IfxMultican_SrcId_0].typeOfService =IfxSrc_Tos_cpu0;
For CAN node:
Code:
canNodeConfig.transferInterrupt.enabled = TRUE;
canNodeConfig.transferInterrupt.srcId = IfxMultican_SrcId_0;
For Rx message Obj:
Code:
canMsgObjConfig.rxInterrupt.enabled = TRUE;
canMsgObjConfig.rxInterrupt.srcId = IfxMultican_SrcId_0;
And my handler code:
Code:
IFX_INTERRUPT(ISR_can2_rx, 0, CAN2_RX_INTERRUPT_PRIORITY);
void ISR_can2_rx(void)
{
//IfxCpu_enableInterrupts();
IfxMultican_Message msg1;
App_Multican* p_g_Multican = GetAppCanDataObj();
IfxMultican_Message_init(&msg1, 0xdead, 0xdeadbeef, 0xdeadbeef, IfxMultican_DataLengthCode_8); /* start with invalid values */
IfxMultican_Status readStatus = IfxMultican_Can_MsgObj_readMessage(&(p_g_Multican->drivers.canRxMsgObj), &msg1);
if ( readStatus & IfxMultican_Status_newData)
{
// handle new message here in msg1.data[]
}
}
Maybe I have missed something? I can transmit CAN messages, so I assume that CAN and CAN node is initialized correctly (as far as Tx part)
Edit:
Handler is not triggered.
Bookmarks