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.

[参考译文] TPS274C65:CRC - SPI 帧看起来不错、但芯片未配置其要求。

Guru**** 2652575 points

Other Parts Discussed in Thread: TPS274C65

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

https://e2e.ti.com/support/power-management-group/power-management/f/power-management-forum/1582606/tps274c65-crc---spi-frame-looks-good-but-chip-does-not-configure-what-it-has-asked-for

器件型号: TPS274C65

您好专家、

我正在为应用使用 TPS274C65 高侧开关、具有可寻址 SPI 组合。 我想将 SPI 与 CRC 配合使用、即 32 个 CLK 和 32 位数据帧。 SPI 配置为 (CPOL=0、CPHA=1) 且 MSB 优先。

为了更好地理解、我在此处附上了 CRC 计算函数:

uint8_t tps274c65:::calculate_crc4(const uint8_t* data、uint16_t 长度)

  Uint8_t CRC = 0x0F; //初始值:0xF (1111b)、根据 CRC-4-ITU 标准

  对于 (uint16_t i = 0;i < length;i++)
  {
    crc ^= data[i]; //将数据字节异或运算到 CRC

    对于 (uint8_t 位= 0;位< 8;bit++)
    {

      IF (CRC 和 0x80) //检查 MSB
      {
        CRC =(CRC << 1)^ 0x13; //与多项式进行移位和异或运算 (0x13 = 0001_0011)
      }
      暴露
      {
        crc =(crc << 1); //只是移位
      }
    }
  }
  RETURN (CRC >> 4) 和 0x0F; //将高 4 位作为最终 CRC 返回
}
 
注意:该产品的数据表没有任何 CRC 计算信息!!

此功能已经负责在末尾移位位 此外、我可以从示波器确认 MOSI 数据看起来正确、并可以看到 CRC 在最后 4 个 CLK(29-32 位)上运行、25-29 位为 0、如数据表中所示。

我还尝试了一篇常见问题解答帖子中提到的函数计算 CRC:
https://e2e.ti.com/support/power-management-group/power-management/f/power-management-forum/1515831/faq-tps274c65-crc-calculation-function-example
当我尝试通过将 0F 写入寄存器 1E 或 1F 来简单地启用 LED 时、什么都不起作用。 1D 寄存器也是如此、用于启用/禁用通道。
 
我已经负责读取 POR 状态并写入 2F 寄存器、从而在 INIT 序列期间启用 CRC。

当我尝试配置没有 CRC 的芯片时、一切都可以正常处理 24 位帧。 这是非常奇怪的。

您可以在此处帮助解决此问题吗?#

谢谢。

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

    尊敬的 Soham:

    您能否使用 SCLK、MISO、MOSI、CS 发布其中一次写入的示波器波形? 在原理图中、DSPI 引脚是低电平还是高电平?

    此外、您的多项式看起来可能是 0x13、而器件使用的 CRC 多项式看起来是 0x03。 这种理解是否正确?

    谢谢、

    Patrick

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

    您好 Patrick、

    这就是示波器图像的外观。 请忽略信号分辨率。

    我可以告诉你,但其他事实,尽管如此。

    DSPI -->连接至 3.3V

    关于 CRC、我已经尝试了这两个多项式、这两个多项式在上面的 TI (0x13) 和 0x03 中的给定链接中声明、如果我然后对多项式应用 CRC-4 机制、则可以使用这两个多项式。
    什么都不起作用。

    我还可以像数据表一样确认帧看起来正确。 即 32 位(带 CRC)和 24 位(不带 CRC)。

    谢谢。

    此致、
    Soham

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

    尊敬的 Soham:

    感谢您的详细更新。  对延迟深表歉意、我将在星期一 Dallas 时间回复此问题。

    谢谢、

    Patrick

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

    尊敬的 Soham:

    对延迟深表歉意。 如果 DSPI 为低电平、器件只能使用 32 位 SPI 帧。 当 DSPI 为高电平时、在菊花链模式下、帧长度只能为 16 位或 24 位。

    禁用 CRC:

    启用 CRC:

    您能否使用启用 24 位 CRC 的帧再次尝试、看看通信是否正常工作?

    谢谢、

    Patrick