Can't get Can Bus on swerve to have a reliable connection

We are using swerve drive and the code seems to run fine. However, we aren’t able to get a reliable connection to the motors. We are using TalonFX motors and analog encoders for our swerve drive. We are able to ping the RoboRio, so we know that we’re able to get connected to the robot. However, sometimes we aren’t always able to get a connection to the actual motors themselves or through the Phoenix tuner (when I check for motors/list of CAN Devices there’s nothing there). The error that it is throwing is :

“CTR: Firm Vers could not be retrieved. Use Phoenix Tuner to check ID and firmware(CRF) version.”

According to what we have read, this is a CAN Bus issue. To resolve this issue, we have reimagined the RoboRio, updated the firmware, gotten the latest version of the phoenix tuner, and checked the wiring. The Can Bus wires seem to be all connected and when I get a connection to the motors they work fine. However, none of this seems to work. It’s still unpredictable as to when we are able to connect to the motors or when get disconnected from the motors. It has happened several times where we are testing our robot and the motors suddenly cut out.

My question is: Is there anything we can do to get a reliable connection to the TalonFX motors.

Is the far end of the CAN bus properly terminated?

I don’t recall exactly where I’ve heard this documented, and I don’t see it in the Game Manual or in the “how to wire” section linked there, but if you’re running CAN and the far end (or ends if you’re using star instead of daisy-chain) doesn’t have a particular resistor it creates issues. Some of the components have that resistor already, others don’t.

Can you post some more details of your setup, and answer a couple of questions?
–when the disconnect happens, what are the LEDs on the speed controllers doing?
–Are you using daisy-chain or star topology (that is, is the CAN run one line with a bunch of stops, or is it a hub with a bunch of spokes extending out)?
–Are you able to see the other CAN components via the RoboRIO or Phoenix, and what are they doing? (That would be the PCM and PDP, or the PH and PDH, or whatever combination of those you have.)

(Oh, and incidentally: TalonFX is the speed controller built into the Falcon 500 motor. It may help you to refer to the motors as Falcons, more people will know what you’re talking about immediately instead of needing to look it up.)

CAN bus errors can be tricky to track down, especially if they are intermittent. If you can’t get sufficient answers from the blink codes then my recommendation would be process of elimination. Disconnect everything except one swerve module and make sure you attach back to the PD(P/H) or terminate with a resistor. See if you can see the motors and encoders on that one module. If you are getting good results there add the next module to the bus until you start seeing errors. Then you know which one to work with. Then connect only 1 motor on the questionable module to the bus see if it is fine, add the encoder and reverify, then add the other motor.

Hi Eric,
When the disconnect happens, the lights become solid orange/yellow.
They are daisy-chained from the RoboRio the PDP.
I am not able to see another other CAN components through the RoboRIO

Sounds like you want to troubleshoot the connection at the RIO…

Sorry I misspoke, I meant phoenix tuner. How would I check if I can see other CAN components through the RoboRIO?

Did you resolve this issue? I had some similar ones and it came down to CAN bus utilization and some bad wires.

This topic was automatically closed 365 days after the last reply. New replies are no longer allowed.