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.

[参考译文] DRV8301:DRV8301 GVDD始终为低

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

https://e2e.ti.com/support/motor-drivers-group/motor-drivers/f/motor-drivers-forum/565346/drv8301-drv8301-gvdd-is-always-low

部件号:DRV8301

大家好,我有DRV 8301,其电路设计与 数据表参考设计中提供的电路相同。

我没有将22 uh电感器连接到电路,因为它导致微控制器出现高电流问题,因为微控制器的%v连接到电感器的Vcc端。  

除电感器被移除外,电路的其余部分相同。 我对DRV8301的所有6个引脚应用了PWM,然后我观察到任何GH_X和GL_X处的PWM输出都不工作。 在调试过程中,我发现GVDD引脚始终具有0V。 nFault针脚低,OCTW高。

PWRGD为低,nFault引脚为低,OCTW为高。 这表示由于GVDD低位状态指示的电压过低而导致停机。 此外,没有MOSFET相关电路连接至DRV8301。

为什么GVDD始终处于低位? 我刚刚将2.2uF连接到GVDD接地。 此外,IC可快速加热至100 C。我不明白为什么会发生这种情况,有什么想法!!

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

    由于您删除了电感器,您是否还可以将EN_BUCK设置为小于1.2V。 这将禁用降压以帮助调试。

    电源垫是否连接到GND?
    在应用PWM信号之前:
    测量GVDD时,您是否将EN_GATE设置为逻辑高?
    当EN_GATE设置为逻辑高电压时,AVDD,GVDD和DVDD处的电压是多少?
    您是否连接了电机? 是否可以卸下电机进行初始调试?

    您是否已读取SPI寄存器以确定故障原因?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好,Rick:

        感谢您的回复,

    是的,PowerPAD已连接到接地。

    EN_GATE逻辑值很高,但在EN_GATE高时,我会等待20毫秒。

    AVDD = 6.3V

    DVDD = 2.7V

    GVDD = 0.1伏

    没有电机未连接至电路。

    我尝试读取SPI寄存器,但没有成功,我认为这是因为SPI块停止响应外部命令时欠压关闭(根据数据表)。

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

    您好,Rick:
    我只是手动将接地引脚连接到EN_Buck (DRV8301 IC的引脚55),PWM突然工作。 在将EN_BUCK连接至接地之前,其电压为2.7V。 但正如我接地EN_BUCK PWM和SPI工作正常一样。
    我始终设置,
    PVDD1 = 24V
    PVDD2 = 24V

    如果EN_BUCK = 0V (手动连接到接地)
    GVDD = 11伏
    AVDD = 6.3V
    DVDD = 3.3V


    如果EN_BUCK = 2.2V (左浮动)
    GVDD = 0.1伏
    AVDD = 6.3V
    DVDD = 2.7V


    问题1:我目前将EN_BUCK保持在0伏,但理想情况下,它的值应该是什么?

    问题2:另外,我正在将3相命令写入寄存器值为0x1008的SPI,当我第一次读取它时,我得到0x1008作为返回值,我认为这对于3-PWM模式是正确的。 但是当我尝试再次读取相同的寄存器时,我只得到0x1400作为返回值。 如果发生这种情况,为什么会自动覆盖0x1008?

    问题3:有时SPI只返回0x0000或即不返回任何内容,在这种情况下,我使用相同的命令继续阅读,然后尝试2或3次,我就成功了。 为什么SPI通信不可靠?

    问题4:即使我不应用PWM和EN_BADH=0V,在DRV8301的GX_X引脚上也默认有3.3V的PWM信号。 当我在INX_X引脚上应用PWM时,我只获得5V的输出噪声非常大的PWM (形状不是矩形,但形状类似于电容器充电),如何将PWM的输出电压提高到8V?

    我在Arduino MEGA上使用以下代码,

    #include <SPI.h>
    Const int HpinA =11;
    Const int LpinA =10;
    Const int HpinB =9;
    Const int LpinB =6;
    Const int HpinC =5;
    Const int LpinC =3;
    Const Int ChipSelectPin =53;
    const int EN_gate = 8;
    布尔值is3PMWmode = FALSE;
    字节Hcheck3PWM = 0x00,Lcheck3PWM = 0x00;
    void setup(){
    Serial.begin(9600);
    PinMode (芯片选择引脚,输出);
    PinMode (EN_gate,输出);
    DigitalWrite (EN_gate,低);
    digitalWrite (低芯片选择引脚);
    SPI.begin();
    // DRV8301首先与MSB通信,具有低时钟极性,数据在上升沿上移位
    // SPI.beginTransaction(SPISettings(400万,MSBFIRST,SPI_MODE1));
    SPI.setBitOrder(MSBFIRST);
    SPI.setDataMode(SPI_MODE1);//空闲SPI CLK =0时,为Rx下降自锁
    digitalWrite (EN_gate,高);
    Delay(20);//启动时间
    }

    void loop(){
    IF (Hcheck3PWM == 0x10 && Lcheck3PWM == 0x08){
    is3PMWmode =真;
    runPWM();
    }
    IF (!is3PMWmode){
    writeRegister (0x02,0x08);
    readRegister (0x02);
    延迟(1000);
    }
    IF (Serial.Available ()){
    int rcmd =(int)Serial.Read();
    如果(rcmd=0x31){
    readRegister (0x02);
    }
    如果(rcmd=0x30){
    writeRegister (0x02,0x08);
    }
    }
    }

    无符号int readRegister (字节寄存器){
    字节HdataToSend = 0x80,LdataToSend = 0x00,HdataToRead = 0x00,LdataToRead = 0x00;
    //位1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
    // R=1/W=0 |-Raddr--||----------- 数据----------------------- |
    // Fault=1/0|-Raddr--||----------- 数据----------------------- |
    HdataToSend = HdataToSend |注册<<3;
    serial.print("正在发送读取命令:");
    serial.print (HdataToSend,hex);Serial.print (");Serial.println (LdataToSend,hex);
    digitalWrite (低芯片选择引脚);
    SPI.transfer (HdataToSend);
    SPI.transfer (LdataToSend);
    DigitalWrite (ChipSelectPin,高);
    digitalWrite (低芯片选择引脚);
    HdataToRead = SPI.transfer (0x00);
    LdataToRead = SPI.transfer (0x00);
    DigitalWrite (ChipSelectPin,高);
    Hcheck3PWM = HdataToRead;
    Lcheck3PWM = LdataToRead;
    serial.print (HdataToRead,hex);Serial.print (");Serial.println (LdataToRead,hex);

    }

    void writeRegister (字节寄存器,字节值){
    字节HdataToSend = 0x00,LdataToSend = 0x00,HdataToRead = 0x00,LdataToRead = 0x00;
    //位1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
    // R=1/W=0 |-Raddr--||----------- 数据----------------------- |
    HdataToSend = HdataToSend |注册<<3;
    LdataToSend =值;
    serial.print("正在发送写入命令:");
    serial.print (HdataToSend,hex);Serial.println (LdataToSend,hex);
    digitalWrite (低芯片选择引脚);
    SPI.transfer (HdataToSend);
    SPI.transfer (LdataToSend);
    DigitalWrite (ChipSelectPin,高);
    serial.print (HdataToRead,hex);Serial.print (");Serial.println (LdataToRead,hex);
    }

    void runPWM(){
    延迟(1000);

    pinMode (HpinA,输出);
    PinMode (线夹模式)(LpinA,输出);
    pinMode (HpinB,输出);
    pinMode (线插槽B,输出);
    pinMode (HpinC,输出);
    pinMode (LpinC,输出);

    类比写入(HpinA,200);
    类比书写(LpinA,50);
    类比书写(HpinB,100);
    类比书写(LpinB,100);
    类比书写(HpinC,100);
    类比书写(HpinC,100);

    }

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

    问题1:我目前将EN_BUCK保持在0伏,但理想情况下,它的值应该是什么?

    理想情况下,如果启用了降压,则EN_BUCK应该是浮动的。 应连接22uH电感器。

    问题2:另外,我正在将3相命令写入寄存器值为0x1008的SPI,当我第一次读取它时,我得到0x1008作为返回值,我认为这对于3-PWM模式是正确的。 但是当我尝试再次读取相同的寄存器时,我只得到0x1400作为返回值。 如果发生这种情况,为什么会自动覆盖0x1008?

    问题3:有时SPI只返回0x0000或即不返回任何内容,在这种情况下,我使用相同的命令继续阅读,然后尝试2或3次,我就成功了。 为什么SPI通信不可靠?

    SPI事务应可靠。 噪音可能会影响操作。 请提供所有4个信号的SPI事务的范围捕获。

    问题4:即使我不应用PWM和EN_BADH=0V,在DRV8301的GX_X引脚上也默认有3.3V的PWM信号。 当我在INX_X引脚上应用PWM时,我只获得5V的输出噪声非常大的PWM (形状不是矩形,但形状类似于电容器充电),如何将PWM的输出电压提高到8V?

    是否可以提供具有和不具有PWM的GX_x输出的范围捕获?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好,Rick:

    上半部分显示实际信号,下半部分显示放大信号,

    不带PWM输入,

     第一个信号在INH_A处输入

     第二个信号在GH_A处输出

           

    使用PWM

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

    您好,Rick:

           我已经发布了PWM输出的CRO捕获的屏幕截图。 请查看这些捕获并提供可能出错的见解?

x 出现错误。请重试或与管理员联系。