I’ve got an Arduino Due hooked up to my ODrive 3.6/24V trying to send a request for encoder position estimates over CAN. So far, I haven’t been able to successfully get a response back from the ODrive and occasionally, an error code shows up:
odrv0.can.error = 0x0001. Is there documentation describing CAN error codes?
I’m able to read and print the heartbeat messages from the ODrive on the Arduino so I’m thinking there’s a problem with the transmission of the request frame. All I’m setting is the ID and RTR bit as such (using the due_can library):
outgoing.id = (0x01 << 5) + 0x009; outgoing.rtr = 0x01; Can0.sendFrame(outgoing);
I’ve read in other threads about people needing to have different baud rates on their Arduino and ODrive due to the Arduino having a slower clock speed than the ODrive. Could that be the case for this situation since the Due runs at 84 Mhz and I assume the ODrive runs at 16 Mhz based on other posts. I currently have both set to 250K for baud rate.
Any help is greatly appreciated.