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.

[参考译文] DRV8889-Q1:失速故障位无法立即清除、因此不一致

Guru**** 2378640 points
Other Parts Discussed in Thread: DRV8889-Q1EVM
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/motor-drivers-group/motor-drivers/f/motor-drivers-forum/1473925/drv8889-q1-stall-fault-bit-is-not-clearing-immediately-is-inconsistent

器件型号:DRV8889-Q1

工具与软件:

我们有通过 DRV8889 (芯片的最新 SI 版本)通信的定制硬件。

我们已通过对电机进行步进和失速来验证其正常运行。 通信数据包看上去正常且已经过验证。

在本例中、开路负载检测被禁用。

观察结果

  1. 当检测到失速情况时、它会降低 Faultline、Faultline 是我们主机软件中的 ISR。
  2. 主机软件检测故障线路变为低电平(或高电平)、并发送命令以清除锁存故障。
  3. 从故障状态寄存器读回的时间、1ms。 表明 STALL 位仍然置位。
  4. 但是、~250ms 后再次发出清除故障、该故障将被清除

问题
DRV8889是否有最短的时间清除失速? 是的、其中指定了该时间。 如果没有、如何计算?


其他信息:

我们使用的寄存器值如下:
故障:0xA5
DIAG1:0x00
DIAG2:0x00
CTRL1:0x83
CTRL2:0x0F
CTRL3:0xA4
CTRL4:0x31
CTRL5:0x18
CTRL6:0x0C
CTRL7:0x00
CTRL8:0x03

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

    尊敬的 Gerry:

    感谢您的提问。

    我正在将此分配给支持该设备的员工。 他将审查并返回给你。

    谢谢!

    Ibinu

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

    您好、灰:

    感谢您在论坛中发帖。  

    提供的寄存器看起来良好。 没有清除时间所需的最短时间。  

    您能否请  nSLEEP 在 大于18 µs 和小于35的条件下使用 nSLEEP 来复位故障、具体如下所述:

    "除了 SPI 寄存器中的 CLR_FLT 位、锁存故障还可通过快速 nSLEEP 脉冲清除。 该脉冲宽度必须大于18 µs 且短于35 µs。 如果 nSLEEP 保持低电平的时间长于35 µs 但少于75 µs、则会清除故障、但器件有可能会关断、也有可能不关断、如时序图中所示。

    您可以检查来自软件的任何延迟问题吗?  

    好的

    Mojtaba。

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

    Mojtaba,

    这种延迟的原因是什么。
    当发出清除故障时、我们还会注意到故障线路上存在干扰。
    似乎在出现故障时、DRV 决定在清除失速命令后将线路降低回。 这是用于目的吗? 只有发出清除的失速命令且系统处于失速状态时、似乎才会发生这种情况。 当故障线为低电平时、所有其他 SPI 命令都不会显示任何干扰。


    下面是一个扩展版本、显示了发出清除失速时的干扰。 故障线路变为低电平、然后变为高电平之间的时间是~12ms。

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

    尊敬的 Gerry:  

    让我来调查这个问题、我们再给您答复。  

    此致、

    Mojtaba。

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

    大家好、我们可以获得任何与此相关的更新吗?

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

    尊敬的 Gerry:

    感谢您的耐心。  

    我正在处理这个问题、明天再给您回复。  

    此致、

    Mojtaba。

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

    尊敬的 Gerry:

    为了清除锁存失速故障、扭矩计数必须高于失速阈值。 这意味着当继续发出 STEP 脉冲时、一定不存在机械失速条件。 当 CLR_FLT 被写入1时、阶跃输入条件是什么?

    如果使用 CLR_FLT 清除锁存故障(包括失速故障)、则不需要 nSLEEP 复位脉冲。 这可以是/或选项。 谢谢你。

    此致、Murugavel   

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

    您好!

    在我们尝试清除故障时、不会出现 STEP 脉冲问题。 实际上、主机软件在检测到故障后停止发出步骤、然后发出清除故障。
    STEP 的上升沿会导致阶跃。 您是否认为将阶跃保持在高电平可能会成为问题?

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

    这里是一个表示步进信号变为低电平的屏幕截图。
    每次发送清除故障 SPI 命令时、FLT 线路仍会变为高电平。

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

    尊敬的 Gerry:

    您是否认为将步骤保持在高位可能是个问题?

    当没有 STEP 输入时、输入必须为低电平。 谢谢。

    此致、Murugavel  

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

    尊敬的 Gerry:

    [报价 userid="10031" url="~/support/motor-drivers-group/motor-drivers/f/motor-drivers-forum/1473925/drv8889-q1-stall-fault-bit-is-not-clearing-immediately-is-inconsistent/5667555 #5667555"]

    这里是一个表示步进信号变为低电平的屏幕截图。
    每次发送清除故障 SPI 命令时、FLT 线路仍会变为高电平。

    [报价]

    D2 FLT 布线是什么? 我假设 A2 FLT 是 nFAULT 引脚。 对于每个 CLR_FLT 命令、nFAULT 都会被高电平脉冲清除、但会立即再次检测到故障。 一旦检测到失速、您可以在发出 CLR_FLT 之前将失速阈值寄存器设置为0、看看会发生什么情况? 谢谢。

    此致、Murugavel  

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

    D2 FLT 是 Salea 视为故障线的逻辑电平、而 A2是同一信号的模拟版本。 我开启 A2是因为芯片报告了大量的故障中断、经过几个小时的代码端调试后、我希望直接查看电压电平、这可以捕捉故障行在清除时出现的奇数尖峰。

    以下是捕获:

    - CTRL6被写入0x0以在发出失速清除(高位设置时写入 CTRL4)之前立即将失速阈值设置为0x0。

    -在我们再次开始步进之前、已恢复失速阈值。

    图像中的标记显示(从左到右):

    2 -读取故障寄存器0x0

    3 -读取 rev id (我们执行大量 rev id 读取以确保我们获得稳定的通信)

    0 -将0x0写入 CTRL6以将失速阈值设置为0

    1 -将高位屏蔽的 CTRL4写入当前寄存器值 以清除故障(我们是否需要读取、修改、写入该寄存器? 我们在清除故障值时不想改变其之前的值、但这个值会导致额外的读取)

    4 -向 CTRL6写入12以在我们再次开始步进之前将失速阈值恢复为12

    此迹线中似乎不存在故障线干扰。 发送清除消息后、故障线路也会立即上升、无需任何故障清除重试。

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

    第二个故障是意外故障、它会导致系统出现问题。 我们已经改变了方向、并试图逐步找到系统的另一个极限、我们应该在几秒钟内不会遇到故障。 在将阈值恢复到12后、第二个故障似乎立即发生。 查看它如何与此处图像中的标记4对齐。

    此时步进不再开始。

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

    Chris、您好!  

    感谢您的更新。  

    我将在实验室中对其进行测试、然后回复给您。  

    此致、

    Mojtaba。

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

    Chris、您好!

    感谢您进行测试和分享结果。 这有助于缩小问题范围。

    [报价用户 id="643225" url="~/support/motor-drivers-group/motor-drivers/f/motor-drivers-forum/1473925/drv8889-q1-stall-fault-bit-is-not-clearing-immediately-is-inconsistent/5670279 #5670279"]

    第二个故障是意外故障、它会导致系统出现问题。 我们已经改变了方向、并试图逐步找到系统的另一个极限、我们应该在几秒钟内不会遇到故障。 在将阈值恢复到12后、第二个故障似乎立即发生。 查看它如何与此处图像中的标记4对齐。

    此时步进不再开始。

    [报价]

    扭矩计数可能会低于此时的阈值、因为步进尚未开始。 在每个电气半周期、需要两个电气周期(一个电气周期=一个完整的波形-微步进情况下为正弦波)将扭矩计数更新为新值、一旦稳定、最新值就会更新。

    在输入 STEP 脉冲后设置阈值将有助于避免第二个故障。 谢谢你。

    此致、Murugavel  

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

    您好、Murugavel。

    建议在失速之后执行:

    -将阈值设置为零

    -清除故障

    -步骤至少两次

    -恢复阈值

    -继续步进等

    是否有一个基于时间的元素、超出了清除 TRQ_CNT / TRQ_COUNT 值的步进? 如果我们重复清除故障和/或等待220ms、失速会清除、结果似乎是这种情况。 不过、我在数据表中看不到任何时间提到的情况。

    我要问的是、 通过步骤执行上述过程是额外的逻辑、使用基于时间的方法可能会更简单。

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

    您好!

    感谢您的提问。 我们的专家 Mojtaba 被分配为您的问题,而 Murugavel 是 OOO。 请等待他的反馈。

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

    Chris、您好!

    请让我在工作台上设置该顺序并回复您。 谢谢你。

    此致、Murugavel  

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

    Chris、您好!

    很抱歉耽误您的回复。  

    借助我们的基准测试、当步进器未运行时、即使失速阈值不为零并设置为实际失速阈值、CLR_FLT 也会清除失速故障。 在没有 STEP 脉冲输入且失速阈值不变的情况下、每次我都能够清除失速故障。 这就是该器件在多个应用中的使用方式。 您是否碰巧有我们可以与之进行比较的 EVM 之一?  

    当电机以目标速度运行而未出现失速情况时、CTRL7寄存器中的最大扭矩计数是多少? 谢谢你。

    此致、Murugavel  

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

    您好、Murugavel。

    我们使用扭矩阈值12。

    您已确认清除立即发生? 如果我们在一段时间后发出清除命令、但第一次尝试时没有发出、则也可以看到该命令清除。

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

    Chris、您好!

    您已确认立即清除?

    是正确、只需一次尝试。 从 nFAULT = 0开始并发出第一个 CLR_FLT 的时间间隔是多少? 在第一篇文章中,你提到,"然而一个清除故障再次发出~250ms 后,清除故障"。 客户是否专门需要250ms 的延迟、或者他们是否也尝试过更小的延迟?

    此致、Murugavel  

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

    在尝试清除故障之前、您延迟了多长时间? 由于故障尖峰非常窄、因此捕获故障尖峰有点棘手。

    在我们的例子中、如果清除发生<~250ms、则它不会固定。

    在上面的迹线中、我们尝试清除大约200us、并且在每次清除尝试之后、我们都看到故障线路上出现毛刺脉冲、直到总经历时间为从故障发生开始~250ms。

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

    Chris、您好!

    [报价用户 id="643225" url="~/support/motor-drivers-group/motor-drivers/f/motor-drivers-forum/1473925/drv8889-q1-stall-fault-bit-is-not-clearing-immediately-is-inconsistent/5727230 #5727230"]

    在我们的例子中、如果清除发生<~250ms、则它不会固定。

    在上面的迹线中、我们尝试清除大约200us、并且在每次清除尝试之后、我们都看到故障线路上出现毛刺脉冲、直到总经历时间为从故障发生开始~250ms。

    [报价]

    感谢您提供这些信息。 这与 CLR_FLT 逻辑无关、该逻辑经过设计和测试、可在启动后立即清除所有故障。 如果故障依然存在、尽管执行了 CLR_FLT、但故障可能仍然卡滞。  

    此致、Murugavel  

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

    好的。 我不确定我们将在这里深入探讨什么内容或何时进行深入探讨。 当故障被清除时、电机处于静止状态、我们可以很容易地重现此故障。 感谢您的回复、您并非总是能够找到此类问题的底部。

    如果您发现了相关信息、并且被告知该问题、我们希望了解我们如何适应或解决与芯片交互的问题。

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

    Chris、您好!

    我们尝试使用 DRV8889-Q1EVM 和由 VM = 12V 驱动的步进电机重现您描述的问题、但到目前为止未能做到。  我理解你的沮丧。 很抱歉、此操作耗时很长。   

    根据共享的寄存器设置、使用1/4步进模式。 阶跃 pps 是什么? 我们将尝试在测试中使用相同的频率。 我假设 VM = 12V 与您的设置相匹配。 我们设置 IFS = 300 mA。 我还假设您能够在多个驱动程序设备上重现此问题并出现类似行为。  

    EVM 固件采用调度程序运行、并将 nFAULT 引脚读取为 GPIO 状态。 这个过程涉及到一些毫秒的延迟。 但是、这个延迟肯定不是250ms。 低于10ms。 我们计划修改 EVM 固件以更大限度地减少此延迟、并看看我们是否可以重现此问题。 这可能需要几天的时间才能实施。 我会一直向您发布消息。 谢谢你。  

    此致、Murugavel  

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

    您好、Murugavel。

    这些东西都很复杂、始终存在一种可能、那就是芯片中不会出现一些奇怪的情况、或者只有在很难重现的特定情况下才会发生。

    我们的系统为24V、电流为50%(750mA)、PPS 为300 (尽管我们在运行时会有所不同)。

    我们能够在多个器件上重现问题。

    DRV_FLT 信号上有一个4.7K 上拉至3.3V、否则该线路上没有其他电子设备。 微控制器、配置为该引脚上的输入。

    请注意、该线程中的早期迹线显示了故障线路干扰、因此确实会出现这些故障。

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

    Chris、您好!

    感谢您提供这些信息。 我们会尽快回复您。

    此致、Murugavel  

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

    Chris、您好!

    感谢您的耐心。

    我能够加快 EVM 固件调度程序、以及修改代码以在 nFAULT 引脚被读取为低电平时立即执行 CLR_FLT。 仍然无法使用中断、但读取速度可能比常规 EVM 固件快得多。 一旦检测到 nFAULT 引脚为低电平、我就停止发出步进脉冲、然后在 CTRL4寄存器中执行 CLR_FLT。 我可以重现您观察到的问题。 此时我没有对行为的解释。 我们正在查看数字逻辑设计以了解行为。

    同时,我尝试了一个工作,似乎解决了这个问题。 演示顺序如下。 检测到 nFAULT 引脚为低电平后、停止发出 STEP 脉冲和 STEP 输入低电平。 通过在 CTRL5寄存器中写入 EN_STL = 0来禁用失速。 在 CTRL4中执行 CLR_FLT。 下一次通过 EN_STL = 1使能失速。 这样可以在下一个周期启用失速检测。 这似乎始终如一。 请参阅下面的捕获。 黄色迹线是 nFAULT、绿色迹线是从 CTRL7寄存器读数和 DAC 转换的扭矩计数模拟电压、蓝色迹线是线圈 B 电流。 您可以看到、随着电机接近端点并最终失速、扭矩计数会减少。 nFAULT 变为低电平、然后由 CLR_FLT 清除。 利用 修改后的调度程序介绍了100 μs。 运行多个周期会通过 CLR_FLT 产生一致的结果。  

    有关上下文、请参阅下面的捕获、该捕获在执行 CLR_FLT 之前不会执行 EN_STL = 0。 由于环路会在每个调度程序周期尝试多次 CLR_FLT、因此会出现中间尖峰。 具体来说、我从未能够重现250ms 的延迟、而我的 EVM 硬件的延迟在12ms 左右保持一致。  

    如有任何问题、请告诉我。 我希望这将帮助您在工作中取得进展。 当 EN_STL = 1时、一旦我们发现 CLR_FLT 出现意外行为的原因、我将立即关闭该职位。 谢谢。

    此致、Murugavel