MATLAB Answers

Read and Write CAN protocol messages using SPI through an Arduino Uno

16 views (last 30 days)
Danyal Pike
Danyal Pike on 3 Apr 2019
Commented: Jenny H on 3 Jun 2020
I have been spending a significant amount of time trying to find an answer to this but cannot find the full solution. I would appreciate some help on the issue. A bit of background to my issue:
  • I am designing a set of hardware and software tools that can be used to quickly assess and test components in a car that utilise CAN protocol
  • The objective of the set of tools is that anyone with Simulink can grab this kit, connect it up to their laptop and rapidly run a model through Simulink in order to send a few messages to the hardware and read the response. It has to be using simulink
  • The hardware consists of (but is not limited to) an Arduino Uno and an MCP2515 CAN controller module (
  • I have the CANdbs for the hardware I'm trying to test
I have been using the "Simulink Support Package for Arduino" for communication and can drive parts of the 12V components, however when it comes to sending a CAN message, I'm having trouble constructing the blocks to achieve this. I have been trying to use the "CAN device driver for mcp2515" and the CAN blocks from the "Vehicle Network Toolbox" but have come up short.
Could someone provide feedback on the attached image and help guide me towards a solution? I'm not sure if I'm being a bit dim or I've gotten something fundamentally wrong.

Answers (1)

Arun Kumar
Arun Kumar on 27 Sep 2019
Support for sending and receiving CAN messages from Arduino using MCP2515 is available in R2019b.
Use these blocks to send and receive CAN Messages:
  1. CAN Transmit:
  2. CAN Receive:
Here are some examples on how to use the blocks:
Hope this helps.

Sign in to comment.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by