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.

[参考译文] TMS320F28P650DK:其中恰好是 CLB 输出交叉开关连接到 GPIO

Guru**** 2524460 points
Other Parts Discussed in Thread: SYSCONFIG, C2000WARE

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1319781/tms320f28p650dk-where-exactly-clb-output-xbar-connected-to-the-gpio

器件型号:TMS320F28P650DK
主题中讨论的其他器件:SysConfigC2000WARE

TRM 如下图所示、但使用具有 CLB5.0输出的 GPIO32时、无论 GPyDIR 位的状态如何、I 都似乎观察到 CLB 输出。

GPIO 输出在更改 GPTMUX1和 GPTMUX1时会发生变化、因此 CLB-output-Xbar 将转到多路复用器、但显示的 TIR 状态缓冲器似乎被忽略。

此外、我似乎无法将逻辑块输出 CLB5.0路由到任何其他 GPIO、例如 GPIO 41不会产生输出(保持零) 、当我路由到 GPIO32时我会观察到该输出、但确实会对 XBAR_invertOutputSignal (...)做出反应 相当令人困惑……

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

    尊敬的 Alexy:

    将 GPIO32配置为输入时、多路复用器选项中是否选择了标准 GPIO 设置?

    您能否共享您正在写入的代码以将 CLB 输出发送到 GPIO41?

    谢谢!

    卢克

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

    您好 Luke、我只是更改了 GPBDIR 寄存器、我怀疑从多路复用器到 GPBDIR 的额外线路会覆盖我的设置? 看起来我无法将 SysConfig 附加到该消息、但我会尝试将其作为代码发布-其中包含我尝试进行的用于正常运行的完整配置。

    /**
     * These arguments were used when this file was generated. They will be automatically applied on subsequent loads
     * via the GUI or CLI. Run CLI with '--help' for additional information on how to override these arguments.
     * @cliArgs --board "/boards/LAUNCHXL_F28P65X" --context "CPU1" --product "C2000WARE@5.01.00.00"
     * @versions {"tool":"1.19.0+3426"}
     */
    
    /**
     * Import the modules used in this configuration.
     */
    const adc             = scripting.addModule("/driverlib/adc.js", {}, false);
    const adc1            = adc.addInstance();
    const adc2            = adc.addInstance();
    const adc3            = adc.addInstance();
    const analog          = scripting.addModule("/driverlib/analog.js", {}, false);
    const analog1         = analog.addInstance();
    const asysctl         = scripting.addModule("/driverlib/asysctl.js");
    const led             = scripting.addModule("/driverlib/board_components/led", {}, false);
    const led1            = led.addInstance();
    const clb             = scripting.addModule("/driverlib/clb.js", {}, false);
    const clb1            = clb.addInstance();
    const clb_outputxbar  = scripting.addModule("/driverlib/clb_outputxbar.js", {}, false);
    const clb_outputxbar1 = clb_outputxbar.addInstance();
    const clb_outputxbar2 = clb_outputxbar.addInstance();
    const clb_outputxbar3 = clb_outputxbar.addInstance();
    const dac             = scripting.addModule("/driverlib/dac.js", {}, false);
    const dac1            = dac.addInstance();
    const device_support  = scripting.addModule("/driverlib/device_support.js");
    const epwm            = scripting.addModule("/driverlib/epwm.js", {}, false);
    const epwm1           = epwm.addInstance();
    const epwm2           = epwm.addInstance();
    const epwm3           = epwm.addInstance();
    const epwmxbar        = scripting.addModule("/driverlib/epwmxbar.js", {}, false);
    const epwmxbar1       = epwmxbar.addInstance();
    const gpio            = scripting.addModule("/driverlib/gpio.js", {}, false);
    const gpio2           = gpio.addInstance();
    const gpio3           = gpio.addInstance();
    const spi             = scripting.addModule("/driverlib/spi.js", {}, false);
    const spi1            = spi.addInstance();
    const sync            = scripting.addModule("/driverlib/sync.js");
    const TILE            = scripting.addModule("/utilities/clb_tool/clb_syscfg/source/TILE", {}, false);
    const TILE1           = TILE.addInstance();
    
    /**
     * Write custom configuration values to the imported modules.
     */
    adc1.$name                   = "ADC_iSEN_A";
    adc1.adcClockPrescaler       = "ADC_CLK_DIV_4_0";
    adc1.adcBase                 = "ADCB_BASE";
    adc1.enabledSOCs             = ["ADC_SOC_NUMBER0"];
    adc1.soc0Channel             = "ADC_CH_ADCIN7";
    adc1.soc0Name                = "SOC_ISEN_A";
    adc1.soc0SampleWindow        = 15;
    adc1.enabledInts             = ["ADC_INT_NUMBER1"];
    adc1.enableInterrupt1        = true;
    adc1.registerInterrupts      = ["1"];
    adc1.soc0Trigger             = "ADC_TRIGGER_EPWM5_SOCA";
    adc1.adcInt1.enableInterrupt = true;
    
    adc2.$name               = "ADC_ISEN_B";
    adc2.socHighPriorityMode = "ADC_PRI_SOC0_HIPRI";
    adc2.enabledSOCs         = ["ADC_SOC_NUMBER0"];
    adc2.soc0Channel         = "ADC_CH_ADCIN7";
    adc2.soc0SampleWindow    = 15;
    adc2.adcClockPrescaler   = "ADC_CLK_DIV_4_0";
    adc2.soc0Trigger         = "ADC_TRIGGER_EPWM5_SOCA";
    
    adc3.$name                   = "ADC_ISEN_C";
    adc3.adcBase                 = "ADCC_BASE";
    adc3.adcClockPrescaler       = "ADC_CLK_DIV_4_0";
    adc3.enabledSOCs             = ["ADC_SOC_NUMBER0"];
    adc3.soc0IndependentNameMode = true;
    adc3.soc0Channel             = "ADC_CH_ADCIN4";
    adc3.soc0SampleWindow        = 15;
    adc3.interruptPulseMode      = "ADC_PULSE_END_OF_CONV";
    adc3.registerInterrupts      = ["1"];
    adc3.useInterrupts           = false;
    adc3.soc0Trigger             = "ADC_TRIGGER_EPWM5_SOCA";
    
    asysctl.analogReference        = "INTERNAL";
    asysctl.analogReferenceVoltage = "1P65";
    
    led1.$name          = "myBoardLED0";
    led1.gpio.$hardware = system.deviceData.board.components.LED4;
    
    clb1.$name               = "myCLB0";
    clb1.enableCLB           = true;
    clb1.localConfigCLB_IN0  = "CLB_LOCAL_IN_MUX_INPUT1";
    clb1.attachTile          = true;
    clb1.initTile            = true;
    clb1.globalConfigCLB_IN0 = "CLB_GLOBAL_IN_MUX_EPWM5A";
    clb1.synchronizeCLB_IN0  = true;
    clb1.inputTypeCLB_IN1    = "GLOBAL";
    clb1.inputsUsed          = ["CLB_IN0"];
    clb1.inputTypeCLB_IN0    = "GLOBAL";
    clb1.clbBase             = "CLB5_BASE";
    
    clb_outputxbar1.$name                                    = "myCLB_OUTPUTXBAR0";
    clb_outputxbar1.mux5Config                               = "XBAR_OUT_MUX05_CLB5_OUT5";
    clb_outputxbar1.useSourceSelect                          = true;
    clb_outputxbar1.sourceSignals                            = ["CLB5_OUT0","CLB5_OUT7"];
    clb_outputxbar1.clb_outputxbar.$assign                   = "CLB_OUTPUTXBAR7";
    clb_outputxbar1.clb_outputxbar.clb_outputxbarPin.$assign = "boosterpack2.53";
    
    clb_outputxbar2.$name                                    = "myCLB_OUTPUTXBAR1";
    clb_outputxbar2.useSourceSelect                          = true;
    clb_outputxbar2.sourceSignals                            = ["CLB5_OUT0"];
    clb_outputxbar2.clb_outputxbar.$assign                   = "CLB_OUTPUTXBAR1";
    clb_outputxbar2.clb_outputxbar.clb_outputxbarPin.$assign = "boosterpack2.74";
    
    clb_outputxbar3.$name                  = "myCLB_OUTPUTXBAR2";
    clb_outputxbar3.mux8Config             = "XBAR_OUT_MUX08_XTRIP_OUT3";
    clb_outputxbar3.mux9Config             = "XBAR_OUT_MUX09_XTRIP_OUT4";
    clb_outputxbar3.mux10Config            = "XBAR_OUT_MUX10_CLB6_OUT2";
    clb_outputxbar3.mux11Config            = "XBAR_OUT_MUX11_CLB6_OUT3";
    clb_outputxbar3.mux12Config            = "XBAR_OUT_MUX12_CLB6_OUT4";
    clb_outputxbar3.mux13Config            = "XBAR_OUT_MUX13_CLB6_OUT5";
    clb_outputxbar3.mux14Config            = "XBAR_OUT_MUX14_CLB6_OUT6";
    clb_outputxbar3.mux15Config            = "XBAR_OUT_MUX15_CLB6_OUT7";
    clb_outputxbar3.mux16Config            = "XBAR_OUT_MUX16_XTRIP_OUT5";
    clb_outputxbar3.mux17Config            = "XBAR_OUT_MUX17_XTRIP_OUT6";
    clb_outputxbar3.mux24Config            = "XBAR_OUT_MUX24_XTRIP_OUT7";
    clb_outputxbar3.mux25Config            = "XBAR_OUT_MUX25_XTRIP_OUT8";
    clb_outputxbar3.mux30Config            = "XBAR_OUT_MUX30_EPG1_OUT2";
    clb_outputxbar3.mux31Config            = "XBAR_OUT_MUX31_EPG1_OUT3";
    clb_outputxbar3.mux1Config             = "XBAR_OUT_MUX01_CLB5_OUT1";
    clb_outputxbar3.mux2Config             = "XBAR_OUT_MUX02_CLB5_OUT2";
    clb_outputxbar3.mux3Config             = "XBAR_OUT_MUX03_CLB5_OUT3";
    clb_outputxbar3.mux4Config             = "XBAR_OUT_MUX04_CLB5_OUT4";
    clb_outputxbar3.mux5Config             = "XBAR_OUT_MUX05_CLB5_OUT5";
    clb_outputxbar3.mux6Config             = "XBAR_OUT_MUX06_CLB5_OUT6";
    clb_outputxbar3.mux7Config             = "XBAR_OUT_MUX07_CLB5_OUT7";
    clb_outputxbar3.sourceSignals          = ["CLB5_OUT0"];
    clb_outputxbar3.useSourceSelect        = true;
    clb_outputxbar3.clb_outputxbar.$assign = "CLB_OUTPUTXBAR2";
    
    const divider4       = system.clockTree["CLBCLKDIV"];
    divider4.divideValue = 2;
    
    dac1.$name            = "myDACA";
    dac1.enableOutput     = true;
    dac1.referenceVoltage = "DAC_REF_ADC_VREFHI";
    dac1.gainMode         = "DAC_GAIN_TWO";
    
    analog1.$name            = "myANALOGPinMux0";
    dac1.analog              = analog1;
    analog1.useCase          = "CUSTOM";
    adc1.analog              = analog1;
    analog1.useInterfacePins = ["A0/DACA_OUT","A7, GPIO210","B6, GPIO207","B7, GPIO208","C4, GPIO205"];
    adc2.analog              = analog1;
    adc3.analog              = analog1;
    
    device_support.build = "Release";
    
    epwm1.epwmTimebase_hsClockDiv                                    = "EPWM_HSCLOCK_DIVIDER_1";
    epwm1.epwmTimebase_counterMode                                   = "EPWM_COUNTER_MODE_UP_DOWN";
    epwm1.epwmCounterCompare_cmpA                                    = 500;
    epwm1.epwmDigitalCompare_EPWM_DC_TYPE_DCAH                       = "EPWM_DC_TRIP_TRIPIN4";
    epwm1.epwmDigitalCompare_EPWM_TZ_DC_OUTPUT_A1                    = "EPWM_TZ_EVENT_DCXH_HIGH";
    epwm1.epwmTripZone_EPWM_TZ_ACTION_EVENT_TZA                      = "EPWM_TZ_ACTION_LOW";
    epwm1.epwmTripZone_oneShotSource                                 = ["EPWM_TZ_SIGNAL_DCAEVT1"];
    epwm1.epwmEventTrigger_EPWM_SOC_A_triggerEnable                  = true;
    epwm1.epwmEventTrigger_EPWM_SOC_A_triggerEventPrescalar          = "1";
    epwm1.epwmTimebase_counterModeAfterSync                          = "EPWM_COUNT_MODE_UP_AFTER_SYNC";
    epwm1.epwmTimebase_syncInPulseSource                             = "EPWM_SYNC_IN_PULSE_SRC_DISABLE";
    epwm1.epwmActionQualifier_EPWM_AQ_OUTPUT_A_ON_TIMEBASE_UP_CMPA   = "EPWM_AQ_OUTPUT_LOW";
    epwm1.epwmActionQualifier_EPWM_AQ_OUTPUT_A_ON_TIMEBASE_DOWN_CMPA = "EPWM_AQ_OUTPUT_HIGH";
    epwm1.epwmDeadband_enableRED                                     = true;
    epwm1.epwmDeadband_enableFED                                     = true;
    epwm1.epwmDeadband_polarityFED                                   = "EPWM_DB_POLARITY_ACTIVE_LOW";
    epwm1.$hardware                                                  = system.deviceData.board.components.BP_SITE_1.subComponents.PWM_LOC1;
    epwm1.$name                                                      = "pwm1A";
    epwm1.epwmTimebase_period                                        = 2000;
    epwm1.epwmTimebase_syncOutPulseMode                              = ["EPWM_SYNC_OUT_PULSE_ON_SOFTWARE"];
    epwm1.epwmTimebase_forceSyncPulse                                = true;
    epwm1.hrpwm_syncSource                                           = "HRPWM_PWMSYNC_SOURCE_ZERO";
    epwm1.epwmTimebase_phaseEnable                                   = true;
    epwm1.epwmTimebase_phaseShift                                    = 500;
    epwm1.epwmDeadband_delayRED                                      = 40;
    epwm1.epwmDeadband_delayFED                                      = 40;
    epwm1.epwmEventTrigger_EPWM_SOC_A_triggerSource                  = "EPWM_SOC_TBCTR_PERIOD";
    
    epwm2.$hardware                                                  = system.deviceData.board.components.BP_SITE_1.subComponents.PWM_LOC2;
    epwm2.$name                                                      = "pwm1B";
    epwm2.copyUse                                                    = true;
    epwm2.copyFrom                                                   = "pwm1A";
    epwm2.epwmTimebase_hsClockDiv                                    = "EPWM_HSCLOCK_DIVIDER_1";
    epwm2.epwmTimebase_period                                        = 2000;
    epwm2.epwmTimebase_counterMode                                   = "EPWM_COUNTER_MODE_UP_DOWN";
    epwm2.epwmTimebase_counterModeAfterSync                          = "EPWM_COUNT_MODE_UP_AFTER_SYNC";
    epwm2.epwmTimebase_syncOutPulseMode                              = ["EPWM_SYNC_OUT_PULSE_ON_SOFTWARE"];
    epwm2.epwmCounterCompare_cmpA                                    = 500;
    epwm2.epwmActionQualifier_EPWM_AQ_OUTPUT_A_ON_TIMEBASE_UP_CMPA   = "EPWM_AQ_OUTPUT_LOW";
    epwm2.epwmActionQualifier_EPWM_AQ_OUTPUT_A_ON_TIMEBASE_DOWN_CMPA = "EPWM_AQ_OUTPUT_HIGH";
    epwm2.epwmDeadband_polarityFED                                   = "EPWM_DB_POLARITY_ACTIVE_LOW";
    epwm2.epwmDeadband_enableRED                                     = true;
    epwm2.epwmDeadband_delayRED                                      = 40;
    epwm2.epwmDeadband_enableFED                                     = true;
    epwm2.epwmDeadband_delayFED                                      = 40;
    epwm2.epwmTripZone_EPWM_TZ_ACTION_EVENT_TZA                      = "EPWM_TZ_ACTION_LOW";
    epwm2.epwmTripZone_oneShotSource                                 = ["EPWM_TZ_SIGNAL_DCAEVT1"];
    epwm2.epwmDigitalCompare_EPWM_DC_TYPE_DCAH                       = "EPWM_DC_TRIP_TRIPIN4";
    epwm2.epwmDigitalCompare_EPWM_TZ_DC_OUTPUT_A1                    = "EPWM_TZ_EVENT_DCXH_HIGH";
    epwm2.epwmEventTrigger_EPWM_SOC_A_triggerEnable                  = true;
    epwm2.epwmEventTrigger_EPWM_SOC_A_triggerSource                  = "EPWM_SOC_TBCTR_U_CMPA";
    epwm2.epwmEventTrigger_EPWM_SOC_A_triggerEventPrescalar          = "1";
    epwm2.epwmTimebase_syncInPulseSource                             = "EPWM_SYNC_IN_PULSE_SRC_SYNCOUT_EPWM5";
    epwm2.epwmTimebase_periodLink                                    = "EPWM_LINK_WITH_EPWM_5";
    epwm2.epwmTimebase_phaseEnable                                   = true;
    epwm2.epwmTimebase_phaseShift                                    = 500;
    
    epwm3.$hardware                                                  = system.deviceData.board.components.BP_SITE_1.subComponents.PWM_LOC3;
    epwm3.$name                                                      = "pwm1C";
    epwm3.copyUse                                                    = true;
    epwm3.copyFrom                                                   = "pwm1B";
    epwm3.epwmTimebase_hsClockDiv                                    = "EPWM_HSCLOCK_DIVIDER_1";
    epwm3.epwmTimebase_period                                        = 2000;
    epwm3.epwmTimebase_counterMode                                   = "EPWM_COUNTER_MODE_UP_DOWN";
    epwm3.epwmTimebase_counterModeAfterSync                          = "EPWM_COUNT_MODE_UP_AFTER_SYNC";
    epwm3.epwmTimebase_syncInPulseSource                             = "EPWM_SYNC_IN_PULSE_SRC_SYNCOUT_EPWM5";
    epwm3.epwmTimebase_syncOutPulseMode                              = ["EPWM_SYNC_OUT_PULSE_ON_SOFTWARE"];
    epwm3.epwmCounterCompare_cmpA                                    = 500;
    epwm3.epwmActionQualifier_EPWM_AQ_OUTPUT_A_ON_TIMEBASE_UP_CMPA   = "EPWM_AQ_OUTPUT_LOW";
    epwm3.epwmActionQualifier_EPWM_AQ_OUTPUT_A_ON_TIMEBASE_DOWN_CMPA = "EPWM_AQ_OUTPUT_HIGH";
    epwm3.epwmDeadband_polarityFED                                   = "EPWM_DB_POLARITY_ACTIVE_LOW";
    epwm3.epwmDeadband_enableRED                                     = true;
    epwm3.epwmDeadband_delayRED                                      = 40;
    epwm3.epwmDeadband_enableFED                                     = true;
    epwm3.epwmDeadband_delayFED                                      = 40;
    epwm3.epwmTripZone_EPWM_TZ_ACTION_EVENT_TZA                      = "EPWM_TZ_ACTION_LOW";
    epwm3.epwmTripZone_oneShotSource                                 = ["EPWM_TZ_SIGNAL_DCAEVT1"];
    epwm3.epwmDigitalCompare_EPWM_DC_TYPE_DCAH                       = "EPWM_DC_TRIP_TRIPIN4";
    epwm3.epwmDigitalCompare_EPWM_TZ_DC_OUTPUT_A1                    = "EPWM_TZ_EVENT_DCXH_HIGH";
    epwm3.epwmEventTrigger_EPWM_SOC_A_triggerEnable                  = true;
    epwm3.epwmEventTrigger_EPWM_SOC_A_triggerSource                  = "EPWM_SOC_TBCTR_U_CMPA";
    epwm3.epwmEventTrigger_EPWM_SOC_A_triggerEventPrescalar          = "1";
    epwm3.epwmTimebase_periodLink                                    = "EPWM_LINK_WITH_EPWM_5";
    epwm3.epwmTimebase_phaseEnable                                   = true;
    epwm3.epwmTimebase_phaseShift                                    = 500;
    
    epwmxbar1.$name     = "myEPWMXBAR4";
    epwmxbar1.muxesUsed = ["XBAR_MUX02"];
    epwmxbar1.tripInput = "XBAR_TRIP4";
    
    gpio2.$name             = "spi1CS";
    gpio2.direction         = "GPIO_DIR_MODE_OUT";
    gpio2.writeInitialValue = true;
    gpio2.initialValue      = 1;
    gpio2.gpioPin.$assign   = "boosterpack1.12";
    scripting.suppress("Connected to hardware,@@@.+?@@@ is connected to EQEP1 Header on the LaunchPad F28P65X\\. Consider selecting it in 'use hardware' above\\. @@@.+?@@@", gpio2, "gpioPin");
    
    gpio3.$name             = "GPIO_drv1_enable";
    gpio3.writeInitialValue = true;
    gpio3.direction         = "GPIO_DIR_MODE_OUT";
    gpio3.gpioPin.$assign   = "boosterpack1.4";
    scripting.suppress("Connected to hardware,@@@.+?@@@ is connected to SCIA XDS on the LaunchPad F28P65X\\. Consider selecting it in 'use hardware' above\\. @@@.+?@@@", gpio3, "gpioPin");
    
    spi1.$name                   = "drvSPI0";
    spi1.$hardware               = system.deviceData.board.components.BP_SITE_1.subComponents.SPI;
    spi1.bitRate                 = 400000;
    spi1.mode                    = "SPI_MODE_CONTROLLER";
    spi1.spi.$assign             = "SPIA";
    spi1.spi.spi_picoPin.$assign = "boosterpack1.15";
    spi1.spi.spi_pociPin.$assign = "boosterpack1.14";
    spi1.spi.spi_clkPin.$assign  = "boosterpack1.7";
    
    sync.syncOutSource = "SYSCTL_SYNC_OUT_SRC_EPWM5SYNCOUT";
    
    clb1.tile                = TILE1;
    TILE1.$name              = "TILE0_design";
    TILE1.pipeline_mode      = true;
    TILE1.tileLock           = true;
    TILE1.BOUNDARY.$name     = "BOUNDARY0";
    TILE1.LUT_0.$name        = "LUT_0";
    TILE1.LUT_1.$name        = "LUT_1";
    TILE1.LUT_2.$name        = "LUT_2";
    TILE1.FSM_0.$name        = "FSM_0";
    TILE1.FSM_1.$name        = "FSM_1";
    TILE1.FSM_2.$name        = "FSM_2";
    TILE1.COUNTER_0.$name    = "COUNTER_0";
    TILE1.COUNTER_1.$name    = "COUNTER_1";
    TILE1.COUNTER_2.$name    = "COUNTER_2";
    TILE1.OUTLUT_0.$name     = "OUTLUT_0";
    TILE1.OUTLUT_0.i0        = "BOUNDARY.in0";
    TILE1.OUTLUT_0.eqn       = "i0";
    TILE1.OUTLUT_1.$name     = "OUTLUT_1";
    TILE1.OUTLUT_1.eqn       = "!i0";
    TILE1.OUTLUT_1.i0        = "BOUNDARY.in0";
    TILE1.OUTLUT_2.$name     = "OUTLUT_2";
    TILE1.OUTLUT_3.$name     = "OUTLUT_3";
    TILE1.OUTLUT_4.$name     = "OUTLUT_4";
    TILE1.OUTLUT_5.$name     = "OUTLUT_5";
    TILE1.OUTLUT_6.$name     = "OUTLUT_6";
    TILE1.OUTLUT_7.$name     = "OUTLUT_7";
    TILE1.OUTLUT_7.eqn       = "i0";
    TILE1.OUTLUT_7.i0        = "BOUNDARY.in0";
    TILE1.HLC.$name          = "HLC_0";
    TILE1.HLC.program0.$name = "HLCP_0";
    TILE1.HLC.program1.$name = "HLCP_1";
    TILE1.HLC.program2.$name = "HLCP_2";
    TILE1.HLC.program3.$name = "HLCP_3";
    TILE1.AOC_0.$name        = "AOC_0";
    TILE1.AOC_1.$name        = "AOC_1";
    TILE1.AOC_2.$name        = "AOC_2";
    TILE1.AOC_3.$name        = "AOC_3";
    TILE1.AOC_4.$name        = "AOC_4";
    TILE1.AOC_5.$name        = "AOC_5";
    TILE1.AOC_6.$name        = "AOC_6";
    TILE1.AOC_7.$name        = "AOC_7";
    
    /**
     * Pinmux solution for unlocked pins/peripherals. This ensures that minor changes to the automatic solver in a future
     * version of the tool will not impact the pinmux you originally saw.  These lines can be completely deleted in order to
     * re-solve from scratch.
     */
    led1.gpio.gpioPin.$suggestSolution                                = "boosterpack1.13";
    clb_outputxbar3.clb_outputxbar.clb_outputxbarPin.$suggestSolution = "boosterpack2.73";
    analog1.analog.$suggestSolution                                   = "ANALOG";
    analog1.analog["a0/daca_outPin"].$suggestSolution                 = "boosterpack1.30";
    analog1.analog["a7, gpio210Pin"].$suggestSolution                 = "boosterpack1.27";
    analog1.analog["b6, gpio207Pin"].$suggestSolution                 = "boosterpack2.68";
    analog1.analog["b7, gpio208Pin"].$suggestSolution                 = "boosterpack1.28";
    analog1.analog["c4, gpio205Pin"].$suggestSolution                 = "boosterpack1.26";
    epwm1.epwm.$suggestSolution                                       = "EPWM5";
    epwm1.epwm.epwm_aPin.$suggestSolution                             = "boosterpack1.40";
    epwm1.epwm.epwm_bPin.$suggestSolution                             = "boosterpack1.39";
    epwm2.epwm.$suggestSolution                                       = "EPWM4";
    epwm2.epwm.epwm_aPin.$suggestSolution                             = "boosterpack1.38";
    epwm2.epwm.epwm_bPin.$suggestSolution                             = "boosterpack1.37";
    epwm3.epwm.$suggestSolution                                       = "EPWM6";
    epwm3.epwm.epwm_aPin.$suggestSolution                             = "boosterpack1.36";
    epwm3.epwm.epwm_bPin.$suggestSolution                             = "boosterpack1.35";
    spi1.spi.spi_ptePin.$suggestSolution                              = "boosterpack1.19";
    

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

    尊敬的 Alexy:

    SysConfig 配置看起来正常。 将此 GPIO 更改为输入时是否启用了上拉电阻器? 如果没有、您能否尝试启用上拉以查看此问题是否仍然存在?

    如果多路复用器选择是 CLB 输出 XBAR、为什么要将 GPIO 配置为输入?

    谢谢!

    卢克

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

    我没有将 GPIO 配置为输入、我尝试使用三态输出。 试图限制问题并理解 GPIO 图、因为我未能将相同的 CLB 输出路由到 GPIO41、无论我将什么设置放入 GPIO 控制寄存器都是如此。 我的实验 显示、GPIO32和 GPIO41之间有很大不同的行为、所以一些基本的东西要么从文档中缺失、要么不是很明显。 谢谢你。

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

    尊敬的 Alexey:

    我懂了。 我将在自行开发的 F28P65x Launchpad 上测试此问题。 我明天会回到你身边。

    谢谢!

    卢克

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

    尊敬的 Alexey:

    我能够在我身边重复这个问题。 虽然无法将 CLB 输出发送到 GPIO41、但可以直接写入 GPIO41。 我将联系设计团队、确定 CLBOUTPUTXBAR2是否连接到 GPIO41。

    谢谢!

    卢克

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

    尊敬的 Alexey:

    设计团队确认 CLBOUTPUTXBAR2已连接到 GPIO41、但是我们意识到 CLBOUTPUTXBAR2未连接到 GPIO32、实际上已连接到 GPIO33。 CLBOUTPUTXBAR1连接到 GPIO32。 只是一个供参考的人,如果你不知道这一点。

    我认为这是 driverlib 中的问题。 调用 XBAR_setOutputMuxConfig 函数时、它会将 XBAR_OutputNum struct 作为输入参数。 此结构本质上是一个偏移地址、用于确定要写入的寄存器、其中 CLBOUTPUTXBAR1MUX0TO15的地址与所有 CLBOUTPUTXBAR 寄存器的基址相同:

    偏移地址应该都是两个的倍数、因为每个 CLBOUTPUXBAR 实例有两个寄存器。 此函数在 CLB OUTPUTXBAR 和 OUTPUTXBAR 模块之间共享。

    不过、在 F28P65x 上、我们更新了 OUTPUTXBAR 模块、以便为每个 OUTPUTXBAR 实例提供64个输入多路复用器和4个寄存器、从而更新了 XBAR_setOutputMuxConfig 函数。 然而、CLBOUTPUTXBAR 的格式保持不变(每个 CLBOUTPUTXBAR 实例2个寄存器)。 因此、如果您尝试为 CLBOUTPUTXBAR 调用此函数(SysConfig 会调用此函数)并使用除 CLBOUTPUTXBAR1之外的任何 CLBOUTPUTXBAR 实例、则使用的偏移地址将是其应有值的两倍。 当您尝试通过 SysConfig 配置 CLBOUTPUTXBAR2时、实际上是从寄存器角度配置 CLBOUTPUTXBAR3。 CLBOUTPUTXBAR1上不会发生该问题、因为偏移地址为0、因此将偏移地址加倍不会产生影响。

    我将与软件团队合作来修复此问题、并将其包含在4月5日发布的下一个 C2000Ware 中。 如果您需要尽快更新此文件、我可以帮助您在本地纠正此问题。 对于给您带来的不便、我们深表歉意。

    谢谢!

    卢克

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

    Luke、感谢您的调查、现在很有意义。  短期内、我可以用 Xbar 偏移量除以2来调用 driverlib、它似乎起作用:

    XBAR_setOutputMuxConfig1(CLBOUTPUTXBAR_BASE, myCLB_OUTPUTXBAR1/2, XBAR_OUT_MUX00_CLB5_OUT0);

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

    尊敬的 Alexey:

    很高兴听到此变通办法解决了问题。 如果您有任何其他问题、请告诉我。

    Luke