<?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>LPC MicrocontrollersのトピックLPC11C24 can't receive message</title>
    <link>https://community.nxp.com/t5/LPC-Microcontrollers/LPC11C24-can-t-receive-message/m-p/538555#M11697</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by Novice on Thu Oct 10 22:27:06 MST 2013&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;hello,&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; everybody ,Now,i get some trouble .i use lpc11c24 and lpc4078 to communicate with CAN, My problem is lpc4078 can rightly received message by ISR, but lpc11c24 can't receive message .I am not use CANOPEN . The qusetion is&amp;nbsp; RXOK flag of LPC_CAN-&amp;gt;STAT register bit is set,but the INT register is not right(always 0x0000 or 0x8000). if i disable the SIE of CANCNTL register ,the can't enter the interrupt(ISR ).&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I think some of register are not setting right,but i can't find it.and also , how to set the basic mode exception the CANTEST register.If i use IF2 interface to receive message ,the following register setting is enough? this project is based on LPC11C14. I hope anybody can resolve my question.thanks very much.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;best regards!&lt;/SPAN&gt;&lt;BR /&gt;&lt;DIV class="j-rte-table"&gt;&lt;TABLE border="1"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD bgcolor="#cacaca" style="border:1px solid black;background-color:#cacaca;border:1px solid black;background-color:#cacaca;background-color:#cacaca;border:1px solid black;"&gt; &lt;PRE&gt;

//////////////////////////////////////////////////////////////Init///////////////////////////////////////
void CAN_Init( uint32_t CANBitClk )
{
&amp;nbsp; LPC_SYSCON-&amp;gt;PRESETCTRL |= (0x1&amp;lt;&amp;lt;3);
&amp;nbsp; LPC_SYSCON-&amp;gt;SYSAHBCLKCTRL |= (1&amp;lt;&amp;lt;17);

&amp;nbsp; /* The USB D- and CAN RX share the dedicated pin. The USB D+ 
&amp;nbsp; and CAN TX share the dedicated pin. so, no IO configuration is 
&amp;nbsp; needed for CAN. */
&amp;nbsp; if ( !(LPC_CAN-&amp;gt;CNTL &amp;amp; CTRL_INIT) )
&amp;nbsp; {
/* If it's in normal operation already, stop it, reconfigure 
everything first, then restart. */
LPC_CAN-&amp;gt;CNTL |= CTRL_INIT;/* Default state */
&amp;nbsp; }

#if USE_DEFAULT_BIT_TIMING
&amp;nbsp; /* AHB clock is 48Mhz. The CAN clock divider is within CAN block, 
&amp;nbsp; set it to 8Mhz for now. Thus, default bit timing doesn't need to 
&amp;nbsp; be touched. */
&amp;nbsp; LPC_CAN-&amp;gt;CLKDIV = 0x05;/* Divided by 6 */
&amp;nbsp;&amp;nbsp; /* Start configuring bit timing */
&amp;nbsp; LPC_CAN-&amp;gt;CNTL |= CTRL_CCE;
&amp;nbsp; //LPC_CAN-&amp;gt;BT = 0x2301;
LPC_CAN-&amp;gt;BT = BITRATE250K8MHZ;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //250K 8M
&amp;nbsp; LPC_CAN-&amp;gt;BRPE = 0x0000;
&amp;nbsp; /* Stop configuring bit timing */
&amp;nbsp; LPC_CAN-&amp;gt;CNTL &amp;amp;= ~CTRL_CCE;
#else
&amp;nbsp; /* Be very careful with this setting because it's related to
&amp;nbsp; the input bitclock setting value in CANBitClk. */
&amp;nbsp; /* popular CAN clock setting assuming AHB clock is 48Mhz:
&amp;nbsp; CLKDIV = 1, CAN clock is 48Mhz/2 = 24Mhz
&amp;nbsp; CLKDIV = 2, CAN clock is 48Mhz/3 = 16Mhz
&amp;nbsp; CLKDIV = 3, CAN clock is 48Mhz/4 = 12Mhz
&amp;nbsp; CLKDIV = 5, CAN clock is 48Mhz/6 = 8Mhz */

&amp;nbsp; /* AHB clock is 48Mhz, the CAN clock is 1/6 AHB clock = 8Mhz */
&amp;nbsp; LPC_CAN-&amp;gt;CLKDIV = 0x05;/* Divided by 6 */
&amp;nbsp; 
&amp;nbsp; /* Start configuring bit timing */
&amp;nbsp; LPC_CAN-&amp;gt;CNTL |= CTRL_CCE;
&amp;nbsp; LPC_CAN-&amp;gt;BT = CANBitClk;
&amp;nbsp; LPC_CAN-&amp;gt;BRPE = 0x0000;
&amp;nbsp; /* Stop configuring bit timing */
&amp;nbsp; LPC_CAN-&amp;gt;CNTL &amp;amp;= ~CTRL_CCE;
#endif

&amp;nbsp; /* Initialization finishes, normal operation now. */
&amp;nbsp; LPC_CAN-&amp;gt;CNTL &amp;amp;= ~CTRL_INIT;
&amp;nbsp; while ( LPC_CAN-&amp;gt;CNTL &amp;amp; CTRL_INIT );

#if (LOOPBACK_MODE | BASIC_MODE)
&amp;nbsp; //LPC_CAN-&amp;gt;CNTL |= CTRL_TEST;
&amp;nbsp; LPC_CAN-&amp;gt;TEST &amp;amp;= ~((0x1&amp;lt;&amp;lt;2)|(0x1&amp;lt;&amp;lt;3)|(0x1&amp;lt;&amp;lt;4));
#if LOOPBACK_MODE
&amp;nbsp; LPC_CAN-&amp;gt;TEST |= (0x1&amp;lt;&amp;lt;4);
#endif
#if BASIC_MODE
 // LPC_CAN-&amp;gt;TEST |= (0x1&amp;lt;&amp;lt;2);
#endif
#endif&amp;nbsp; 

#if !BASIC_MODE
&amp;nbsp; /* Below is a critical module to configure all the messages */
&amp;nbsp; /* It's organized in such a way that:
&amp;nbsp;&amp;nbsp;&amp;nbsp; obj(x+1)standardreceive
&amp;nbsp;&amp;nbsp;&amp;nbsp; obj(x+2)standardtransmit 
&amp;nbsp;&amp;nbsp;&amp;nbsp; obj(x+3)extendedreceive
&amp;nbsp;&amp;nbsp;&amp;nbsp; obj(x+4)extendedtransmitwhere x is 0 to 7
&amp;nbsp;&amp;nbsp;&amp;nbsp; obj31 is not used. 
obj32 is for remote date request test only */
&amp;nbsp; CAN_ConfigureMessages();
#endif
 // CAN_ConfigureMessages();
#if !POLLING
&amp;nbsp; /* Enable the CAN Interrupt */
&amp;nbsp; NVIC_EnableIRQ(CAN_IRQn);
LPC_CAN-&amp;gt;STAT = 0;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* reset CAN status register */
&amp;nbsp; /* By default, auto TX is enabled, enable all related interrupts */
&amp;nbsp;&amp;nbsp; LPC_CAN-&amp;gt;CNTL |= (CTRL_IE|CTRL_SIE|CTRL_EIE|CTRL_DAR);
&amp;nbsp; //LPC_CAN-&amp;gt;CNTL |= (CTRL_IE|CTRL_EIE|CTRL_DAR);
LPC_CAN-&amp;gt;IF2_MSK1 = 0X0000;
LPC_CAN-&amp;gt;IF2_MSK2 = 0&amp;lt;&amp;lt;2;
LPC_CAN-&amp;gt;IF2_ARB1 = 0X0000;
LPC_CAN-&amp;gt;IF2_MCTRL |= RXIE|UMSK;
#endif
&amp;nbsp; return;
}
&lt;/PRE&gt; &lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/DIV&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;P&gt;&lt;STRONG&gt;Original Attachment has been moved to: &lt;A _jive_internal="true" href="https://community.nxp.com/docs/DOC-338129" rel="nofollow noopener noreferrer" target="_blank"&gt;LPC11c24Proj_1.rar&lt;/A&gt;&lt;/STRONG&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Wed, 15 Jun 2016 19:38:22 GMT</pubDate>
    <dc:creator>lpcware</dc:creator>
    <dc:date>2016-06-15T19:38:22Z</dc:date>
    <item>
      <title>LPC11C24 can't receive message</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/LPC11C24-can-t-receive-message/m-p/538555#M11697</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by Novice on Thu Oct 10 22:27:06 MST 2013&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;hello,&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; everybody ,Now,i get some trouble .i use lpc11c24 and lpc4078 to communicate with CAN, My problem is lpc4078 can rightly received message by ISR, but lpc11c24 can't receive message .I am not use CANOPEN . The qusetion is&amp;nbsp; RXOK flag of LPC_CAN-&amp;gt;STAT register bit is set,but the INT register is not right(always 0x0000 or 0x8000). if i disable the SIE of CANCNTL register ,the can't enter the interrupt(ISR ).&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I think some of register are not setting right,but i can't find it.and also , how to set the basic mode exception the CANTEST register.If i use IF2 interface to receive message ,the following register setting is enough? this project is based on LPC11C14. I hope anybody can resolve my question.thanks very much.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;best regards!&lt;/SPAN&gt;&lt;BR /&gt;&lt;DIV class="j-rte-table"&gt;&lt;TABLE border="1"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD bgcolor="#cacaca" style="border:1px solid black;background-color:#cacaca;border:1px solid black;background-color:#cacaca;background-color:#cacaca;border:1px solid black;"&gt; &lt;PRE&gt;

//////////////////////////////////////////////////////////////Init///////////////////////////////////////
void CAN_Init( uint32_t CANBitClk )
{
&amp;nbsp; LPC_SYSCON-&amp;gt;PRESETCTRL |= (0x1&amp;lt;&amp;lt;3);
&amp;nbsp; LPC_SYSCON-&amp;gt;SYSAHBCLKCTRL |= (1&amp;lt;&amp;lt;17);

&amp;nbsp; /* The USB D- and CAN RX share the dedicated pin. The USB D+ 
&amp;nbsp; and CAN TX share the dedicated pin. so, no IO configuration is 
&amp;nbsp; needed for CAN. */
&amp;nbsp; if ( !(LPC_CAN-&amp;gt;CNTL &amp;amp; CTRL_INIT) )
&amp;nbsp; {
/* If it's in normal operation already, stop it, reconfigure 
everything first, then restart. */
LPC_CAN-&amp;gt;CNTL |= CTRL_INIT;/* Default state */
&amp;nbsp; }

#if USE_DEFAULT_BIT_TIMING
&amp;nbsp; /* AHB clock is 48Mhz. The CAN clock divider is within CAN block, 
&amp;nbsp; set it to 8Mhz for now. Thus, default bit timing doesn't need to 
&amp;nbsp; be touched. */
&amp;nbsp; LPC_CAN-&amp;gt;CLKDIV = 0x05;/* Divided by 6 */
&amp;nbsp;&amp;nbsp; /* Start configuring bit timing */
&amp;nbsp; LPC_CAN-&amp;gt;CNTL |= CTRL_CCE;
&amp;nbsp; //LPC_CAN-&amp;gt;BT = 0x2301;
LPC_CAN-&amp;gt;BT = BITRATE250K8MHZ;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //250K 8M
&amp;nbsp; LPC_CAN-&amp;gt;BRPE = 0x0000;
&amp;nbsp; /* Stop configuring bit timing */
&amp;nbsp; LPC_CAN-&amp;gt;CNTL &amp;amp;= ~CTRL_CCE;
#else
&amp;nbsp; /* Be very careful with this setting because it's related to
&amp;nbsp; the input bitclock setting value in CANBitClk. */
&amp;nbsp; /* popular CAN clock setting assuming AHB clock is 48Mhz:
&amp;nbsp; CLKDIV = 1, CAN clock is 48Mhz/2 = 24Mhz
&amp;nbsp; CLKDIV = 2, CAN clock is 48Mhz/3 = 16Mhz
&amp;nbsp; CLKDIV = 3, CAN clock is 48Mhz/4 = 12Mhz
&amp;nbsp; CLKDIV = 5, CAN clock is 48Mhz/6 = 8Mhz */

&amp;nbsp; /* AHB clock is 48Mhz, the CAN clock is 1/6 AHB clock = 8Mhz */
&amp;nbsp; LPC_CAN-&amp;gt;CLKDIV = 0x05;/* Divided by 6 */
&amp;nbsp; 
&amp;nbsp; /* Start configuring bit timing */
&amp;nbsp; LPC_CAN-&amp;gt;CNTL |= CTRL_CCE;
&amp;nbsp; LPC_CAN-&amp;gt;BT = CANBitClk;
&amp;nbsp; LPC_CAN-&amp;gt;BRPE = 0x0000;
&amp;nbsp; /* Stop configuring bit timing */
&amp;nbsp; LPC_CAN-&amp;gt;CNTL &amp;amp;= ~CTRL_CCE;
#endif

&amp;nbsp; /* Initialization finishes, normal operation now. */
&amp;nbsp; LPC_CAN-&amp;gt;CNTL &amp;amp;= ~CTRL_INIT;
&amp;nbsp; while ( LPC_CAN-&amp;gt;CNTL &amp;amp; CTRL_INIT );

#if (LOOPBACK_MODE | BASIC_MODE)
&amp;nbsp; //LPC_CAN-&amp;gt;CNTL |= CTRL_TEST;
&amp;nbsp; LPC_CAN-&amp;gt;TEST &amp;amp;= ~((0x1&amp;lt;&amp;lt;2)|(0x1&amp;lt;&amp;lt;3)|(0x1&amp;lt;&amp;lt;4));
#if LOOPBACK_MODE
&amp;nbsp; LPC_CAN-&amp;gt;TEST |= (0x1&amp;lt;&amp;lt;4);
#endif
#if BASIC_MODE
 // LPC_CAN-&amp;gt;TEST |= (0x1&amp;lt;&amp;lt;2);
#endif
#endif&amp;nbsp; 

#if !BASIC_MODE
&amp;nbsp; /* Below is a critical module to configure all the messages */
&amp;nbsp; /* It's organized in such a way that:
&amp;nbsp;&amp;nbsp;&amp;nbsp; obj(x+1)standardreceive
&amp;nbsp;&amp;nbsp;&amp;nbsp; obj(x+2)standardtransmit 
&amp;nbsp;&amp;nbsp;&amp;nbsp; obj(x+3)extendedreceive
&amp;nbsp;&amp;nbsp;&amp;nbsp; obj(x+4)extendedtransmitwhere x is 0 to 7
&amp;nbsp;&amp;nbsp;&amp;nbsp; obj31 is not used. 
obj32 is for remote date request test only */
&amp;nbsp; CAN_ConfigureMessages();
#endif
 // CAN_ConfigureMessages();
#if !POLLING
&amp;nbsp; /* Enable the CAN Interrupt */
&amp;nbsp; NVIC_EnableIRQ(CAN_IRQn);
LPC_CAN-&amp;gt;STAT = 0;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* reset CAN status register */
&amp;nbsp; /* By default, auto TX is enabled, enable all related interrupts */
&amp;nbsp;&amp;nbsp; LPC_CAN-&amp;gt;CNTL |= (CTRL_IE|CTRL_SIE|CTRL_EIE|CTRL_DAR);
&amp;nbsp; //LPC_CAN-&amp;gt;CNTL |= (CTRL_IE|CTRL_EIE|CTRL_DAR);
LPC_CAN-&amp;gt;IF2_MSK1 = 0X0000;
LPC_CAN-&amp;gt;IF2_MSK2 = 0&amp;lt;&amp;lt;2;
LPC_CAN-&amp;gt;IF2_ARB1 = 0X0000;
LPC_CAN-&amp;gt;IF2_MCTRL |= RXIE|UMSK;
#endif
&amp;nbsp; return;
}
&lt;/PRE&gt; &lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/DIV&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;P&gt;&lt;STRONG&gt;Original Attachment has been moved to: &lt;A _jive_internal="true" href="https://community.nxp.com/docs/DOC-338129" rel="nofollow noopener noreferrer" target="_blank"&gt;LPC11c24Proj_1.rar&lt;/A&gt;&lt;/STRONG&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 19:38:22 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/LPC11C24-can-t-receive-message/m-p/538555#M11697</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T19:38:22Z</dc:date>
    </item>
  </channel>
</rss>

