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.

[参考译文] TMS320F28386D:TMS320F28386D 上的八个 GPIO 中断

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1342074/tms320f28386d-eight-gpio-interrupts-on-tms320f28386d

器件型号:TMS320F28386D
主题中讨论的其他器件: C2000WARE

您好!

我想对 TMS320F28386D 微控制器上的6个 GPIO 输入使用中断功能。
我已经使用了 XINT3、XINT4和 XINT5来确定一个 BLDC 电机(三个霍尔效应传感器)的位置。


我想使用三个霍尔效应传感器来确定第二个电机的位置。
知道没有足够的 XINTx 资源可用于两个电机、我如何在第二个电机的每个霍尔效应传感器的边缘上生成中断?

注意:我使用的是"Code Composer Studio 11.1.0"。

此致、

C·贝尔恩格

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

    您好!

    感谢您的回答。

    我已经阅读了两个线程、但没有找到解决我的问题的解决方案。

    在我的程序中、我使用3个 XINT (用于3个霍尔传感器)来计算电机位置、并使用1个 eCAP 来计算电机转速。

    由于我必须在我的程序中添加第二个 BLDC 电机、我已经具有 eCAP 来计算电机转速、但没有 XINT 来计算电机位置。

    那么、我的问题是:是否有其他中断方式比使用 XINT 通过3个霍尔效应传感器计算电机位置更好?

    能否使用 eCAP 中断(例如)计算电机位置?

    注意:我不想使用"C2000_CC2000_SDK" Ware_Motor。

    此致、

    克里斯托弗

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

    Christophe、

    我能不能问您为什么不想使用电机控制 SDK? SDK 中包含的通用电机控制实验使用3个 eCAP 模块、没有外部中断用于速度和角度估算、这是一个很好的资源。

    此致、
    杰森·奥斯博尔恩

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

    您好!

    我不反对使用电机控制 SDK 库、但我只是想简单地回答我的问题、即如何使用其他中断或 eCAP 来确定 BLDC 电机的位置。

    电机知道可以顺时针和逆时针旋转、因此电机控制 SDK 库需要考虑来自霍尔效应传感器的三个信号来确定电机位置。 根据3个信号、它必须能够确定旋转方向、从而确定正确的电机绝对位置。

    如果库能够做到这一点,您能给我一个使用示例吗?

    我将在我的项目中使用它。

    此致、

    克里斯托弗

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

    Christophe、

    eCAP 实施 在 MCSDK 中  考虑了 电机方向和电机方向、 。 在电机控制 SDK 文件结构中、霍尔库的源文件位于以下位置:

    • {C2000Ware 安装位置}\libraries\observers\hall\include\hall.h
    • {C2000Ware 安装位置}\libraries\observers\hall\source\hall.c

    在 hall.h 中、文件底部的 HALL_run ()函数是主要的估算器函数、调用每个 ISR。  HALL_getAngle_rad ()和 Speed_Hz ()返回相关的估算器输出。  在启动和校准期间还提供了一些函数。

    电机控制 SDK 的通用电机控制实验室即为可满足以上所有条件的简单使用示例 。 我即将发布详细阐述这一声明的大量信息。

    以下是通用实验室中霍尔传感器的相关设置:

    • MOTOR1_HALL 作为唯一已启用的估算器(即 MOTOR1_HALL、MOTOR1_FAST _N ,MOTOR1_eSMO _N 和 MOTOR1_ENC _N  预定义符号部分中定义的符号链接。
    • sys_settings.h 中使用的 DMC_LEVEL_4
    • 并非严格要求、但对于生活质量和大文件导航(不仅仅是 MCSDK!)来说、这是极好的选择:
      • "CCS Window"->"Preferences"->"Show advanced settings"->"type filter text"
      • 复选框1、2和3。 选中最下面的框。
      • 点击"Apply and Close"

    现在、我将解释在您的 FOC 环路中的什么位置可以找到实现。 进行这种解释时、我假设您已经熟悉 FOC 概念。 如需了解 不 熟悉此概念的任何读者、请参阅 HVAC 参考设计用户指南(以及下一/即将发布的版本中的通用电机控制实验室用户指南)。

    无论如何,在 motor1_drive.c 中的 motor1CtrlISR ()电机控制 ISR 中(假设您按照我所述设置了正确的预定义符号):

    • if (obj->motorState ==...) 语句中任何未与 MOTOR_CL_Running 或 MOTOR_CTRL_RUN 进行比较的内容是  启动  函数、在电机对齐(obj->motorState == motor_alignment)、快速启动例程(obj->motorState == motor_seek_POS)或短暂的开环启动周期(obj->motorState == motor_OL_start)期间
      • 换句话说、如果您只查找电机的典型运行状态、则应忽略这些启动部分中的所有内容
    • 此外、请注意、还有一个额外的预定义、旨在一次性用于霍尔传感器校准(HALL_CAL)、这也短暂地需要启用 MOTOR1_FAST 预定义。
      • HALL_CAL 使用指令:

    我知道这是相当多的信息。 请告诉我您可能有哪些具体问题、或者您的问题中我没有解释清楚哪些方面!

    此致、
    杰森·奥斯博尔恩

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

    Jason、您好!

    感谢您的详细回答。

    我看了看源文件、它似乎符合我的需求。
    我无法立即测试此解决方案、因为项目尚未开始。
    现在、我只需要找到一个解决方案来解决使用两个 BLDC 电机的问题。

    在使用"Motor Control SDK"库时、如果需要、我会联系技术支持。

    此致、

    克里斯托弗