<?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 Difference between FLEXCAN_DRV_ConfigRxMb and FLEXCAN_DRV_ConfigRxFifo in Kinetis Microcontrollers</title>
    <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/Difference-between-FLEXCAN-DRV-ConfigRxMb-and-FLEXCAN-DRV/m-p/1048472#M56912</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; I have some doubts about the FlexCAN function&amp;nbsp;FLEXCAN_DRV_ConfigRxMb and&amp;nbsp;FLEXCAN_DRVConfig Rx Fifo.&amp;nbsp;&lt;/P&gt;&lt;P&gt;If I only get two messages, I can use&amp;nbsp;FLEXCAN_DRV_ConfigRxMb, for example:&lt;/P&gt;&lt;P&gt;void CANCONfig(void)&lt;BR /&gt; {&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//初始化CAN0&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;FLEXCAN_DRV_Init(INST_CANCOM0, &amp;amp;canCom0_State, &amp;amp;canCom0_InitConfig0);&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//配置0x218帧&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;FLEXCAN_DRV_ConfigRxMb(INST_CANCOM0, RX_MAILBOX_0, &amp;amp;Data_Std_Info, 0x218);&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;FLEXCAN_DRV_SetRxIndividualMask(INST_CANCOM0,FLEXCAN_MSG_ID_STD,RX_MAILBOX_0,0x00000u);&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//配置0x121帧&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;FLEXCAN_DRV_ConfigRxMb(INST_CANCOM0, RX_MAILBOX_1, &amp;amp;Data_Std_Info, 0x121);&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;FLEXCAN_DRV_SetRxIndividualMask(INST_CANCOM0,FLEXCAN_MSG_ID_STD,RX_MAILBOX_1,0x00000u);&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;FLEXCAN_DRV_Receive(INST_CANCOM0, RX_MAILBOX_0, &amp;amp;RecvMsg0);&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;FLEXCAN_DRV_Receive(INST_CANCOM0, RX_MAILBOX_1, &amp;amp;RecvMsg1);&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//安装中断函数&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;FLEXCAN_DRV_InstallEventCallback(INST_CANCOM0, CAN0RxCallBack, NULL);&lt;BR /&gt; }&lt;/P&gt;&lt;P&gt;The callback function is as follow:&lt;/P&gt;&lt;P&gt;void CAN0RxCallBack(uint8_t instance, flexcan_event_type_t eventType,&lt;BR /&gt; uint32_t buffIdx, flexcan_state_t *flexcanState)&lt;BR /&gt; {&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if(eventType == FLEXCAN_EVENT_RX_COMPLETE) {&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;uint32_t TempId;&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if(instance == INST_CANCOM0) {&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;FLEXCAN_DRV_Receive(INST_CANCOM0, RX_MAILBOX_0, &amp;amp;RecvMsg0);&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;FLEXCAN_DRV_Receive(INST_CANCOM0, RX_MAILBOX_1, &amp;amp;RecvMsg1);&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;V_Vehicle_Speed = ((RecvMsg0.data[1]&amp;lt;&amp;lt;5)+((RecvMsg0.data[2]&amp;amp;0xF8)&amp;gt;&amp;gt;3))*0.05625;&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Signal1 = RecvMsg1.data[0];&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Signal2 = RecvMsg1.data[2];&lt;BR /&gt; }&lt;BR /&gt; }&lt;BR /&gt; }&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;But if I want get 70 messages, I can not use&amp;nbsp;&lt;SPAN&gt;FLEXCAN_DRV_ConfigRxMb, because Rx_MailBox do not have so much, then I must use the FLEXCAN_DRV_ConfigRxFifo ,is it right?&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Tue, 16 Jun 2020 05:23:13 GMT</pubDate>
    <dc:creator>liuyanwei8914</dc:creator>
    <dc:date>2020-06-16T05:23:13Z</dc:date>
    <item>
      <title>Difference between FLEXCAN_DRV_ConfigRxMb and FLEXCAN_DRV_ConfigRxFifo</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/Difference-between-FLEXCAN-DRV-ConfigRxMb-and-FLEXCAN-DRV/m-p/1048472#M56912</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; I have some doubts about the FlexCAN function&amp;nbsp;FLEXCAN_DRV_ConfigRxMb and&amp;nbsp;FLEXCAN_DRVConfig Rx Fifo.&amp;nbsp;&lt;/P&gt;&lt;P&gt;If I only get two messages, I can use&amp;nbsp;FLEXCAN_DRV_ConfigRxMb, for example:&lt;/P&gt;&lt;P&gt;void CANCONfig(void)&lt;BR /&gt; {&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//初始化CAN0&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;FLEXCAN_DRV_Init(INST_CANCOM0, &amp;amp;canCom0_State, &amp;amp;canCom0_InitConfig0);&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//配置0x218帧&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;FLEXCAN_DRV_ConfigRxMb(INST_CANCOM0, RX_MAILBOX_0, &amp;amp;Data_Std_Info, 0x218);&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;FLEXCAN_DRV_SetRxIndividualMask(INST_CANCOM0,FLEXCAN_MSG_ID_STD,RX_MAILBOX_0,0x00000u);&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//配置0x121帧&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;FLEXCAN_DRV_ConfigRxMb(INST_CANCOM0, RX_MAILBOX_1, &amp;amp;Data_Std_Info, 0x121);&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;FLEXCAN_DRV_SetRxIndividualMask(INST_CANCOM0,FLEXCAN_MSG_ID_STD,RX_MAILBOX_1,0x00000u);&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;FLEXCAN_DRV_Receive(INST_CANCOM0, RX_MAILBOX_0, &amp;amp;RecvMsg0);&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;FLEXCAN_DRV_Receive(INST_CANCOM0, RX_MAILBOX_1, &amp;amp;RecvMsg1);&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//安装中断函数&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;FLEXCAN_DRV_InstallEventCallback(INST_CANCOM0, CAN0RxCallBack, NULL);&lt;BR /&gt; }&lt;/P&gt;&lt;P&gt;The callback function is as follow:&lt;/P&gt;&lt;P&gt;void CAN0RxCallBack(uint8_t instance, flexcan_event_type_t eventType,&lt;BR /&gt; uint32_t buffIdx, flexcan_state_t *flexcanState)&lt;BR /&gt; {&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if(eventType == FLEXCAN_EVENT_RX_COMPLETE) {&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;uint32_t TempId;&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if(instance == INST_CANCOM0) {&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;FLEXCAN_DRV_Receive(INST_CANCOM0, RX_MAILBOX_0, &amp;amp;RecvMsg0);&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;FLEXCAN_DRV_Receive(INST_CANCOM0, RX_MAILBOX_1, &amp;amp;RecvMsg1);&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;V_Vehicle_Speed = ((RecvMsg0.data[1]&amp;lt;&amp;lt;5)+((RecvMsg0.data[2]&amp;amp;0xF8)&amp;gt;&amp;gt;3))*0.05625;&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Signal1 = RecvMsg1.data[0];&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Signal2 = RecvMsg1.data[2];&lt;BR /&gt; }&lt;BR /&gt; }&lt;BR /&gt; }&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;But if I want get 70 messages, I can not use&amp;nbsp;&lt;SPAN&gt;FLEXCAN_DRV_ConfigRxMb, because Rx_MailBox do not have so much, then I must use the FLEXCAN_DRV_ConfigRxFifo ,is it right?&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 16 Jun 2020 05:23:13 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/Difference-between-FLEXCAN-DRV-ConfigRxMb-and-FLEXCAN-DRV/m-p/1048472#M56912</guid>
      <dc:creator>liuyanwei8914</dc:creator>
      <dc:date>2020-06-16T05:23:13Z</dc:date>
    </item>
    <item>
      <title>Re: Difference between FLEXCAN_DRV_ConfigRxMb and FLEXCAN_DRV_ConfigRxFifo</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/Difference-between-FLEXCAN-DRV-ConfigRxMb-and-FLEXCAN-DRV/m-p/1048473#M56913</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello, &lt;A _jive_internal="true" data-content-finding="Community" data-userid="359659" data-username="liuyanwei8914@163.com" href="https://community.nxp.com/people/liuyanwei8914@163.com"&gt;言伟 刘&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Could you specify the part number you are using?&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Best regards,&lt;/P&gt;&lt;P&gt;Omar&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 16 Jun 2020 19:21:56 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/Difference-between-FLEXCAN-DRV-ConfigRxMb-and-FLEXCAN-DRV/m-p/1048473#M56913</guid>
      <dc:creator>Omar_Anguiano</dc:creator>
      <dc:date>2020-06-16T19:21:56Z</dc:date>
    </item>
  </channel>
</rss>

