Experience reliable and high-speed data communication with our advanced CAN transceiver, designed to facilitate seamless integration and robust performance within your network
A
A
Hardware Overview
How does it work?
MCP2542 Click is based on the MCP2542WFD, a CAN transceiver with a wake-up pattern from Microchip. This IC supports both CAN and recently established CAN FD protocols with up to 8Mbps. The communication through the CAN bus is differential and performed through the twisted pairs with the characteristic impedance of 120 Ω. The CANH and CANL drivers drive the differential lines integrated into the MCP2542WFD IC. This provides robustness and immunity to electromagnetic interferences, typically observed in automotive systems. The ISO 11898 standard defines a signal line of twisted-pair cable as the network topology, terminated by the resistors with the characteristic impedance of the CAN bus (120 Ω), at both ends of the bus - to prevent signal reflection. This Click board™ does not need a termination resistor and includes additional protection on the CAN bus. The CAN bus uses two states: dominant and recessive. The dominant state is when the differential voltage between the CANH and CANL bus lines is above the dominant state detection level (0.9V), while the recessive state is below the recessive state detection level
(0.5V). Allowed differential voltage on the CAN bus can range between -12V and 12V. The logic level on the TX pin controls CANH and CANL drivers. A HIGH logic level on the TX line results in the recessive state on the CAN bus, while a LOW logic level results in the dominant state on the CAN bus. TXD line has the internal pull-up resistor (HIGH), making the MCP2542WFD device stay in recessive mode if the pin is left floating. The dominant/recessive states on the CAN bus are used for the message priority arbitration: the node that transmits the signal with the higher priority (the lower the binary message identifier number, the higher the priority) will win the arbitration, and the node with the lower priority will abort the transmission, waiting for the bus to become available again. The CAN bus states are reflected on the RX pin: the dominant state will drive the RX pin to a LOW logic level, while the recessive state will drive it to a HIGH logic level. This pin is also connected to the power supply via the internal pull-up resistor. MCP2542 Click uses a standard 2-Wire UART interface to communicate with the host MCU with commonly used UART RX and TX
lines. These lines are also routed to the header on the side of the Click board™, allowing them to be used with some other device. Besides TX and RX lines, CANH and CANL bus lines are also routed to a header next to the RX and TX header. The MCP2542WFD supports a standby mode. This function can be selected over the MODE SEL jumper. If this jumper is set to the STB position, the STBY of the transceiver pin will be routed to the STB pin of the mikroBUS™ socket., allowing the MCU to control it. If the jumper is set to the ON position, it will be routed to the GND directly, not allowing the MCP2542WFD device to enter the Standby mode. Finally, a D-SUB 9 male connector on the Click board™ connects to a CAN bus directly. This Click board™ can operate with either 3.3V or 5V logic voltage levels selected via the VIO SEL jumper. This way, both 3.3V and 5V capable MCUs can use the communication lines properly. Also, this Click board™ comes equipped with a library containing easy-to-use functions and an example code that can be used as a reference for further development.
Features overview
Development board
PIC18F57Q43 Curiosity Nano evaluation kit is a cutting-edge hardware platform designed to evaluate microcontrollers within the PIC18-Q43 family. Central to its design is the inclusion of the powerful PIC18F57Q43 microcontroller (MCU), offering advanced functionalities and robust performance. Key features of this evaluation kit include a yellow user LED and a responsive
mechanical user switch, providing seamless interaction and testing. The provision for a 32.768kHz crystal footprint ensures precision timing capabilities. With an onboard debugger boasting a green power and status LED, programming and debugging become intuitive and efficient. Further enhancing its utility is the Virtual serial port (CDC) and a debug GPIO channel (DGI
GPIO), offering extensive connectivity options. Powered via USB, this kit boasts an adjustable target voltage feature facilitated by the MIC5353 LDO regulator, ensuring stable operation with an output voltage ranging from 1.8V to 5.1V, with a maximum output current of 500mA, subject to ambient temperature and voltage constraints.
Microcontroller Overview
MCU Card / MCU

Architecture
PIC
MCU Memory (KB)
128
Silicon Vendor
Microchip
Pin count
48
RAM (Bytes)
8196
You complete me!
Accessories
Curiosity Nano Base for Click boards is a versatile hardware extension platform created to streamline the integration between Curiosity Nano kits and extension boards, tailored explicitly for the mikroBUS™-standardized Click boards and Xplained Pro extension boards. This innovative base board (shield) offers seamless connectivity and expansion possibilities, simplifying experimentation and development. Key features include USB power compatibility from the Curiosity Nano kit, alongside an alternative external power input option for enhanced flexibility. The onboard Li-Ion/LiPo charger and management circuit ensure smooth operation for battery-powered applications, simplifying usage and management. Moreover, the base incorporates a fixed 3.3V PSU dedicated to target and mikroBUS™ power rails, alongside a fixed 5.0V boost converter catering to 5V power rails of mikroBUS™ sockets, providing stable power delivery for various connected devices.
Used MCU Pins
mikroBUS™ mapper
Take a closer look
Click board™ Schematic

Step by step
Project assembly
Track your results in real time
Application Output
1. Application Output - In Debug mode, the 'Application Output' window enables real-time data monitoring, offering direct insight into execution results. Ensure proper data display by configuring the environment correctly using the provided tutorial.

2. UART Terminal - Use the UART Terminal to monitor data transmission via a USB to UART converter, allowing direct communication between the Click board™ and your development system. Configure the baud rate and other serial settings according to your project's requirements to ensure proper functionality. For step-by-step setup instructions, refer to the provided tutorial.

3. Plot Output - The Plot feature offers a powerful way to visualize real-time sensor data, enabling trend analysis, debugging, and comparison of multiple data points. To set it up correctly, follow the provided tutorial, which includes a step-by-step example of using the Plot feature to display Click board™ readings. To use the Plot feature in your code, use the function: plot(*insert_graph_name*, variable_name);. This is a general format, and it is up to the user to replace 'insert_graph_name' with the actual graph name and 'variable_name' with the parameter to be displayed.

Software Support
Library Description
This library contains API for MCP2542 Click driver.
Key functions:
mcp2542_generic_single_read
- Generic single read functionmcp2542_generic_single_write
- Generic single write functionmcp2542_generic_multi_write
- Generic multi write function
Open Source
Code example
The complete application code and a ready-to-use project are available through the NECTO Studio Package Manager for direct installation in the NECTO Studio. The application code can also be found on the MIKROE GitHub account.
/*!
* \file
* \brief Mcp2542 Click example
*
* # Description
* This application use for comunication.
*
* The demo application is composed of two sections :
*
* ## Application Init
* Driver intialization.
*
* ## Application Task
* Checks if new data byte have received in rx buffer (ready for reading),
* and if ready than reads one byte from rx buffer. In second case aplication task writes
* message data via UART.
*
* \author MikroE Team
*
*/
// ------------------------------------------------------------------- INCLUDES
#include "board.h"
#include "log.h"
#include "mcp2542.h"
// ------------------------------------------------------------------ VARIABLES
#define DEMO_APP_RECEIVER
//#define DEMO_APP_TRANSMITER
static mcp2542_t mcp2542;
static log_t logger;
static uint8_t demo_message[ 9 ] = { 'M', 'i', 'k', 'r', 'o', 'E', 13, 10, 0 };
void application_init ( void )
{
log_cfg_t log_cfg;
mcp2542_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.
mcp2542_cfg_setup( &cfg );
MCP2542_MAP_MIKROBUS( cfg, MIKROBUS_1 );
mcp2542_init( &mcp2542, &cfg );
mcp2542_default_cfg( &mcp2542 );
}
void application_task ( void )
{
uint8_t tmp;
// Task implementation.
#ifdef DEMO_APP_RECEIVER
// RECEIVER - UART polling
tmp = mcp2542_generic_single_read( &mcp2542 );
log_printf( &logger, "%c\r\n", tmp );
#endif
#ifdef DEMO_APP_TRANSMITER
// TRANSMITER - TX each 2 sec
mcp2542_generic_multi_write( &mcp2542, demo_message, 9 );
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
/*!
* \file
* \brief Mcp2542 Click example
*
* # Description
* This application use for comunication.
*
* The demo application is composed of two sections :
*
* ## Application Init
* Driver intialization.
*
* ## Application Task
* Checks if new data byte have received in rx buffer (ready for reading),
* and if ready than reads one byte from rx buffer. In second case aplication task writes
* message data via UART.
*
* \author MikroE Team
*
*/
// ------------------------------------------------------------------- INCLUDES
#include "board.h"
#include "log.h"
#include "mcp2542.h"
// ------------------------------------------------------------------ VARIABLES
#define DEMO_APP_RECEIVER
//#define DEMO_APP_TRANSMITER
static mcp2542_t mcp2542;
static log_t logger;
static uint8_t demo_message[ 9 ] = { 'M', 'i', 'k', 'r', 'o', 'E', 13, 10, 0 };
void application_init ( void )
{
log_cfg_t log_cfg;
mcp2542_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.
mcp2542_cfg_setup( &cfg );
MCP2542_MAP_MIKROBUS( cfg, MIKROBUS_1 );
mcp2542_init( &mcp2542, &cfg );
mcp2542_default_cfg( &mcp2542 );
}
void application_task ( void )
{
uint8_t tmp;
// Task implementation.
#ifdef DEMO_APP_RECEIVER
// RECEIVER - UART polling
tmp = mcp2542_generic_single_read( &mcp2542 );
log_printf( &logger, "%c\r\n", tmp );
#endif
#ifdef DEMO_APP_TRANSMITER
// TRANSMITER - TX each 2 sec
mcp2542_generic_multi_write( &mcp2542, demo_message, 9 );
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