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-F28P55X:ADC 引脚 A2/B6 和 B3 未读取读数

Guru**** 2529560 points
Other Parts Discussed in Thread: C2000WARE, LAUNCHXL-F28P55X

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1558410/launchxl-f28p55x-adc-pins-a2-b6-and-b3-not-taking-readings

器件型号:LAUNCHXL-F28P55X
主题中讨论的其他器件:C2000WARE

工具/软件:

您好、

我尝试运行 ADC 示例 ADC_ex1_soc_software 、但未能获得更新的任何读数。

(C:\ti\c2000\C2000Ware_6_00_00\driverlib\f28p55x\examples\adc)

我已成功运行示例、可以通过将配置 ADC 引脚连接到 3.3V 和接地来查看 A0、A1、C1 和 C3 上更新的 ADC 读数。

但是、在我使用 ADC A 和 B 将引脚更改为读取 A2/B6 和 B3 引脚后、在连接到 3.3V NOR 接地时、ADC 读数不会更新。

您能跟进一下吗?

谢谢、

小号

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

    您好:

    您能否在代码中检查以下内容并告诉我们这样是否解决了问题:

    - 上面提到的模拟引脚是“AGPIO “(模拟+GPIO )。 为此、您必须显式连接模拟路径并将引脚保持在模拟模式;否则 ADC 看不到任何信号。 在代码中、使用“GPIO_setAnalogMode ()“进行此操作。

    -确认这三个通道实际上已路由到 LaunchXL-F28P55X 上的接头/测试点。 我看到“s6"控制“控制了这些引脚的布线:

    - 启用三个 SOC 背对背:A2、B6、B3 并用 0 V 和一个已知 DC 探测每个针脚,以验证代码比例是否符合预期。

    此致、

    Masoud

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

    尊敬的 Masoud:

    是的、S6 开关解决了问题、我可以通过将引脚短接至 3.3V 和接地来查看 ADC 读数。

    谢谢!

    除此之外、您还能帮助我们看看这个问题吗?

    e2e.ti.com/.../launchxl-f28p55x-launchxl-f28p55x-epwm6-does-not-work-and-gpio28-cannot-be-pulled-high

    小号

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

    您好!

    我看了您共享生成的代码。 我看到您强制 EPWM6B 为高电平、此调用会覆盖 AQ/DB 并使 B 卡住

    EPWM_setActionQualifierContSWForceAction(GATE_PHASE_C_BASE, EPWM_AQ_OUTPUT_B, EPWM_AQ_SW_OUTPUT_HIGH);

    如果您想要从死区获得互补 B、请勿强迫它。  仅通过 AQ 驱动 A(在 CMPA 向上/向下设置/清除)、然后启用 DB RED 和 FED 并选择 A 作为输入。 最后、将极性设置为高电平有效互补 (AHC)、这样 B 就成为 A 的反相延迟版本(将 AQB 保持为“无变化“)。

    此致、

    Masoud

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

    尊敬的 Masoud:

    感谢您的回答。 我已经在 syscfg 内的 EPWM 模块中尝试了以下设置:

    1. ePWM 动作限定器中
      1. 使 ePWMxB 输出限定保持不变
      2. 设置 ePWMxA 输出 鉴定设置 (在 CMPA 向上/向下设置/清除)  
    2. 在 ePWM 死区中
      1. 启用上升沿延迟和下降沿延迟
      2. 设置为输入信号的上升沿/下降沿延迟输入为 ePWMA

    您能看看这个生成的代码吗?

    void GATE_PHASE_C_init(){
        EPWM_setEmulationMode(GATE_PHASE_C_BASE, EPWM_EMULATION_FREE_RUN);	
        EPWM_setClockPrescaler(GATE_PHASE_C_BASE, EPWM_CLOCK_DIVIDER_1, EPWM_HSCLOCK_DIVIDER_1);	
        EPWM_setPeriodLoadMode(GATE_PHASE_C_BASE, EPWM_PERIOD_DIRECT_LOAD);	
        EPWM_setTimeBasePeriod(GATE_PHASE_C_BASE, 0);	
        EPWM_enableGlobalLoadRegisters(GATE_PHASE_C_BASE, EPWM_GL_REGISTER_TBPRD_TBPRDHR);	
        EPWM_setTimeBaseCounter(GATE_PHASE_C_BASE, 0);	
        EPWM_setTimeBaseCounterMode(GATE_PHASE_C_BASE, EPWM_COUNTER_MODE_UP_DOWN);	
        EPWM_setCountModeAfterSync(GATE_PHASE_C_BASE, EPWM_COUNT_MODE_UP_AFTER_SYNC);	
        EPWM_disablePhaseShiftLoad(GATE_PHASE_C_BASE);	
        EPWM_setPhaseShift(GATE_PHASE_C_BASE, 0);	
        EPWM_enableSyncOutPulseSource(GATE_PHASE_C_BASE, EPWM_SYNC_OUT_PULSE_ON_SOFTWARE);	
        EPWM_setCounterCompareValue(GATE_PHASE_C_BASE, EPWM_COUNTER_COMPARE_A, 0);	
        EPWM_enableGlobalLoadRegisters(GATE_PHASE_C_BASE, EPWM_GL_REGISTER_CMPA_CMPAHR);	
        EPWM_setCounterCompareShadowLoadMode(GATE_PHASE_C_BASE, EPWM_COUNTER_COMPARE_A, EPWM_COMP_LOAD_ON_CNTR_ZERO);	
        EPWM_setCounterCompareValue(GATE_PHASE_C_BASE, EPWM_COUNTER_COMPARE_B, 0);	
        EPWM_disableCounterCompareShadowLoadMode(GATE_PHASE_C_BASE, EPWM_COUNTER_COMPARE_B);	
        EPWM_setCounterCompareShadowLoadMode(GATE_PHASE_C_BASE, EPWM_COUNTER_COMPARE_B, EPWM_COMP_LOAD_ON_CNTR_ZERO);	
        EPWM_disableCounterCompareShadowLoadMode(GATE_PHASE_C_BASE, EPWM_COUNTER_COMPARE_C);	
        EPWM_disableCounterCompareShadowLoadMode(GATE_PHASE_C_BASE, EPWM_COUNTER_COMPARE_D);	
        EPWM_setActionQualifierAction(GATE_PHASE_C_BASE, EPWM_AQ_OUTPUT_A, EPWM_AQ_OUTPUT_NO_CHANGE, EPWM_AQ_OUTPUT_ON_TIMEBASE_ZERO);	
        EPWM_setActionQualifierAction(GATE_PHASE_C_BASE, EPWM_AQ_OUTPUT_A, EPWM_AQ_OUTPUT_NO_CHANGE, EPWM_AQ_OUTPUT_ON_TIMEBASE_PERIOD);	
        EPWM_setActionQualifierAction(GATE_PHASE_C_BASE, EPWM_AQ_OUTPUT_A, EPWM_AQ_OUTPUT_HIGH, EPWM_AQ_OUTPUT_ON_TIMEBASE_UP_CMPA);	
        EPWM_setActionQualifierAction(GATE_PHASE_C_BASE, EPWM_AQ_OUTPUT_A, EPWM_AQ_OUTPUT_LOW, EPWM_AQ_OUTPUT_ON_TIMEBASE_DOWN_CMPA);	
        EPWM_setActionQualifierAction(GATE_PHASE_C_BASE, EPWM_AQ_OUTPUT_A, EPWM_AQ_OUTPUT_NO_CHANGE, EPWM_AQ_OUTPUT_ON_TIMEBASE_UP_CMPB);	
        EPWM_setActionQualifierAction(GATE_PHASE_C_BASE, EPWM_AQ_OUTPUT_A, EPWM_AQ_OUTPUT_NO_CHANGE, EPWM_AQ_OUTPUT_ON_TIMEBASE_DOWN_CMPB);	
        EPWM_setActionQualifierAction(GATE_PHASE_C_BASE, EPWM_AQ_OUTPUT_B, EPWM_AQ_OUTPUT_NO_CHANGE, EPWM_AQ_OUTPUT_ON_TIMEBASE_ZERO);	
        EPWM_setActionQualifierAction(GATE_PHASE_C_BASE, EPWM_AQ_OUTPUT_B, EPWM_AQ_OUTPUT_NO_CHANGE, EPWM_AQ_OUTPUT_ON_TIMEBASE_PERIOD);	
        EPWM_setActionQualifierAction(GATE_PHASE_C_BASE, EPWM_AQ_OUTPUT_B, EPWM_AQ_OUTPUT_NO_CHANGE, EPWM_AQ_OUTPUT_ON_TIMEBASE_UP_CMPA);	
        EPWM_setActionQualifierAction(GATE_PHASE_C_BASE, EPWM_AQ_OUTPUT_B, EPWM_AQ_OUTPUT_NO_CHANGE, EPWM_AQ_OUTPUT_ON_TIMEBASE_DOWN_CMPA);	
        EPWM_setActionQualifierAction(GATE_PHASE_C_BASE, EPWM_AQ_OUTPUT_B, EPWM_AQ_OUTPUT_NO_CHANGE, EPWM_AQ_OUTPUT_ON_TIMEBASE_UP_CMPB);	
        EPWM_setActionQualifierAction(GATE_PHASE_C_BASE, EPWM_AQ_OUTPUT_B, EPWM_AQ_OUTPUT_NO_CHANGE, EPWM_AQ_OUTPUT_ON_TIMEBASE_DOWN_CMPB);	
        EPWM_setDeadBandDelayPolarity(GATE_PHASE_C_BASE, EPWM_DB_FED, EPWM_DB_POLARITY_ACTIVE_LOW);	
        EPWM_setDeadBandDelayMode(GATE_PHASE_C_BASE, EPWM_DB_RED, true);	
        EPWM_setRisingEdgeDelayCountShadowLoadMode(GATE_PHASE_C_BASE, EPWM_RED_LOAD_ON_CNTR_ZERO);	
        EPWM_disableRisingEdgeDelayCountShadowLoadMode(GATE_PHASE_C_BASE);	
        EPWM_setRisingEdgeDelayCount(GATE_PHASE_C_BASE, 75);	
        EPWM_setDeadBandDelayMode(GATE_PHASE_C_BASE, EPWM_DB_FED, true);	
        EPWM_setFallingEdgeDelayCountShadowLoadMode(GATE_PHASE_C_BASE, EPWM_FED_LOAD_ON_CNTR_ZERO);	
        EPWM_disableFallingEdgeDelayCountShadowLoadMode(GATE_PHASE_C_BASE);	
        EPWM_setFallingEdgeDelayCount(GATE_PHASE_C_BASE, 75);	
        EPWM_setTripZoneAction(GATE_PHASE_C_BASE, EPWM_TZ_ACTION_EVENT_TZA, EPWM_TZ_ACTION_DISABLE);	
        EPWM_setTripZoneAction(GATE_PHASE_C_BASE, EPWM_TZ_ACTION_EVENT_TZB, EPWM_TZ_ACTION_DISABLE);	
        EPWM_setTripZoneAction(GATE_PHASE_C_BASE, EPWM_TZ_ACTION_EVENT_DCAEVT1, EPWM_TZ_ACTION_DISABLE);	
        EPWM_setTripZoneAction(GATE_PHASE_C_BASE, EPWM_TZ_ACTION_EVENT_DCAEVT2, EPWM_TZ_ACTION_DISABLE);	
        EPWM_setTripZoneAction(GATE_PHASE_C_BASE, EPWM_TZ_ACTION_EVENT_DCBEVT1, EPWM_TZ_ACTION_DISABLE);	
        EPWM_setTripZoneAction(GATE_PHASE_C_BASE, EPWM_TZ_ACTION_EVENT_DCBEVT2, EPWM_TZ_ACTION_DISABLE);	
    }

    在哪里可以将极性设置为 =高电平有效互补 (AHC)? 我可以将红色和馈电极性设置为 DB 极性反转/仅反转。

    非常感谢!

    小号

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

    你好、小

    TBPRD = 0 可不使用 PWM。 将其设置为所需的周期、并同时设置 CMPA > 0 以查看脉冲。 对于具有死区时间的互补输出、请对 RED 和 FED 都使用 ePWMA。 高电平有效互补 (AHC) 使 OUTA 同相和 OUTB 反相(互补)、然后插入 RED / FED、如下所示:

    此致、
    Masoud