Intermediate
30 min

Achieve ultra-fast CAN data transfer with TLE9252V and ATmega2560

CANnecting possibilities

CAN FD Click with Arduino Mega 2560 Rev3

Published Feb 14, 2024

Click board™

CAN FD Click

Dev Board

Arduino Mega 2560 Rev3

Compiler

NECTO Studio

MCU

ATmega2560

Unlock unparalleled performance with our high-speed CAN FD transceiver, perfect for automotive applications

A

A

Hardware Overview

How does it work?

CAN FD Click is based on the TLE9252V, a high-speed CAN network transceiver from Infineon. HS CAN is a serial bus system that connects microcontrollers, sensors, and actuators for real-time control applications. The TLE9252V supports Bus Wake-up Pattern (WUP) functionality and Local Wake-up, as well as CAN Flexible data rate transmission up to 5Mbit/s. Additionally, the TLE9252V supports CAN Flexible data rate (CAN FD) transmission up to 5 Mbit/s. The TLE9252V also has an integrated over-temperature detection to protect the TLE9252V against the thermal overstress of the transmitter. The CAN FD Click

supports five different Modes of operation. Each mode has specific characteristics regarding quiescent current, data transmission, or failure diagnostic. The digital input pins EN and STB are used for the mode selection. The HS CAN transceiver TLE9252V includes a receiver and a transmitter unit, allowing the transceiver to send data to the bus medium and simultaneously monitor the data from the bus medium using two wires. The TLE9252V converts the serial data stream, available on the transmit data input TxD, into a differential output signal on the CAN bus provided by the CANH and CANL pins. Given all its

components' features, the CAN FD Click is best used for infotainment applications, cluster modules, radar applications, and HVAC. The onboard SMD jumper labeled the VIO SEL selects which voltage rail will be used as the logic voltage level. It offers voltage selection between 3.3V and 5V so that the click board™ can be interfaced with both the 3.3V and 5V capable MCUs. The two UART wires (RX and TX) can also be connected directly through two pins on the board's left edge. With R5 and R6 jumpers populated allows you to use a click board with a standard 12V battery connected to battery pads at the right side of the board.

CAN FD Click hardware overview image

Features overview

Development board

Arduino Mega 2560 is a robust microcontroller platform built around the ATmega 2560 chip. It has extensive capabilities and boasts 54 digital input/output pins, including 15 PWM outputs, 16 analog inputs, and 4 UARTs. With a 16MHz crystal

oscillator ensuring precise timing, it offers seamless connectivity via USB, a convenient power jack, an ICSP header, and a reset button. This all-inclusive board simplifies microcontroller projects; connect it to your computer via USB or power it up

using an AC-to-DC adapter or battery. Notably, the Mega 2560 maintains compatibility with a wide range of shields crafted for the Uno, Duemilanove, or Diecimila boards, ensuring versatility and ease of integration.

Arduino Mega 2560 Rev3 double side image

Microcontroller Overview

MCU Card / MCU

default

Architecture

AVR

MCU Memory (KB)

256

Silicon Vendor

Microchip

Pin count

100

RAM (Bytes)

8192

You complete me!

Accessories

Click Shield for Arduino Mega comes equipped with four mikroBUS™ sockets, with two in the form of a Shuttle connector, allowing all the Click board™ devices to be interfaced with the Arduino Mega board with no effort. Featuring an AVR 8-bit microcontroller with advanced RISC architecture, 54 digital I/O pins, and Arduino™ compatibility, the Arduino Mega board offers limitless possibilities for prototyping and creating diverse applications. This board is controlled and powered conveniently through a USB connection to program and debug the Arduino Mega board efficiently out of the box, with an additional USB cable connected to the USB B port on the board. Simplify your project development with the integrated ATmega16U2 programmer and unleash creativity using the extensive I/O options and expansion capabilities. There are eight switches, which you can use as inputs, and eight LEDs, which can be used as outputs of the MEGA2560. In addition, the shield features the MCP1501, a high-precision buffered voltage reference from Microchip. This reference is selected by default over the EXT REF jumper at the bottom of the board. You can choose an external one, as you would usually do with an Arduino Mega board. There is also a GND hook for testing purposes. Four additional LEDs are PWR, LED (standard pin D13), RX, and TX LEDs connected to UART1 (mikroBUS™ 1 socket). This Click Shield also has several switches that perform functions such as selecting the logic levels of analog signals on mikroBUS™ sockets and selecting logic voltage levels of the mikroBUS™ sockets themselves. Besides, the user is offered the possibility of using any Click board™ with the help of existing bidirectional level-shifting voltage translators, regardless of whether the Click board™ operates at a 3.3V or 5V logic voltage level. Once you connect the Arduino Mega board with Click Shield for Arduino Mega, you can access hundreds of Click boards™, working with 3.3V or 5V logic voltage levels.

Click Shield for Arduino Mega accessories 1 image

DB9 Cable Female-to-Female (2m) cable is essential for establishing dependable serial data connections between devices. With its DB9 female connectors on both ends, this cable enables a seamless link between various equipment, such as computers, routers, switches, and other serial devices. Measuring 2 meters in length, it offers flexibility in arranging your setup without compromising data transmission quality. Crafted with precision, this cable ensures consistent and reliable data exchange, making it suitable for industrial applications, office environments, and home setups. Whether configuring networking equipment, accessing console ports, or utilizing serial peripherals, this cable's durable construction and robust connectors guarantee a stable connection. Simplify your data communication needs with the 2m DB9 female-to-female cable, an efficient solution designed to meet your serial connectivity requirements easily and efficiently.

CAN FD Click accessories image

Used MCU Pins

mikroBUS™ mapper

NC
NC
AN
Standby
PL1
RST
Mode Selection
PL4
CS
NC
NC
SCK
NC
NC
MISO
NC
NC
MOSI
Power Supply
3.3V
3.3V
Ground
GND
GND
Wake up
PE4
PWM
Error Indicator
PB6
INT
UART TX
PE0
TX
UART RX
PE1
RX
NC
NC
SCL
NC
NC
SDA
Power Supply
5V
5V
Ground
GND
GND
1

Take a closer look

Schematic

CAN FD Click Schematic schematic

Step by step

Project assembly

Click Shield for Arduino Mega front image hardware assembly

Start by selecting your development board and Click board™. Begin with the Arduino Mega 2560 Rev3 as your development board.

Click Shield for Arduino Mega front image hardware assembly
Arduino Mega 2560 Rev3 front image hardware assembly
Charger 27 Click front image hardware assembly
Prog-cut hardware assembly
Charger 27 Click complete accessories setup image hardware assembly
Arduino Mega 2560 Rev3 Access MB 1 - upright/background hardware assembly
Necto image step 2 hardware assembly
Necto image step 3 hardware assembly
Necto image step 4 hardware assembly
Necto image step 5 hardware assembly
Necto image step 6 hardware assembly
Arduino MEGA MCU Step hardware assembly
Necto No Display image step 8 hardware assembly
Necto image step 9 hardware assembly
Necto image step 10 hardware assembly
Debug Image Necto Step hardware assembly

Track your results in real time

Application Output via Debug Mode

1. Once the code example is loaded, pressing the "DEBUG" button initiates the build process, programs it on the created setup, and enters Debug mode.

2. After the programming is completed, a header with buttons for various actions within the IDE becomes visible. Clicking the green "PLAY" button starts reading the results achieved with the Click board™. The achieved results are displayed in the Application Output tab.

DEBUG_Application_Output

Software Support

Library Description

This library contains API for CAN FD Click driver.

Key functions:

  • canfd_generic_write - Generic write function

  • canfd_generic_read - Generic read function

  • canfd_set_operating_mode - Operation mode

Open Source

Code example

This example can be found in NECTO Studio. Feel free to download the code, or you can copy the code below.

/*!
 * \file 
 * \brief CanFd Click example
 * 
 * # Description
 * This example reads and processes data from CAN FD clicks.
 *
 * The demo application is composed of two sections :
 * 
 * ## Application Init 
 * Initializes the driver and enables the click board.
 * 
 * ## Application Task  
 * Depending on the selected mode, it reads all the received data or sends the desired message
 * every 2 seconds.
 * 
 * ## Additional Function
 * - canfd_process ( ) - The general process of collecting the received data.
 * 
 * \author MikroE Team
 *
 */
// ------------------------------------------------------------------- INCLUDES

#include "board.h"
#include "log.h"
#include "canfd.h"
#include "string.h"

#define PROCESS_RX_BUFFER_SIZE 500

#define TEXT_TO_SEND "MikroE\r\n"

// ------------------------------------------------------------------ VARIABLES

#define DEMO_APP_RECEIVER
// #define DEMO_APP_TRANSMITTER

static canfd_t canfd;
static log_t logger;

// ------------------------------------------------------- ADDITIONAL FUNCTIONS

static void canfd_process ( void )
{
    int32_t rsp_size;
    
    char uart_rx_buffer[ PROCESS_RX_BUFFER_SIZE ] = { 0 };
    uint8_t check_buf_cnt;
    
    rsp_size = canfd_generic_read( &canfd, uart_rx_buffer, PROCESS_RX_BUFFER_SIZE );

    if ( rsp_size > 0 )
    {  
        log_printf( &logger, "Received data: " );
        
        for ( check_buf_cnt = 0; check_buf_cnt < rsp_size; check_buf_cnt++ )
        {
            log_printf( &logger, "%c", uart_rx_buffer[ check_buf_cnt ] );
        }
    }
    Delay_ms ( 100 );
}

// ------------------------------------------------------ APPLICATION FUNCTIONS

void application_init ( void )
{
    log_cfg_t log_cfg;
    canfd_cfg_t cfg;

    /** 
     * Logger initialization.
     * Default baud rate: 115200
     * Default log level: LOG_LEVEL_DEBUG
     * @note If USB_UART_RX and USB_UART_TX 
     * are defined as HAL_PIN_NC, you will 
     * need to define them manually for log to work. 
     * See @b LOG_MAP_USB_UART macro definition for detailed explanation.
     */
    LOG_MAP_USB_UART( log_cfg );
    log_init( &logger, &log_cfg );
    log_info( &logger, "---- Application Init ----" );

    //  Click initialization.

    canfd_cfg_setup( &cfg );
    CANFD_MAP_MIKROBUS( cfg, MIKROBUS_1 );
    canfd_init( &canfd, &cfg );

    Delay_ms ( 500 );

#ifdef DEMO_APP_RECEIVER
    canfd_set_operating_mode( &canfd, CANFD_OPERATING_MODE_RECEIVE );
    log_info( &logger, "--- RECEIVER MODE ---" );
#endif
#ifdef DEMO_APP_TRANSMITTER
    canfd_set_operating_mode( &canfd, CANFD_OPERATING_MODE_NORMAL );
    log_info( &logger, "--- TRANSMITTER MODE ---" );
#endif 
    Delay_ms ( 100 );
}

void application_task ( void )
{
#ifdef DEMO_APP_RECEIVER
    canfd_process( );
#endif
#ifdef DEMO_APP_TRANSMITTER
    canfd_generic_write( &canfd, TEXT_TO_SEND, 8 );
    log_info( &logger, "--- The message is sent ---" );
    Delay_ms ( 1000 );
    Delay_ms ( 1000 );
#endif 
}

int main ( void ) 
{
    /* Do not remove this line or clock might not be set correctly. */
    #ifdef PREINIT_SUPPORTED
    preinit();
    #endif
    
    application_init( );
    
    for ( ; ; ) 
    {
        application_task( );
    }

    return 0;
}

// ------------------------------------------------------------------------ END

Additional Support

Resources

Love this project?

'Buy This Kit' button takes you directly to the shopping cart where you can easily add or remove products.