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.

[参考译文] CCS/TMS320F28054M:定制电路板启动问题(DRV8323RS + NexFET)

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/930023/ccs-tms320f28054m-custom-board-bringup-problems-drv8323rs-nexfet

器件型号:TMS320F28054M
主题中讨论的其他器件:DRV8301DRV8323MOTORWAREDRV8305-Q1EVMCCStudio

工具/软件:Code Composer Studio

在提出定制板时遇到一些问题、可能有人会发现一个愚蠢的错误。 完全相同的电路板、但在使用 STM32 MCU 之前就成功了。 实际上、在多次尝试使用不同的 user.h 参数后、电机确实会进入学习模式、因此问题可能出在代码中的某个位置。 第一个出错的地方是这个消息-"器件可能在低功耗模式下运行"、这个消息出现在我选中"运行"复选框之后、所有值都变得疯狂、但是电路板仍然运行学习过程并转动电机(不是每次)。 在几秒钟后使用当前配置时、它只是挂起了一个位置。 之后尝试连接调试器、但运气不好、显示了源代码之外的某些地址、可能不正确。 尽管这是一个 JTAG 连接问题、将导线缩短到仅5cm、但没有帮助。 项目属性中的连接测试运行正常。 不确定这是否应该是这样的、但似乎 MCU 在上电后不会自行运行、使用两个链接器脚本、CCS 中的调试和 GUI Composer 加载固件即可正常运行。 此外、如果我没有选中"Run"复选框、GUI Composer 也会长时间工作。

以下是使用相同 MCU 的 drv8301_kit 示例代码的更改数字:

#define USER_IQ_FULL_SCALE_VOLTAGE_V (32)
#define USER_ADC_FULL_SCALE_VOLTGE_V (33)
#define USER_IQ_FULL_SCALE_CURRENT_A (55)
#define USER_ADC_FULL_SCALE_CURRENT_A (55)

#define I_A_offset (0.0)
#define I_B_offset (0.0)
#define I_C_offset (0.0)
#define V_A_offset (0.0)
#define V_B_offset (0.0)
#define V_C_offset (0.0)

#define USER_SYSTEM_FREQ_MHz (60.0)
#define USER_PWM_FREQ_kHz (45.0)
#define USER_NUM_PWM_TICKS_PER_ISR_TICK (1)
#define USER_NUM_PWM_TICKS_PER_ISR_TICK (1)

#define USER_NUM_CTRL_TICKS_PER_CURRENT_TICK (1)
#define USER_NUM_CTRL_TICKS_PER_EST_TICK (1)
#define USER_NUM_CTRL_TICKS_PER_SPEED_TICK (15)
#define USER_NUM_CTRL_TICKS_PER_TRAJ_TICK (15)

#define USER_MOTOR_Rs (0.0)
#define USER_MOTOR_LS_d (0.0)
#define USER_MOTOR_LS_q (0.0)
#define USER_MOTOR_RATed_VLUX (0.0)
#define USER_MOTOR_磁 化电流(NULL)
#define USER_MOTOR_RES_EST_CURRENT (4.0)
#define USER_MOTOR_IND_EST_CURRENT (-2.0)
#define USER_MOTOR_MAX_CURRENT (15.0)
#define USER_MOTOR_FLUX_EST_FREQ_Hz (88.0) 

我复制了上述 drv8301示例项目并更改了 GPIO 映射、删除了 DRV8301初始化、添加了 DRV8323RS 相关代码、更改了 TZ 引脚配置和 ADC 映射。 以下是项目配置:

MCU 原理图:

实际 P/N 是 TMS320F28054MPNQ。

使用3MR 分流器、DRV8323RS 采用默认配置(20V/V 增益、在这种情况下其他参数无关紧要)。

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

    如果我未启用 DRV8323并单击 Run、MCU 将继续工作、但有时几分钟后、会出现相同的消息。 在此之前、所有数字都是合理的。 尝试使用单独的电源为 MCU 供电、但未发生任何变化。

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

    不错的原理图。 您可以将 USER_NUM_PWM_TICKS_PER_ISR_TICK 更改为3。 45kHz ISR 频率太高、将导致 ISR 溢出。

    #define USER_NUM_PWM_TICKS_PER_ISR_TICK       (1)
    在 user.h 中、似乎有两个 USER_NUM_PWM_TICKS_PER_ISR_TICK 定义 并确保   应根据电流和电压检测电路计算 USER_ADC_FULL_SCALE_VOLT_V 和 USER_ADC_FULL_SCALE_CURRENT_A。  
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    谢谢:)

    现在、配置为:

    #define USER_IQ_FULL_SCALE_VOLTAGE_V (24)
    #define USER_ADC_FULL_SCALE_VOLTGE_V (33)
    
    #define USER_IQ_FULL_SCALE_CURRENT_A (41.25)
    #define USER_ADC_FULL_SCALE_CURRENT_A (55)
    
    #define USER_NUM_PWM_TICKS_PER_ISR_TICK (3)
    #define USER_NUM_ISR_TICKS_PER_CTRL_TICK (1)
    #define USER_NUM_CTRL_TICKS_PER_CURRENT_TICK (1)
    #define USER_NUM_CTRL_TICKS_PER_EST_TICK (1)
    #define USER_NUM_CTRL_TICKS_PER_SPEED_TICK (15)
    #define USER_NUM_CTRL_TICKS_PER_TRAJ_TICK (15)
    

    下面是 GUI Composer 对它的评价:

    看起来是正确的。 如果我在未启用 DRV 的情况下按"Run"按钮、则不会出现睡眠模式错误、并且似乎有很长一段时间在执行某项操作。 启用 DRV 后、它立即发出消息、MCU 仍在执行某项操作一秒钟、然后冻结。

    顺便说一下、启动 GUI Composer 时经常会出现此消息、这是否正常、或者我的设置可能有问题?

    这是 ISR 跟踪、它在运行后停止。 ISR 需要12us、频率为15kHz。

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

    您可以使用 CCS 直接设计和调试项目。 GUI 不适用于 DRV8323、尤其是您更改了 motorWare 中的示例项目。  如果还有任何问题、请告诉我。

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

    不幸的是,这里似乎也有同样的问题。 我已经在主循环之前添加了这段代码:

    gMotorVars.Flag_enableSys = true;
    gMotorVars.Flag_Run_Identify = true;
    gMotorVars.Flag_enableUserParams = false;
    gMotorVars.Flag_enableForceAngle = true;
    gMotorVars.Flag_enableFieldWeakening = false;
    gMotorVars.Flag_enableRsRecalc = true;
    gMotorVars.Flag_enableOffsetcalc = false; 

    启动调试会话、一切正常、然后我启用了硅实时模式、一旦我按下运行、就会显示以下消息:

    尽管如此、MCU 仍在继续工作、似乎它通过了 Rs 计算、并尝试将电机转用于磁通计算、然后停在某个地方。 这种低功耗模式的含义是、我的 JTAG 连接或 JTAG 适配器本身是否存在问题(我将 DRV8305-Q1EVM 用作 XDS110、将它的 JTAG 重新接线到电路板)?

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

    1.删除项目中的所有断点。

    2.连接线应尽可能短或使用独立仿真器以避免噪声。

    3.确保电源的输出电流对于控制器和仿真器来说足够。

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

    最后取得一些进展:)如果我刷写 MCU 并立即断开 JTAG 线、MCU 将继续工作、旋转电机、整体看起来工作正常。

    我们应该很快收到 XDS110、它应该更强大吗?

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

    是的。 我认为是这样。

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

    使用 XDS110进行了测试、使用超短导线并替换了2k2->10K 电阻器、即使在5MHz 下、JTAG 测试也能正常通过。 目前使用100kHz。 从 CCS 进行调试和加载工作正常、即使在启用 DRV 的情况下、也不会显示睡眠模式错误消息。 但现在另一个问题是、尝试启动 GUI 编写器、并收到以下消息:  

    正在重新启动程序模型...
    初始化目标:C:\ti\guicomposer\eclipse\workspace\.metadata\.plugins\com.ti.binding.program\appConfig.ccxml
    连接目标:德州仪器 XDS110 USB 调试探针/C28xx
    sun.org.mozilla.javascript.internal.WrappedException: wrapped com.ti.ccstudio.scripting.environment.ScriptingException:Error connecting to the target:emululation failure occurred ( 14)输入 第14行“Restart Completed (重新启动完成)”。

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

    GUI 的默认仿真器是 XDS100。 您应该更改 XDS110仿真器的 AppConfig.ccxml、您可以在 CCS 中使用目标配置文件(.ccxml)、并将其名称更改为 AppConfig.ccxml、而不是原来的文件。

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

    遗憾的是、会发生相同的错误、并且首先 wabapps 文件夹中没有 AppConfig.ccxml 文件。 但它确实加载了该文件。

    此外、我们还通过在启动时将 GPIO34和 GPIO37拉至+3V3、成功地在没有调试器的情况下启动固件。

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

    GUI 使用位于 C:\ti\guicomposer\webapps\InstaSPIN_F2805xM_universal\AppConfig.ccxml 的 CCXML 文件

    如果您在 CCS 中使用相同的仿真器进行连接、则可以将正在工作的 ccxml 的内容复制到 AppConfig.ccxml 中、并查看这是否允许您连接 GUI。