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.

[参考译文] DRV8908-Q1EVM:DRV8908-Q1EVM

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

https://e2e.ti.com/support/motor-drivers-group/motor-drivers/f/motor-drivers-forum/1136277/drv8908-q1evm-drv8908-q1evm

器件型号:DRV8908-Q1EVM

您好、芯片、  

 当我尝试读取 IC 状态寄存器时、您能否告诉我为什么第一个字节(0xc6或0xc4或0xc0)与第二个字节0x04不相同?我的问题基于链接 (+) DRV8908-Q1EVM:SPI 消息详细信息-电机驱动器论坛-电机驱动器- TI E2E 支持论坛

我还有一个问题,当我写入一个寄存器时,SDO 返回一个故障,如何清除寄存器中的故障(当硬件板消除故障时)?

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

    您好!

    感谢您的提问。 IC 状态分配如下。 我为 C4放置一个示例。 如果 DRV 有一些故障状态、它会反映到 IC 状态。 如果故障状态发生变化、IC 状态也会发生变化。

    为了清除故障、CLR_FLT 是解决方法。 在地址0x07h 写入01h。

    我建议先设置 CLR_FLT、然后通过发送一些注释来检查 IC 状态(读取0x00h 上的 IC_STAT 可能是一个好的状态)。  

    此致

    Shinya Morita

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

    您好,

    很抱歉 我迟到了。谢谢  你的回答。   正如您所说,我可以使用 CLR_FLT 清除 故障。

    现在,我 有3个问题。

     

    1.当系统发生2个错误(例如 OCP 和 TSD)但系统仅 显示 TSD 消失时,我需要将 CLR_FLT 设置为1,OCP 错误不消失,对吧?

    1. 您说我建议先设置 CLR_FLT、然后通过发送一些注释来检查 IC 状态(读取0x00h 上的 IC_STAT 可能是一个好的注释)。  

    为什么我需要检查 IC 状态? 如果系统未恢复,则 IC 状态未更改, 对吧?

    3.我已禁用 openload,  为什么在发送控制1,2,4通道输出1,3通道输出0时状态返回旧故障?  

    我的初始化寄存器代码:

    InitSSP0_Drv8908();
    initdataback = ReadOrSetSpiData( 0, CONFIG_CTRL_ADDR ,(1<<1)|(1<<3)|(1<0),REG_WRITE_CMD);//0SET 0端口过压阈值为33V,OCP 不报告故障引脚

    initdataback = ReadOrSetSpiData( 0,old_CTRL_1_ADDR,0xff,REG_WRITE_CMD );//设置0端口禁用所有开路负载检测

    initdataback = ReadOrSetSpiData( 0,old_CTRL_2_ADDR,0xc0,REG_WRITE_CMD );//在 nFAULT 中设置0端口无报告

    initdataback = ReadOrSetSpiData (0、old_CTRL_3_ADDR、0、REG_WRITE_CMD);//设置0端口禁用所有低电流开路负载检测

    initdataback = ReadOrSetSpiData (0、old_CTRL_4_ADDR、0、REG_WRITE_CMD);//设置0端口禁用所有低电流开路负载检测

    initdataback = ReadOrSetSpiData (0、old_CTRL_5_ADDR、0、REG_WRITE_CMD);//设置0端口禁用所有低电流开路负载检测

    initdataback = ReadOrSetSpiData (0,old_CTRL_6_ADDR,0,REG_WRITE_CMD);//设置0端口禁用所有低电流开路负载检测

    initdataback 为什么  是0x00??????

    我的控制代码:

       uint16 SPI_outdata= OutputPorts_drv8908 (端口、OP_CTRL_1_ADDR、outdata);//OP_CTRL_1_ADDR  

    为什么 SPI_outdata 是0xd19a?  我需要知道 为什么老派是真的(我的电路正在中继、形成贿赂、在电路中没有开路负载)?  

    等待您的回答,谢谢!

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

    我 的宏定义:

    #define IC_STAT_ADDR 0x00 // IC 状态(IC_STAT)寄存器
    #define OCP_STAT_1_ADDR 0x01 //过流保护(OCP)状态1 (OCP_STAT_1)寄存器
    #define OCP_STAT_2_ADDR 0x02 //过流保护(OCP)状态2 (OCP_STAT_2)寄存器
    #define OLD_STAT_1_ADDR 0x04 //开路负载检测(OLD)状态1 (OLD_STAT_1)寄存器
    #define OLD_STAT_2_ADDR 0x05 //开路负载检测(OLD)状态2 (OLD_STAT_2)寄存器
    #define OP_CTRL_1_ADDR 0x08 // OP_CTRL_1 //1-4 DO 引脚
    #define OP_CTRL_2_ADDR 0x09 // OP_CTRL_2 //5-8 DO 引脚
    #define CONFIG_CTRL_ADDR 0x07 //配置(CONFIG_CTRL)寄存器
    #define OLD_CTRL_1_ADDR 0x1F //开路负载检测(OLD)控制1.
    #define OLD_CTRL_2_ADDR 0x20 //开路负载检测(OLD)控制2.
    #define OLD_CTRL_3_ADDR 0x21 //开路负载检测(OLD)控制3.
    #define OLD_CTRL_4_ADDR 0x22 //开路负载检测(OLD)控制4.
    #define OLD_CTRL_5_ADDR 0x23 //开路负载检测(OLD)控制5.
    #define OLD_CTRL_6_ADDR 0x24 //开路负载检测(OLD)控制6.

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

    您好!

    感谢您的提问。  

    1.是的、需要 CLR_FLT 清除故障寄存器。 即使故障条件已消除、故障寄存器也会被锁存。

    这里是数据表说明- TSD 示例。

    2.通过检查 IC STAT,我们可以确定发生哪种类型的故障事件。 (热、过流、旧等)

    3.在启用输出(地址0x08和0x09)之前需要禁用 OLD。

    或者、如果 nSLEEP=低电平或 VDD 变为低电平、则所有寄存器设置包括旧禁用(0x1F)。 OLD_CTRL 的默认设置为"已启用 OLD "。 供参考。

    此致

    Shinya Morita

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

    你(们)好, Morita

           感谢 您的回答。 我得到了它、beacuse nSLEEP=low、因此 OLD 是使能的。 我的板载硬件有一些不可预期的现象。

          现在、我有另一个问题。 nSLEEP  为高电平后,我将寄存器(地址  0x07)设置为0x0B,VM 为24V,启用输出(地址0x08or 0x09),返回数据(OVP)具有 过压 状态,为什么?

          如果我尝试设置寄存器(地址 0x07), 我启用输出(地址0x08or 0x09) ,返回数据没有这个过压状态,为什么?

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

    你(们)好, Morita

           感谢 您的回答。 我得到了它、beacuse nSLEEP=low、因此 OLD 是使能的。 我的板载硬件有一些不可预期的现象。

          现在、我有另一个问题。 nSLEEP  为高电平后,我将寄存器(地址  0x07)设置为0x0B,VM 为24V,启用输出(地址0x08or 0x09),返回数据(OVP)具有 过压 状态,为什么?

          如果我再次尝试将寄存器(地址 0x07)设置为0x0B, 我启用输出(地址0x08or 0x09) ,返回数据没有这个过压状态,为什么?

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

    您好 Rita、  

    Morita-San 今天外出、将在1个工作日内(周一)返回您的位置。   

    此致、

    Jacob

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

    您好、Rita San、

    感谢您的提问。 OVP 默认设置为21V。 VM 24V 可能会被检测为 OVP 故障。

    此致

    Shinya Morita

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

    你(们)好,Morita

         感谢您的回答。 我有两个问题。请帮助我。 谢谢你。

    我知道 OVP 故障设置是21V,所以 我将寄存器(地址0x07)设置为0x0B ,请看 图片,然后我启用输出(地址0x08或0x09),返回数据(OVP)具有 过压 状态,为什么?

    但是当我 再次将该寄存器(地址0x07)设置为0x0B 时, 那么我启用输出(地址0x08或0x09),返回数据(OVP)没有 这个过压状态 ,为什么?

    SDO 数据中的 OT 位 是什么意思? 位 OT 是否代表 IC 状态下的 OTSD 和 OTW? 也就是说、当 OT 位为1时 、它显示芯片具有 OTW 或 OTSD、我需要检查 IC 状态 、检查故障是 OTW 还是 OTSD?

    再次感谢你。

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

    你(们)好, Morita

      我有第三个问题。 当我读取 IC 状态重制器时,返回数据是 OTW 或 OTSD 设置1,我需要检查发生了哪个通道 OCP? 您可以看到图片、如果 OTW 或 OTSD 为1、则显示 检测到过流、因此我需要检查 OCP_STAT_1 (地址0x01)或 OCP_STAT_2 (0x02)以查找哪个通道是 OCP?  

    再次感谢您。 祝你一切顺利。

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

    Rita、

    这是数据表中的一个拼写错误。   

    OTSD 应显示"检测到过热关断"。

    OTW 应显示"检测到过热警告"。

    此致、

    Ryan

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

    您好、 芯片

         感谢您的回答。 我有两个问题。请帮助我。 谢谢你。

    我知道 OVP 故障设置是21V,所以 我将寄存器(地址0x07)设置为0x0B ,请看 图片,然后我启用输出(地址0x08或0x09),返回数据(OVP)具有 过压 状态,为什么?

    但是当我 再次将该寄存器(地址0x07)设置为0x0B 时, 那么我启用输出(地址0x08或0x09),返回数据(OVP)没有 这个过压状态 ,为什么?

    SDO 数据中的 OT 位 是什么意思? 位 OT 是否代表 IC 状态下的 OTSD 和 OTW? 也就是说、当 OT 位为1时 、它显示芯片具有 OTW 或 OTSD、我需要检查 IC 状态 、检查故障是 OTW 还是 OTSD?

    再次感谢你。

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

    您好!

    1)通常、如果 DRV 检测到 OVP 时设置为33V、则也应检测到 OVP 时设置为21V。

    一些调试建议。

    -读回 IC 状态(Addre4ss 0x00)。 它可以是更直接的方法来检查故障状态。 这可能不是您的情况、但 MCU/固件可能无法理解 IC_STAT (Bit13-8)、因为它是唯一的格式。

    -当大容量电容器太小且电机停止时、通常会发生 OVP。 尝试在 VM 与 GND 之间添加更大的大容量电容器(~200uF)以进行试用。

    2) 2)是 OT=1意味着 OTW 或 OTSD。 需要读回0x00 IC 状态以进行识别。

    此致

    Shinya Morita

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

    您好、Morita、

       感谢您的回答。  问题2是可以的,谢谢。

      但是,对于答案一,我不明白为什么 DRV 设置为33V,也需要检查21V,?

      对于您的建议,SDO 数据中的返回数据与 IC_STAT 相同,对吧?     SDO 数据(8-13位)中的返回数据是否 与 IC_STAT (0-6位)不同 ?

      您的意思是,任何寄存器( OP_CTRL_1 、  OCP_STAT_2、 OLD_CTRL_2  等 )都可能错过或丢失返回数据中的 Bit13-8,对吧?

      我应该读取 IC_STAT 并使用该数据(0-8位) 来显示 DRV 状态、对吧?   

     最后一个问题,当 DRV 不处于睡眠状态时,我将一些寄存器设置为某个值,但之后,我将 DRV 设置为睡眠模式 , 寄存器(我已设置)将恢复默认值?

    当睡眠为低电平时、myMCU 可以 将任何寄存器(例如:地址0x08或0x09)设置 为其他 值? 换句话说,当睡眠为低 电平且 VM 为12V 时,我可以经常将寄存 器设置为其他值,一旦睡眠为高电平,输出(1-8通道)是我设置的最小值 ,而其他寄存器是我设置的最小值,对吧?

      谢谢。

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

    你(们)好  

    感谢您的反馈。 对于1)、 IC_STAT (地址0x00)和 SDO 数据(8-13位)信息应该相同。 但是、您观察到的 OVP 很奇怪。   

    >>但是,当我 再次将该寄存器(地址0x07)设置为0x0B 时, 那么我启用输出(地址0x08或0x09),返回数据(OVP) 没有这个过压状态 ,为什么?

    因此、我建议读取 IC_STAT (地址0x00)以进行双确认。

    当 nSLEEP 为低电平时、SPI 接口被禁用、所有寄存器恢复为默认值。  

    和 tWAKE 时间(200us)存在。 在 nSLEEP L->H 之后、需要等待200us 才能使 SPI 就绪

    此致

    Shinya Morita