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.

[参考译文] TDC7200:TDC7200 返回错误的校准值

Guru**** 2874030 points

Other Parts Discussed in Thread: TDC7200

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

https://e2e.ti.com/support/sensors-group/sensors/f/sensors-forum/1635511/tdc7200-tdc7200-returns-wrong-calibration-values

部件号: TDC7200

您好:

我一直在尝试让 TDC7200 在需要测量模式 2 下两个脉冲上升沿之间的时间的应用中工作。 我按如下方式配置了 TDC7200:

// TDC_WRITE(地址,值)
// TDC_READ(地址,字节)
 
TDC_WRITE (0x00、0x82);
TDC_WRITE (0x01、0xC0);
TDC_WRITE (0x03、0x07);
TDC_WRITE (0x04、0xFF);
TDC_WRITE (0x05、0xFF);
TDC_WRITE (0x06、0xFF);
TDC_WRITE (0x07、0xFF);
TDC_WRITE (0x08、0x00);
TDC_WRITE (0x09、0x00);
 
然后、在连续循环中读取 TDC7200:
 
TDC_WRITE (0x00、0x83);
TDC_WRITE (0x01、0xC0);

  if (reading_ready)
  {
    Reading_ready = false;
    uint32_t time_1 = TDC_READ (0x10、3);
    uint32_t time_2 = TDC_READ (0x12、3);
    uint32_t CLOCK_1 = TDC_READ (0x11、3);
    uint32_t calibration_1 = TDC_READ (0x1B、3);
    uint32_t calibration_2 = TDC_READ (0x1C、3);

    Double CLOCK_PERIOD = 62.5E-9;// 16MHz 时钟-> 62.5ns 周期
    Double calibration_count =(double)((double)(calibration_2 - calibration_1)/ 39.0);
    Double NORMAL_lsb =(clock_period / calibration_count);
    双倍时间=(NORMAL_lsb *(time_2 - time_1))+(clock_1 * clock_period);

    TDC_WRITE (0x02、0x00);

    printf(“Time1:%x、Time2:%x、CLOCK1:%x、CALIBRATION1:%x、CALIBRATION2:%x、 校准计数:%e、标准 LSB:%E、时间:%E\n“、time_1、time_2、 CLOCK_1、CALIBRATION_1、CALIBRATION_2、CALIBRATION_COUNTS、NORMAL_lsb、 时间);
    }
 
输出如下:
Time1:1、Time2:2、CLOCK1:0、CALIBRATION1:4、CALIBRATION2:AC、 校准计数:4.307692e+00、标准 LSB:1.450893E-08、时间:1.450893E-08
 
我使用的是 16MHz 时钟、并且我提供的测试脉冲在 START 和 STOP 信号的上升沿之间具有 4.8us 的间距。 使用这些值、假设 LSB 大小为 55ps、我预计校准 1 值约为 1000、校准 2 约为 40000(40 个周期)。 但是、从 TDC7200 读回的值要低得多(分别为 4 和 172)。 时间 1 和时间 2 寄存器的值也过低。 我已经在示波器上检查了 SPI 事务;打印的值与传输的值和接收的值相匹配。
 
以下是触发器、START、STOP 和中断引脚的示波器截图。
 
scope_20260412_104317.png
 
可能是我错误地配置了芯片了吗?
 
此致、
Vivekanand
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 、Vivekanand、

    感谢您发布到传感器论坛!

    幸运的是、我今天没能做到这一点、但明天我应该能够向你提供答复。 感谢您的耐心。

    此致、

    ~Alicia  

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

    您好、 Vivekanand、

    对长时间的延误表示歉意。

    纵观您的代码、我想记下您的连续循环、您应该不需要不断写入 CONFIG2 (0x01)。 看看您的计算、似乎您的公式是正确的、并且您声明用于存储寄存器值的变量也很好。

    另外、为了确保、当您确实读取器件数据时、您会等待中断生效后、对吧?

    您是否注意到多个器件会出现这种行为?   

    此致、

    ~Alicia

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

    尊敬的 Alicia:

    感谢您的回复!

    是的、在与器件通信之前、我正在等待中断引脚变为低电平。 到目前为止、我只测试了一款器件。

    此致、

    Vivekanand

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

    您好、Vivekanand、

    您是否可以尝试更换当前正在使用的设备? 这有助于消除此器件可能出现问题的可能性。

    此致、

    ~Alicia