<?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>MPC5xxx中的主题 Re: How to config CAN RXFIFO DMA on MPC5748G?</title>
    <link>https://community.nxp.com/t5/MPC5xxx/How-to-config-CAN-RXFIFO-DMA-on-MPC5748G/m-p/861122#M12673</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I use &amp;nbsp;&lt;SPAN style="color: #51626f; background-color: #ffffff;"&gt;EDMA.TCD[DMA_CHANNEL].CSR.B.DREQ = 0, It can Working normally.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #51626f; background-color: #ffffff;"&gt;Thank you Very much!&lt;/SPAN&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Sun, 31 Mar 2019 03:08:29 GMT</pubDate>
    <dc:creator>liuyang201666</dc:creator>
    <dc:date>2019-03-31T03:08:29Z</dc:date>
    <item>
      <title>How to config CAN RXFIFO DMA on MPC5748G?</title>
      <link>https://community.nxp.com/t5/MPC5xxx/How-to-config-CAN-RXFIFO-DMA-on-MPC5748G/m-p/861120#M12671</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; I try to &amp;nbsp;config CAN RXFIFO DMA, &amp;nbsp;but it only work one times! The follow is my Init code.Thank very much!&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Best wish&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;void DMA_Init(void)&lt;BR /&gt;{&lt;BR /&gt; DMAMUX_0.CHCFG[0].R = 0x80 | 5; //Route FlexCAN1 to DMA CHANNEL 0&lt;/P&gt;&lt;P&gt;EDMA.TCD[DMA_CHANNEL].SADDR.R = CAN0_BASE_ADDRESS + 0x80; /* Load Address of Source data */&lt;BR /&gt; EDMA.TCD[DMA_CHANNEL].ATTR.B.SSIZE = 2; /* Read 2**0 = 1 byte per transfer */&lt;BR /&gt; EDMA.TCD[DMA_CHANNEL].ATTR.B.SMOD = 0; /* Source Modulo feature not used */&lt;BR /&gt; EDMA.TCD[DMA_CHANNEL].SOFF.R = 4; /* After tranfer, add 0 to src addr */&lt;BR /&gt; EDMA.TCD[DMA_CHANNEL].SLAST.R = -16; /* No address Adjustment after major loops */&lt;/P&gt;&lt;P&gt;EDMA.TCD[DMA_CHANNEL].DADDR.R = (unsigned int)&amp;amp;RxDATA[0]; /* Destination Address */&lt;BR /&gt; EDMA.TCD[DMA_CHANNEL].ATTR.B.DSIZE = 2; /* Write 2**0 = 1 byte per transfer */&lt;BR /&gt; EDMA.TCD[DMA_CHANNEL].ATTR.B.DMOD = 0; /* Destination modulo feature not used */&lt;BR /&gt; EDMA.TCD[DMA_CHANNEL].DOFF.R = 4; /* Increment destination addr by 1 */&lt;BR /&gt; EDMA.TCD[DMA_CHANNEL].DLASTSGA.R = -16; /* No addr adjustment after major loop */&lt;/P&gt;&lt;P&gt;EDMA.TCD[DMA_CHANNEL].CSR.B.DREQ = 1; /* Disable Request */&lt;BR /&gt; EDMA.TCD[DMA_CHANNEL].NBYTES.MLNO.B.NBYTES = 16; /* NBYTES - Transfer 1 byte per minor loop */&lt;BR /&gt; /* TCD Current Minor Loop Link, Major Loop Count (Channel Linking Disabled) */&lt;BR /&gt; EDMA.TCD[DMA_CHANNEL].CITER.ELINKNO.B.ELINK = 0; /* Enable channel-to-channel linking on minor-loop complete */&lt;BR /&gt; EDMA.TCD[DMA_CHANNEL].CITER.ELINKNO.B.CITER = 1; /* Current Major Iteration Count */&lt;BR /&gt; /* TCD Beginning Minor Loop Link, Major Loop Count (Channel Linking Disabled) */&lt;BR /&gt; EDMA.TCD[DMA_CHANNEL].BITER.ELINKNO.B.ELINK = 0; /* Enables channel-to-channel linking on minor loop complete */&lt;BR /&gt; EDMA.TCD[DMA_CHANNEL].BITER.ELINKNO.B.BITER = 1; /* Starting Major Iteration Count */&lt;BR /&gt; EDMA.TCD[DMA_CHANNEL].CSR.B.MAJORELINK = 0; /* Enable channel-to-channel linking on major loop complete */&lt;BR /&gt; EDMA.TCD[DMA_CHANNEL].CSR.B.ESG = 0; /* Enable Scatter/Gather Processing */&lt;BR /&gt; EDMA.TCD[DMA_CHANNEL].CSR.B.BWC = 0; /* Bandwidth Control */&lt;BR /&gt; EDMA.TCD[DMA_CHANNEL].CSR.B.INTHALF = 0; /* Disable an interrupt when major counter is half complete. */&lt;BR /&gt; EDMA.TCD[DMA_CHANNEL].CSR.B.INTMAJOR = 1; /* Disable an interrupt when major iteration count completes */&lt;BR /&gt; EDMA.TCD[DMA_CHANNEL].CSR.B.MAJORLINKCH = 0; /* Link Channel Number */&lt;BR /&gt; EDMA.TCD[DMA_CHANNEL].CSR.B.START = 0; /* Channel Start */&lt;BR /&gt; EDMA.TCD[DMA_CHANNEL].CSR.B.DONE = 0; /* Channel Done */&lt;BR /&gt; EDMA.TCD[DMA_CHANNEL].CSR.B.ACTIVE = 0; /* Channel Active */&lt;BR /&gt; INTC.PSR[53].B.PRC_SELN = 0x8; /* IRQ sent to Core 0 */&lt;BR /&gt; INTC.PSR[53].B.PRIN =10; /* IRQ priority = 10 (15 = highest) */&lt;/P&gt;&lt;P&gt;EDMA.SERQ.R = 0; /* Enable channel 0 */&lt;BR /&gt;// EDMA.SERQ.R = 16; /* Enable channel 0 */&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;void initCAN_0_rx(void) { /* General init. MB IDs: MB4 ID_STD=0x555 */&lt;BR /&gt; uint16_t i;&lt;/P&gt;&lt;P&gt;CAN_0.MCR.B.MDIS = 1; /* Disable module before selecting clock source*/&lt;BR /&gt; CAN_0.CTRL1.B.CLKSRC=0; /* Clock Source = oscillator clock (40 MHz) */&lt;BR /&gt; CAN_0.MCR.B.MDIS = 0; /* Enable module for config. (Sets FRZ, HALT)*/&lt;BR /&gt; while (!CAN_0.MCR.B.FRZACK) {}/* Wait for freeze acknowledge to set */&lt;BR /&gt; /* Good practice: wait for FRZACK on freeze mode entry/exit */&lt;BR /&gt; CAN_0.CTRL1.R = 0x04DB0086; /* CAN bus: 40 MHz clksrc, 500K bps with 16 tq */&lt;BR /&gt; /* PRESDIV+1 = Fclksrc/Ftq = 40 MHz/8MHz = 5 */&lt;BR /&gt; /* so PRESDIV = 4 */&lt;BR /&gt; /* PSEG2 = Phase_Seg2 - 1 = 4 - 1 = 3 */&lt;BR /&gt; /* PSEG1 = PSEG2 = 3 */&lt;BR /&gt; /* PROPSEG= Prop_Seg - 1 = 7 - 1 = 6 */&lt;BR /&gt; /* RJW = Resync Jump Width - 1 = 4 = 1 */&lt;BR /&gt; /* SMP = 1: use 3 bits per CAN sample */&lt;BR /&gt; /* CLKSRC=0 (unchanged): Fcanclk= Fxtal= 40 MHz*/&lt;BR /&gt; for (i=0; i&amp;lt;64; i++) { /* MPC574xG has 96 buffers after MPC5748G rev 0*/&lt;BR /&gt; CAN_0.MB[i].CS.B.CODE = 0; /* Inactivate all message buffers */&lt;BR /&gt; }&lt;BR /&gt;// CAN_0.MB[4].CS.B.IDE = 0; /* MB 4 will look for a standard ID */&lt;BR /&gt;// CAN_0.MB[4].ID.B.ID_STD = 0x555; /* MB 4 will look for ID = 0x555 */&lt;BR /&gt;// CAN_0.MB[4].CS.B.CODE = 4; /* MB 4 set to RX EMPTY */&lt;/P&gt;&lt;P&gt;&lt;BR /&gt; CAN_0.RXMGMASK.R = 0x1FFFFFFF;/* Global acceptance mask */&lt;/P&gt;&lt;P&gt;SIUL2.MSCR[16].B.SSS = 1; /* Pad PB0: Source signal is CAN0_TX */&lt;BR /&gt; SIUL2.MSCR[16].B.OBE = 1; /* Pad PB0: Output Buffer Enable */&lt;BR /&gt; SIUL2.MSCR[16].B.SRC = 3; /* Pad PB0: Maximum slew rate */&lt;BR /&gt; SIUL2.MSCR[17].B.IBE = 1; /* Pad PB1: Enable pad for input - CAN0_RX */&lt;BR /&gt; SIUL2.IMCR[188].B.SSS = 2; /* CAN0_RX: connected to pad PB1 */&lt;/P&gt;&lt;P&gt;/* If DMA is used for receiving, it is necessary to enable RX FIFO */&lt;BR /&gt; /* RX FIFO structure is placed at address CAN_BASE_ADDRESS + 0x80 */&lt;BR /&gt; /* First "ID filter table element 0" is placed at CAN_BASE_ADDRESS + 0xE0 */&lt;/P&gt;&lt;P&gt;CAN_0.CTRL2.B.RFFN = 0x0; /* Message buffers 0-7 are occupied by RX FIFO and ID filter table */&lt;BR /&gt; /* There are 8 ID filter table elements */&lt;/P&gt;&lt;P&gt;CAN_0.MCR.B.IDAM = 0x0; /* One full ID (standard and extended) per ID Filter Table element */&lt;/P&gt;&lt;P&gt;/* Initialize ID filter table elements 0-7 to receive messages with standard ID 0x555 (RTR and IDE = 0) */&lt;BR /&gt;// for(i = 0xE0; i&amp;lt;0xFF ;i=i+4)&lt;BR /&gt; i = 0xE0;&lt;BR /&gt; *(unsigned int*)(CAN0_BASE_ADDRESS + i) = 0x555&amp;lt;&amp;lt;19;&lt;BR /&gt; i = 0xE0 + 4;&lt;BR /&gt;*(unsigned int*)(CAN0_BASE_ADDRESS + i) = 0x666&amp;lt;&amp;lt;19;&lt;/P&gt;&lt;P&gt;/* Enable DMA, enable RX FIFO, negate FlexCAN 0 halt state for 64 MBs */&lt;BR /&gt; CAN_0.MCR.R = 0x2000803F;&lt;BR /&gt; while (CAN_0.MCR.B.FRZACK &amp;amp; CAN_0.MCR.B.NOTRDY) {} /* Wait to clear */&lt;BR /&gt; /* Good practice: wait for FRZACK on freeze mode entry/exit */&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;void AIPS_Init(void)&lt;BR /&gt;{&lt;BR /&gt; /* Enable DMA access on Peripheral Bridges*/&lt;BR /&gt; AIPS_A.MPRA.B.MTR4 = 1;&lt;BR /&gt; AIPS_A.MPRA.B.MTW4 = 1;&lt;BR /&gt; AIPS_A.MPRA.B.MPL4 = 1;&lt;/P&gt;&lt;P&gt;AIPS_B.MPRA.B.MTR4 = 1;&lt;BR /&gt; AIPS_B.MPRA.B.MTW4 = 1;&lt;BR /&gt; AIPS_B.MPRA.B.MPL4 = 1;&lt;BR /&gt;}//AIPS_Init&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;void DMA_0_ISR(void)&lt;BR /&gt;{&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp;EDMA.INT.R = 0x1; /* Clear interrupt flag for DMA channel 0 */&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;int main(void)&lt;BR /&gt;{&lt;BR /&gt;&amp;nbsp; &amp;nbsp; unsigned char Input;&lt;BR /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;int counter = 0;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;xcptn_xmpl (); /* Configures and Enables Interrupts */&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; peri_clock_gating(); /* Configures gating/enabling peripheral clocks for modes*/&lt;BR /&gt;&amp;nbsp; &amp;nbsp;/* Configuration occurs after mode transition */&lt;BR /&gt;&amp;nbsp; &amp;nbsp; system160mhz(); /* sysclk=160MHz, dividers configured, mode transition*/&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp;hw_init();&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; AIPS_Init();&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp;/* Configure DMA channel 16 to receive one frame from CAN1 */&lt;BR /&gt;&amp;nbsp; &amp;nbsp; DMA_Init();&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;&amp;nbsp; &amp;nbsp; initCAN_0_rx(); /* Initialize FLEXCAN 0 &amp;amp; one of its buffers for receive*/&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; while(1) {&lt;BR /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;BR /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;return 0;&lt;BR /&gt;}&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 28 Mar 2019 07:43:48 GMT</pubDate>
      <guid>https://community.nxp.com/t5/MPC5xxx/How-to-config-CAN-RXFIFO-DMA-on-MPC5748G/m-p/861120#M12671</guid>
      <dc:creator>liuyang201666</dc:creator>
      <dc:date>2019-03-28T07:43:48Z</dc:date>
    </item>
    <item>
      <title>Re: How to config CAN RXFIFO DMA on MPC5748G?</title>
      <link>https://community.nxp.com/t5/MPC5xxx/How-to-config-CAN-RXFIFO-DMA-on-MPC5748G/m-p/861121#M12672</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;do not disable HW request upon transfer, so use&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #51626f; background-color: #ffffff;"&gt;EDMA.TCD[DMA_CHANNEL].CSR.B.DREQ = 0; /* do not Disable Request */&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #51626f; background-color: #ffffff;"&gt;or enable it again using&amp;nbsp;&lt;SPAN&gt;EDMA.SERQ.R = 0&amp;nbsp;for example within DMA interrupt.&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #51626f; background-color: #ffffff;"&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #51626f; background-color: #ffffff;"&gt;&lt;SPAN&gt;BR, Petr&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 29 Mar 2019 05:33:32 GMT</pubDate>
      <guid>https://community.nxp.com/t5/MPC5xxx/How-to-config-CAN-RXFIFO-DMA-on-MPC5748G/m-p/861121#M12672</guid>
      <dc:creator>PetrS</dc:creator>
      <dc:date>2019-03-29T05:33:32Z</dc:date>
    </item>
    <item>
      <title>Re: How to config CAN RXFIFO DMA on MPC5748G?</title>
      <link>https://community.nxp.com/t5/MPC5xxx/How-to-config-CAN-RXFIFO-DMA-on-MPC5748G/m-p/861122#M12673</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I use &amp;nbsp;&lt;SPAN style="color: #51626f; background-color: #ffffff;"&gt;EDMA.TCD[DMA_CHANNEL].CSR.B.DREQ = 0, It can Working normally.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #51626f; background-color: #ffffff;"&gt;Thank you Very much!&lt;/SPAN&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sun, 31 Mar 2019 03:08:29 GMT</pubDate>
      <guid>https://community.nxp.com/t5/MPC5xxx/How-to-config-CAN-RXFIFO-DMA-on-MPC5748G/m-p/861122#M12673</guid>
      <dc:creator>liuyang201666</dc:creator>
      <dc:date>2019-03-31T03:08:29Z</dc:date>
    </item>
  </channel>
</rss>

