<?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>topic Using FLEXCAN_TransferCreateHandle to create two callback functions in Kinetis Microcontrollers</title>
    <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/Using-FLEXCAN-TransferCreateHandle-to-create-two-callback/m-p/1372184#M61869</link>
    <description>&lt;P&gt;Hello all,&lt;/P&gt;&lt;P&gt;I am using the Kinetis MKE18F512 processor and trying to setup CAN0 and CAN1 callback functions. All my initialization code is based off the TWRKE18F “flexcan_loopback_transfer” example code. Everything else works with my code, transmit, ID filters but only one of the callback functions is working. Using the example code, inside my CAN0 initialization I use:&lt;/P&gt;&lt;P&gt;FLEXCAN_TransferCreateHandle(EXAMPLE_CAN0, &amp;amp;flexcanHandle, flexcan_callbackCAN0, NULL);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Inside my CAN1 initialization I use:&lt;/P&gt;&lt;P&gt;FLEXCAN_TransferCreateHandle(EXAMPLE_CAN1, &amp;amp;flexcanHandle, flexcan_callbackCAN1, NULL);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;The issue is that only one of the callbacks will work, which ever one of the “TransferCreateHandle” is executed last works. It seems that just changing the base (CAN0 or CAN1) is not enough. Pretty sure I need to do something else with the flexcanhandle but I’m not sure what. Does anyone have examples of setting up two Flexcan callback functions?&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Here are both of my initialization routines:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;void&lt;/STRONG&gt; &lt;STRONG&gt;InitCAN0&lt;/STRONG&gt;()&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FLEXCAN_GetDefaultConfig250k(&amp;amp;flexcanConfig);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* &lt;U&gt;Init&lt;/U&gt; FlexCAN module. */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; flexcanConfig.clksrc=&lt;EM&gt;kFLEXCAN_ClkSrcPeri&lt;/EM&gt;;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FLEXCAN_Init(EXAMPLE_CAN0, &amp;amp;flexcanConfig, EXAMPLE_CAN0_CLK_FREQ);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Create FlexCAN handle structure and set call back function. */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FLEXCAN_TransferCreateHandle(EXAMPLE_CAN0, &amp;amp;flexcanHandle, flexcan_callbackCAN0, NULL);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; /* Setup &lt;U&gt;Rx&lt;/U&gt; Message Buffer. */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mbConfig.format = &lt;EM&gt;kFLEXCAN_FrameFormatExtend&lt;/EM&gt;;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mbConfig.type&amp;nbsp;&amp;nbsp; = &lt;EM&gt;kFLEXCAN_FrameTypeData&lt;/EM&gt;;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mbConfig.id&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = FLEXCAN_ID_EXT(ETC2_PGN);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //This is where you setup the hardware mailbox&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FLEXCAN_SetRxMbConfig(EXAMPLE_CAN0, RX_MESSAGE_BUFFER_NUM, &amp;amp;mbConfig, true);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Start receive data through &lt;U&gt;Rx&lt;/U&gt; Message Buffer. */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; rxXfer.mbIdx = RX_MESSAGE_BUFFER_NUM;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; rxXfer.frame = &amp;amp;frame;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FLEXCAN_TransferReceiveNonBlocking(EXAMPLE_CAN0, &amp;amp;flexcanHandle, &amp;amp;rxXfer);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; //Setup second MB&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Setup &lt;U&gt;Rx&lt;/U&gt; Message Buffer. */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mbConfig.format = &lt;EM&gt;kFLEXCAN_FrameFormatExtend&lt;/EM&gt;;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mbConfig.type&amp;nbsp;&amp;nbsp; = &lt;EM&gt;kFLEXCAN_FrameTypeData&lt;/EM&gt;;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mbConfig.id&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = FLEXCAN_ID_EXT(TC1_PGN);&amp;nbsp;&amp;nbsp;&amp;nbsp; //This is where you setup the hardware mailbox&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FLEXCAN_SetRxMbConfig(EXAMPLE_CAN0, RX_MESSAGE_BUFFER_NUM2, &amp;amp;mbConfig, true);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Start receive data through &lt;U&gt;Rx&lt;/U&gt; Message Buffer. */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; rxXfer.mbIdx = RX_MESSAGE_BUFFER_NUM2;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; rxXfer.frame = &amp;amp;frame;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FLEXCAN_TransferReceiveNonBlocking(EXAMPLE_CAN0, &amp;amp;flexcanHandle, &amp;amp;rxXfer);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Setup &lt;U&gt;Tx&lt;/U&gt; Message Buffer. */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FLEXCAN_SetTxMbConfig(EXAMPLE_CAN0, TX_MESSAGE_BUFFER_NUM, true);&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;void&lt;/STRONG&gt; &lt;STRONG&gt;InitCAN1&lt;/STRONG&gt;()&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; FLEXCAN_GetDefaultConfig250k(&amp;amp;flexcanConfig);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* &lt;U&gt;Init&lt;/U&gt; FlexCAN module. */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; flexcanConfig.clksrc=&lt;EM&gt;kFLEXCAN_ClkSrcPeri&lt;/EM&gt;;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FLEXCAN_Init(EXAMPLE_CAN1, &amp;amp;flexcanConfig, EXAMPLE_CAN1_CLK_FREQ);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Create FlexCAN handle structure and set call back function. */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; FLEXCAN_TransferCreateHandle(EXAMPLE_CAN1, &amp;amp;flexcanHandle, flexcan_callbackCAN1, NULL);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Setup &lt;U&gt;Rx&lt;/U&gt; Message Buffer. */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; mbConfig.format = &lt;EM&gt;kFLEXCAN_FrameFormatExtend&lt;/EM&gt;;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; mbConfig.type&amp;nbsp;&amp;nbsp; = &lt;EM&gt;kFLEXCAN_FrameTypeData&lt;/EM&gt;;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; mbConfig.id&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = FLEXCAN_ID_EXT(TC1_PGN);&amp;nbsp;&amp;nbsp;&amp;nbsp; //This is where you setup the hardware mailbox&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; FLEXCAN_SetRxMbConfig(EXAMPLE_CAN1, RX_MESSAGE_BUFFER_NUM3, &amp;amp;mbConfig, true);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Start receive data through &lt;U&gt;Rx&lt;/U&gt; Message Buffer. */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; rxXfer.mbIdx = RX_MESSAGE_BUFFER_NUM3;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; rxXfer.frame = &amp;amp;frame;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FLEXCAN_TransferReceiveNonBlocking(EXAMPLE_CAN1, &amp;amp;flexcanHandle, &amp;amp;rxXfer);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;/* Setup &lt;U&gt;Tx&lt;/U&gt; Message Buffer. */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FLEXCAN_SetTxMbConfig(EXAMPLE_CAN1, TX_MESSAGE_BUFFER_NUM2, true);&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
    <pubDate>Tue, 16 Nov 2021 19:31:01 GMT</pubDate>
    <dc:creator>CMH1</dc:creator>
    <dc:date>2021-11-16T19:31:01Z</dc:date>
    <item>
      <title>Using FLEXCAN_TransferCreateHandle to create two callback functions</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/Using-FLEXCAN-TransferCreateHandle-to-create-two-callback/m-p/1372184#M61869</link>
      <description>&lt;P&gt;Hello all,&lt;/P&gt;&lt;P&gt;I am using the Kinetis MKE18F512 processor and trying to setup CAN0 and CAN1 callback functions. All my initialization code is based off the TWRKE18F “flexcan_loopback_transfer” example code. Everything else works with my code, transmit, ID filters but only one of the callback functions is working. Using the example code, inside my CAN0 initialization I use:&lt;/P&gt;&lt;P&gt;FLEXCAN_TransferCreateHandle(EXAMPLE_CAN0, &amp;amp;flexcanHandle, flexcan_callbackCAN0, NULL);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Inside my CAN1 initialization I use:&lt;/P&gt;&lt;P&gt;FLEXCAN_TransferCreateHandle(EXAMPLE_CAN1, &amp;amp;flexcanHandle, flexcan_callbackCAN1, NULL);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;The issue is that only one of the callbacks will work, which ever one of the “TransferCreateHandle” is executed last works. It seems that just changing the base (CAN0 or CAN1) is not enough. Pretty sure I need to do something else with the flexcanhandle but I’m not sure what. Does anyone have examples of setting up two Flexcan callback functions?&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Here are both of my initialization routines:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;void&lt;/STRONG&gt; &lt;STRONG&gt;InitCAN0&lt;/STRONG&gt;()&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FLEXCAN_GetDefaultConfig250k(&amp;amp;flexcanConfig);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* &lt;U&gt;Init&lt;/U&gt; FlexCAN module. */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; flexcanConfig.clksrc=&lt;EM&gt;kFLEXCAN_ClkSrcPeri&lt;/EM&gt;;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FLEXCAN_Init(EXAMPLE_CAN0, &amp;amp;flexcanConfig, EXAMPLE_CAN0_CLK_FREQ);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Create FlexCAN handle structure and set call back function. */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FLEXCAN_TransferCreateHandle(EXAMPLE_CAN0, &amp;amp;flexcanHandle, flexcan_callbackCAN0, NULL);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; /* Setup &lt;U&gt;Rx&lt;/U&gt; Message Buffer. */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mbConfig.format = &lt;EM&gt;kFLEXCAN_FrameFormatExtend&lt;/EM&gt;;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mbConfig.type&amp;nbsp;&amp;nbsp; = &lt;EM&gt;kFLEXCAN_FrameTypeData&lt;/EM&gt;;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mbConfig.id&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = FLEXCAN_ID_EXT(ETC2_PGN);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //This is where you setup the hardware mailbox&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FLEXCAN_SetRxMbConfig(EXAMPLE_CAN0, RX_MESSAGE_BUFFER_NUM, &amp;amp;mbConfig, true);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Start receive data through &lt;U&gt;Rx&lt;/U&gt; Message Buffer. */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; rxXfer.mbIdx = RX_MESSAGE_BUFFER_NUM;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; rxXfer.frame = &amp;amp;frame;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FLEXCAN_TransferReceiveNonBlocking(EXAMPLE_CAN0, &amp;amp;flexcanHandle, &amp;amp;rxXfer);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; //Setup second MB&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Setup &lt;U&gt;Rx&lt;/U&gt; Message Buffer. */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mbConfig.format = &lt;EM&gt;kFLEXCAN_FrameFormatExtend&lt;/EM&gt;;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mbConfig.type&amp;nbsp;&amp;nbsp; = &lt;EM&gt;kFLEXCAN_FrameTypeData&lt;/EM&gt;;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mbConfig.id&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = FLEXCAN_ID_EXT(TC1_PGN);&amp;nbsp;&amp;nbsp;&amp;nbsp; //This is where you setup the hardware mailbox&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FLEXCAN_SetRxMbConfig(EXAMPLE_CAN0, RX_MESSAGE_BUFFER_NUM2, &amp;amp;mbConfig, true);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Start receive data through &lt;U&gt;Rx&lt;/U&gt; Message Buffer. */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; rxXfer.mbIdx = RX_MESSAGE_BUFFER_NUM2;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; rxXfer.frame = &amp;amp;frame;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FLEXCAN_TransferReceiveNonBlocking(EXAMPLE_CAN0, &amp;amp;flexcanHandle, &amp;amp;rxXfer);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Setup &lt;U&gt;Tx&lt;/U&gt; Message Buffer. */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FLEXCAN_SetTxMbConfig(EXAMPLE_CAN0, TX_MESSAGE_BUFFER_NUM, true);&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;void&lt;/STRONG&gt; &lt;STRONG&gt;InitCAN1&lt;/STRONG&gt;()&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; FLEXCAN_GetDefaultConfig250k(&amp;amp;flexcanConfig);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* &lt;U&gt;Init&lt;/U&gt; FlexCAN module. */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; flexcanConfig.clksrc=&lt;EM&gt;kFLEXCAN_ClkSrcPeri&lt;/EM&gt;;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FLEXCAN_Init(EXAMPLE_CAN1, &amp;amp;flexcanConfig, EXAMPLE_CAN1_CLK_FREQ);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Create FlexCAN handle structure and set call back function. */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; FLEXCAN_TransferCreateHandle(EXAMPLE_CAN1, &amp;amp;flexcanHandle, flexcan_callbackCAN1, NULL);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Setup &lt;U&gt;Rx&lt;/U&gt; Message Buffer. */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; mbConfig.format = &lt;EM&gt;kFLEXCAN_FrameFormatExtend&lt;/EM&gt;;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; mbConfig.type&amp;nbsp;&amp;nbsp; = &lt;EM&gt;kFLEXCAN_FrameTypeData&lt;/EM&gt;;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; mbConfig.id&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = FLEXCAN_ID_EXT(TC1_PGN);&amp;nbsp;&amp;nbsp;&amp;nbsp; //This is where you setup the hardware mailbox&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; FLEXCAN_SetRxMbConfig(EXAMPLE_CAN1, RX_MESSAGE_BUFFER_NUM3, &amp;amp;mbConfig, true);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Start receive data through &lt;U&gt;Rx&lt;/U&gt; Message Buffer. */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; rxXfer.mbIdx = RX_MESSAGE_BUFFER_NUM3;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; rxXfer.frame = &amp;amp;frame;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FLEXCAN_TransferReceiveNonBlocking(EXAMPLE_CAN1, &amp;amp;flexcanHandle, &amp;amp;rxXfer);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;/* Setup &lt;U&gt;Tx&lt;/U&gt; Message Buffer. */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FLEXCAN_SetTxMbConfig(EXAMPLE_CAN1, TX_MESSAGE_BUFFER_NUM2, true);&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Tue, 16 Nov 2021 19:31:01 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/Using-FLEXCAN-TransferCreateHandle-to-create-two-callback/m-p/1372184#M61869</guid>
      <dc:creator>CMH1</dc:creator>
      <dc:date>2021-11-16T19:31:01Z</dc:date>
    </item>
    <item>
      <title>Re: Using FLEXCAN_TransferCreateHandle to create two callback functions</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/Using-FLEXCAN-TransferCreateHandle-to-create-two-callback/m-p/1372217#M61871</link>
      <description>&lt;P&gt;Nevermind, I found the problem.&lt;/P&gt;&lt;P&gt;Not only do you need to create the handle, you also have to tell “FLEXCAN_TransferCreateHandle” what handle to use, you also need to tell “FLEXCAN_TransferReceiveNonBlocking” to send the interrupt to the same handle. Whoops.&lt;/P&gt;&lt;P&gt;The code for my CAN1 initilization now looks like this where &amp;nbsp;“FLEXCAN_TransferCreateHandle” and “FLEXCAN_TransferReceiveNonBlocking” are both using flexcanHandle&lt;STRONG&gt;2&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;nbsp;&lt;/STRONG&gt;&lt;/P&gt;&lt;LI-CODE lang="markup"&gt;void InitCAN1()
{
    FLEXCAN_GetDefaultConfig250k(&amp;amp;flexcanConfig);
     /* Init FlexCAN module. */
     flexcanConfig.clksrc=kFLEXCAN_ClkSrcPeri;
     FLEXCAN_Init(EXAMPLE_CAN1, &amp;amp;flexcanConfig, EXAMPLE_CAN1_CLK_FREQ);

     /* Create FlexCAN handle structure and set call back function. */
    FLEXCAN_TransferCreateHandle(EXAMPLE_CAN1, &amp;amp;flexcanHandle2, flexcan_callback2, NULL);


     /* Setup Rx Message Buffer. */
    mbConfig.format = kFLEXCAN_FrameFormatExtend;
    mbConfig.type   = kFLEXCAN_FrameTypeData;
    mbConfig.id     = FLEXCAN_ID_EXT(TC1_PGN);    //This is where you setup the hardware mailbox

    FLEXCAN_SetRxMbConfig(EXAMPLE_CAN1, RX_MESSAGE_BUFFER_NUM3, &amp;amp;mbConfig, true);

    /* Start receive data through Rx Message Buffer. */
     rxXfer.mbIdx = RX_MESSAGE_BUFFER_NUM3;
     rxXfer.frame = &amp;amp;frame;
     FLEXCAN_TransferReceiveNonBlocking(EXAMPLE_CAN1, &amp;amp;flexcanHandle2, &amp;amp;rxXfer);


 /* Setup Tx Message Buffer. */

     FLEXCAN_SetTxMbConfig(EXAMPLE_CAN1, TX_MESSAGE_BUFFER_NUM2, true);

}&lt;/LI-CODE&gt;</description>
      <pubDate>Tue, 16 Nov 2021 21:43:18 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/Using-FLEXCAN-TransferCreateHandle-to-create-two-callback/m-p/1372217#M61871</guid>
      <dc:creator>CMH1</dc:creator>
      <dc:date>2021-11-16T21:43:18Z</dc:date>
    </item>
  </channel>
</rss>

