<?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>MCX MicrocontrollersのトピックRe: KW38使用CAN FIFO如何初始化进入中断函数</title>
    <link>https://community.nxp.com/t5/MCX-Microcontrollers/KW38%E4%BD%BF%E7%94%A8CAN-FIFO%E5%A6%82%E4%BD%95%E5%88%9D%E5%A7%8B%E5%8C%96%E8%BF%9B%E5%85%A5%E4%B8%AD%E6%96%AD%E5%87%BD%E6%95%B0/m-p/1812637#M30</link>
    <description>&lt;P&gt;Hi,&amp;nbsp;&lt;a href="https://community.nxp.com/t5/user/viewprofilepage/user-id/212515"&gt;@leonordo&lt;/a&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;1.请问您使用的是哪一版本的SDK？&lt;/P&gt;
&lt;P&gt;2.您使用的是我们EVK吗？还是采用我们芯片自己设计的板子？&lt;/P&gt;
&lt;P&gt;3.您使用的是哪个example？&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Best regards,&lt;/P&gt;
&lt;P&gt;Christine.&lt;/P&gt;</description>
    <pubDate>Wed, 21 Feb 2024 08:47:39 GMT</pubDate>
    <dc:creator>Christine_Li</dc:creator>
    <dc:date>2024-02-21T08:47:39Z</dc:date>
    <item>
      <title>KW38使用CAN FIFO如何初始化进入中断函数</title>
      <link>https://community.nxp.com/t5/MCX-Microcontrollers/KW38%E4%BD%BF%E7%94%A8CAN-FIFO%E5%A6%82%E4%BD%95%E5%88%9D%E5%A7%8B%E5%8C%96%E8%BF%9B%E5%85%A5%E4%B8%AD%E6%96%AD%E5%87%BD%E6%95%B0/m-p/1812292#M26</link>
      <description>&lt;P&gt;大家好：&lt;/P&gt;&lt;P&gt;我在使用KW38的时候想使用CAN FIFO模式接收数据(不使用CAN FIFO DMA),以下是我的初始化逻辑，但是无法进入中断处理函数，想要请教一下大家是不是我设置的问题：&lt;/P&gt;&lt;P&gt;初始化代码：&lt;/P&gt;&lt;P&gt;FLEXCAN_Init(Can_ptr, &amp;amp;flexcanConfig, Can_sourceClock_Hz);&lt;/P&gt;&lt;P&gt;FLEXCAN_SetRxFifoGlobalMask(Can_ptr, 0);&lt;BR /&gt;/* enable fifo interrupt */&lt;BR /&gt;fifoConfig.idFilterTable = rxFifoFilter;&lt;BR /&gt;fifoConfig.idFilterNum = sizeof(rxFifoFilter) / sizeof(rxFifoFilter[0]);&lt;BR /&gt;fifoConfig.idFilterType = kFLEXCAN_RxFifoFilterTypeA;&lt;BR /&gt;fifoConfig.priority = kFLEXCAN_RxFifoPrioHigh;&lt;BR /&gt;FLEXCAN_SetRxFifoConfig(Can_ptr, &amp;amp;fifoConfig, true);&lt;/P&gt;&lt;P&gt;FLEXCAN_TransferCreateHandle(Can_ptr, &amp;amp;flexcanHandle, kw38can_callback, NULL);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;我想要进入此函数中断的红色字段中&lt;/P&gt;&lt;P&gt;void FLEXCAN_TransferHandleIRQ(CAN_Type *base, flexcan_handle_t *handle)&lt;BR /&gt;{&lt;BR /&gt;/* Assertion. */&lt;BR /&gt;assert(NULL != handle);&lt;/P&gt;&lt;P&gt;status_t status = kStatus_FLEXCAN_UnHandled;&lt;BR /&gt;uint32_t result = 0U;&lt;BR /&gt;/* Store Current FlexCAN Module Error and Status. */&lt;BR /&gt;uint32_t EsrStatus = base-&amp;gt;ESR1;&lt;/P&gt;&lt;P&gt;do&lt;BR /&gt;{&lt;BR /&gt;/* Solve FlexCAN Error and Status Interrupt. */&lt;BR /&gt;if (0U != (EsrStatus &amp;amp; ((uint32_t)kFLEXCAN_TxWarningIntFlag | (uint32_t)kFLEXCAN_RxWarningIntFlag |&lt;BR /&gt;(uint32_t)kFLEXCAN_BusOffIntFlag | (uint32_t)kFLEXCAN_ErrorIntFlag)))&lt;BR /&gt;{&lt;BR /&gt;status = kStatus_FLEXCAN_ErrorStatus;&lt;/P&gt;&lt;P&gt;/* Clear FlexCAN Error and Status Interrupt. */&lt;BR /&gt;FLEXCAN_ClearStatusFlags(base, (uint32_t)kFLEXCAN_TxWarningIntFlag | (uint32_t)kFLEXCAN_RxWarningIntFlag |&lt;BR /&gt;(uint32_t)kFLEXCAN_BusOffIntFlag | (uint32_t)kFLEXCAN_ErrorIntFlag);&lt;BR /&gt;}&lt;BR /&gt;else if (0U != (EsrStatus &amp;amp; (uint32_t)kFLEXCAN_WakeUpIntFlag))&lt;BR /&gt;{&lt;BR /&gt;status = kStatus_FLEXCAN_WakeUp;&lt;BR /&gt;FLEXCAN_ClearStatusFlags(base, (uint32_t)kFLEXCAN_WakeUpIntFlag);&lt;BR /&gt;}&lt;BR /&gt;/* Solve FlexCAN Rx FIFO &amp;amp; Message Buffer Interrupt. */&lt;BR /&gt;else&lt;BR /&gt;{&lt;BR /&gt;/* For this implementation, we solve the Message with lowest MB index first. */&lt;BR /&gt;for (result = 0U; result &amp;lt; (uint32_t)FSL_FEATURE_FLEXCAN_HAS_MESSAGE_BUFFER_MAX_NUMBERn(base); result++)&lt;BR /&gt;{&lt;BR /&gt;/* Get the lowest unhandled Message Buffer */&lt;BR /&gt;#if (defined(FSL_FEATURE_FLEXCAN_HAS_EXTENDED_FLAG_REGISTER)) &amp;amp;&amp;amp; (FSL_FEATURE_FLEXCAN_HAS_EXTENDED_FLAG_REGISTER &amp;gt; 0)&lt;BR /&gt;uint64_t u64flag = 1;&lt;BR /&gt;if (0U != FLEXCAN_GetMbStatusFlags(base, (u64flag &amp;lt;&amp;lt; result)))&lt;BR /&gt;{&lt;BR /&gt;if (true == FLEXCAN_IsMbIntEnabled(base, result))&lt;BR /&gt;#else&lt;BR /&gt;uint32_t u32flag = 1;&lt;BR /&gt;if (0U != FLEXCAN_GetMbStatusFlags(base, (u32flag &amp;lt;&amp;lt; result)))&lt;BR /&gt;{&lt;BR /&gt;if (true == FLEXCAN_IsMbIntEnabled(base, (uint8_t)result))&lt;BR /&gt;#endif&lt;BR /&gt;{&lt;BR /&gt;break;&lt;BR /&gt;}&lt;BR /&gt;}&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;/* Does not find Message to deal with. */&lt;BR /&gt;if (result == (uint32_t)FSL_FEATURE_FLEXCAN_HAS_MESSAGE_BUFFER_MAX_NUMBERn(base))&lt;BR /&gt;{&lt;BR /&gt;break;&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;/* Solve Rx FIFO interrupt. */&lt;BR /&gt;if (((uint8_t)kFLEXCAN_StateIdle != handle-&amp;gt;rxFifoState) &amp;amp;&amp;amp; (result &amp;lt;= (uint32_t)CAN_IFLAG1_BUF7I_SHIFT))&lt;BR /&gt;{&lt;BR /&gt;uint32_t u32mask = 1;&lt;BR /&gt;switch (u32mask &amp;lt;&amp;lt; result)&lt;BR /&gt;{&lt;BR /&gt;case (int32_t)kFLEXCAN_RxFifoOverflowFlag:&lt;BR /&gt;status = kStatus_FLEXCAN_RxFifoOverflow;&lt;BR /&gt;break;&lt;/P&gt;&lt;P&gt;case (int32_t)kFLEXCAN_RxFifoWarningFlag:&lt;BR /&gt;status = kStatus_FLEXCAN_RxFifoWarning;&lt;BR /&gt;break;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&lt;FONT color="#FF0000"&gt;case (int32_t)kFLEXCAN_RxFifoFrameAvlFlag:&lt;/FONT&gt;&lt;/STRONG&gt;&lt;BR /&gt;status = FLEXCAN_ReadRxFifo(base, handle-&amp;gt;rxFifoFrameBuf);&lt;BR /&gt;if (kStatus_Success == status)&lt;BR /&gt;{&lt;BR /&gt;status = kStatus_FLEXCAN_RxFifoIdle;&lt;BR /&gt;}&lt;BR /&gt;FLEXCAN_TransferAbortReceiveFifo(base, handle);&lt;BR /&gt;break;&lt;/P&gt;&lt;P&gt;default:&lt;BR /&gt;status = kStatus_FLEXCAN_UnHandled;&lt;BR /&gt;break;&lt;BR /&gt;}&lt;BR /&gt;}&lt;BR /&gt;else&lt;BR /&gt;{&lt;BR /&gt;/* To sove Mail Box interrupt. */&lt;BR /&gt;status = FLEXCAN_SubHandlerForMailBoxTransfered(base, handle, result);&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;......&lt;/P&gt;&lt;P&gt;/* Calling Callback Function if has one. */&lt;BR /&gt;if (handle-&amp;gt;callback != NULL)&lt;BR /&gt;{&lt;BR /&gt;handle-&amp;gt;callback(base, handle, status, result, handle-&amp;gt;userData);&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;.....&lt;BR /&gt;}&lt;/P&gt;</description>
      <pubDate>Wed, 21 Feb 2024 01:49:08 GMT</pubDate>
      <guid>https://community.nxp.com/t5/MCX-Microcontrollers/KW38%E4%BD%BF%E7%94%A8CAN-FIFO%E5%A6%82%E4%BD%95%E5%88%9D%E5%A7%8B%E5%8C%96%E8%BF%9B%E5%85%A5%E4%B8%AD%E6%96%AD%E5%87%BD%E6%95%B0/m-p/1812292#M26</guid>
      <dc:creator>leonordo</dc:creator>
      <dc:date>2024-02-21T01:49:08Z</dc:date>
    </item>
    <item>
      <title>Re: KW38使用CAN FIFO如何初始化进入中断函数</title>
      <link>https://community.nxp.com/t5/MCX-Microcontrollers/KW38%E4%BD%BF%E7%94%A8CAN-FIFO%E5%A6%82%E4%BD%95%E5%88%9D%E5%A7%8B%E5%8C%96%E8%BF%9B%E5%85%A5%E4%B8%AD%E6%96%AD%E5%87%BD%E6%95%B0/m-p/1812637#M30</link>
      <description>&lt;P&gt;Hi,&amp;nbsp;&lt;a href="https://community.nxp.com/t5/user/viewprofilepage/user-id/212515"&gt;@leonordo&lt;/a&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;1.请问您使用的是哪一版本的SDK？&lt;/P&gt;
&lt;P&gt;2.您使用的是我们EVK吗？还是采用我们芯片自己设计的板子？&lt;/P&gt;
&lt;P&gt;3.您使用的是哪个example？&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Best regards,&lt;/P&gt;
&lt;P&gt;Christine.&lt;/P&gt;</description>
      <pubDate>Wed, 21 Feb 2024 08:47:39 GMT</pubDate>
      <guid>https://community.nxp.com/t5/MCX-Microcontrollers/KW38%E4%BD%BF%E7%94%A8CAN-FIFO%E5%A6%82%E4%BD%95%E5%88%9D%E5%A7%8B%E5%8C%96%E8%BF%9B%E5%85%A5%E4%B8%AD%E6%96%AD%E5%87%BD%E6%95%B0/m-p/1812637#M30</guid>
      <dc:creator>Christine_Li</dc:creator>
      <dc:date>2024-02-21T08:47:39Z</dc:date>
    </item>
    <item>
      <title>Re: KW38使用CAN FIFO如何初始化进入中断函数</title>
      <link>https://community.nxp.com/t5/MCX-Microcontrollers/KW38%E4%BD%BF%E7%94%A8CAN-FIFO%E5%A6%82%E4%BD%95%E5%88%9D%E5%A7%8B%E5%8C%96%E8%BF%9B%E5%85%A5%E4%B8%AD%E6%96%AD%E5%87%BD%E6%95%B0/m-p/1813248#M31</link>
      <description>&lt;P&gt;应该是我没有使能中断的原因，在主循环中频繁调用了这段话就可以进入FIFO中断了&lt;/P&gt;&lt;P&gt;FLEXCAN_TransferReceiveFifoNonBlocking(Can_ptr, &amp;amp;flexcanHandle, &amp;amp;rxFIFOBuffer);&lt;/P&gt;&lt;P&gt;还有一个问题，我现在打算封装一个CAN FIFO中断处理的逻辑，但是每次进入中断后会红色粗体那里失能中断，并且将FIFO换成置为NULL，之后的函数我在那个位置在重新使能中断呢？&lt;/P&gt;&lt;P&gt;/* Disable Rx Message FIFO Interrupts. */&lt;BR /&gt;FLEXCAN_DisableMbInterrupts(base, (uint32_t)kFLEXCAN_RxFifoOverflowFlag | (uint32_t)kFLEXCAN_RxFifoWarningFlag |&lt;BR /&gt;(uint32_t)kFLEXCAN_RxFifoFrameAvlFlag);&lt;/P&gt;&lt;P&gt;/* Un-register handle. */&lt;BR /&gt;handle-&amp;gt;rxFifoFrameBuf = NULL;&lt;/P&gt;&lt;P&gt;void FLEXCAN_TransferHandleIRQ(CAN_Type *base, flexcan_handle_t *handle)&lt;BR /&gt;{&lt;BR /&gt;/* Assertion. */&lt;BR /&gt;assert(NULL != handle);&lt;/P&gt;&lt;P&gt;status_t status = kStatus_FLEXCAN_UnHandled;&lt;BR /&gt;uint32_t result = 0U;&lt;BR /&gt;/* Store Current FlexCAN Module Error and Status. */&lt;BR /&gt;uint32_t EsrStatus = base-&amp;gt;ESR1;&lt;/P&gt;&lt;P&gt;do&lt;BR /&gt;{&lt;/P&gt;&lt;P&gt;.....&lt;/P&gt;&lt;P&gt;/* Solve Rx FIFO interrupt. */&lt;BR /&gt;if (((uint8_t)kFLEXCAN_StateIdle != handle-&amp;gt;rxFifoState) &amp;amp;&amp;amp; (result &amp;lt;= (uint32_t)CAN_IFLAG1_BUF7I_SHIFT))&lt;BR /&gt;{&lt;BR /&gt;uint32_t u32mask = 1;&lt;BR /&gt;switch (u32mask &amp;lt;&amp;lt; result)&lt;BR /&gt;{&lt;BR /&gt;case (int32_t)kFLEXCAN_RxFifoOverflowFlag:&lt;BR /&gt;status = kStatus_FLEXCAN_RxFifoOverflow;&lt;BR /&gt;break;&lt;/P&gt;&lt;P&gt;case (int32_t)kFLEXCAN_RxFifoWarningFlag:&lt;BR /&gt;status = kStatus_FLEXCAN_RxFifoWarning;&lt;BR /&gt;break;&lt;/P&gt;&lt;P&gt;case (int32_t)kFLEXCAN_RxFifoFrameAvlFlag:&lt;BR /&gt;status = FLEXCAN_ReadRxFifo(base, handle-&amp;gt;rxFifoFrameBuf);&lt;BR /&gt;if (kStatus_Success == status)&lt;BR /&gt;{&lt;BR /&gt;status = kStatus_FLEXCAN_RxFifoIdle;&lt;BR /&gt;}&lt;BR /&gt;&lt;FONT color="#FF0000"&gt;&lt;STRONG&gt;FLEXCAN_TransferAbortReceiveFifo(base, handle);&lt;/STRONG&gt;&lt;/FONT&gt;&lt;BR /&gt;break;&lt;/P&gt;&lt;P&gt;default:&lt;BR /&gt;status = kStatus_FLEXCAN_UnHandled;&lt;BR /&gt;break;&lt;BR /&gt;}&lt;BR /&gt;}&lt;BR /&gt;else&lt;BR /&gt;{&lt;BR /&gt;/* To sove Mail Box interrupt. */&lt;BR /&gt;status = FLEXCAN_SubHandlerForMailBoxTransfered(base, handle, result);&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;/* Calling Callback Function if has one. */&lt;BR /&gt;if (handle-&amp;gt;callback != NULL)&lt;BR /&gt;{&lt;BR /&gt;handle-&amp;gt;callback(base, handle, status, result, handle-&amp;gt;userData);&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;正确是初始化流程应该是怎么样的，想请教一下您&lt;/P&gt;</description>
      <pubDate>Thu, 22 Feb 2024 00:54:20 GMT</pubDate>
      <guid>https://community.nxp.com/t5/MCX-Microcontrollers/KW38%E4%BD%BF%E7%94%A8CAN-FIFO%E5%A6%82%E4%BD%95%E5%88%9D%E5%A7%8B%E5%8C%96%E8%BF%9B%E5%85%A5%E4%B8%AD%E6%96%AD%E5%87%BD%E6%95%B0/m-p/1813248#M31</guid>
      <dc:creator>leonordo</dc:creator>
      <dc:date>2024-02-22T00:54:20Z</dc:date>
    </item>
    <item>
      <title>Re: KW38使用CAN FIFO如何初始化进入中断函数</title>
      <link>https://community.nxp.com/t5/MCX-Microcontrollers/KW38%E4%BD%BF%E7%94%A8CAN-FIFO%E5%A6%82%E4%BD%95%E5%88%9D%E5%A7%8B%E5%8C%96%E8%BF%9B%E5%85%A5%E4%B8%AD%E6%96%AD%E5%87%BD%E6%95%B0/m-p/1813281#M32</link>
      <description>&lt;P&gt;还有一个问题，为什么在这个进入处理FIFO中断逻辑中，不去判断是否使能FIFO中断，而是handle-&amp;gt;rxFifoState判断,这个handle-&amp;gt;rxFifoState感觉不是根据某个寄存器设置的&lt;/P&gt;&lt;P&gt;/*! @brief FlexCAN handle structure. */&lt;BR /&gt;struct _flexcan_handle&lt;BR /&gt;{&lt;BR /&gt;flexcan_transfer_callback_t callback; /*!&amp;lt; Callback function. */&lt;BR /&gt;void *userData; /*!&amp;lt; FlexCAN callback function parameter.*/&lt;BR /&gt;flexcan_frame_t *volatile mbFrameBuf[CAN_WORD1_COUNT];&lt;BR /&gt;#if (defined(FSL_FEATURE_FLEXCAN_HAS_FLEXIBLE_DATA_RATE) &amp;amp;&amp;amp; FSL_FEATURE_FLEXCAN_HAS_FLEXIBLE_DATA_RATE)&lt;BR /&gt;flexcan_fd_frame_t *volatile mbFDFrameBuf[CAN_WORD1_COUNT];&lt;BR /&gt;#endif&lt;BR /&gt;/*!&amp;lt; The buffer for received data from Message Buffers. */&lt;BR /&gt;flexcan_frame_t *volatile rxFifoFrameBuf; /*!&amp;lt; The buffer for received data from Rx FIFO. */&lt;BR /&gt;volatile uint8_t mbState[CAN_WORD1_COUNT]; /*!&amp;lt; Message Buffer transfer state. */&lt;BR /&gt;&lt;FONT color="#FF0000"&gt;&lt;STRONG&gt;volatile uint8_t rxFifoState; /*!&amp;lt; Rx FIFO transfer state. */&lt;/STRONG&gt;&lt;/FONT&gt;&lt;BR /&gt;};&lt;/P&gt;&lt;P&gt;/* Solve Rx FIFO interrupt. */&lt;BR /&gt;if (&lt;FONT color="#FF0000"&gt;&lt;STRONG&gt;((uint8_t)kFLEXCAN_StateIdle != handle-&amp;gt;rxFifoState)&lt;/STRONG&gt; &lt;/FONT&gt;&amp;amp;&amp;amp; (result &amp;lt;= (uint32_t)CAN_IFLAG1_BUF7I_SHIFT))&lt;BR /&gt;{&lt;BR /&gt;uint32_t u32mask = 1;&lt;BR /&gt;switch (u32mask &amp;lt;&amp;lt; result)&lt;BR /&gt;{&lt;BR /&gt;case (int32_t)kFLEXCAN_RxFifoOverflowFlag:&lt;BR /&gt;status = kStatus_FLEXCAN_RxFifoOverflow;&lt;BR /&gt;break;&lt;/P&gt;&lt;P&gt;case (int32_t)kFLEXCAN_RxFifoWarningFlag:&lt;BR /&gt;status = kStatus_FLEXCAN_RxFifoWarning;&lt;BR /&gt;break;&lt;/P&gt;&lt;P&gt;case (int32_t)kFLEXCAN_RxFifoFrameAvlFlag:&lt;BR /&gt;status = FLEXCAN_ReadRxFifo(base, handle-&amp;gt;rxFifoFrameBuf);&lt;BR /&gt;if (kStatus_Success == status)&lt;BR /&gt;{&lt;BR /&gt;status = kStatus_FLEXCAN_RxFifoIdle;&lt;BR /&gt;}&lt;BR /&gt;FLEXCAN_TransferAbortReceiveFifo(base, handle);&lt;BR /&gt;break;&lt;/P&gt;&lt;P&gt;default:&lt;BR /&gt;status = kStatus_FLEXCAN_UnHandled;&lt;BR /&gt;break;&lt;BR /&gt;}&lt;BR /&gt;}&lt;/P&gt;</description>
      <pubDate>Thu, 22 Feb 2024 02:02:06 GMT</pubDate>
      <guid>https://community.nxp.com/t5/MCX-Microcontrollers/KW38%E4%BD%BF%E7%94%A8CAN-FIFO%E5%A6%82%E4%BD%95%E5%88%9D%E5%A7%8B%E5%8C%96%E8%BF%9B%E5%85%A5%E4%B8%AD%E6%96%AD%E5%87%BD%E6%95%B0/m-p/1813281#M32</guid>
      <dc:creator>leonordo</dc:creator>
      <dc:date>2024-02-22T02:02:06Z</dc:date>
    </item>
  </channel>
</rss>

