<?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>LPCXpresso IDE中的主题 CAN config</title>
    <link>https://community.nxp.com/t5/LPCXpresso-IDE/CAN-config/m-p/591144#M29441</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by prancius on Tue Sep 18 11:28:02 MST 2012&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;Hello,&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;I am looking info for CAN config.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;I have run "CAN on CHIP" example with little modifications and everything runs as expected.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Now i am try to find how to config BRP, PHSEG1, PHSEG2, PRSEG, SJW, SAM values?&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;I have read datacheet of LPC11C24 abd can find any nformation about registers. Seems i do not understand something.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Regards,&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Pranas&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Wed, 15 Jun 2016 21:28:19 GMT</pubDate>
    <dc:creator>lpcware</dc:creator>
    <dc:date>2016-06-15T21:28:19Z</dc:date>
    <item>
      <title>CAN config</title>
      <link>https://community.nxp.com/t5/LPCXpresso-IDE/CAN-config/m-p/591144#M29441</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by prancius on Tue Sep 18 11:28:02 MST 2012&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;Hello,&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;I am looking info for CAN config.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;I have run "CAN on CHIP" example with little modifications and everything runs as expected.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Now i am try to find how to config BRP, PHSEG1, PHSEG2, PRSEG, SJW, SAM values?&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;I have read datacheet of LPC11C24 abd can find any nformation about registers. Seems i do not understand something.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Regards,&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Pranas&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 21:28:19 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPCXpresso-IDE/CAN-config/m-p/591144#M29441</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T21:28:19Z</dc:date>
    </item>
    <item>
      <title>Re: CAN config</title>
      <link>https://community.nxp.com/t5/LPCXpresso-IDE/CAN-config/m-p/591145#M29442</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 Tue Sep 18 12:13:55 MST 2012&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;As descibed in &lt;/SPAN&gt;&lt;A href="http://"&gt;http://knowledgebase.nxp.com/showthread.php?t=2829:&lt;/A&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;There are 3 time segments:&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;#1: TSJW&amp;nbsp;&amp;nbsp; (1-4)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;#2: TSEG1&amp;nbsp; (2-16) &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;#3: TSEG2&amp;nbsp; (1-8)&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;TSEG1-2 are dividing your CAN signal (=every damned bit) to measure it.&amp;nbsp; Together they determinate your&amp;nbsp; NT (Nominal bit time) = TSEG1_val +&amp;nbsp; TSEG2_val + 3&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Note:&amp;nbsp; To avoid confusion I've added '_val' to show register values. As mentioned in UM, hardware is often reading them + 1&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Sample: BRP_val = 0&amp;nbsp;&amp;nbsp;&amp;nbsp; means BRP = 1&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Quote: Hardware interprets the value programmed into these bits as the bit value + 1. &lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Sample: Default setting is 0x2301 for 500kBit/s with 8MHz.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;As described in 'Table 185. CAN bit timing register (CANBT)' that's:&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;BRP_val&amp;nbsp;&amp;nbsp; = 1 (bit5:0)&amp;nbsp; -&amp;gt; BRP&amp;nbsp;&amp;nbsp; = 2&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;SJW_val&amp;nbsp;&amp;nbsp; = 0 (bit7:6)&amp;nbsp; -&amp;gt; SJW&amp;nbsp;&amp;nbsp; = 1&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;TSEG1_val = 3 (bit11:8) -&amp;gt; TSEG1 = 4&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;TSEG2_val = 2 (bit14:12)-&amp;gt; TSEG2 = 3&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;The trick with this settings is to generate a divisible sum with (TSEG1 + TSEG2 +1).In this sample this sum is 8 :eek:&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;To calculate your Baud rate you just have to: &lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;#1: divide your main clock by SYSAHBCLKDIV(usually 1) to get system clock&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;#2: divide your system clock by CAN clock divider register (CANCLKDIV),&amp;nbsp; which is usually used to divide to a standard clock like 8MHz. &lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;#3: divide by CAN baud rate prescaler extension register (CANBRPE), which is usually 0 (= divider:1).&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;#4: divide by (TSEG1 + TSEG2 +1)*(BRP) to get your Baud Rate&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;That's together:&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;CAN Baud rate = (main clock)/SYSAHBCLKDIV/(CANCLKDIV_val+1)/(CANBRPE_val+1)/(BRP_val+1)/(TSEG1_val + TSEG2_val +3)&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;If setting of (main clock)/SYSAHBCLKDIV/(CANCLKDIV_val+1)/(CANBRPE_val+1) is 8MHz already, calculating CANBT is easy:&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;CAN Baud rate = 8MHz / (BRP_val+1)/(TSEG1_val + TSEG2_val +3)&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Now we understand why this sum (TSEG1_val + TSEG2_val +3) is 8.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;CAN Baud rate = 8MHz / 8 / (BRP_val+1) = 1MHz / (BRP_val+1)&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;With BRP_val = 1 we get 0.5MBit/s :rolleyes:&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Next task: 1MBit/s with 12MHz &lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;#1 With CANCLKDIV=1 and CANBRPE=1 we still have 12MHz to calculate CANBT&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;#2 We select a nice (TSEG1_val + TSEG2_val +3) sum of 6:&amp;nbsp; SJW_val=0 TSEG1_val=2 TSEG2_val=1. That's CANBT = 0x12xx.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;#3 With 12MHz / 6 = 2MHz we just have to divide by 2 for 1MBit/s. So BRP=2 and BRP_val =1.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;#4 Result: CAN_BT = 0x1201 :)&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;// Initialize CAN Controller&amp;nbsp; @12MHz&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;uint32_t ClkInitTable[2] =&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;{&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; 0x00000000UL, // CANCLKDIV: /1 = 12MHz&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; 0x1201UL&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // CAN_BTR: 1000khz &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;};&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;If you want to read more about this issue, read BOSCH C_CAN User's Manual&amp;nbsp; : &lt;/SPAN&gt;&lt;A href="http://https://www.silabs.com/Support%20Documents/TechnicalDocs/Bosch_CAN_Users_Guide.pdf"&gt;https://www.silabs.com/Support%20Documents/TechnicalDocs/Bosch_CAN_Users_Guide.pdf&lt;/A&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 21:28:20 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPCXpresso-IDE/CAN-config/m-p/591145#M29442</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T21:28:20Z</dc:date>
    </item>
  </channel>
</rss>

