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.

[参考译文] TMS320F28379D:TMS320 GPIO 提供了意外值

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1309310/tms320f28379d-unexpected-value-from-tms320-gpio

器件型号:TMS320F28379D
主题中讨论的其他器件: TMS320F2837

您好  

我正在将 TMS320F28379D 控制器用于电机驱动 PWM 拓扑。 但是、有时电机会在中间运行、 当我运行90%占空比时、我可以获得3.3V 的恒定 GPIO 输出、当它低于20%占空比时、我可以获得0V 的恒定 GPIO 输出。 我好奇地想知道在什么情况下会发生这种情况、并且在 TMS 冻结条件下、 TMS320将发送什么值?  

提前感谢您的帮助。

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

    您好 Malakondardy

    您能否更详细地解释您遇到此问题的情况。
    您的 ePWM 配置设置是什么?  很可能缺少设置/清除 PIN 的操作限定事件。

    谢谢。
    Prarthan.

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

    感谢您的回复  

    ePWM 配置设置:

    EALLOW;

    //禁用上拉并将 gonfigure 作为 EPWM
    ATI_HUBMOTOR_PULL_UP = 1;
    ATI_HUBMOTOR_MUX = 1;

    EDIS;

    hubmotor->TBCTL.bit.CTRMODE = TB_COUNT_UP;//递增计数
    hubmotor->TBPRD = REARMOTOR_TIMER_TBPRD;//设置计时器周期
    hubmotor->TBCTL.bit.PHSEN = TB_disable;//禁用相位加载
    hubmotor->TBPHS.bit.TBPHS = 0x0000;//相位为0
    hubmotor->TBCTR = 0x0000;//清除计数器
    hubmotor->TBCTL.bit.HSPCLKDIV = TB_DIV2;//时钟与 SYSCLKOUT 的比率
    hubmotor->TBCTL.bit.CLKDIV = TB_DIV1;

    //
    //在零时设置影子寄存器加载
    //
    hubmotor->CMPCTL.bit.SHDWAMODE = CC_shadow;
    hubmotor->CMPCTL.bit.SHDLBMODE = CC_shadow;
    hubmotor->CMPCTL.bit.LOADAMODE = CC_CTR_ZERO;
    hubmotor->CMPCTL.bit.LOADBMODE = CC_CTR_ZERO;

    //
    //设置比较值
    //

    hubmotor->cmpa.bit.cmPA = 0;//设置默认值
    hubmotor->CMPB.bit.CMPB = 0;//设置默认值
    //
    //设置操作
    //
    hubmotor->AQCTLA.bit.ZRO = AQ_SET;//将 PWM1A 设置为零
    hubmotor->AQCTLA.bit.CAU = AQ_CLEAR;//清除事件 A 上的 PWM1A、
    //向上计数

    hubmotor->AQCTLB.bit.ZRO = AQ_SET;//将 PWM1B 设置为零
    hubmotor->AQCTLB.bit.CBU = AQ_CLEAR;//清除事件 B 上的 PWM1B,
    //向上计数

    从图中可以看出,从12秒到17秒,我们错过了 Delfino TMS320F2837 ( UART 到 USB )的通信,并观察到车辆停止。 然而,它重新启动通信并一直到30秒, 30秒后,我们再次观察到 Delfino 通信和观察到车辆移动更快(只有当电机驱动器收到恒定3.3V 时才会发生这种情况)。
    在第一个事件中、我们的 PWM 值非常低、这可能是由于 GPIO 引脚稳定在零、第二个事件 GPIO 可能稳定在高电平、因为我们的 PWM 值在该情况下是最大值。

    我们想知道发生这种情况的条件以及 TMS320将在什么条件下自动复位。

    在任何情况下 TMS320都将挂起(冻结)?
    五年多来、我们一直在使用相同的硬件和固件、并且只观察到一次此事件。

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

    非常感谢您的详细信息。

    上面提到的是 ePWM 模块的初始化代码、我认为您可能会在稍后的代码中修改 CMPA 和 CMPB 值、并在计数器为零时执行影子加载。

    上述时间窗口内的通信损耗如何适应您的系统。 我是否应该意识到 C2000 MCU 或 ePWM 模块有任何依赖关系? 您是否已将 MCU 配置为在通信丢失时以某种方式做出反应?  
    您如何知道 MCU 冻结、您是否配置了 Wathdog 计时器并设置了 MCD (丢失时钟检测)作为预防措施、以便我们知道此处问题的原因是什么?

    我建议您使用 跳闸区子模块 为使系统处于失效防护状态、在出现故障时、可强制输出 EPWMxA 和 EPWMxB 为低阻抗、高阻抗或高阻抗之一。 当通信丢失时、通信似乎停止、GPIO 信号卡在最后状态、但我想了解您是如何检测到此丢失的状态和原因、如果您可以与我分享以便更好地了解该问题。

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

    感谢您的快速响应、也感谢 您发送延迟回复

    我是否应该意识到 C2000 MCU 或 ePWM 模块有任何依赖关系? 您是否已将 MCU 配置为在通信丢失时以某种方式做出反应?  

    回复:是的、如果代码有效且通信失败、我们会将所有 GPIO 降至低电平。  

    您如何知道 MCU 冻结、您是否配置了 Wathdog 计时器并设置了 MCD (丢失时钟检测)作为预防措施、以便我们知道此处问题的原因是什么?

    回复:我们没有任何数据来证明 MCU 冻结。 我们只怀疑、在此期间通信失败、GPIO 未变低(此处我们已看到车辆高速)、并且 MCU 也消耗了所需的电流。

    此外、当通信开始通话(通信返回)时、启动序列开始。

    我建议您使用 ePWM 模块的跳闸区域子模块、在发生故障时使系统处于失效防护状态、可以强制输出 EPWMxA 和 EPWMxB 为以下其中之一:低阻抗、高阻抗或高阻抗。  

    回复:如何检测故障状况以及如何实施跳闸区域子模块。 这是否有可能在 MCU 冻结下?  

    当通信丢失时、通信似乎停止、GPIO 信号卡在最后状态、但我想了解您是如何检测到此丢失的状态和原因、如果您可以与我分享以更好地了解该问题。

    回复:我们看到车辆在通信失败时行驶速度更快。 但是、根据代码、当通信失败时、所有 GPIO 都应该为低电平、但 我认为这没有发生。 MCU 也会消耗所需量的电流。

    如果可能、我们可以通过电话或虚拟会议来更好地理解。 如果您的办公室在班加罗尔、我也很感兴趣。 谢谢  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我们没有任何数据可以证明 MCU 出现故障。 我们只怀疑、在此期间通信失败、GPIO 未变低(此处我们已看到车辆高速)、并且 MCU 也消耗了所需的电流。

    车辆速度可能取决于发生此现象的电机类型和车速。 出于好奇心、什么类型的电机是 PMSM (IPMSM 或 SM-PMSM)? 我建议在此时捕获 PWM 脉冲。

    您还可以监控 XRSn 引脚吗? 它应该告知器件是否进入复位并按照启动顺序离开
    让我们找出通信丢失时 MCU 的状态、然后我们可以确定其解决方案。  什么原因是通信下降? 是否有噪音干扰问题?

    如何检测故障情况以及如何实施跳闸区域子模块。 在 MCU 冻结的情况下,这是否可能?

    请参阅技术参考手册的"跳闸区域"部分、该部分将向您展示如何路由内部和外部信号以对 GPIO 引脚执行操作。

    如果器件在跳闸区域起作用之前进入复位状态、则对其进行设置以实现保护将用处不大、但效果更好。  

    如果可能的话,我们可以通过电话或虚拟会议来更好地了解情况。 如果您的办公室在班加罗尔、我也很感兴趣。 感谢

    如果您有任何 FAE 联系、请告诉我、否则我可以和 FAE 联系、他 可以帮助设置线上会议。

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

    车辆速度可能取决于发生此现象的电机类型和车速。 出于好奇心、什么类型的电机是 PMSM (IPMSM 或 SM-PMSM)? 我建议在此时捕获 PWM 脉冲。

    回复:我们用的是带有相应控制器的1.5kW BLDC 电机。 目前、我们没有任何用于捕获 PWM 的配置、并且我们也无法再次重现相同的问题。

    您还可以监控 XRSn 引脚吗? 它应该告知器件是否进入复位并按照启动顺序离开
    让我们找出通信丢失时 MCU 的状态、然后我们可以确定其解决方案。  什么原因是通信下降? 是否有噪音干扰问题?

    回复: 如果通信失败,如何监视 XRSn 引脚以及将此数据存储在何处。 我们真的不是为什么通信失败,我们已经运行了很多车辆在同一区域从快2年。

    如果您有任何 FAE 联系、请告诉我、否则我可以和 FAE 联系、他 可以帮助设置线上会议。

    回复:不知道这一点,如果我们引导我,我将做必要的手续或请设置虚拟会议,只要你有空  . 我们在印度班加罗尔的办公室。

     

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    如何在通信失败时监控 XRSn 引脚和将此数据存储在何处

    它可以路由到外部引脚监控器、请根据您拥有的封装参阅数据表图。 示例如下所示


    如果您看到任何其他这种情况、请继续监控此引脚并实现上述安全机制。 我怀疑应该存在一些噪声干扰或某种类型的电源问题、器件可能会进入 BOR 或复位并再次启动、但我猜也是这样。
    我们需要尝试重复此操作并在执行此操作时找到器件的确切状态。

    我会和当地的 FAE 交谈、然后与你们联系、我们可以通过虚拟会议来解决你们可能遇到的任何其他问题。
    谢谢!

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

    我们不能重现这一问题,而且我们对此还有一些疑问。 如果可能、请为您安排相同的虚拟会议。 谢谢!

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

    当然、我将会有 FAE 的帮助、可以协助我拨打电话。 同时、如有任何问题、请随时在此处创建 E2E 帖子