<?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 CAN - Self test in LPCXpresso IDE</title>
    <link>https://community.nxp.com/t5/LPCXpresso-IDE/CAN-Self-test/m-p/548196#M10416</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by rahulvasist on Sat Oct 08 10:05:27 MST 2011&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;Hi,&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;I´m trying to implement CAN on lpc1769. I´ve configured the CAN controller in local self test mode. I´ve connected the TD1 and RD1 through a 1K resistor to simulate a transceiver, but I´m not receiving interrupts for reception. I´ve attached the code below. Can anyone please help me sort this out?&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Thank You in advance&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;TABLE border="1"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD bgcolor="#cacaca"&gt; &lt;PRE&gt;
#include "LPC17xx.h¨
unsigned int rxBuffer[2];

void canTx(unsigned int id, unsigned int datalen, unsigned int a[])
{
&amp;nbsp;&amp;nbsp;&amp;nbsp; unsigned int len;

&amp;nbsp;&amp;nbsp;&amp;nbsp; while(!(LPC_CAN1-&amp;gt;SR &amp;amp; 0b0100));
&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_CAN1-&amp;gt;TFI1= (datalen&amp;lt;&amp;lt;16);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //to set the DLC

&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_CAN1-&amp;gt;TID1= id;&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; //to set the message id

&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_CAN1-&amp;gt;TDA1 = a[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; //data
&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_CAN1-&amp;gt;TDB1 = a[1];

&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_CAN1-&amp;gt;CMR |= 0b1;
}


void CAN_IRQHandler(void)
{
&amp;nbsp;&amp;nbsp;&amp;nbsp; unsigned int status;
&amp;nbsp;&amp;nbsp;&amp;nbsp; status=LPC_CAN1-&amp;gt;ICR;

&amp;nbsp;&amp;nbsp;&amp;nbsp; switch(status)
&amp;nbsp;&amp;nbsp;&amp;nbsp; {
&amp;nbsp;&amp;nbsp;&amp;nbsp; case 1: rxBuffer[0]=LPC_CAN1-&amp;gt;RDA;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; rxBuffer[1]=LPC_CAN1-&amp;gt;RDB;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_CAN1-&amp;gt;CMR |= (1&amp;lt;&amp;lt;2);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; break;

&amp;nbsp;&amp;nbsp;&amp;nbsp; case 0b10: break;

&amp;nbsp;&amp;nbsp;&amp;nbsp; }

}




int main(void) {
unsigned int data[]={0xaa, 0xbb}, test;
LPC_SC-&amp;gt;PCONP |= (1&amp;lt;&amp;lt;13);
LPC_PINCON-&amp;gt;PINSEL0 |=(0b0101);

LPC_CAN1-&amp;gt;MOD=0b01;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //to set in reset mode
LPC_CAN1-&amp;gt;MOD |= 0b000100;&amp;nbsp; //to set the self test bit
test = LPC_CAN1-&amp;gt;MOD;

LPC_CAN1-&amp;gt;CMR=0b00110000;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //stb1 selected and self reception enabled

LPC_CAN1-&amp;gt;IER = 0b001;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //ri enabled

LPC_CAN1-&amp;gt;MOD &amp;amp;= ~(0b1);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //setting the can in operating mode

LPC_CANAF-&amp;gt;AFMR = 0b10;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //AF in bypass mode
NVIC_EnableIRQ(CAN_IRQn);

while ( !(LPC_CAN1-&amp;gt;GSR &amp;amp; (1 &amp;lt;&amp;lt; 3)) );
canTx(0x00, 8, data);


while(1);
&amp;nbsp;&amp;nbsp;&amp;nbsp; 

}&lt;/PRE&gt; &lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Wed, 15 Jun 2016 23:24:52 GMT</pubDate>
    <dc:creator>lpcware</dc:creator>
    <dc:date>2016-06-15T23:24:52Z</dc:date>
    <item>
      <title>CAN - Self test</title>
      <link>https://community.nxp.com/t5/LPCXpresso-IDE/CAN-Self-test/m-p/548196#M10416</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by rahulvasist on Sat Oct 08 10:05:27 MST 2011&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;Hi,&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;I´m trying to implement CAN on lpc1769. I´ve configured the CAN controller in local self test mode. I´ve connected the TD1 and RD1 through a 1K resistor to simulate a transceiver, but I´m not receiving interrupts for reception. I´ve attached the code below. Can anyone please help me sort this out?&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Thank You in advance&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;TABLE border="1"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD bgcolor="#cacaca"&gt; &lt;PRE&gt;
#include "LPC17xx.h¨
unsigned int rxBuffer[2];

void canTx(unsigned int id, unsigned int datalen, unsigned int a[])
{
&amp;nbsp;&amp;nbsp;&amp;nbsp; unsigned int len;

&amp;nbsp;&amp;nbsp;&amp;nbsp; while(!(LPC_CAN1-&amp;gt;SR &amp;amp; 0b0100));
&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_CAN1-&amp;gt;TFI1= (datalen&amp;lt;&amp;lt;16);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //to set the DLC

&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_CAN1-&amp;gt;TID1= id;&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; //to set the message id

&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_CAN1-&amp;gt;TDA1 = a[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; //data
&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_CAN1-&amp;gt;TDB1 = a[1];

&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_CAN1-&amp;gt;CMR |= 0b1;
}


void CAN_IRQHandler(void)
{
&amp;nbsp;&amp;nbsp;&amp;nbsp; unsigned int status;
&amp;nbsp;&amp;nbsp;&amp;nbsp; status=LPC_CAN1-&amp;gt;ICR;

&amp;nbsp;&amp;nbsp;&amp;nbsp; switch(status)
&amp;nbsp;&amp;nbsp;&amp;nbsp; {
&amp;nbsp;&amp;nbsp;&amp;nbsp; case 1: rxBuffer[0]=LPC_CAN1-&amp;gt;RDA;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; rxBuffer[1]=LPC_CAN1-&amp;gt;RDB;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_CAN1-&amp;gt;CMR |= (1&amp;lt;&amp;lt;2);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; break;

&amp;nbsp;&amp;nbsp;&amp;nbsp; case 0b10: break;

&amp;nbsp;&amp;nbsp;&amp;nbsp; }

}




int main(void) {
unsigned int data[]={0xaa, 0xbb}, test;
LPC_SC-&amp;gt;PCONP |= (1&amp;lt;&amp;lt;13);
LPC_PINCON-&amp;gt;PINSEL0 |=(0b0101);

LPC_CAN1-&amp;gt;MOD=0b01;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //to set in reset mode
LPC_CAN1-&amp;gt;MOD |= 0b000100;&amp;nbsp; //to set the self test bit
test = LPC_CAN1-&amp;gt;MOD;

LPC_CAN1-&amp;gt;CMR=0b00110000;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //stb1 selected and self reception enabled

LPC_CAN1-&amp;gt;IER = 0b001;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //ri enabled

LPC_CAN1-&amp;gt;MOD &amp;amp;= ~(0b1);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //setting the can in operating mode

LPC_CANAF-&amp;gt;AFMR = 0b10;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //AF in bypass mode
NVIC_EnableIRQ(CAN_IRQn);

while ( !(LPC_CAN1-&amp;gt;GSR &amp;amp; (1 &amp;lt;&amp;lt; 3)) );
canTx(0x00, 8, data);


while(1);
&amp;nbsp;&amp;nbsp;&amp;nbsp; 

}&lt;/PRE&gt; &lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 23:24:52 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPCXpresso-IDE/CAN-Self-test/m-p/548196#M10416</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T23:24:52Z</dc:date>
    </item>
    <item>
      <title>Re: CAN - Self test</title>
      <link>https://community.nxp.com/t5/LPCXpresso-IDE/CAN-Self-test/m-p/548197#M10417</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by Ex-Zero on Sat Oct 08 12:47:33 MST 2011&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;Your code includes a lot of nonsense :), but it fails because you are not transmitting with 'Self Reception Request' :eek:&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;TABLE border="1"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD bgcolor="#cacaca"&gt; &lt;PRE&gt;
 LPC_CAN1-&amp;gt;CMR&amp;nbsp; = (1&amp;lt;&amp;lt;4);&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; //send with self reception
&lt;/PRE&gt; &lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;SPAN&gt;Note: CMR registers are WO, so don't read and OR them :eek:&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 23:24:53 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPCXpresso-IDE/CAN-Self-test/m-p/548197#M10417</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T23:24:53Z</dc:date>
    </item>
    <item>
      <title>Re: CAN - Self test</title>
      <link>https://community.nxp.com/t5/LPCXpresso-IDE/CAN-Self-test/m-p/548198#M10418</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by rahulvasist on Sat Oct 08 21:06:40 MST 2011&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;I've set the SRR bit. The code-&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;LPC_CAN1-&amp;gt;CMR=0b00110000 &lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;which is the 7th line in main funciton does that.&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 23:24:54 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPCXpresso-IDE/CAN-Self-test/m-p/548198#M10418</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T23:24:54Z</dc:date>
    </item>
    <item>
      <title>Re: CAN - Self test</title>
      <link>https://community.nxp.com/t5/LPCXpresso-IDE/CAN-Self-test/m-p/548199#M10419</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by Ex-Zero on Sat Oct 08 21:40:47 MST 2011&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;Are you kidding? What do you think is:&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;TABLE border="1"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD bgcolor="#cacaca"&gt; &lt;PRE&gt;
 LPC_CAN1-&amp;gt;CMR |= 0b1; 
&lt;/PRE&gt; &lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;SPAN&gt;in your TX routine doing?&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Did you try to change that line to:&lt;/SPAN&gt;&lt;BR /&gt;&lt;TABLE border="1"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD bgcolor="#cacaca"&gt; &lt;PRE&gt;
LPC_CAN1-&amp;gt;CMR&amp;nbsp; = (1&amp;lt;&amp;lt;4);&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; //send with self reception
&lt;/PRE&gt; &lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 23:24:54 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPCXpresso-IDE/CAN-Self-test/m-p/548199#M10419</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T23:24:54Z</dc:date>
    </item>
    <item>
      <title>Re: CAN - Self test</title>
      <link>https://community.nxp.com/t5/LPCXpresso-IDE/CAN-Self-test/m-p/548200#M10420</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by rahulvasist on Sat Oct 08 22:58:45 MST 2011&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;Ya, got it thanks. I had misunderstood the datasheet. I thought both SRR and TR bits must be set.&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 23:24:55 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPCXpresso-IDE/CAN-Self-test/m-p/548200#M10420</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T23:24:55Z</dc:date>
    </item>
  </channel>
</rss>

