<?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>S32KのトピックRe: CAN communication</title>
    <link>https://community.nxp.com/t5/S32K/CAN-communication/m-p/1533815#M18156</link>
    <description>&lt;P&gt;Hi,&lt;/P&gt;
&lt;P&gt;code looks normal. It configures CAN0 to receive std ID 0x555 into MB4 and send std ID 0x511 using MB0. So if pins (PTE4/PTE5 used here) are properly connected to active transceiver and other node with same bitrate is connected to the bus, then the communication should be OK.&lt;BR /&gt;If you have S32K144 EVB, be sure it is powered by 12V supply and SBC transceiver is active.&lt;BR /&gt;Read FlexCAN's ESR1/ECR register to know if any error is detected.&lt;/P&gt;
&lt;P&gt;BR, Petr&lt;/P&gt;</description>
    <pubDate>Fri, 07 Oct 2022 09:24:20 GMT</pubDate>
    <dc:creator>PetrS</dc:creator>
    <dc:date>2022-10-07T09:24:20Z</dc:date>
    <item>
      <title>CAN communication</title>
      <link>https://community.nxp.com/t5/S32K/CAN-communication/m-p/1533729#M18149</link>
      <description>&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;I'm intend to build CAN communication, but I was not able to receive the data. I'm attaching the code here, please have a look and suggest me.&lt;/P&gt;&lt;P&gt;/*&lt;BR /&gt;* main implementation: use this 'C' sample to create your own application&lt;BR /&gt;*&lt;BR /&gt;*/&lt;BR /&gt;#include "S32K144.h"&lt;BR /&gt;//#include "FlexCAN.h"&lt;BR /&gt;#define PTD16 16&lt;BR /&gt;#if defined (__ghs__)&lt;BR /&gt;#define __INTERRUPT_SVC __interrupt&lt;BR /&gt;#define __NO_RETURN _Pragma("ghs nowarning 111")&lt;BR /&gt;#elif defined (__ICCARM__)&lt;BR /&gt;#define __INTERRUPT_SVC __svc&lt;BR /&gt;#define __NO_RETURN _Pragma("diag_suppress=Pe111")&lt;BR /&gt;#elif defined (__GNUC__)&lt;BR /&gt;#define __INTERRUPT_SVC __attribute__ ((interrupt ("SVC")))&lt;BR /&gt;#define __NO_RETURN&lt;BR /&gt;#else&lt;BR /&gt;#define __INTERRUPT_SVC&lt;BR /&gt;#define __NO_RETURN&lt;BR /&gt;#endif&lt;/P&gt;&lt;P&gt;int counter, accumulator = 0, limit_value = 1000000;&lt;BR /&gt;void SOSC_init_8MHz(void){&lt;BR /&gt;SCG-&amp;gt;SOSCDIV = 0x00000101;&lt;BR /&gt;SCG-&amp;gt;SOSCCFG = 0x00000024;&lt;BR /&gt;while(SCG-&amp;gt;SOSCCSR &amp;amp; SCG_SOSCCSR_LK_MASK);&lt;BR /&gt;SCG-&amp;gt;SOSCCSR = 0x00000001;&lt;BR /&gt;while (!(SCG-&amp;gt;SOSCCSR &amp;amp;SCG_SOSCCSR_SOSCVLD_MASK));&lt;BR /&gt;}&lt;BR /&gt;void SPLL_init_80MHz(void){&lt;BR /&gt;while(SCG-&amp;gt;SPLLCSR &amp;amp; SCG_SPLLCSR_LK_MASK);&lt;BR /&gt;SCG-&amp;gt;SPLLCSR = 0x00000000;&lt;BR /&gt;SCG-&amp;gt;SPLLDIV = 0x00000302;&lt;BR /&gt;SCG-&amp;gt;SPLLCFG = 0x00180000;&lt;BR /&gt;while(SCG-&amp;gt;SPLLCSR &amp;amp; SCG_SPLLCSR_LK_MASK);&lt;BR /&gt;SCG-&amp;gt;SPLLCSR = 0x00000001;&lt;BR /&gt;while(!(SCG-&amp;gt;SPLLCSR &amp;amp; SCG_SPLLCSR_SPLLVLD_MASK));&lt;BR /&gt;}&lt;BR /&gt;void NormalRunMode_80MHz(void){&lt;BR /&gt;SCG-&amp;gt;RCCR = SCG_RCCR_SCS(6) | SCG_RCCR_DIVCORE(0b01) | SCG_RCCR_DIVBUS(0b01) | SCG_RCCR_DIVSLOW(0b10);&lt;BR /&gt;while (((SCG-&amp;gt;CSR &amp;amp; SCG_CSR_SCS_MASK) &amp;gt;&amp;gt; SCG_CSR_SCS_SHIFT) != 6);&lt;BR /&gt;}&lt;BR /&gt;void CAN0_init(void){&lt;BR /&gt;#define MSG_BUF_SIZE 4&lt;BR /&gt;uint32_t i = 0;&lt;BR /&gt;PCC-&amp;gt;PCCn[PCC_FlexCAN0_INDEX] |= PCC_PCCn_CGC_MASK;&lt;BR /&gt;CAN0-&amp;gt;MCR |= CAN_MCR_MDIS_MASK;&lt;BR /&gt;CAN0-&amp;gt;CTRL1 &amp;amp;= ~(CAN_CTRL1_CLKSRC_MASK);&lt;BR /&gt;CAN0-&amp;gt;MCR &amp;amp;= ~CAN_MCR_MDIS_MASK;&lt;BR /&gt;while(!((CAN0-&amp;gt;MCR &amp;amp; CAN_MCR_FRZACK_MASK) &amp;gt;&amp;gt; CAN_MCR_FRZACK_SHIFT));&lt;BR /&gt;CAN0-&amp;gt;CTRL1 = 0x00DB0006;&lt;BR /&gt;for(i=0;i&amp;lt;128;i++){&lt;BR /&gt;CAN0-&amp;gt;RAMn[i] = 0;&lt;BR /&gt;}&lt;BR /&gt;for(i=0;i&amp;lt;16;i++){&lt;BR /&gt;CAN0-&amp;gt;RXIMR[i]=0xFFFFFFFF;&lt;BR /&gt;}&lt;BR /&gt;CAN0-&amp;gt;RXMGMASK = 0x1FFFFFFF;&lt;BR /&gt;CAN0-&amp;gt;RAMn[4*MSG_BUF_SIZE + 0] = 0x04000000;&lt;BR /&gt;CAN0-&amp;gt;RAMn[4*MSG_BUF_SIZE + 1] = 0x15540000;&lt;BR /&gt;//#ifdef NODE_A&lt;BR /&gt;// CAN0-&amp;gt;RAMn[4*MSG_BUF_SIZE + 1] = 0x14440000;&lt;BR /&gt;//#else&lt;BR /&gt;// CAN0-&amp;gt;RAMn[4*MSG_BUF_SIZE + 1] = 0x15540000;&lt;BR /&gt;//#endif&lt;BR /&gt;CAN0-&amp;gt;MCR = 0x0000001F;&lt;BR /&gt;while((CAN0-&amp;gt;MCR &amp;amp;&amp;amp; CAN_MCR_FRZACK_MASK) &amp;gt;&amp;gt; CAN_MCR_FRZACK_SHIFT);&lt;BR /&gt;while((CAN0-&amp;gt;MCR &amp;amp;&amp;amp; CAN_MCR_NOTRDY_MASK) &amp;gt;&amp;gt; CAN_MCR_NOTRDY_SHIFT);&lt;BR /&gt;}&lt;BR /&gt;void PORT_init(void){&lt;BR /&gt;PCC-&amp;gt;PCCn[PCC_PORTE_INDEX] |= PCC_PCCn_CGC_MASK;&lt;BR /&gt;PORTE-&amp;gt;PCR[4] |= PORT_PCR_MUX(5);&lt;BR /&gt;PORTE-&amp;gt;PCR[5] |= PORT_PCR_MUX(5);&lt;BR /&gt;PCC-&amp;gt;PCCn[PCC_PORTD_INDEX] |= PCC_PCCn_CGC_MASK;&lt;BR /&gt;PORTD-&amp;gt;PCR[16] = 0x00000100;&lt;BR /&gt;PTD-&amp;gt;PDDR |= 1&amp;lt;&amp;lt;PTD16;&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;int main(void) {&lt;BR /&gt;int counter = 0;&lt;BR /&gt;uint32_t rx_msg_cnt= 0;&lt;BR /&gt;SOSC_init_8MHz();&lt;BR /&gt;SPLL_init_80MHz();&lt;BR /&gt;NormalRunMode_80MHz();&lt;BR /&gt;CAN0_init();&lt;BR /&gt;PORT_init();&lt;BR /&gt;#ifdef NODE_A&lt;BR /&gt;CAN0_tx_msg();&lt;BR /&gt;#endif&lt;BR /&gt;for (;;) {&lt;BR /&gt;counter++;&lt;BR /&gt;if((CAN0-&amp;gt;IFLAG1 &amp;gt;&amp;gt; 4) &amp;amp; 1)&lt;BR /&gt;{&lt;BR /&gt;CAN0_rx_msg();&lt;BR /&gt;rx_msg_cnt++;&lt;BR /&gt;if(rx_msg_cnt == 1000)&lt;BR /&gt;{&lt;BR /&gt;PTD-&amp;gt;PTOR |= 1&amp;lt;&amp;lt;PTD16;&lt;BR /&gt;rx_msg_cnt = 0;&lt;BR /&gt;}&lt;BR /&gt;CAN0_tx_msg();&lt;/P&gt;&lt;P&gt;}&lt;BR /&gt;}&lt;BR /&gt;/* to avoid the warning message for GHS and IAR: statement is unreachable*/&lt;BR /&gt;__NO_RETURN&lt;BR /&gt;return 0;&lt;BR /&gt;}&lt;BR /&gt;void CAN0_tx_msg(void){&lt;BR /&gt;CAN0-&amp;gt;IFLAG1 = 0x00000001;&lt;BR /&gt;CAN0-&amp;gt;RAMn[0*MSG_BUF_SIZE + 2] = 0xA5112233;&lt;BR /&gt;CAN0-&amp;gt;RAMn[0*MSG_BUF_SIZE + 3] = 0x44556677;&lt;BR /&gt;CAN0-&amp;gt;RAMn[0*MSG_BUF_SIZE + 1] = 0x14440000;&lt;BR /&gt;CAN0-&amp;gt;RAMn[0*MSG_BUF_SIZE + 0] = 0x0C400000 | 8&amp;lt;&amp;lt; CAN_WMBn_CS_DLC_SHIFT;&lt;BR /&gt;//#ifdef NODE_A&lt;BR /&gt;// CAN0-&amp;gt;RAMn[0*MSG_BUF_SIZE + 1] = 0x15540000;&lt;BR /&gt;//#else&lt;BR /&gt;// CAN0-&amp;gt;RAMn[0*MSG_BUF_SIZE + 1] = 0X14440000;&lt;BR /&gt;//#endif&lt;BR /&gt;// CAN0-&amp;gt;RAMn[0*MSG_BUF_SIZE + 1] = 0x0C400000 | 8&amp;lt;&amp;lt; CAN_WMBn_CS_DLC_SHIFT;&lt;BR /&gt;}&lt;BR /&gt;void CAN0_rx_msg(void){&lt;BR /&gt;uint8_t j;&lt;BR /&gt;uint32_t RxCODE;&lt;BR /&gt;uint32_t RxID;&lt;BR /&gt;uint32_t RxLENGTH;&lt;BR /&gt;uint32_t RxDATA[2];&lt;BR /&gt;uint32_t RxTIMESTAMP;&lt;BR /&gt;RxCODE = (CAN0-&amp;gt;RAMn[4*MSG_BUF_SIZE + 0] &amp;amp; 0x070000) &amp;gt;&amp;gt; 24;&lt;BR /&gt;RxID = (CAN0-&amp;gt;RAMn[4*MSG_BUF_SIZE + 1] &amp;amp; CAN_WMBn_ID_ID_MASK) &amp;gt;&amp;gt; CAN_WMBn_ID_ID_SHIFT;&lt;BR /&gt;RxLENGTH = (CAN0-&amp;gt;RAMn[4*MSG_BUF_SIZE + 0] &amp;amp; CAN_WMBn_CS_DLC_MASK) &amp;gt;&amp;gt; CAN_WMBn_CS_DLC_SHIFT;&lt;BR /&gt;for (j=0;j&amp;lt;2;j++){&lt;BR /&gt;RxDATA[j] = CAN0-&amp;gt;RAMn[4*MSG_BUF_SIZE + 2 + j];&lt;BR /&gt;}&lt;BR /&gt;RxTIMESTAMP = (CAN0-&amp;gt;RAMn[0*MSG_BUF_SIZE + 0] &amp;amp; 0X000FFFFF);&lt;BR /&gt;(void)CAN0-&amp;gt;TIMER;&lt;BR /&gt;CAN0-&amp;gt;IFLAG1 = 0x00000010;&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;__INTERRUPT_SVC void SVC_Handler() {&lt;BR /&gt;accumulator += counter;&lt;BR /&gt;}&lt;/P&gt;</description>
      <pubDate>Fri, 07 Oct 2022 05:57:06 GMT</pubDate>
      <guid>https://community.nxp.com/t5/S32K/CAN-communication/m-p/1533729#M18149</guid>
      <dc:creator>AnilKumar409</dc:creator>
      <dc:date>2022-10-07T05:57:06Z</dc:date>
    </item>
    <item>
      <title>Re: CAN communication</title>
      <link>https://community.nxp.com/t5/S32K/CAN-communication/m-p/1533815#M18156</link>
      <description>&lt;P&gt;Hi,&lt;/P&gt;
&lt;P&gt;code looks normal. It configures CAN0 to receive std ID 0x555 into MB4 and send std ID 0x511 using MB0. So if pins (PTE4/PTE5 used here) are properly connected to active transceiver and other node with same bitrate is connected to the bus, then the communication should be OK.&lt;BR /&gt;If you have S32K144 EVB, be sure it is powered by 12V supply and SBC transceiver is active.&lt;BR /&gt;Read FlexCAN's ESR1/ECR register to know if any error is detected.&lt;/P&gt;
&lt;P&gt;BR, Petr&lt;/P&gt;</description>
      <pubDate>Fri, 07 Oct 2022 09:24:20 GMT</pubDate>
      <guid>https://community.nxp.com/t5/S32K/CAN-communication/m-p/1533815#M18156</guid>
      <dc:creator>PetrS</dc:creator>
      <dc:date>2022-10-07T09:24:20Z</dc:date>
    </item>
  </channel>
</rss>

