Other Parts Discussed in Thread: TPS274C65
器件型号: TPS274C65
您好专家、
我正在为应用使用 TPS274C65 高侧开关、具有可寻址 SPI 组合。 我想将 SPI 与 CRC 配合使用、即 32 个 CLK 和 32 位数据帧。 SPI 配置为 (CPOL=0、CPHA=1) 且 MSB 优先。
为了更好地理解、我在此处附上了 CRC 计算函数:
{
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 返回
}
此功能已经负责在末尾移位位 此外、我可以从示波器确认 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 寄存器也是如此、用于启用/禁用通道。
当我尝试配置没有 CRC 的芯片时、一切都可以正常处理 24 位帧。 这是非常奇怪的。
您可以在此处帮助解决此问题吗?#
谢谢。
此致、
Soham


