Boron / Mesh Have No CAN Bus?

My assumption based on the specs and datasheet is that the processor used for the Mesh products does NOT support a CAN bus directly and never will. Is that the case?

I know that I can always use a CAN -> SPI chip (and I suppose I shall, eventually), but it has been extremely convenient to have on-board.

Correct. The nRF52840 does not support CAN. A CAN to SPI chip is the best solution. The MCP25625 includes the transceivers on the chip, which is kind of handy. I have not tested it yet, however.


We are currently working on a project where we would need the Boron (or in future the b-series) and a CAN bus. Bought a MCP25625 board and tried it ourselves for some days and also had a capable freelancer work on it. We just can’t get it working.

Do you have any clues or special tips that might help us?
We only receive really high CAN ids and nothing that makes sense.

Hmm, I wonder if that may have something to do with impedance or capacitance concerns? Have you correctly terminated your bus per the standard?

A “1” in a CAN id is what you receive in the high-z state with the voltage on both CAN lines being in the middle at 2.5V. Is it possible there is an electrical issue with your node not being able to drive high/low enough? If your data is intact at high ID values that doesn’t seem as likely though.

Otherwise, many chips have ID filtering that may be affecting you. Make sure that is configured correctly.

I needed CAN on the 3rd-gen devices too and adapted an arduino CAN library for use with particle. I published it to the library directory, search for arduino-CAN.

This is a library for the MCP2515, so you need an additional transceiver here.

This is work in progress and not fully tested yet, at the moment I only send CAN packets. As this worked with very little changes to the original arduino library, I assume that receiving should work too. The documentation is also not fully adapted to particle yet.

Source on github:

@filnko What board did you buy? Did you write your own interfacing code or are you reusing someones library. Do you have any CAN engineering tools? In the past I have tried to interface with some of the Mikroe boards and some various Arduino boards and have had very little success. If you need a cheap tool to use as a reference point you could buy one of the boards and use a Arduino Uno to test your physical setup and a library.

Any information you can share would be much appreciated. I also would like to use the MCP25625 with my project.

I was able to get the MCP25625 working with a Boron.
I plan to build a custom PCB but prove out functionality I used:

1 Like

@noller_BASCO Did you ever turn your port of the CAN library into a public Particle library? I’m about to start my implementation of the MCP25625 finally and would appreciate any learnings you’ve picked up from your implementation!

I created a fork of the MCP_CAN_lib for Particle. It’s MCP_CAN_RK and it works with the MCP25625.


Awesome. You’re the man as always. Thanks for all you contribute here! I’ll plan on using it.

1 Like