I’m part of a project where we’re considering to use ODrives as our motorcontroller of choice. Last year a C++ interface was written to communicate over USB (native protocol). Though after updating the ODrive firmware from v0.4.12 to v0.5.0 we started experiencing time-out errors. I think this is caused by a wrong CRC value as it is currently hard coded and imported from the library we based our interface on. As I’ve read on the forum here, firmware changes are likely to change the CRC which is also why I’d like to calculate it instead of hard coding. The documentation (https://docs.odriverobotics.com/protocol) gives the specs for the CRC calculation, however, as I’ve read at another topic (Using native protocol with Arduino) the CRC is not actually calculated over the whole package.
So long story short: what is used as input to calculate the CRC?
P.S. isn’t using CRC without incorporating the data kind of beating the purpose, as you won’t check whether the transmitted data has remained unchanged?
Thanks for the help!