ODrive S1 CAN DIP switch for 120Ohm resistor

I’m trying to set up CAN communication to my ODrive S1 (latest version) from a NUCLEO-G474RE with a Seeed Studio CAN-BUS shield. The CAN communication is not working. One of the things that could be causing it is that the termination resistors are not set correctly, as in the docs, there is this section:
(CAN Bus Guide — ODrive Documentation 0.6.11 documentation)
“If your ODrive is the “last” (furthest) device on the bus, you can use the on-board 120 Ohm termination resistor by switching the DIP switch to “CAN 120R”. Otherwise, add an external resistor. The nominal bus resistance should be 60 ohms between CANH and CANL.”

Where can I find this DIP switch?

Right here!

It’s the one on the right, labeled “CAN”. You’ll want to flip it from “NO R” (the default position) to “120R”.

There are some other things I’d dig into too for diagnosis - what exact CAN shield are you using?

Thanks, I’ll try that. I’m using the Seeed Studio CAN-BUS Shield V2.0 (CAN-BUS Shield V2 - Seeed Studio). I made sure that the SPI_B pins are used by cutting and soldering the right pads on the back. I couldn’t check if it is actually putting any messages on the bus, so I also ordered a USB-CAN adapter to check.

Are you programming this with the Arduino IDE, or bare metal / STM32Cube HAL? The G474 has a CAN peripheral, that might be easier than adding SPI support for the MCP2515 that shield uses – you’d just need a CAN transceiver.

I’m using STM32CubeIDE. Thanks for the suggestion about the CAN tranceiver. I’ll have a look at it.

np! Yeah, would definitely recommend just doing the built-in STM32 CAN stuff then.