<?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のトピックRe:  Communicate two LPC54618 cards</title>
    <link>https://community.nxp.com/t5/LPC-Microcontrollers/Communicate-two-LPC54618-cards/m-p/796721#M32058</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;What have &lt;STRONG&gt;you&lt;/STRONG&gt; done to debug this ?? What happens when "the communication stops" ??&lt;/P&gt;&lt;P&gt;(and, have you remembered termination resistors etc ?)&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Sat, 18 Aug 2018 17:30:03 GMT</pubDate>
    <dc:creator>carstengroen</dc:creator>
    <dc:date>2018-08-18T17:30:03Z</dc:date>
    <item>
      <title>Communicate two LPC54618 cards</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/Communicate-two-LPC54618-cards/m-p/796719#M32056</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I have written a code set in below to communicate two LPC54618 CAN-FD cards. After the running code, the messages are sending and receiving correctly for both cards. However, after a few minutes, the communication stops (I don't know why). Is there anybody help me to solve this issue kindly? Thanks.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;#include "board.h"&lt;BR /&gt;#include "fsl_debug_console.h"&lt;BR /&gt;#include "fsl_gpio.h"&lt;BR /&gt;#include "can.h"&lt;/P&gt;&lt;P&gt;#include "pin_mux.h"&lt;BR /&gt;#include &amp;lt;stdbool.h&amp;gt;&lt;BR /&gt;/*******************************************************************************&lt;BR /&gt; * Definitions&lt;BR /&gt; ******************************************************************************/&lt;/P&gt;&lt;P&gt;#define APP_BOARD_TEST_GPIO_PORT1 BOARD_LED3_GPIO_PORT&lt;BR /&gt;#define APP_BOARD_TEST_GPIO_PORT2 BOARD_LED1_GPIO_PORT&lt;BR /&gt;#define APP_BOARD_TEST_GPIO_PORT3 BOARD_LED2_GPIO_PORT&lt;BR /&gt;#define APP_BOARD_TEST_LED1_PIN BOARD_LED3_GPIO_PIN&lt;BR /&gt;#define APP_BOARD_TEST_LED2_PIN BOARD_LED1_GPIO_PIN&lt;BR /&gt;#define APP_BOARD_TEST_LED3_PIN BOARD_LED2_GPIO_PIN&lt;/P&gt;&lt;P&gt;/*******************************************************************************&lt;BR /&gt; * Prototypes&lt;BR /&gt; ******************************************************************************/&lt;/P&gt;&lt;P&gt;/*******************************************************************************&lt;BR /&gt; * Variables&lt;BR /&gt; ******************************************************************************/&lt;/P&gt;&lt;P&gt;#define TICKRATE_HZ (1000) /* 1000 ticks per second */&lt;BR /&gt;#define TRANSMIT_PERIOD (100) /* milliseconds between transmission */&lt;/P&gt;&lt;P&gt;static volatile uint32_t gTimCnt = 0; /* incremented every millisecond */&lt;/P&gt;&lt;P&gt;/*******************************************************************************&lt;BR /&gt; * Code&lt;BR /&gt; ******************************************************************************/&lt;/P&gt;&lt;P&gt;/*!&lt;BR /&gt; * @brief Keeps track of time&lt;BR /&gt; */&lt;BR /&gt;void SysTick_Handler(void)&lt;BR /&gt;{&lt;BR /&gt; // count milliseconds&lt;BR /&gt; gTimCnt++;&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;/*!&lt;BR /&gt; * @brief Main function&lt;BR /&gt; */&lt;BR /&gt;int main(void)&lt;BR /&gt;{&lt;BR /&gt; can_config_t config;&lt;BR /&gt; can_frame_t txmsg = { 0 };&lt;BR /&gt; can_frame_t rxmsg = { 0 };&lt;BR /&gt; int b;&lt;BR /&gt; bool message_transmitted = false;&lt;BR /&gt; uint32_t next_id = 0x100;&lt;/P&gt;&lt;P&gt;/* Define the init structure for the output LED pin*/&lt;BR /&gt; gpio_pin_config_t led_config = {&lt;BR /&gt; kGPIO_DigitalOutput, 0,&lt;BR /&gt; };&lt;/P&gt;&lt;P&gt;/* Board pin, clock, debug console init */&lt;BR /&gt; /* attach 12 MHz clock to FLEXCOMM0 (debug console) */&lt;BR /&gt; CLOCK_AttachClk(BOARD_DEBUG_UART_CLK_ATTACH);&lt;BR /&gt; CLOCK_EnableClock(kCLOCK_Gpio0);&lt;BR /&gt; CLOCK_EnableClock(kCLOCK_Gpio1);&lt;BR /&gt; CLOCK_EnableClock(kCLOCK_Gpio2);&lt;BR /&gt; CLOCK_EnableClock(kCLOCK_Gpio3);&lt;/P&gt;&lt;P&gt;BOARD_InitPins();&lt;BR /&gt; BOARD_BootClockFROHF48M();&lt;BR /&gt; BOARD_InitDebugConsole();&lt;/P&gt;&lt;P&gt;/* configure for 4Mbps data 1Mbps nominal, CAN-FD */&lt;BR /&gt; CAN_GetDefaultConfig(&amp;amp;config);&lt;BR /&gt; config.baseAddress = 0x20010000;&lt;BR /&gt; config.nominalBaudRate = 1000000;&lt;BR /&gt; config.dataBaudRate = 4000000;&lt;BR /&gt; config.timestampClock_Hz = 100000;&lt;BR /&gt; CAN_Init(CAN0, &amp;amp;config, SystemCoreClock);&lt;BR /&gt; CAN_Init(CAN1, &amp;amp;config, SystemCoreClock);&lt;/P&gt;&lt;P&gt;/* receive 0x100 in CAN1 rx message buffer 0 by setting mask 0 */&lt;BR /&gt; CAN_SetRxIndividualMask(CAN1, 0, CAN_RX_MB_STD(0x100, 0));&lt;/P&gt;&lt;P&gt;/* receive 0x00000200 (29-bit id) in CAN1 rx message buffer 1 by setting mask 1 */&lt;BR /&gt; CAN_SetRxExtIndividualMask(CAN1, 1, CAN_RX_MB_EXT_LOW(0x200, 1), CAN_RX_MB_EXT_HIGH(0x200, 1));&lt;/P&gt;&lt;P&gt;/* receive 0x00000300 (29-bit id) in CAN1 rx message buffer 2 by setting mask 2 */&lt;BR /&gt; CAN_SetRxExtIndividualMask(CAN1, 2, CAN_RX_MB_EXT_LOW(0x300, 2), CAN_RX_MB_EXT_HIGH(0x300, 2));&lt;/P&gt;&lt;P&gt;/* enable CAN 0 */&lt;BR /&gt; CAN_Enable(CAN0, true);&lt;BR /&gt; /* enable CAN 1 */&lt;BR /&gt; CAN_Enable(CAN1, true);&lt;/P&gt;&lt;P&gt;/* Enable SysTick Timer */&lt;BR /&gt; SysTick_Config(SystemCoreClock / TICKRATE_HZ);&lt;/P&gt;&lt;P&gt;/* Init output LED GPIO. */&lt;BR /&gt; GPIO_PinInit(GPIO, BOARD_LED1_GPIO_PORT, BOARD_LED1_GPIO_PIN, &amp;amp;led_config);&lt;BR /&gt; GPIO_WritePinOutput(GPIO, BOARD_LED1_GPIO_PORT, BOARD_LED1_GPIO_PIN, 1);&lt;BR /&gt; GPIO_PinInit(GPIO, BOARD_LED2_GPIO_PORT, BOARD_LED2_GPIO_PIN, &amp;amp;led_config);&lt;BR /&gt; GPIO_WritePinOutput(GPIO, BOARD_LED2_GPIO_PORT, BOARD_LED2_GPIO_PIN, 1);&lt;BR /&gt; GPIO_PinInit(GPIO, BOARD_LED3_GPIO_PORT, BOARD_LED3_GPIO_PIN, &amp;amp;led_config);&lt;BR /&gt; GPIO_WritePinOutput(GPIO, BOARD_LED3_GPIO_PORT, BOARD_LED3_GPIO_PIN, 1);&lt;/P&gt;&lt;P&gt;while (true)&lt;BR /&gt; {&lt;BR /&gt; /* time to send messages from CAN1 */&lt;BR /&gt; if ((gTimCnt % TRANSMIT_PERIOD == 0) &amp;amp;&amp;amp; !message_transmitted)&lt;BR /&gt; {&lt;BR /&gt; txmsg.id = next_id;&lt;BR /&gt; txmsg.format = kCAN_FrameFormatStandard;&lt;BR /&gt; txmsg.type = kCAN_FrameTypeData;&lt;BR /&gt; txmsg.proto = kCAN_ProtoTypeFD;&lt;BR /&gt; txmsg.bitratemode = kCAN_BitrateModeTypeSwitch;&lt;BR /&gt; txmsg.length = 64;&lt;BR /&gt; for (b = 0; b &amp;lt; txmsg.length; b++) txmsg.dataByte[b] = b;&lt;BR /&gt; /* use message buffer 3 */&lt;BR /&gt; if (CAN_TransferSendBlocking(CAN1, 3, &amp;amp;txmsg) != kStatus_Success)&lt;BR /&gt; {&lt;BR /&gt; PRINTF("Failed to transmit message\r\n");&lt;BR /&gt; }&lt;BR /&gt; else&lt;BR /&gt; {&lt;BR /&gt; message_transmitted = true;&lt;BR /&gt; }&lt;/P&gt;&lt;P&gt;/* send 0x200 (29-bit) on tx message buffer 4 */&lt;BR /&gt; txmsg.id = 0x200;&lt;BR /&gt; txmsg.format = kCAN_FrameFormatExtend;&lt;BR /&gt; txmsg.type = kCAN_FrameTypeData;&lt;BR /&gt; txmsg.proto = kCAN_ProtoTypeFD;&lt;BR /&gt; txmsg.bitratemode = kCAN_BitrateModeTypeSwitch;&lt;BR /&gt; txmsg.length = 64;&lt;BR /&gt; for (b = 0; b &amp;lt; txmsg.length; b++) txmsg.dataByte[b] = b;&lt;BR /&gt; /* use message buffer 4 */&lt;BR /&gt; if (CAN_TransferSendBlocking(CAN1, 4, &amp;amp;txmsg) != kStatus_Success)&lt;BR /&gt; {&lt;BR /&gt; PRINTF("Failed to transmit message 0x200 (29-bit)\r\n");&lt;BR /&gt; }&lt;BR /&gt; else&lt;BR /&gt; {&lt;BR /&gt; message_transmitted = true;&lt;BR /&gt; }&lt;/P&gt;&lt;P&gt;/* send 0x300 (29-bit) on tx message buffer 5 */&lt;BR /&gt; txmsg.id = 0x300;&lt;BR /&gt; txmsg.format = kCAN_FrameFormatExtend;&lt;BR /&gt; txmsg.type = kCAN_FrameTypeData;&lt;BR /&gt; txmsg.proto = kCAN_ProtoTypeFD;&lt;BR /&gt; txmsg.bitratemode = kCAN_BitrateModeTypeSwitch;&lt;BR /&gt; txmsg.length = 64;&lt;BR /&gt; for (b = 0; b &amp;lt; txmsg.length; b++) txmsg.dataByte[b] = b;&lt;BR /&gt; /* use message buffer 5 */&lt;BR /&gt; if (CAN_TransferSendBlocking(CAN1, 5, &amp;amp;txmsg) != kStatus_Success)&lt;BR /&gt; {&lt;BR /&gt; PRINTF("Failed to transmit message 0x300 (29-bit)\r\n");&lt;BR /&gt; }&lt;BR /&gt; else&lt;BR /&gt; {&lt;BR /&gt; message_transmitted = true;&lt;BR /&gt; }&lt;BR /&gt; }&lt;BR /&gt; else if (gTimCnt % TRANSMIT_PERIOD != 0)&lt;BR /&gt; {&lt;BR /&gt; message_transmitted = false;&lt;BR /&gt; }&lt;/P&gt;&lt;P&gt;/* check for any received messages on CAN1 message buffer 0 */&lt;BR /&gt; if (CAN_ReadRxMb(CAN1, 0, &amp;amp;rxmsg) == kStatus_Success)&lt;BR /&gt; {&lt;BR /&gt; /* toggle LED1 */&lt;BR /&gt; GPIO_TogglePinsOutput(GPIO, BOARD_LED1_GPIO_PORT, 1u &amp;lt;&amp;lt; BOARD_LED1_GPIO_PIN);&lt;BR /&gt; }&lt;/P&gt;&lt;P&gt;/* check for any received messages on CAN1 message buffer 1 */&lt;BR /&gt; if (CAN_ReadRxMb(CAN1, 1, &amp;amp;rxmsg) == kStatus_Success)&lt;BR /&gt; {&lt;BR /&gt; /* toggle LED2 */&lt;BR /&gt; GPIO_TogglePinsOutput(GPIO, BOARD_LED2_GPIO_PORT, 1u &amp;lt;&amp;lt; BOARD_LED2_GPIO_PIN);&lt;BR /&gt; }&lt;BR /&gt; if (CAN_ReadRxMb(CAN1, 2, &amp;amp;rxmsg) == kStatus_Success)&lt;BR /&gt; {&lt;BR /&gt; /* toggle LED3 */&lt;BR /&gt; GPIO_TogglePinsOutput(GPIO, BOARD_LED3_GPIO_PORT, 1u &amp;lt;&amp;lt; BOARD_LED3_GPIO_PIN);&lt;BR /&gt; }&lt;BR /&gt; }&lt;BR /&gt;}&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 16 Aug 2018 15:17:25 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/Communicate-two-LPC54618-cards/m-p/796719#M32056</guid>
      <dc:creator>canbazonur</dc:creator>
      <dc:date>2018-08-16T15:17:25Z</dc:date>
    </item>
    <item>
      <title>Re:  Communicate two LPC54618 cards</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/Communicate-two-LPC54618-cards/m-p/796720#M32057</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Is there anybody to solve the issue ?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Many thanks.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 17 Aug 2018 21:07:55 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/Communicate-two-LPC54618-cards/m-p/796720#M32057</guid>
      <dc:creator>canbazonur</dc:creator>
      <dc:date>2018-08-17T21:07:55Z</dc:date>
    </item>
    <item>
      <title>Re:  Communicate two LPC54618 cards</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/Communicate-two-LPC54618-cards/m-p/796721#M32058</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;What have &lt;STRONG&gt;you&lt;/STRONG&gt; done to debug this ?? What happens when "the communication stops" ??&lt;/P&gt;&lt;P&gt;(and, have you remembered termination resistors etc ?)&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 18 Aug 2018 17:30:03 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/Communicate-two-LPC54618-cards/m-p/796721#M32058</guid>
      <dc:creator>carstengroen</dc:creator>
      <dc:date>2018-08-18T17:30:03Z</dc:date>
    </item>
  </channel>
</rss>

