This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] ADS131M04:示例代码中出错

Guru**** 2964790 points

Other Parts Discussed in Thread: ADS131M04

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/909157/ads131m04-error-in-example-code

器件型号:ADS131M04

ASS131M0x 系列的示例代码(www.ti.com/.../sbac254)包含 CRC 函数中的错误、这会导致函数生成不正确的 CRC。

calculateCRC()函数在定义清单常量 CRC_ANSI 时使用 CCITT 值(0x1021)转置 CCITT 和 ANSI 二进制多项式的值、在定义清单常量 CRC_CCITT 时使用 ANSI 值(0x8005)。

#ifdef CRC_CCITT
/* CCITT CRC 多项式= x^16 + x^12 + x^5 + 1 */
const uint16_t poly = 0x8005;
#endif

#ifdef CRC_ANSI
/* ANSI CRC 多项式= x^16 + x^15 + x^2 + 1 */
const uint16_t poly = 0x1021;
#endif

ADS131M04数据表在第8.3.13节的表9中定义了 CRC 二进制多项式:

CCITT CRC 二进制多项式: 0001 0000 0010 0001 (0x1021)

ANSI CRC 二进制多项式: 1000 0000 0000 0101 (0x8005)

-Nick

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Nick、

    感谢您指出这一点。 看起来 CCITT 的 CRC-16多项式和 ANSI 是交换的。 我已经将 CCITT 多项式识别为手头的0x1021。  

    让我看看它、我们将看看我们是否可以很快改变它。

    吴约瑟