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.

[参考译文] C2000WARE-MOTORCONTROL-SDK:LAUNCHXL-F280025C 始终读取 DRV8323RS 的所有 SPI 控制寄存器为零

Guru**** 2405245 points
Other Parts Discussed in Thread: BOOSTXL-DRV8323RS, LAUNCHXL-F280025C

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1544957/c2000ware-motorcontrol-sdk-launchxl-f280025c-always-reads-all-spi-control-registers-of-the-drv8323rs-as-zero

器件型号:C2000WARE-MOTORCONTROL-SDK
Thread 中讨论的其他器件:BOOSTXL-DRV8323RSLAUNCHXL-F280025C

工具/软件:

您好:

我遵循  用户指南 电机控制 SDK 通用工程和实验“文档中的“3.2.10 BOOSTXL-DRV8323RS 设置“来设置 LAUNCHXL-F280025C 和  BOOSTXL-DRV8323RS

为了验证 LAUNCHXL-F280025C 是否通过 SPI 与 BOOSTXL-DRV8323RS 成功通信、我执行了以下步骤:

  1. 我修改了源代码、如下所示。 用途:将数据写入 DRV8323RS 的控制寄存器后、我读回这个相同的控制寄存器。

    bool HAL_MTR_setGateDriver(HAL_MTR_Handle handle)
    {
        ...
        ...
        drvicVars_M1.ctrlReg02.bit.OTW_REP = true;
        drvicVars_M1.ctrlReg02.bit.PWM_MODE = DRV8323_PWMMODE_6;
    
        drvicVars_M1.ctrlReg05.bit.VDS_LVL = DRV8323_VDS_LEVEL_1P700_V;
        drvicVars_M1.ctrlReg05.bit.OCP_MODE = DRV8323_AUTOMATIC_RETRY;
        drvicVars_M1.ctrlReg05.bit.DEAD_TIME = DRV8323_DEADTIME_100_NS;
    
        drvicVars_M1.ctrlReg06.bit.CSA_GAIN = DRV8323_Gain_10VpV;         // ADC_FULL_SCALE_CURRENT = 47.14285714A
    //    drvicVars_M1.ctrlReg06.bit.CSA_GAIN = DRV8323_Gain_20VpV;       // ADC_FULL_SCALE_CURRENT = 23.57142857A
        drvicVars_M1.ctrlReg06.bit.LS_REF = false;
        drvicVars_M1.ctrlReg06.bit.VREF_DIV = true;
        drvicVars_M1.ctrlReg06.bit.CSA_FET = false;
    
        drvicVars_M1.writeCmd = 1;
        HAL_writeDRVData(handle, &drvicVars_M1);
        SysCtl_delay(1000U);
    
        drvicVars_M1.writeCmd = 1;
        HAL_writeDRVData(handle, &drvicVars_M1);
        SysCtl_delay(1000U);
    
        // My code to read control register after write data
        drvicVars_M1.readCmd = 1;
        HAL_readDRVData(handle, &drvicVars_M1);
        SysCtl_delay(1000U);
        ...
        ...
    }
  2. 我在调试模式下运行程序。

结果: BOOSTXL-DRV8323RS 的所有控制寄存器返回值零! (如下图所示)  

因此、我的问题是:
如果所有寄存器值总是读回为零、是否存在任何问题?
如何验证对 DRV8323RS 控制寄存器的写入操作实际上是否成功?

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

    请查看 《通用工程和实验用户指南: https://www.ti.com/lit/spruj26》、并确保连接正确。

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

    问题已解决。
    根本原因是我没有为 BOOSTXL-DRV8323RS 提供 VM 电源。
    DRV8323RS 未通电、因此未运行、这就是为什么所有读回数据始终为零的原因。

    非常感谢!