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.

[参考译文] TMS320F28P650SK:器件上电后的 GPIO 状态测量

Guru**** 2563530 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1566882/tms320f28p650sk-gpio-status-measurement-after-device-power-on

器件型号:TMS320F28P650SK


工具/软件:

您好 Champ、  

我要找我的客户。  

他们 在终端设备 UPS 中使用 F28P650SK6PZPR(100 引脚)器件。 器件位于控制卡上。

器件上电之后、在用户将 IO 引脚配置为 GPIO 之前、在该期间(红色圆圈内)、IO 引脚保持为高阻态输入。  

客户遇到一个问题、即在(高阻态输入)期间、他们测量直接来自 MCU(断开外部电路)的引脚、表明存在足够大的电压 (~3.3V) 来导致栅极驱动器意外驱动、进而损坏 MOSFET。 在过去、我从未看到过引脚上的实心电压耦合。  

从主板上移除控制卡(无需系统级)、并直接捕获 MCU 引脚上的波形。

CH1:引脚 99  

ch2:用于了解初始化 GPIO 配置代码何时完成的调试引脚  

(1)。 专家能否请仔细检查此封装中的引脚 99 是否与其他 GPIO 有任何区别? 或者电压是由 GPIO 输入漏电流引起的(我相信不是)?  

(2)。 团队能否帮助  在我们采用 F28P650SK6PZPR 的 100 引脚插座板上验证该器件、并证明器件在从器件上电到用户 GPIO 配置期间的 GPIO 状态? 要证明电压并非由器件引起、需要进行很多工作。

感谢您的支持。

此致、

Johnny

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

    尊敬的专家:

    有机会输入一些内容。

    谢谢、

    Johnny

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

    您好:

    GPIO/多路复用引脚在 RESET / POWER‐ON 时默认为 GPIO‐输入(高‐阻抗)。 高阻抗意味着该引脚没有被 MCU 主动驱动(拉电流或灌电流)、因此原则上它应该悬空。 ‐、根据器件的~规格、您观察到的行为本质上并不是不可能的;但如果足够高的 3.3V 电压来驱动某些内容、则表明存在外部电路将其上拉、或者涉及直接内部钳位。 VDDIO/I/O 电源是在主芯片之前出现还是与主芯片一起出现? 如果存在某些电源、则某些内部电路可能会更早供电、从而使 BIAS 或 ESD 钳位起作用。

    此外、在某些引导代码或调试 ROM/启动序列中、可以在 GPIO 初始化之前配置引脚或运行特殊代码。 使用调试 GPIO 标记是好的、但确保没有其他早期初始化标记与它接触。

    此致、

    Masoud

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

    尊敬的 Masoud:

    [引用 userid=“5666507" url="“ url="~“~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1566882/tms320f28p650sk-gpio-status-measurement-after-device-power-on/6037603 ]在复位/上电‐开启时、GPIO/多路复用引脚默认为 GPIO‐输入(高‐阻抗)。 高阻抗意味着该引脚没有被 MCU 主动驱动(拉电流或灌电流)、因此原则上它应该悬空。 [/报价]

    我完全同意你的说法。

    但是、我重复了客户与内部应用程序团队的 100 针 VDB(插座板)的问题。

    确实可以看到、GPIO92 在上电期间具有明显的 3.3V 电压、而这取决于用户代码。  

    (1)。 您 是否也可以使用我们的 100 引脚 VDB 对其进行测试?

    (2)。 我们试错了、 在 board_init () 中删除两个引脚的初始化、然后在几行后(附加的代码)将这些引脚初始化代码放回原位、然后在 100 引脚 VDB 上对 GPIO92 上的 3.3V 电压进行了测试。

    EPWM3A (GPIO 4/引脚 93)

    EPWM14A (GPIO 203/引脚 11)

    Board_init();
        GPIO_writePin(DEBUG_GPIO, 1);
        I2CFIFO_Init();
        LCD_Init();
        EALLOW;
        GPIO_setPinConfig(DD_EPWM_EPWMA_PIN_CONFIG);
        GPIO_setPadConfig(DD_EPWM_EPWMA_GPIO, GPIO_PIN_TYPE_STD);
        GPIO_setQualificationMode(DD_EPWM_EPWMA_GPIO, GPIO_QUAL_SYNC);
    
        GPIO_setPinConfig(DD_EPWM_EPWMB_PIN_CONFIG);
        GPIO_setPadConfig(DD_EPWM_EPWMB_GPIO, GPIO_PIN_TYPE_STD);
        GPIO_setQualificationMode(DD_EPWM_EPWMB_GPIO, GPIO_QUAL_SYNC);
        EPWM_setEmulationMode(DD_EPWM_BASE, EPWM_EMULATION_FREE_RUN);
        EPWM_setClockPrescaler(DD_EPWM_BASE, EPWM_CLOCK_DIVIDER_1, EPWM_HSCLOCK_DIVIDER_1);
        EPWM_setTimeBasePeriod(DD_EPWM_BASE, 999);
        EPWM_setTimeBaseCounter(DD_EPWM_BASE, 0);
        EPWM_setTimeBaseCounterMode(DD_EPWM_BASE, EPWM_COUNTER_MODE_UP);
        EPWM_disablePhaseShiftLoad(DD_EPWM_BASE);
        EPWM_setPhaseShift(DD_EPWM_BASE, 0);
        EPWM_setSyncInPulseSource(DD_EPWM_BASE, EPWM_SYNC_IN_PULSE_SRC_DISABLE);
        EPWM_setSyncPulseSource(DD_EPWM_BASE, HRPWM_PWMSYNC_SOURCE_ZERO);
        EPWM_setCounterCompareValue(DD_EPWM_BASE, EPWM_COUNTER_COMPARE_A, 0);
        EPWM_setCounterCompareShadowLoadMode(DD_EPWM_BASE, EPWM_COUNTER_COMPARE_A, EPWM_COMP_LOAD_ON_CNTR_ZERO);
        EPWM_setCounterCompareValue(DD_EPWM_BASE, EPWM_COUNTER_COMPARE_B, 0);
        EPWM_setCounterCompareShadowLoadMode(DD_EPWM_BASE, EPWM_COUNTER_COMPARE_B, EPWM_COMP_LOAD_ON_CNTR_ZERO);
        EPWM_setActionQualifierAction(DD_EPWM_BASE, EPWM_AQ_OUTPUT_A, EPWM_AQ_OUTPUT_HIGH, EPWM_AQ_OUTPUT_ON_TIMEBASE_ZERO);
        EPWM_setActionQualifierAction(DD_EPWM_BASE, EPWM_AQ_OUTPUT_A, EPWM_AQ_OUTPUT_NO_CHANGE, EPWM_AQ_OUTPUT_ON_TIMEBASE_PERIOD);
        EPWM_setActionQualifierAction(DD_EPWM_BASE, EPWM_AQ_OUTPUT_A, EPWM_AQ_OUTPUT_LOW, EPWM_AQ_OUTPUT_ON_TIMEBASE_UP_CMPA);
        EPWM_setActionQualifierAction(DD_EPWM_BASE, EPWM_AQ_OUTPUT_A, EPWM_AQ_OUTPUT_NO_CHANGE, EPWM_AQ_OUTPUT_ON_TIMEBASE_DOWN_CMPA);
        EPWM_setActionQualifierAction(DD_EPWM_BASE, EPWM_AQ_OUTPUT_A, EPWM_AQ_OUTPUT_NO_CHANGE, EPWM_AQ_OUTPUT_ON_TIMEBASE_UP_CMPB);
        EPWM_setActionQualifierAction(DD_EPWM_BASE, EPWM_AQ_OUTPUT_A, EPWM_AQ_OUTPUT_NO_CHANGE, EPWM_AQ_OUTPUT_ON_TIMEBASE_DOWN_CMPB);
        EPWM_setActionQualifierAction(DD_EPWM_BASE, EPWM_AQ_OUTPUT_B, EPWM_AQ_OUTPUT_HIGH, EPWM_AQ_OUTPUT_ON_TIMEBASE_ZERO);
        EPWM_setActionQualifierAction(DD_EPWM_BASE, EPWM_AQ_OUTPUT_B, EPWM_AQ_OUTPUT_NO_CHANGE, EPWM_AQ_OUTPUT_ON_TIMEBASE_PERIOD);
        EPWM_setActionQualifierAction(DD_EPWM_BASE, EPWM_AQ_OUTPUT_B, EPWM_AQ_OUTPUT_NO_CHANGE, EPWM_AQ_OUTPUT_ON_TIMEBASE_UP_CMPA);
        EPWM_setActionQualifierAction(DD_EPWM_BASE, EPWM_AQ_OUTPUT_B, EPWM_AQ_OUTPUT_NO_CHANGE, EPWM_AQ_OUTPUT_ON_TIMEBASE_DOWN_CMPA);
        EPWM_setActionQualifierAction(DD_EPWM_BASE, EPWM_AQ_OUTPUT_B, EPWM_AQ_OUTPUT_LOW, EPWM_AQ_OUTPUT_ON_TIMEBASE_UP_CMPB);
        EPWM_setActionQualifierAction(DD_EPWM_BASE, EPWM_AQ_OUTPUT_B, EPWM_AQ_OUTPUT_NO_CHANGE, EPWM_AQ_OUTPUT_ON_TIMEBASE_DOWN_CMPB);
        EPWM_setRisingEdgeDelayCountShadowLoadMode(DD_EPWM_BASE, EPWM_RED_LOAD_ON_CNTR_ZERO);
        EPWM_disableRisingEdgeDelayCountShadowLoadMode(DD_EPWM_BASE);
        EPWM_setFallingEdgeDelayCountShadowLoadMode(DD_EPWM_BASE, EPWM_FED_LOAD_ON_CNTR_ZERO);
        EPWM_disableFallingEdgeDelayCountShadowLoadMode(DD_EPWM_BASE);
        EPWM_setTripZoneAction(DD_EPWM_BASE, EPWM_TZ_ACTION_EVENT_TZA, EPWM_TZ_ACTION_LOW);
        EPWM_setTripZoneAction(DD_EPWM_BASE, EPWM_TZ_ACTION_EVENT_TZB, EPWM_TZ_ACTION_LOW);
        EPWM_enableADCTrigger(DD_EPWM_BASE, EPWM_SOC_A);
        EPWM_setADCTriggerSource(DD_EPWM_BASE, EPWM_SOC_A, EPWM_SOC_TBCTR_ZERO);
        EPWM_setADCTriggerEventPrescale(DD_EPWM_BASE, EPWM_SOC_A, 1);
        EDIS;
    

    谢谢、  

    Johnny

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

    Johhny、

    我在具有不同封装的 controlCARD(控制卡)上尝试了此设计、但仍查看 GPIO92 (100 引脚器件上的引脚 99)。  在等待引导甚至未加载代码的闪存引导中、我没有在该引脚上看到任何毛刺脉冲。

    我认为它必须与软件设置相关;是否可以将整个项目附加到此帖子(或通过电子邮件发送给我)、以便我可以尝试复制它?  我不确定更改其他 GPIO 的操作顺序会如何影响 GPIO92。   

    在将多路复用器配置为 ePWM 输出之前是否设置 PWM?  也许在我们设置 PWM 时、如果 GPIO92 已连接到 PWM 逻辑、我们将在完成之前看到一些状态变化。

    此致、

    Matthew