<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>S32K中的主题 CAN over XCP</title>
    <link>https://community.nxp.com/t5/S32K/CAN-over-XCP/m-p/642411#M413</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;DIV style="color: #000000; background-color: #ffffff; font-size: small;"&gt;&lt;STRONG&gt;Unable to Run CAN and XCP together for longer duration,gives an Timeout Error after certain period of time, Independently both CAN and XCP works fine. Problem is mainly happening during CAN transmission and XCP request comes and it also tries for transmission.We are working on Evaluation Board S32K144.&lt;/STRONG&gt;&lt;/DIV&gt;&lt;DIV style="color: #000000; background-color: #ffffff; font-size: small;"&gt; &lt;/DIV&gt;&lt;DIV style="color: #000000; background-color: #ffffff; font-size: small;"&gt;Below are the two API's which we are using to send cyclic CAN messages and also for XCP transmission at the time of XCP request.&lt;/DIV&gt;&lt;DIV style="color: #000000; background-color: #ffffff; font-size: small;"&gt; &lt;/DIV&gt;&lt;DIV style="color: #000000; background-color: #ffffff;"&gt;&lt;SPAN style="font-family: Verdana, Arial, Helvetica, sans-serif;"&gt;FLEXCAN_DRV_ConfigTxMb(FSL_CAN, 10UL, &amp;amp;Tx_Info_Cfg, CANTXID);&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV style="color: #000000; background-color: #ffffff;"&gt;&lt;SPAN style="font-family: Verdana, Arial, Helvetica, sans-serif;"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV style="color: #000000; background-color: #ffffff;"&gt;&lt;SPAN style="font-family: Verdana, Arial, Helvetica, sans-serif;"&gt;FLEXCAN_DRV_Send(FSL_CAN, 10UL, &amp;amp;Tx_Info_Cfg, CANTXID, CANTxData[CANTXID].data);&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV style="color: #000000; background-color: #ffffff;"&gt;&lt;SPAN style="font-family: Verdana, Arial, Helvetica, sans-serif;"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV style="color: #000000; background-color: #ffffff;"&gt;&lt;SPAN style="font-family: Verdana, Arial, Helvetica, sans-serif;"&gt;Note: Message Buffer 10 is used for CAN cyclic transmission and 11 is used XCP transmission with ID 13.&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV style="color: #000000; background-color: #ffffff;"&gt; &lt;/DIV&gt;&lt;DIV style="color: #000000; background-color: #ffffff;"&gt;&lt;SPAN style="font-family: Verdana, Arial, Helvetica, sans-serif;"&gt;Since we have only one interrupt which is common for both TX and Rx and also we are using same API for CAN and XCP, We are unable to run both CAN and XCP together for longer duration.&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV style="color: #000000; background-color: #ffffff;"&gt;&lt;SPAN style="font-family: Verdana, Arial, Helvetica, sans-serif;"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV style="color: #000000; background-color: #ffffff;"&gt;&lt;SPAN style="font-family: Verdana, Arial, Helvetica, sans-serif;"&gt;Case1: If we are transmiting CAN message and we get an XCP request, In this situation if priority is given to XCP first and then for CAN, XCP never gives an timeout error but we are losing CAN messages for that particular period.&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV style="color: #000000; background-color: #ffffff;"&gt; &lt;/DIV&gt;&lt;DIV style="color: #000000; background-color: #ffffff;"&gt;Case2: If we are transmiting CAN message and we get an XCP request, In this situation if priority is given to CAN first and then for XCP, We will get all the CAN messages but XCP gives timeout error.&lt;/DIV&gt;&lt;DIV style="color: #000000; background-color: #ffffff;"&gt; &lt;/DIV&gt;&lt;DIV style="color: #000000; background-color: #ffffff;"&gt;Please find below the Interrupt Function where XCP command is called inside FIFO reception and XcpSendCallback is called inside Transmission Completion.&lt;/DIV&gt;&lt;DIV style="color: #000000; background-color: #ffffff;"&gt; &lt;/DIV&gt;&lt;DIV style="color: #000000; background-color: #ffffff;"&gt;/*FUNCTION**********************************************************************&lt;BR /&gt; *&lt;BR /&gt; * Function Name : FLEXCAN_DRV_IRQHandler&lt;BR /&gt; * Description : Interrupt handler for FLEXCAN.&lt;BR /&gt; * This handler read data from MB or FIFO, and then clear the interrupt flags.&lt;BR /&gt; * This is not a public API as it is called whenever an interrupt occurs.&lt;BR /&gt; *&lt;BR /&gt; *END**************************************************************************/&lt;BR /&gt;void FLEXCAN_DRV_IRQHandler(uint8_t instance)&lt;BR /&gt;{&lt;BR /&gt; volatile uint32_t flag_reg;&lt;BR /&gt; uint32_t temp;&lt;BR /&gt; uint32_t lau32_vXCPByte[2] = {0,0};&lt;BR /&gt; CAN_Type * base = g_flexcanBase[instance];&lt;BR /&gt; flexcan_state_t * state = g_flexcanStatePtr[instance];&lt;BR /&gt; uint8 lu8_viteration = 0u;&lt;BR /&gt; uint8 lau_vXCPdata[8] = {0u,0u,0u,0u,0u,0u,0u,0u};&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;// Disable FlexCAN interrupts.&lt;BR /&gt; INT_SYS_DisableIRQ(g_flexcanWakeUpIrqId[instance]);&lt;BR /&gt; INT_SYS_DisableIRQ(g_flexcanErrorIrqId[instance]);&lt;BR /&gt; INT_SYS_DisableIRQ(g_flexcanBusOffIrqId[instance]);&lt;BR /&gt; INT_SYS_DisableIRQ(g_flexcanOredMessageBufferIrqId[instance]);&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;/* Get the interrupts that are enabled and ready */&lt;BR /&gt; flag_reg = ((FLEXCAN_HAL_GetAllMsgBuffIntStatusFlag(base)) &amp;amp; CAN_IMASK1_BUF31TO0M_MASK) &amp;amp; (base-&amp;gt;IMASK1);&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;/* Check Tx/Rx interrupt flag and clear the interrupt */&lt;BR /&gt; if(flag_reg)&lt;BR /&gt; {&lt;BR /&gt; if ((flag_reg &amp;amp; 0x20) &amp;amp;&amp;amp; (BITBAND_ACCESS32(&amp;amp;(base-&amp;gt;MCR), CAN_MCR_RFEN_SHIFT)))&lt;BR /&gt; {&lt;BR /&gt; if (state-&amp;gt;fifo_message != NULL)&lt;BR /&gt; {&lt;BR /&gt; /* Get RX FIFO field values */&lt;BR /&gt; FLEXCAN_HAL_ReadRxFifo(base, state-&amp;gt;fifo_message);&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;/* Reception of XCP */&lt;BR /&gt; if(CAN_XCP_RX_ID == state-&amp;gt;fifo_message-&amp;gt;msgId)&lt;BR /&gt; {&lt;BR /&gt; for(lu8_viteration=0u;lu8_viteration&amp;lt;8;lu8_viteration++)&lt;BR /&gt; {&lt;BR /&gt; lau_vXCPdata[lu8_viteration] = state-&amp;gt;fifo_message-&amp;gt;data[FLEXCAN_SWAP_BYTES_IN_WORD_INDEX1(lu8_viteration)];&lt;BR /&gt; }&lt;/DIV&gt;&lt;DIV style="color: #000000; background-color: #ffffff;"&gt;&lt;BR /&gt; lau32_vXCPByte[0] = (uint32)(lau_vXCPdata[0]|(((lau_vXCPdata[1]&amp;lt;&amp;lt; 8u) &amp;amp; 0x0000FF00))|((lau_vXCPdata[2]&amp;lt;&amp;lt; 16u) &amp;amp; 0x00FF0000)|((lau_vXCPdata[3]&amp;lt;&amp;lt; 24u) &amp;amp; 0xFF000000));&lt;/DIV&gt;&lt;DIV style="color: #000000; background-color: #ffffff;"&gt;&lt;BR /&gt; lau32_vXCPByte[1] = (uint32)(lau_vXCPdata[4]|(((lau_vXCPdata[5]&amp;lt;&amp;lt; 8u) &amp;amp; 0x0000FF00))|((lau_vXCPdata[6]&amp;lt;&amp;lt; 16u) &amp;amp; 0x00FF0000)|((lau_vXCPdata[7]&amp;lt;&amp;lt; 24u) &amp;amp; 0xFF000000));&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;XcpCommand(&amp;amp;lau32_vXCPByte[0]);&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;else&lt;BR /&gt; {&lt;BR /&gt; ; /*do nothing*/&lt;BR /&gt; }&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;/* Complete receive data */&lt;BR /&gt; FLEXCAN_DRV_CompleteRxMessageFifoData(instance);&lt;BR /&gt; FLEXCAN_HAL_ClearMsgBuffIntStatusFlag(base, flag_reg);&lt;BR /&gt; }&lt;BR /&gt; }&lt;BR /&gt; else&lt;BR /&gt; {&lt;BR /&gt; /* Check mailbox completed reception */&lt;BR /&gt; temp = (1 &amp;lt;&amp;lt; state-&amp;gt;rx_mb_idx);&lt;BR /&gt; if ((temp &amp;amp; flag_reg) &amp;amp;&amp;amp; state-&amp;gt;isRxBusy)&lt;BR /&gt; {&lt;BR /&gt; /* Unlock RX message buffer and RX FIFO*/&lt;BR /&gt; FLEXCAN_HAL_LockRxMsgBuff(base, state-&amp;gt;rx_mb_idx);&lt;BR /&gt; /* Get RX MB field values*/&lt;BR /&gt; FLEXCAN_HAL_GetMsgBuff(base, state-&amp;gt;rx_mb_idx, state-&amp;gt;mb_message);&lt;BR /&gt; /* Unlock RX message buffer and RX FIFO*/&lt;BR /&gt; FLEXCAN_HAL_UnlockRxMsgBuff(base);&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;/* Complete receive data */&lt;BR /&gt; FLEXCAN_DRV_CompleteRxMessageBufferData(instance);&lt;BR /&gt; FLEXCAN_HAL_ClearMsgBuffIntStatusFlag(base, temp &amp;amp; flag_reg);&lt;BR /&gt; }&lt;BR /&gt; }&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;/* Check mailbox completed transmission */&lt;/DIV&gt;&lt;DIV style="color: #000000; background-color: #ffffff;"&gt;/*&amp;nbsp;XCPTRANSMISSION_COMPLETED &amp;nbsp;is a Macro with value &amp;nbsp;0x00000800u because the buffer used is 11 */&lt;BR /&gt; temp = (1 &amp;lt;&amp;lt; state-&amp;gt;tx_mb_idx);&lt;BR /&gt; if((XCPTRANSMISSION_COMPLETED == (temp &amp;amp; flag_reg)) &amp;amp;&amp;amp; (SET == (state-&amp;gt;isTxBusy)))&lt;BR /&gt; {&lt;BR /&gt; /* Complete transmit data */&lt;BR /&gt; FLEXCAN_DRV_CompleteSendData(instance);&lt;BR /&gt; FLEXCAN_HAL_ClearMsgBuffIntStatusFlag(base, temp &amp;amp; flag_reg);&lt;/DIV&gt;&lt;DIV style="color: #000000; background-color: #ffffff;"&gt; &lt;/DIV&gt;&lt;DIV style="color: #000000; background-color: #ffffff;"&gt;&lt;SPAN&gt;/* This callback function is for XCP. */&lt;/SPAN&gt;&lt;BR /&gt; XcpSendCallBack();&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;}&lt;BR /&gt; else&lt;BR /&gt; {&lt;BR /&gt; ; /*do nothing*/&lt;BR /&gt; }&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="background-color: #ffffff;"&gt;/* CYCLICCANTRANSMISSION_COMPLETED&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="background-color: #ffffff;"&gt;is a Macro with value 0x00000400u because the buffer used is 10 */&lt;/SPAN&gt;&lt;/P&gt;if((CYCLICCANTRANSMISSION_COMPLETED == (temp &amp;amp; flag_reg))&lt;SPAN&gt; &amp;amp;&amp;amp; (SET == (state-&amp;gt;isTxBusy)))&lt;/SPAN&gt;&lt;BR /&gt; {&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;/* Complete transmit data */&lt;BR /&gt; FLEXCAN_DRV_CompleteSendData(instance);&lt;BR /&gt; FLEXCAN_HAL_ClearMsgBuffIntStatusFlag(base, temp &amp;amp; flag_reg);&lt;/DIV&gt;&lt;DIV style="color: #000000; background-color: #ffffff;"&gt;&lt;BR /&gt; /* This callback function transmits the remaining ID's. */&lt;BR /&gt; CANTxCallBack();&lt;BR /&gt; }&lt;BR /&gt; else&lt;BR /&gt; {&lt;BR /&gt; ; /*do nothing*/&lt;BR /&gt; }&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;}&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;/* Acknowledge Error detected and bus is in passive state&lt;BR /&gt; * then reset the states || Bus off */&lt;BR /&gt; if(((base-&amp;gt;ESR1 &amp;amp; ACKERR) &amp;amp;&amp;amp; (base-&amp;gt;ESR1 &amp;amp; FLTCONF))&lt;BR /&gt; || (base-&amp;gt;ESR1 &amp;amp; FLTCONF1))&lt;BR /&gt; {&lt;BR /&gt; FLEXCAN_DRV_CompleteSendData(instance);&lt;BR /&gt; }&lt;BR /&gt; else&lt;BR /&gt; {&lt;BR /&gt; ; /*do nothing*/&lt;BR /&gt; }&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;/* Clear all other interrupts in ERRSTAT register (Error, Busoff, Wakeup) */&lt;BR /&gt; FLEXCAN_HAL_ClearErrIntStatusFlag(base);&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;// Enable FlexCAN interrupts.&lt;BR /&gt; INT_SYS_EnableIRQ(g_flexcanWakeUpIrqId[instance]);&lt;BR /&gt; INT_SYS_EnableIRQ(g_flexcanErrorIrqId[instance]);&lt;BR /&gt; INT_SYS_EnableIRQ(g_flexcanBusOffIrqId[instance]);&lt;BR /&gt; INT_SYS_EnableIRQ(g_flexcanOredMessageBufferIrqId[instance]);&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;return;&lt;BR /&gt;}&lt;/DIV&gt;&lt;DIV style="color: #000000; background-color: #ffffff;"&gt; &lt;/DIV&gt;&lt;DIV style="color: #000000; background-color: #ffffff;"&gt;Kindly help me in debugging this issue.&lt;/DIV&gt;&lt;DIV style="color: #000000; background-color: #ffffff;"&gt;Thanks,&lt;/DIV&gt;&lt;DIV style="color: #000000; background-color: #ffffff;"&gt;Nitin&lt;/DIV&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Tue, 18 Oct 2016 05:33:22 GMT</pubDate>
    <dc:creator>nitinverma</dc:creator>
    <dc:date>2016-10-18T05:33:22Z</dc:date>
    <item>
      <title>CAN over XCP</title>
      <link>https://community.nxp.com/t5/S32K/CAN-over-XCP/m-p/642411#M413</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;DIV style="color: #000000; background-color: #ffffff; font-size: small;"&gt;&lt;STRONG&gt;Unable to Run CAN and XCP together for longer duration,gives an Timeout Error after certain period of time, Independently both CAN and XCP works fine. Problem is mainly happening during CAN transmission and XCP request comes and it also tries for transmission.We are working on Evaluation Board S32K144.&lt;/STRONG&gt;&lt;/DIV&gt;&lt;DIV style="color: #000000; background-color: #ffffff; font-size: small;"&gt; &lt;/DIV&gt;&lt;DIV style="color: #000000; background-color: #ffffff; font-size: small;"&gt;Below are the two API's which we are using to send cyclic CAN messages and also for XCP transmission at the time of XCP request.&lt;/DIV&gt;&lt;DIV style="color: #000000; background-color: #ffffff; font-size: small;"&gt; &lt;/DIV&gt;&lt;DIV style="color: #000000; background-color: #ffffff;"&gt;&lt;SPAN style="font-family: Verdana, Arial, Helvetica, sans-serif;"&gt;FLEXCAN_DRV_ConfigTxMb(FSL_CAN, 10UL, &amp;amp;Tx_Info_Cfg, CANTXID);&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV style="color: #000000; background-color: #ffffff;"&gt;&lt;SPAN style="font-family: Verdana, Arial, Helvetica, sans-serif;"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV style="color: #000000; background-color: #ffffff;"&gt;&lt;SPAN style="font-family: Verdana, Arial, Helvetica, sans-serif;"&gt;FLEXCAN_DRV_Send(FSL_CAN, 10UL, &amp;amp;Tx_Info_Cfg, CANTXID, CANTxData[CANTXID].data);&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV style="color: #000000; background-color: #ffffff;"&gt;&lt;SPAN style="font-family: Verdana, Arial, Helvetica, sans-serif;"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV style="color: #000000; background-color: #ffffff;"&gt;&lt;SPAN style="font-family: Verdana, Arial, Helvetica, sans-serif;"&gt;Note: Message Buffer 10 is used for CAN cyclic transmission and 11 is used XCP transmission with ID 13.&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV style="color: #000000; background-color: #ffffff;"&gt; &lt;/DIV&gt;&lt;DIV style="color: #000000; background-color: #ffffff;"&gt;&lt;SPAN style="font-family: Verdana, Arial, Helvetica, sans-serif;"&gt;Since we have only one interrupt which is common for both TX and Rx and also we are using same API for CAN and XCP, We are unable to run both CAN and XCP together for longer duration.&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV style="color: #000000; background-color: #ffffff;"&gt;&lt;SPAN style="font-family: Verdana, Arial, Helvetica, sans-serif;"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV style="color: #000000; background-color: #ffffff;"&gt;&lt;SPAN style="font-family: Verdana, Arial, Helvetica, sans-serif;"&gt;Case1: If we are transmiting CAN message and we get an XCP request, In this situation if priority is given to XCP first and then for CAN, XCP never gives an timeout error but we are losing CAN messages for that particular period.&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV style="color: #000000; background-color: #ffffff;"&gt; &lt;/DIV&gt;&lt;DIV style="color: #000000; background-color: #ffffff;"&gt;Case2: If we are transmiting CAN message and we get an XCP request, In this situation if priority is given to CAN first and then for XCP, We will get all the CAN messages but XCP gives timeout error.&lt;/DIV&gt;&lt;DIV style="color: #000000; background-color: #ffffff;"&gt; &lt;/DIV&gt;&lt;DIV style="color: #000000; background-color: #ffffff;"&gt;Please find below the Interrupt Function where XCP command is called inside FIFO reception and XcpSendCallback is called inside Transmission Completion.&lt;/DIV&gt;&lt;DIV style="color: #000000; background-color: #ffffff;"&gt; &lt;/DIV&gt;&lt;DIV style="color: #000000; background-color: #ffffff;"&gt;/*FUNCTION**********************************************************************&lt;BR /&gt; *&lt;BR /&gt; * Function Name : FLEXCAN_DRV_IRQHandler&lt;BR /&gt; * Description : Interrupt handler for FLEXCAN.&lt;BR /&gt; * This handler read data from MB or FIFO, and then clear the interrupt flags.&lt;BR /&gt; * This is not a public API as it is called whenever an interrupt occurs.&lt;BR /&gt; *&lt;BR /&gt; *END**************************************************************************/&lt;BR /&gt;void FLEXCAN_DRV_IRQHandler(uint8_t instance)&lt;BR /&gt;{&lt;BR /&gt; volatile uint32_t flag_reg;&lt;BR /&gt; uint32_t temp;&lt;BR /&gt; uint32_t lau32_vXCPByte[2] = {0,0};&lt;BR /&gt; CAN_Type * base = g_flexcanBase[instance];&lt;BR /&gt; flexcan_state_t * state = g_flexcanStatePtr[instance];&lt;BR /&gt; uint8 lu8_viteration = 0u;&lt;BR /&gt; uint8 lau_vXCPdata[8] = {0u,0u,0u,0u,0u,0u,0u,0u};&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;// Disable FlexCAN interrupts.&lt;BR /&gt; INT_SYS_DisableIRQ(g_flexcanWakeUpIrqId[instance]);&lt;BR /&gt; INT_SYS_DisableIRQ(g_flexcanErrorIrqId[instance]);&lt;BR /&gt; INT_SYS_DisableIRQ(g_flexcanBusOffIrqId[instance]);&lt;BR /&gt; INT_SYS_DisableIRQ(g_flexcanOredMessageBufferIrqId[instance]);&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;/* Get the interrupts that are enabled and ready */&lt;BR /&gt; flag_reg = ((FLEXCAN_HAL_GetAllMsgBuffIntStatusFlag(base)) &amp;amp; CAN_IMASK1_BUF31TO0M_MASK) &amp;amp; (base-&amp;gt;IMASK1);&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;/* Check Tx/Rx interrupt flag and clear the interrupt */&lt;BR /&gt; if(flag_reg)&lt;BR /&gt; {&lt;BR /&gt; if ((flag_reg &amp;amp; 0x20) &amp;amp;&amp;amp; (BITBAND_ACCESS32(&amp;amp;(base-&amp;gt;MCR), CAN_MCR_RFEN_SHIFT)))&lt;BR /&gt; {&lt;BR /&gt; if (state-&amp;gt;fifo_message != NULL)&lt;BR /&gt; {&lt;BR /&gt; /* Get RX FIFO field values */&lt;BR /&gt; FLEXCAN_HAL_ReadRxFifo(base, state-&amp;gt;fifo_message);&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;/* Reception of XCP */&lt;BR /&gt; if(CAN_XCP_RX_ID == state-&amp;gt;fifo_message-&amp;gt;msgId)&lt;BR /&gt; {&lt;BR /&gt; for(lu8_viteration=0u;lu8_viteration&amp;lt;8;lu8_viteration++)&lt;BR /&gt; {&lt;BR /&gt; lau_vXCPdata[lu8_viteration] = state-&amp;gt;fifo_message-&amp;gt;data[FLEXCAN_SWAP_BYTES_IN_WORD_INDEX1(lu8_viteration)];&lt;BR /&gt; }&lt;/DIV&gt;&lt;DIV style="color: #000000; background-color: #ffffff;"&gt;&lt;BR /&gt; lau32_vXCPByte[0] = (uint32)(lau_vXCPdata[0]|(((lau_vXCPdata[1]&amp;lt;&amp;lt; 8u) &amp;amp; 0x0000FF00))|((lau_vXCPdata[2]&amp;lt;&amp;lt; 16u) &amp;amp; 0x00FF0000)|((lau_vXCPdata[3]&amp;lt;&amp;lt; 24u) &amp;amp; 0xFF000000));&lt;/DIV&gt;&lt;DIV style="color: #000000; background-color: #ffffff;"&gt;&lt;BR /&gt; lau32_vXCPByte[1] = (uint32)(lau_vXCPdata[4]|(((lau_vXCPdata[5]&amp;lt;&amp;lt; 8u) &amp;amp; 0x0000FF00))|((lau_vXCPdata[6]&amp;lt;&amp;lt; 16u) &amp;amp; 0x00FF0000)|((lau_vXCPdata[7]&amp;lt;&amp;lt; 24u) &amp;amp; 0xFF000000));&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;XcpCommand(&amp;amp;lau32_vXCPByte[0]);&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;else&lt;BR /&gt; {&lt;BR /&gt; ; /*do nothing*/&lt;BR /&gt; }&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;/* Complete receive data */&lt;BR /&gt; FLEXCAN_DRV_CompleteRxMessageFifoData(instance);&lt;BR /&gt; FLEXCAN_HAL_ClearMsgBuffIntStatusFlag(base, flag_reg);&lt;BR /&gt; }&lt;BR /&gt; }&lt;BR /&gt; else&lt;BR /&gt; {&lt;BR /&gt; /* Check mailbox completed reception */&lt;BR /&gt; temp = (1 &amp;lt;&amp;lt; state-&amp;gt;rx_mb_idx);&lt;BR /&gt; if ((temp &amp;amp; flag_reg) &amp;amp;&amp;amp; state-&amp;gt;isRxBusy)&lt;BR /&gt; {&lt;BR /&gt; /* Unlock RX message buffer and RX FIFO*/&lt;BR /&gt; FLEXCAN_HAL_LockRxMsgBuff(base, state-&amp;gt;rx_mb_idx);&lt;BR /&gt; /* Get RX MB field values*/&lt;BR /&gt; FLEXCAN_HAL_GetMsgBuff(base, state-&amp;gt;rx_mb_idx, state-&amp;gt;mb_message);&lt;BR /&gt; /* Unlock RX message buffer and RX FIFO*/&lt;BR /&gt; FLEXCAN_HAL_UnlockRxMsgBuff(base);&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;/* Complete receive data */&lt;BR /&gt; FLEXCAN_DRV_CompleteRxMessageBufferData(instance);&lt;BR /&gt; FLEXCAN_HAL_ClearMsgBuffIntStatusFlag(base, temp &amp;amp; flag_reg);&lt;BR /&gt; }&lt;BR /&gt; }&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;/* Check mailbox completed transmission */&lt;/DIV&gt;&lt;DIV style="color: #000000; background-color: #ffffff;"&gt;/*&amp;nbsp;XCPTRANSMISSION_COMPLETED &amp;nbsp;is a Macro with value &amp;nbsp;0x00000800u because the buffer used is 11 */&lt;BR /&gt; temp = (1 &amp;lt;&amp;lt; state-&amp;gt;tx_mb_idx);&lt;BR /&gt; if((XCPTRANSMISSION_COMPLETED == (temp &amp;amp; flag_reg)) &amp;amp;&amp;amp; (SET == (state-&amp;gt;isTxBusy)))&lt;BR /&gt; {&lt;BR /&gt; /* Complete transmit data */&lt;BR /&gt; FLEXCAN_DRV_CompleteSendData(instance);&lt;BR /&gt; FLEXCAN_HAL_ClearMsgBuffIntStatusFlag(base, temp &amp;amp; flag_reg);&lt;/DIV&gt;&lt;DIV style="color: #000000; background-color: #ffffff;"&gt; &lt;/DIV&gt;&lt;DIV style="color: #000000; background-color: #ffffff;"&gt;&lt;SPAN&gt;/* This callback function is for XCP. */&lt;/SPAN&gt;&lt;BR /&gt; XcpSendCallBack();&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;}&lt;BR /&gt; else&lt;BR /&gt; {&lt;BR /&gt; ; /*do nothing*/&lt;BR /&gt; }&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="background-color: #ffffff;"&gt;/* CYCLICCANTRANSMISSION_COMPLETED&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="background-color: #ffffff;"&gt;is a Macro with value 0x00000400u because the buffer used is 10 */&lt;/SPAN&gt;&lt;/P&gt;if((CYCLICCANTRANSMISSION_COMPLETED == (temp &amp;amp; flag_reg))&lt;SPAN&gt; &amp;amp;&amp;amp; (SET == (state-&amp;gt;isTxBusy)))&lt;/SPAN&gt;&lt;BR /&gt; {&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;/* Complete transmit data */&lt;BR /&gt; FLEXCAN_DRV_CompleteSendData(instance);&lt;BR /&gt; FLEXCAN_HAL_ClearMsgBuffIntStatusFlag(base, temp &amp;amp; flag_reg);&lt;/DIV&gt;&lt;DIV style="color: #000000; background-color: #ffffff;"&gt;&lt;BR /&gt; /* This callback function transmits the remaining ID's. */&lt;BR /&gt; CANTxCallBack();&lt;BR /&gt; }&lt;BR /&gt; else&lt;BR /&gt; {&lt;BR /&gt; ; /*do nothing*/&lt;BR /&gt; }&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;}&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;/* Acknowledge Error detected and bus is in passive state&lt;BR /&gt; * then reset the states || Bus off */&lt;BR /&gt; if(((base-&amp;gt;ESR1 &amp;amp; ACKERR) &amp;amp;&amp;amp; (base-&amp;gt;ESR1 &amp;amp; FLTCONF))&lt;BR /&gt; || (base-&amp;gt;ESR1 &amp;amp; FLTCONF1))&lt;BR /&gt; {&lt;BR /&gt; FLEXCAN_DRV_CompleteSendData(instance);&lt;BR /&gt; }&lt;BR /&gt; else&lt;BR /&gt; {&lt;BR /&gt; ; /*do nothing*/&lt;BR /&gt; }&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;/* Clear all other interrupts in ERRSTAT register (Error, Busoff, Wakeup) */&lt;BR /&gt; FLEXCAN_HAL_ClearErrIntStatusFlag(base);&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;// Enable FlexCAN interrupts.&lt;BR /&gt; INT_SYS_EnableIRQ(g_flexcanWakeUpIrqId[instance]);&lt;BR /&gt; INT_SYS_EnableIRQ(g_flexcanErrorIrqId[instance]);&lt;BR /&gt; INT_SYS_EnableIRQ(g_flexcanBusOffIrqId[instance]);&lt;BR /&gt; INT_SYS_EnableIRQ(g_flexcanOredMessageBufferIrqId[instance]);&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;return;&lt;BR /&gt;}&lt;/DIV&gt;&lt;DIV style="color: #000000; background-color: #ffffff;"&gt; &lt;/DIV&gt;&lt;DIV style="color: #000000; background-color: #ffffff;"&gt;Kindly help me in debugging this issue.&lt;/DIV&gt;&lt;DIV style="color: #000000; background-color: #ffffff;"&gt;Thanks,&lt;/DIV&gt;&lt;DIV style="color: #000000; background-color: #ffffff;"&gt;Nitin&lt;/DIV&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 18 Oct 2016 05:33:22 GMT</pubDate>
      <guid>https://community.nxp.com/t5/S32K/CAN-over-XCP/m-p/642411#M413</guid>
      <dc:creator>nitinverma</dc:creator>
      <dc:date>2016-10-18T05:33:22Z</dc:date>
    </item>
  </channel>
</rss>

