MCP2515 CAN Selective Acknowledge

Hello World,

I have installed some RGB LEDs in my car and I would like to tap into the car's pre-existing CAN Bus to control them. The plan is to have an Arduino connected to the OBD port and another one under the bonnet. Because of this I don't want the Arduino acknowledging messages with IDs for different parts of the car.

The project is going well but the CAN module I have wants to acknowledge every message on the bus. I'm using this MCP2515 module and tried a couple of different libraries but nothing seems to work.

I've tried using the mask & filters, I've got them to work so that the MCP2515 only reports messages with the ID I'm looking for but it still acknowledges all other messages.

I can't find any info on the topic but my google-fu is not up to scratch, any help would be much appreciated.

Thank you

Have a look at the MCP2515 datasheet. The MCP2515 supports a Listen only mode. It is set in the CANSTAT register using the OPMOD[2:0] bits.

MCP2515-Stand-Alone-CAN-Controller Datasheet

How you do this in your software depends on the library you are using. You can ether look if this mode is supported by the library or whether you need modify the call that sets the Normal mode.

If you need help with that, please post a link to your CAN library of choice and I will have a look.

Thank you for you reply Sorry I have just got round to responding.

The problem was my misunderstanding on how the CAN Bus is supposed to work.

A CAN bus node is supposed to acknowledge every message on the bus weather or not that node is interested in the message.