Single Falcon 500 causing CANivore bus to fail

Howdy, my team encountered a strange issue with our CANivore CAN FD bus this weekend and I thought it would be valuable to bring it up here.

We have a swerve drivetrain we use for early season testing. This drive train consists of 8 Falcon 500 motors, 4 CANcoders, and a Pigeon 2.0. This bus is a daisy chain and is terminated at its far end by a 120 ohm resistor. All devices are on the latest firmware and as far as we can tell are configured correctly. It may be worth noting that we also have a separate bus running from the roboRIO to a SPARK MAX which is then terminated at the PDH.

When the drivetrain loop is added to the RIO loop, it functions as expected. However when the loop is instead connected to a CANivore things start breaking. The CAN light on the CANivore turns red and devices appear and fall off the Tuner X display seemingly at random. CANivore bus util sits at around 13%.

To debug this, we terminated our loop early and added devices one at a time until we encountered the issue again. We isolated the issue to a single Falcon 500 on one of our swerve modules. Once this motor was spliced out the loop began functioning. We replaced the motor which seemingly fixed the issue and allowed us to run our swerve drive off of the CANivore.

We have not engaged in rigorous testing of this issue, but the wiring attached to the problematic Falcon appeared to be good, and the motor appeared to be in good health in general. The motor works when attached to a RIO bus, its only the CAN FD loop that causes issues.

During the process of identifying the problematic motor we many different bus configurations. With one exception, every bus configuration including the motor failed and every configuration excluding the motor succeeded. When the loop consisted only of the CANivore, the motor in question, and a terminator, the can loop appeared healthy. This case is notable, but we have not tested it further.

We have noticed other strange behavior with single device CAN FD loops, for instance a loop consisting of a CANivore, a Pigeon 2.0 and no terminating resistor reports as healthy, despite the importance of a second resistor being stressed in documentation. This strangeness provides a potential explanation for the single motor case, but we have not tested further, so this is speculation.

To address some of the common CAN FD issues I have seen on here. Our bus contained only CAN FD compatible devices with most recent firmware and was terminated at both ends by 120 ohm resistors, and we used daisy chain topology so no issues with stub length.

Has anyone else encountered anything like this?

1 Like