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.

[参考译文] TMS320F280049C:将 LaunchpadXL 与 drvSPI8320RS 板配合使用。 死区时间问题。

Guru**** 2589280 points
Other Parts Discussed in Thread: DRV8320, TMS320F280049C

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/991659/tms320f280049c-using-launchpadxl-with-drvspi8320rs-board-question-on-dead-time

器件型号:TMS320F280049C
主题中讨论的其他器件:DRV8320

在文件 is09_Flying_start.c 中、死区时间似乎设置为100ns、如下行所示。

drvSPI8320Vars.ctrl_Reg_05.dead_time = DRV8320_Deadtime_100_NS;

这意味着什么?

死区时间如何设置为100ns? 尝试了解在硬件寄存器中实际设置它的代码。 需要帮助。 谢谢。

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

    器件型号:TMS320F280049C

    DBFED 和 DBRED 被设定为1。  

    半周期时钟被禁用。

     μS、根据参考指南 sprui33d 中的表18-10、死区为0.01 μ F。

    这意味着10ns 是死区时间。 对吧?

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

    您好、Akila、

    我已经合并了您的主题、因为您提出的两个问题都与同一主题相关。

    此致、

    Vince

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

    您好、Akila、

    请参阅以下代码。  DRV8320_DeadTime_100_NS 是用于指定死区时间的预定义值、如下所示。

    typedef enum
    {
        DRV8320_DEADTIME_50_NS  = (0 << 8),   //!< DEAD_TIME = 50ns
        DRV8320_DEADTIME_100_NS = (1 << 8),   //!< DEAD_TIME = 100ns
        DRV8320_DEADTIME_200_NS = (2 << 8),   //!< DEAD_TIME = 200ns
        DRV8320_DEADTIME_400_NS = (3 << 8)    //!< DEAD_TIME = 400ns
    } DRV8320_CTRL05_DeadTime_e;

    控制寄存器直接读取该值并在 main 中设置死区。

    typedef struct _DRV8320_Ctrl05_t_
    {
        DRV8320_CTRL05_VDSLVL_e           VDS_LVL;        // Bits 3-0
        DRV8320_CTRL05_OcpDeg_e           OCP_DEG;        // Bits 5-4
        DRV8320_CTRL05_OcpMode_e          OCP_MODE;       // Bits 7-5
        DRV8320_CTRL05_DeadTime_e         DEAD_TIME;      // Bits 9-8
        bool                              TRETRY;         // Bits 10
    }DRV8320_Ctrl05_t;
    
    //! \brief Object for the DRV8320 registers and commands
    //!
    typedef struct _DRV8320_SPIVars_t_
    {
        DRV8320_Stat00_t          Stat_Reg_00;
        DRV8320_Stat01_t          Stat_Reg_01;
    
        DRV8320_Ctrl02_t          Ctrl_Reg_02;
        DRV8320_Ctrl03_t          Ctrl_Reg_03;
        DRV8320_Ctrl04_t          Ctrl_Reg_04;
        DRV8320_Ctrl05_t          Ctrl_Reg_05;
        bool                      writeCmd;
        bool                      readCmd;
    
        uint16_t                  manWriteAddr;
        uint16_t                  manReadAddr;
        uint16_t                  manWriteData;
        uint16_t                  manReadData;
        bool                      manWriteCmd;
        bool                      manReadCmd;
    }DRV8320_SPIVars_t;

    最棒的

    John

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

    在我看来、这是两个不同的问题。 我仍然不明白硬件寄存器 DBCTL 的更新位置和更新方式。 您引用的代码只是显示了从 main 传递到驱动器板的值。 在哪里更新实际的 DBCTL 寄存器值以反映100ns?

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

    请回答这个问题。 谢谢。

    "

    DBFED 和 DBRED 被设定为1。  

    半周期时钟被禁用。

     μS、根据参考指南 sprui33d 中的表18-10、死区为0.01 μ F。

    这意味着10ns 是死区时间。 对吧?

    "

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

    是的、它就在 C2000控制器侧、实际死区时间是 C2000的设置值与 DRV8320RS 寄存器的配置值之间的最大值。

    实际上、如果您使用 DRV8320RS 驱动器、您可能会禁用 C2000控制器的死区时间输出。

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

     DRV8320RS 驱动器如何设置死区时间? 您能给我展示一下实现该功能的代码吗?

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

    如上所述、您可能会在项目文件(is0x_xxx.c)中找到以下代码、只需将正确的值设置为  drvSPI8320Vars.Ctrl_Reg_05.Deid_time 即可。

    drvSPI8320Vars.ctrl_Reg_05.VDS_LVL = DRV8320_VDS_LEVEL_1P300_V;
    drvSPI8320Vars.ctrl_Reg_05.dead_time = DRV8320_Deadtime_100_NS;
    drvSPI8320Vars.writeCmd = 1;

    HAL_writeDRVData (halHandle、&drvSPI8320Vars);

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

     HAL_writeDRVData 是否 更新 DBCTL 寄存器? 如果没有、处理器如何知道死区时间? 您能解释一下它的工作原理吗?

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

    不需要、 在初始代码中 DBCTL 只配置一次、在大多数电机控制应用中、死区时间不需要更新。

    死区时间在 DBFED 和 DBRED 寄存器中设置、C2000控制器将相应地通过硬件生成死区时间。 您可以查看 F280049C 技术参考手册的 PWM 一章。

    如上所述、一些栅极驱动器具有其死区时间控制、例如 DRV8320RS。 在这些情况下、C2000控制器不需要知道和控制死区时间。

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

    感谢您的回答。 我想知道 DRV8320RS 如何控制死区时间的详细信息吗?  

    我还需要知道 DRV8320RS 可以更改哪些其他器件配置值?  

    例如、以下值表示什么? 用户是否不应更改它? 如果可以更改、该值应设置为什么? 我看到 VDS_LEVEL = 1.300V、如何知道这是不是正确的值?

    drvSPI8320Vars.ctrl_Reg_05.VDS_LVL = DRV8320_VDS_LEVEL_1P300_V;

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引用 userid="37234" URL"~/support/microcontrollers/c2000/f/c2000-microcontrollers-forum/991659/tms320f280049c-using-launchpadxl-with-drvspi8320rs-board-question-on-dead-time/3668605 #3668605)]例如,以下值代表什么? 用户是否不应更改它? 如果可以更改、该值应设置为什么? 我看到 VDS_LEVEL = 1.300V、如何知道这是否是正确的值?[/QUERP]

    设置值取决于使用的 MOSFET、即电源板的最大电流。
    您可以查看 DRV8320RS 的数据表、其中详细介绍了控制寄存器。 您可以根据硬件设置寄存器。