Pololu Robotics & Electronics
Menu
My account Comments or questions? About Pololu Contact Ordering information Distributors

Pololu Forum

Tic T249 - Command CRC

Hello,
In my project I use a Tic T249 (firmware 1.06) over I2C with a pi. I would like to add CRC checking, since the i2c line is prone to noise. However, when I enable “Enable CRC for commands” in the GUI + press the button “Apply settings”, the controller does not seem to actually check for the CRC-byte in the commands. Even if I completely omit the CRC byte, or put a junk value in it, the controller executes the commands without complaining.
Am I missing a setting somewhere here? I would expect any command without a valid CRC byte to be rejected/ignored by the controller, but the behaviour is identical to as if “Enable CRC for commands” is not set.

Edit: “Enable CRC for responses” also does not work for me, I do receive an extra byte for each read, but it is always equal to 0x00.

Thanks for any help.

Hello.

There’s no CRC error detection feature for I2C; that feature is only for serial. Are you actually seeing noise on your I2C lines between the Tic and Raspberry Pi? If so, which I2C pins are you using and are you using /dev/i2c-1 or /dev/i2c-3 on the Raspberry Pi?

- Amanda

Hi, we are using software (bitbanged) i2c through the i2c-gpio overlay (device address /dev/i2c-3). The reason for the noise is the challenging environment: we use quite long cables.
Regardless, I think a CRC check on the i2c data would be very useful, since a single bit-flip could lead to some quite bad results, and i2c does not have any other error correction mechanisms, not even a parity check.

Thank you for the feedback. We will keep that in mind.

- Amanda