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.

[参考译文] LAUNCHXL-F280039C:UMCSDK v5.04 ADC、CMPSS、PWM Booster site 1 DRV8353RS-EVM hal.c/h

Guru**** 2782575 points

Other Parts Discussed in Thread: C2000WARE, DRV8353, DRV8353RS-EVM, LAUNCHXL-F280039C, LM5008A

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1601885/launchxl-f280039c-umcsdk-v5-04-adc-cmpss-pwm-booster-site-1-drv8353rs-evm-hal-c-h

器件型号: LAUNCHXL-F280039C
主题中讨论的其他器件: DRV8353DRV8353RS-EVM、C2000WARE、 LM5008A

您好论坛、

与 DRV8353RS 配合使用的 UMCSDK V5.04 非常奇怪的问题。 ADC、CMPSS、PWM 模块不会通过 hal.c/h 进行配置 DRV8353 VSENVM 输入高达 x39c (J1-Pin2 ADC-C6*) 模拟输入在 XL39c 引脚 2 输入端的电压为 597mV、用于 DRV8353-EVM 的+24Vdc 电源 J5。   

当使用类似但不同的 hal.c/h 时、站点 1 升压器接头外部直流逆变器 XL39c 的 ADC 引脚配置使用 3 个 PPB 和 14 个 SOC 的 UMCSDK v5.03、而不使用 device.c ADC 计数器正常工作。 但是、如果我们为 DRV8353RS 将 C6*的中断配置为 UMSCSDK v5.04 hal.c/h SOC/PPB、ADC、PWM、CMPSS 将根本不会配置寄存器。CCS 调试中的单步进不会错误地逐步配置这些外设! 奇怪的是、ADC INT1 会触发 PIE IER9 SCIB 标志、但任何输入通道上都没有 ADC 采样 SOC、并且 ADCC 中断在调试中显示为未配置 UMCSDK v5.04。  

是否有任何关于此问题的论坛报告 hal.c 在没有 device.c XL39C 和 DRV8353RS 的情况下可以正常工作? 奇怪的是、通过 hal.c 启用 MOSC1 与 ADC 时钟预分频= 3 (40MHz) 采样时钟配合使用、并在配置 ADC 后调用 SOC 设置函数。 似乎发生的情况是 ADC 仅由 SOC1 触发一次、但当在工程中使用 device.c 时、ADCC INT1 停止。 此外、ADCC1 中断绝不会通过 device.c 调用设置、以启用所有外设时钟。 我不在乎 device.c 突然发生的变化、我们的 hal.c 与 XL49c 和 XL39c LaunchPad 配合使用。 我裁剪了 hal.c/h 以启用 DRV8353RS-EVM、它可以与 UMMCSDK v5.03 配合使用、但与带有 device.c 调用的 V5.04 配合使用。   

完全绕过的 DRV8353RS-EVM 用户手册没有解释分离轨配置中 DRV8353RS 降压转换器有线逻辑的原理图或小图。 8353RS-EVM 是否配置为 9V 至 75V 或 7V 至 100V?

我们需要原理图来完全理解 (VM=VDRAIN) 文本正在尝试传达! 8353EVM +12v 降压转换器 (LDO +3V3) 为 XL39C 跳线 JP2 打开! 我们通过计算机 USBC 电缆和 XDS110 调试探针为 LCD 提供+5V 电压。   

问题在于 UMCSDK 需要检测 VSENVM 来设置偏移校准。 奇怪的是、注释掉偏移功能、代码在没有 ADC、PWM、CMPSS 和 SCIA、SCIB 的情况下运行、并且根据配置在 DRV8353RS 上显示琥珀色 LED、并在启用 SPIA-CS 之前备份 XL39c LED5。 顺便说一下、SPIA 也正确配置 DRV8353RS! 禁用偏移计算时、奇怪的是、v5.04 部分运行且调用 device.c。

提前感谢您的帮助,祝您新年快乐!

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

    您好:

    由于专家因节假日而离开办公室、因此预计会延迟回复。

    此致、

    Allison

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

    请查看实验室用户指南、确保将 DRV8353RS-EVM   正确连接到 LAUNCHXL-F280039C、因为需要进行一些更改。

    此外  、您还可以找到 DRV8353RS-EVM 设计文件、其链接如实验室用户指南中所示。

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

    尊敬的 Yanming:

    此外、您还可以  通过实验用户指南中的链接找到 DRV8353RS-EVM 设计文件。

    是的、不过我不记得看到了原理图。 CCS 12.8 IDE 编译器疯了、与 DRV8353RS 驱动程序文件不同、is17_x39c 工程中有一点 ADC 中断正常运行。 我从另一位用户那里阅读了有关类似信号问题的论坛主题、并切断了 J3 扩展器引脚 17-19、但 8353RS 无论如何都没有此类信号、并且只在没有 SPI 硬件驱动程序的情况下读取下面所示构建中预期的直流母线电压。

    请查看实验用户指南、确保将 DRV8353RS-EVM   正确连接到 LAUNCHXL-F280039C、因为需要进行一些更改。

    是的、8353RS 不需要两个增压信号。 这不是 v5.04 工程的 ADC 在 60MHz 下运行、并且 ADCC1 INT1 甚至在 30MHz 上锁定 SOC1 触发器的原因。 它在没有 drv8353s.c/h 驱动程序的情况下运行、并且在构建中不会使用这些驱动程序进行编译、无论它们如何解析的错误如何保持持续存在、122 至 12。 该构建部分与 ADC 30MHz 失调电压计算运行配合使用、并且 IV 存在 IA/ADC 信号。 仅使用多个 SOC 的 v5.03、而不仅仅是两个 SOC、而是 V5.04 中的一个 PPB。 实际运行 ADC 中断的工程在 hal.c 中具有 MOSC1 调用和外设时钟。从工程编译中排除 (device.c)!  

    您能否将 George 循环到此线程中询问为什么编译器无法在语句 show 上方找到两个定义? 索引器和编译器 V22.6.3 LTS 及更早版本难以找到 hal_obj.h DRV83xx 驱动程序。 文件导入工具每次都会将文件导入到工程中、而不是按照指示打开链接。 编译器很难使用混合的虚拟和物理文件夹路径、即使在磁盘上删除 IDE 也不会释放最后一个文件导入方法、即使关闭后重新打开 CCS 也是如此。

    这些都是基本问题、在使用的所有句柄和结构中似乎都很复杂、除此之外、编译版本之间的名称更改会使 CCS 索引器变得很乱! 需要为每个工程单独设置 hal.c/h、以使其在树中的每个工程中运行。 虚拟链接似乎会使索引器复杂化、因为工程文件夹中包含物理文件、一次更改即使在不同版本时也可能会破坏另一个工程、而不会发出警告! MCSDK 常用文件需要下移至 UMCSDK 工程中、对于 Windows 文件夹、请恢复以前的日期版本当逻辑被弄错时、在尝试安装一个驱动程序 8553RS 时、用 CCS 正确地执行功能。 恢复工程编译而不出错的唯一方法是还原 Windows 文件夹和工程文件夹! 这是因为从工程和 C 盘中删除文件路径后、IDE 没有将其释放到工程文件夹中。   

    define error 问题的解决方法:请参阅 hal_obj.h 的 Hall/CAP 故障使能反向。当将 drv8353 是符号添加到工程构建中时、会导致编译解析错误。 下面所示的修复并将两个定义添加到 drv8353ds.h 中、然后编译 hal-obj.h 文件。 确保文件末尾有#endif。   

           // HALL_ENABLE
    #if defined(HALL_ENABLE)
      uint32_t       capHandle[3];        //<! the CAP handles
    #endif
    #elif defined(CMD_CAP_EN)
      uint32_t       capHandle;           //<! the CAP handles
    #elif defined(HALL_ENABLE) && defined(CMD_CAP_EN)
    #error /"HALL and CMD_CAP can't be enabled at the same time"/
    #endif
    
    // <<<<<< Add two #defines into drv8353s.h >>>>>
    // **************************************************************************
    // the defines
    
    //! \brief Defines the address mask
    //!
    #define DRV8353_ADDR_MASK                   (0x7800)
    
    //! \brief Defines the data mask
    //!
    #define DRV8353_DATA_MASK                   (0x07FF)
    
    //! \brief Defines the R/W mask
    //!
    #define DRV8353_RW_MASK                     (0x8000)
    
    #define DRV8353_Handle                    DRV8353_Handle
    
    #define DRVIC_Obj                         DRV8353_Obj
    

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

    你好 Yanming、

    UMCSDK v5.04 将 SPIA 反向启用(根据 8353RS 数据表)、nSCS 为低电平以启用 GPIO 使能设置为 1 以启用。 当我发出调用以启用未配置的外设 (ePWM、ADC、CMPSS) 时、但 SPIA 仅读取一次、然后挂起 ADCC1 INT1。 这是 is17 工程 (UMCSDK v5.03) 之间的区别、它不配置 SPIA、无法编译 DRV8353RS-EVM 板(如上文所示)。 DRV8353EVM 中未加载 8353RS 固件的项目运行外设 ADCC1 INT1 功能、而无需初始化 8353RS SPIA。 这似乎是导致 ADCC INT1 挂起的原因、并且外设 HAL_MTR_setParams (halHandle、&userParams_M1) 永远不会被配置!

    在 SPI 方面没有太多的经验、但 R/W FIFO 级别设置为 0 并配置为读取 SPI 寄存器阻塞模式、未配置中断源。  

    不清楚为什么不读取 DRV8353RS 错误状态寄存器? 只有当我们将下面所示的调用拉至 sys_main.c 中时、才会显示读取状态挂起 CCS 调试、UMCSDK v5.04 hal.c 配置。 对于陌生人的事情、请逐步调试外设设置、就好像它们是在 发布版配置的 HAL_MTR_setParams (halHandle、&userParams_M1) 中配置一样。

    更正下面显示的 GPIO 启用 bool 标志后、RUN 仍然挂起、读取 8353 STATUS 寄存器?

    奇怪的是、CCS 调试单步读取 SPIA 状态寄存器结果、但运行模式挂起、如下所示! 导致挂起读取 SPIA 状态的原因是什么? 在没有实验中的控制(即 UMCSDK v5.03 no 8353RS 或启用了 SPIA)的情况下、几乎无法确定问题所在。

        

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

    请参阅 DRV8353RS-EVM + LAUNCHXL-F280039C 的示例实验

    C:\ti\c2000\C2000Control_SDK_5_04_00_00\solutions\universal_motorcontrol_lab\f28003x Ware_Motor

    看起来您在项目中进行了一些更改、导致找不到相关对象或头文件。 您可以尝试在工程属性中添加正确的#include 搜索路径。  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您在项目中做了一些更改、导致找不到相关的对象或头文件。 您可以尝试在工程属性中添加正确的#include 搜索路径。  [/报价]

    我们如何才能确定工程中未配置 SPIA 的原因、可能是 x39c 120MHz SYSCLK、低速时钟 SYSDIV4。 有两个不带 SPI 的 UMCSDK v5.03 和带 SPIA 的 UMCSK v5.04 工程、奇怪的是未配置&&未编译而没有任何错误!

    这些函数移动到 sys_main.c 中的操作不能与句柄一起在 UMCSDK v5.04 中配置外设寄存器、即使在 hal.c 中的 120MHz SYSCLK 速率也是如此。 该工程配置为与 LauchchXL-39c 搭配使用、而不是随附的 x27c (8353EVM)! 而另一个 XL39c 120MHz SYSCLK 上的控制工程 UMCSDK v5.03 可以在没有 SPIA 或 8353EVM 的情况下运行。 因此、更快的时钟速率似乎是不可推卸的责任!

    Yanming 请帮助弄清楚未配置 SPIA 的原因、并且即使在 hal.c 中也会停止配置其他外设 SPIA 无法安装外设寄存器、如下所示。  已验证 drv835 nSCS 被设置为低电平有效的 GPIO 引脚 22、CS 使能分别在 J1 和 J2 上设置为高电平有效的 GPIO 引脚 29。 因此、UMVSDKv5.03 和 v5.04 都无法配置 SPI 接口、并且 SPI 功能会替换为基址、如 CCS 寄存器所示。  

    UMCSDK v5.03 和 v5.04 中的问题都是指针 (obj->spiHandle) 未链接到基址、中的国际足联或 DNS 调用 (drv8353s.c)。 上次 CCS 捕获中显示的权变措施。 如果不适用于没有 drv8353 的控制 v5.03 在编译到工程中的 (drv8353s.c) 时运行 ADCC1 中断、则即使在 SPIA 配置了基地址后、也会在如下所示的相同读取 SPI FIFO 中暂停应用程序。 仅当 spiHandle 指针链接到基地址并进行调整后、SPIA 读取 FIFO 以保持低电平使能引脚 drv8353rs 在启动时 20us 清除任何故障! LM5008A 仅需要 2 个–3µs 最坏情况下的 Vin T2 过冲时间达到 T3 标称负载电流+3V3 电流稳定。 因此、20µs 具有足够低的使能时间来清除任何 POR 故障 drv8353rs。 设置 0xFFF GPIO 延迟会被覆盖、并且 ENABLE 禁用位会被反转。   

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    ]将函数移至 sys_main.c 中即使在具有 120MHz SYSCLK 速率的 hal.c 中、也无法使用句柄配置 UMCSDK v5.04 中的外设寄存器。

    这个工程中充满了从 hal.c 函数中弹簧被更改的问题、以及从 sys_main.c 中调用无法配置的问题;模块 CMPSSn、ePWMFauits、EPWM、SPIA 像在 V5.03 中那样没有这些问题!

     在 CCS 编译器中看似发生了某种竞争条件或处理链接、但未能将代码框中所示的调用置为有效。 将调用引入 sys_main.c 中并配置 GPIO、在函数结束时启用 EPWM 时钟源、就像从 SDK 版本的一开始就一样。

    如果您为 DRV8353RS-EVM 供电、请务必更改逆变器 1B 上的琥珀色 LED、并且 LED 1C 必须保持低电平状态(导通)、DRV8353 nSCS 信号才能保持启用状态以进行字写入/读取。 奇怪的是、即使在解决了这些问题后、ADCC 模块也会在运行偏移计算后锁定。 v5.03 和 v5.04 项目中的 I DRIVE 表不适用于 DRV83RS、因此请查看栅极驱动器数据表来修改 drv8352s.h 控制表。 NexFET 高侧/低侧 P/N 栅极驱动器所需的驱动电流可能超过此论坛上可能说的 RH 驱动器。 因此、300ns 的高侧栅极驱动关断时间非常糟糕、更难关断(灌电流)将有助于减少电机振动!  

    drvicVars_M1.ctrlReg03.bit.IDRIVEP_HS = DRV8353_ISOUR_HS_0P150_A;// 820mA DRV8353_ISOUR_HS_0P820_A
    drvicVars_M1.ctrlReg03.bit.IDRIVEN_HS = DRV8353_ISINK_HS_1P100_A;  //DRV8353_ISINK_HS_1P640_A 640mA

    drvicVars_M1.ctrlReg04.bit.IDRIVEP_LS = DRV8353_ISOUR_LS_0P150_A; // 820mA DRV8353_ISOUR_LS_0P820_A
    drvicVars_M1.ctrlReg04.bit.IDRIVEN_LS = DRV8353_ISINK_LS_0P600_A;//DRV8353_ISINK_LS_1P640_A 640mA   

    强烈建议在这些函数问题得到解决之前使用 UMCSDK v5.03!  

    //初始化驱动程序
    halHandle = HAL_init (&hal、sizeof (hal));

    HAL_MTR1_init (halHandle、sizeof (hal));

    //设置驱动程序参数
    HAL_setParams (halHandle);

    //设置 GPIO
    HAL_setupGPIOs (halHandle);

    //设置 PWM 驱动 CMPSSx、EPWM 故障
    HAL_MTR_setParams (halHandle、&userParams_M1);

    // initialize control parameters for motor 1
    void initMotor1CtrlParameters(MOTOR_Handle handle)
    {
        MOTOR_Vars_t *obj = (MOTOR_Vars_t *)handle;
        MOTOR_SetVars_t *objSets = (MOTOR_SetVars_t *)(handle->motorSetsHandle);
        USER_Params *objUser = (USER_Params *)(handle->userParamsHandle);
    
        // initialize the user parameters
        USER_setParams_priv(obj->userParamsHandle);
    
        // initialize the user parameters
        USER_setMotor1Params(obj->userParamsHandle);
    
        // set the driver parameters main.sys
        //HAL_MTR_setParams(obj->halHandle, obj->userParamsHandle);

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

    您可以根据所使用的电路板来调整 SPI 时钟和波特率。 我认为这两个版本之间没有任何重大变化、尤其是不依赖于特定器件和电路板的电机控制算法。

    此外、您还可以根据使用的电机为 DRV8353 控制寄存器设置正确的值。 默认值仅供您参考、这可能并不适用于所有情况、尤其是高电流电机。

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

    尊敬的 Yanming:

    UMCSDK v5.04 hal.c 调用由 drive.c 驱动、启用 OSC2、GPIO 和外设时钟、不在 ePWM 设置功能中启用 ePWM 外设时钟。 我已经报告了函数调用不起作用。 出于很好的原因、我们不在 UMCSDK v5.03 中使用 (drive.c) 设置 hal.c GPIO、EPWM、CMPSSn、并在 hal.c 中启用 ePWM 模块、而不是在 (sys_main.c) 中启用 ePWM 模块! 尽管是使用 drive.c 调用构建 v5.04、但从该模块中排除了设置 GPIO 和外设时钟。  

    该 (device.c) 只配置了几个 GPIO、很容易放入控制卡 GPIO!

    从 (HAL_MTR_setParams (obj->halHandle、obj->userParamsHandle) 调用 CCS 编译器时显然无法链接、EPWM、CMPSS、ePWM_FAULTS;不确定哪个版本的 UMCSDK hal.c 更改为 device.c、但我们当时没有使用它、当工程未使用虚拟链接来构建文件时、在 v5.04 中会通过 hal.c 函数调用失败。

    CCS v12.3 IDE 索引器和编译器在构建期间无法检查包含的 C 文件的工程树文件夹、并对虚拟链接进行优先级排序。 我们尝试从 Thea v20.3.0 构建 UMCSDK v5.04、但无法看到带有任何 GUI 主题的排除#defines 区域。 除了 Thea 删除的驱动器 C 文件太当任何虚拟链接被删除,完全疯狂! 所有排除的构建文件夹都不容易理解、并且 IDE 在排除文件夹时创建了另一个文件夹。