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.

[参考译文] PGA450-Q1:飞行时间

Guru**** 2609955 points
Other Parts Discussed in Thread: PGA450-Q1, PGA450Q1EVM

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

https://e2e.ti.com/support/sensors-group/sensors/f/sensors-forum/578887/pga450-q1-time-of-flight

器件型号:PGA450-Q1
Thread 中讨论的其他器件: PGA450Q1EVM

您好 Scott,

为什么方程式没有 SAT_TIME?

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

    用于求解飞行时间的示例 pga450_main.c 公式如下所示:

    //***代码片段开始***//
    if (MaskEcho =0){
    if (DATA_FIFO[LCV]> DetectionThreshold){

    EN_CTRL = 0x8C;//log free running timer
    FRT_T2.u8[0]=FRT_MSB; // ESFR 0xBA
    FRT_T2.u8[1]=FRT_LSB; // ESFR addr 0xBB
    IF (FRT_T1.U16 > FRT_T2.U16){
    TimeOfFlIGHT.U16 = 65535 + FRT_T2.U16-FRT_T1.U16;

    否则{
    TimeOfFlIGHT.U16 = FRT_T2.U16-FRT_T1.U16;

    MaskEcho = 1;
    //break;//启用后,一旦发现对象就立即从循环中断开


    //***代码片段结束***//

    发出突发和监听命令后立即捕获变量 FRT_T1.U16、而在发生阈值中断时捕获变量 FRT_T2.U16。 这种差异不需要考虑 SAT_TIME、因为 T1已包含此时间。

    有关 FRT 详细信息、请参阅 PGA450-Q1数据表的第7.3.11节"自由运行计时器"。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Akeem、您好!

    我不想使用自由运行的计时器,因为使用示例 pga450_main.c 时,测试结果会出现大约+5cm 的错误。

    因此、我使用 PGA450Q1EVM 在《LIN 演示中使用了公式2》,该公式的精度  约为±1.5cm。 但我不知道为什么没有 SAT_TIME。

    代码为:

    //***代码片段开始***//
    if (MaskEcho =0){
    if (DATA_FIFO[LCV]> DetectionThreshold){

    lcv_temp1=lcv

    MaskEcho = 1;
    //break;//启用后,一旦发现对象就立即从循环中断开
                                           }

    TimeofFlightTemp.U16 =(lcV_temp1<<4)+(blank_timer<<4);


    //***代码片段结束***//

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    HUNT.CN、
    传感器饱和时间测量与 FIFO 记录开始时间无关。 因此、饱和时间不包括在飞行时间计算中。

    SAT_TIME 不会偏移 FIFO 记录开始时间、只有消隐计时器会偏移 FIFO 记录开始时间。 SAT_TIME 用于诊断目的、可用于设置 blank_timer。 例如、如果已知饱和时间为1000us、则可以将消隐计时器设置为62x16us、以忽略记录窗口的饱和区域、从而启用最小距离检测。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    HUNT.CN、

    您的代码序列是

    EN_CTRL = 0x85; //开始突发、饱和检查和对数 FRT
    (笑声)
    while (STATUS2 & 0x02 = 0){} //等待回波信号低于饱和阈值
    (笑声)
    EN_CTRL = 0x0C; //开始填充 FIFO
    (笑声)
    //飞行时间计算

    然后、您需要将 SAT_TIME 添加到飞行时间公式中。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    大家好、Akeem、

    感谢您的回复, 这对我很有帮助。  

    我的代码序列是您提到的,  而不是原始的更改代码序列 但在我的测试中有一些问题。

    1、TOF 计算公式(不含 SAT_TIME), 但其精度很高。

    EN_CTRL = 0x0C 后,我添加了一个代码来读取 SAT_TIME ,并通过 UART 将其抛出, 其值为0。

    因此,sat_time 也不会偏移 FIFO 记录开始时间,这就是为什么公式具有良好的精度,将 sat_time 添加到 ToF 公式中的原因。

    2、为何 SAT_TIME 值为零。

    这似乎是不可能的, 因为有 如下代码 :

    SAT_DEGLITCH = 0x09;               //每计数2us || 1/58kHz (17.2uS)

    因此、SAT_TIME 至少应有1个值。       // 8位,16 us 分辨率

    3、我在 PGA450Q1EVM GUI 1.50.1上看到了一张图片,这可能是为什么 SAT_TIME = 0的原因。

    配置 GUI 1.50.1:在数字测试 MUX 中,将 GPIO1设置为输出 SAT_DONE  

    CH1是突发波形,CH2是 GPIO1的 SAT_DONE。