<?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 Re: MPC5554 FlexCAN Problem in S12 / MagniV Microcontrollers</title>
    <link>https://community.nxp.com/t5/S12-MagniV-Microcontrollers/MPC5554-FlexCAN-Problem/m-p/184523#M6920</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello sir,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I'm actually running into kind of the same problem. I'm working with a MCF5235 uC that communicates with another uC using CAN bus. Sometimes, my uC is transmitting for ever, depending of the datas I'm sending. For example:&lt;/P&gt;&lt;P&gt;- ID = 0x18DAEEFB&amp;nbsp;&amp;nbsp;&amp;nbsp; DATA = 0x02-10-7E-FF-FF-FF-FF-BB&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;= Works great!&lt;/P&gt;&lt;P&gt;- ID = 0x18DAEEFB&amp;nbsp;&amp;nbsp;&amp;nbsp; DATA = 0x02-10-7E-FF-FF-FF-FF-CC&amp;nbsp;&amp;nbsp; &amp;lt;= Transmitting for ever!&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;How did you manage to fix your bug please?&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Fri, 17 Dec 2010 05:32:19 GMT</pubDate>
    <dc:creator>JulienP</dc:creator>
    <dc:date>2010-12-17T05:32:19Z</dc:date>
    <item>
      <title>MPC5554 FlexCAN Problem</title>
      <link>https://community.nxp.com/t5/S12-MagniV-Microcontrollers/MPC5554-FlexCAN-Problem/m-p/184521#M6918</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I have a code written for enabling FlexCAN on MPC5554. I am transferring data message from CAN_A to CAN_B at around 100KHz. To validate the same code, I have connected CANH1 to CANH2 and CANL1 to CANL2 and same has been connected to oscilloscope probes for observing the data. The problem here is " Data never stops transmitting".&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I can see data keep on transmitting again and again. Even after stopping the CodeWarrior debugger, the data is still transmitting. Please find the code below for your reference. I tried the same using FREEZE Mode, Normal mode and Loopback mode. in all cases the same issue.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Please suggest me of there is any problem in my code , register configurations.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;#include "flexcan_mpc5554.h"&lt;/P&gt;&lt;P&gt;uint32_t RxCODE; /* Received message buffer code */&lt;BR /&gt;uint32_t RxID; /* Received message ID */&lt;BR /&gt;uint32_t RxLENGTH; /* Received message number of data bytes */&lt;BR /&gt;uint8_t RxDATA[8]; /* Received message data string*/&lt;BR /&gt;uint32_t RxTIMESTAMP; /* Received message time */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;void initCAN_A (void) {&lt;BR /&gt;&amp;nbsp;uint8_t i;&lt;BR /&gt;&amp;nbsp;//CAN_A.MCR.R = 0x5000003F; /* Put in Freeze Mode &amp;amp; enable all 64 msg buffers*/&lt;BR /&gt;&amp;nbsp;CAN_A.MCR.R = 0x1000003F; /* Put in Normal &amp;amp; enable all 64 msg buffers*/ /* Normal Mode*/&lt;BR /&gt;&amp;nbsp;&lt;BR /&gt;//&amp;nbsp;while(CAN_A.MCR.B.FRZ == 0)&amp;nbsp;{&amp;nbsp;} ;&lt;BR /&gt;&amp;nbsp;&lt;BR /&gt;&amp;nbsp;&lt;BR /&gt;&amp;nbsp;CAN_A.CR.R = 0x04DB0006;&amp;nbsp; /* Configure for 8MHz OSC, 100kHz bit time */&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&lt;BR /&gt;&amp;nbsp;for (i=0; i&amp;lt;64; i++) {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;CAN_A.BUF[i].CS.B.CODE = 0; /* Inactivate all message buffers */&lt;BR /&gt;&amp;nbsp;}&lt;BR /&gt;&amp;nbsp;&lt;BR /&gt;&amp;nbsp;CAN_A.BUF[0].CS.B.CODE = 8; /* Message Buffer 0 set to TX INACTIVE */&lt;BR /&gt;&amp;nbsp;&lt;BR /&gt;&amp;nbsp;SIU.PCR[83].R = 0x062C; /* MPC555x: Configure pad as CNTXA, open drain */&lt;BR /&gt;&amp;nbsp;SIU.PCR[84].R = 0x0500; /* MPC555x: Configure pad as CNRXA */&lt;BR /&gt;&amp;nbsp;CAN_A.MCR.R = 0x0000003F; /* Negate FlexCAN A halt state for 64 MB */&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;&amp;nbsp;//while (CAN_A.MCR.B.FRZACK == 0) {};&lt;BR /&gt;&amp;nbsp;&lt;BR /&gt;&amp;nbsp;&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;void initCAN_B (void) {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;uint8_t i;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;//CAN_B.MCR.R = 0x5000003F; /* Put in Freeze Mode &amp;amp; enable all 64 msg buffers*/&lt;BR /&gt;&amp;nbsp;&amp;nbsp;CAN_B.MCR.R = 0x1000003F; /* Put in Normal &amp;amp; enable all 64 msg buffers*/ /*Normal Mode*/&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;CAN_B.CR.R = 0x04DB0006; /* Configure for 8MHz OSC, 100kHz bit time */&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;for (i=0; i&amp;lt;64; i++) {&amp;nbsp;&amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;CAN_B.BUF[i].CS.B.CODE = 0; /* Inactivate all message buffers */&lt;BR /&gt;&amp;nbsp;&amp;nbsp;}&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;CAN_B.BUF[4].CS.B.IDE = 0; /* MB 4 will look for a standard ID */&lt;BR /&gt;&amp;nbsp;&amp;nbsp;CAN_B.BUF[4].ID.B.STD_ID = 555; /* MB 4 will look for ID = 555 */&lt;BR /&gt;&amp;nbsp;&amp;nbsp;CAN_B.BUF[4].CS.B.CODE = 4; /* MB 4 set to RX EMPTY */&lt;BR /&gt;&amp;nbsp;&amp;nbsp;CAN_B.RXGMASK.R = 0x1FFFFFFF; /* Global acceptance mask */&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;SIU.PCR[87].R = 0x0E2C; /* MPC555x: Configure pad as CNTXC, open drain */&lt;BR /&gt;&amp;nbsp;&amp;nbsp;SIU.PCR[88].R = 0x0D00; /* MPC555x: Configure pad as CNRXC */&lt;BR /&gt;&amp;nbsp;&amp;nbsp;CAN_B.MCR.R = 0x0000003F; /* Negate FlexCAN B halt state for 64 MB */&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;void TransmitMsg (void) {&lt;BR /&gt;&amp;nbsp;uint8_t i;&lt;BR /&gt;&amp;nbsp;&lt;BR /&gt;&amp;nbsp;/* Assumption: Message buffer CODE is INACTIVE */&lt;BR /&gt;&amp;nbsp;const uint8_t TxData[] = {"Hello World!!&amp;nbsp; \n\r"}; /* Transmit string*/&lt;BR /&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;BR /&gt;&amp;nbsp;CAN_A.BUF[0].CS.B.IDE = 0; /* Use standard ID length */&lt;BR /&gt;&amp;nbsp;CAN_A.BUF[0].ID.B.STD_ID = 555; /* Transmit ID is 555 */&lt;BR /&gt;&amp;nbsp;CAN_A.BUF[0].CS.B.RTR = 0; /* Data frame, not remote Tx request frame */&lt;BR /&gt;&amp;nbsp;CAN_A.BUF[0].CS.B.LENGTH = sizeof(TxData) -1 ; /* # bytes to transmit w/o null */&lt;BR /&gt;&amp;nbsp;&lt;BR /&gt;&amp;nbsp;for (i=0; i&amp;lt;sizeof(TxData); i++) {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;CAN_A.BUF[0].DATA.B[i] = TxData[i]; /* Data to be transmitted */&lt;BR /&gt;&amp;nbsp;}&lt;BR /&gt;&amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;CAN_A.BUF[0].CS.B.SRR = 1; /* Tx frame (not req'd for standard frame)*/&lt;BR /&gt;&amp;nbsp;&amp;nbsp;CAN_A.BUF[0].CS.B.CODE =0xC; /* Activate msg. buf. to transmit data frame */&amp;nbsp;&amp;nbsp;&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;void ReceiveMsg (void) {&lt;BR /&gt;&amp;nbsp;uint8_t j;&lt;BR /&gt;&amp;nbsp;uint32_t dummy;&amp;nbsp;&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;while (CAN_B.IFRL.B.BUF04I == 0) {}; /* MPC555x: Wait for CAN B MB 4 flag */&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;RxCODE = CAN_B.BUF[4].CS.B.CODE; /* Read CODE, ID, LENGTH, DATA, TIMESTAMP*/&lt;BR /&gt;&amp;nbsp;&amp;nbsp;RxID = CAN_B.BUF[4].ID.B.STD_ID;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;RxLENGTH = CAN_B.BUF[4].CS.B.LENGTH;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;for (j=0; j&amp;lt;RxLENGTH; j++) {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;RxDATA[j] = CAN_B.BUF[4].DATA.B[j];&lt;BR /&gt;&amp;nbsp;&amp;nbsp;}&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;RxTIMESTAMP = CAN_B.BUF[4].CS.B.TIMESTAMP;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;dummy = CAN_B.TIMER.R; /* Read TIMER to unlock message buffers */&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;/* Use 1 of the next 2 lines: */&lt;BR /&gt;&amp;nbsp;&amp;nbsp;/*CAN_B.IFLAG1.R = 0x00000010;*/ /* MPC551x: Clear CAN C MB 4 flag */&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;CAN_B.IFRL.R = 0x00000010; /* MPC555x: Clear CAN C MB 4 flag */&amp;nbsp;&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;void FlexCAN_program()&lt;BR /&gt;{&lt;BR /&gt;&amp;nbsp;volatile uint32_t IdleCtr = 0;&lt;BR /&gt;&amp;nbsp;initCAN_B(); /* Initialize FLEXCAN B &amp;amp; one of its buffers for receive*/&lt;BR /&gt;&amp;nbsp;initCAN_A(); /* Initialize FlexCAN A &amp;amp; one of its buffers for transmit*/&lt;BR /&gt;&amp;nbsp;TransmitMsg(); /* Transmit one message from a FlexCAN A buffer */&lt;BR /&gt;&amp;nbsp;ReceiveMsg(); /* Wait for the message to be received at FlexCAN B */&lt;/P&gt;&lt;P&gt;&amp;nbsp;while (1) { /* Idle loop: increment counter */&lt;BR /&gt;&amp;nbsp;&amp;nbsp;IdleCtr++;&lt;BR /&gt;&amp;nbsp;}&lt;BR /&gt;&amp;nbsp;&lt;BR /&gt;}&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 19 Mar 2010 21:59:55 GMT</pubDate>
      <guid>https://community.nxp.com/t5/S12-MagniV-Microcontrollers/MPC5554-FlexCAN-Problem/m-p/184521#M6918</guid>
      <dc:creator>EmbeddedApe</dc:creator>
      <dc:date>2010-03-19T21:59:55Z</dc:date>
    </item>
    <item>
      <title>Re: MPC5554 FlexCAN Problem</title>
      <link>https://community.nxp.com/t5/S12-MagniV-Microcontrollers/MPC5554-FlexCAN-Problem/m-p/184522#M6919</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I fixed the prorblem. Proper assignment of PCR registers, around 100ns delay before data transfer fixes the IFRL interrupt bit assertion issue.&amp;nbsp; Please ping me if any one has a similar issues.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thanks for Freescale's Mr. Alexander for all his time.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 07 Apr 2010 04:13:58 GMT</pubDate>
      <guid>https://community.nxp.com/t5/S12-MagniV-Microcontrollers/MPC5554-FlexCAN-Problem/m-p/184522#M6919</guid>
      <dc:creator>EmbeddedApe</dc:creator>
      <dc:date>2010-04-07T04:13:58Z</dc:date>
    </item>
    <item>
      <title>Re: MPC5554 FlexCAN Problem</title>
      <link>https://community.nxp.com/t5/S12-MagniV-Microcontrollers/MPC5554-FlexCAN-Problem/m-p/184523#M6920</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello sir,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I'm actually running into kind of the same problem. I'm working with a MCF5235 uC that communicates with another uC using CAN bus. Sometimes, my uC is transmitting for ever, depending of the datas I'm sending. For example:&lt;/P&gt;&lt;P&gt;- ID = 0x18DAEEFB&amp;nbsp;&amp;nbsp;&amp;nbsp; DATA = 0x02-10-7E-FF-FF-FF-FF-BB&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;= Works great!&lt;/P&gt;&lt;P&gt;- ID = 0x18DAEEFB&amp;nbsp;&amp;nbsp;&amp;nbsp; DATA = 0x02-10-7E-FF-FF-FF-FF-CC&amp;nbsp;&amp;nbsp; &amp;lt;= Transmitting for ever!&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;How did you manage to fix your bug please?&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 17 Dec 2010 05:32:19 GMT</pubDate>
      <guid>https://community.nxp.com/t5/S12-MagniV-Microcontrollers/MPC5554-FlexCAN-Problem/m-p/184523#M6920</guid>
      <dc:creator>JulienP</dc:creator>
      <dc:date>2010-12-17T05:32:19Z</dc:date>
    </item>
  </channel>
</rss>

