需要实现一个将EPWM3A/B等,通过使能CLB Output Signal Multiplexer输出至SCIBRX(GPIO13) 或ECAPOUT(经由XBAROUT1 GPIO58),但实测不成功。
但通过使能CLB Output Signal Multiplexer输出至EPWM1A或直接输出至XBAROUT就可以。
其中CLB输入由AOC输出。
CLB_setOutputMask(CLB1_BASE, (1UL<<0)|(1UL<<2)|(1UL<<15), true); //使能输出
CLB_setOutputMask(CLB3_BASE, (1UL<<11), true); //使能输出
//输入信号源配置
CLB_configLocalInputMux(CLB1_BASE, CLB_IN0, CLB_LOCAL_IN_MUX_GLOBAL_IN);
CLB_configGlobalInputMux(CLB1_BASE, CLB_IN0, CLB_GLOBAL_IN_MUX_EPWM3A);
CLB_configGPInputMux(CLB1_BASE, CLB_IN0, CLB_GP_IN_MUX_EXTERNAL);
CLB_selectInputFilter(CLB1_BASE, CLB_IN0, CLB_FILTER_NONE);
CLB_configLocalInputMux(CLB1_BASE, CLB_IN2, CLB_LOCAL_IN_MUX_GLOBAL_IN);
CLB_configGlobalInputMux(CLB1_BASE, CLB_IN2, CLB_GLOBAL_IN_MUX_EPWM3A);
CLB_configGPInputMux(CLB1_BASE, CLB_IN2, CLB_GP_IN_MUX_EXTERNAL);
CLB_selectInputFilter(CLB1_BASE, CLB_IN2, CLB_FILTER_NONE);
CLB_configLocalInputMux(CLB1_BASE, CLB_IN7, CLB_LOCAL_IN_MUX_GLOBAL_IN);
CLB_configGlobalInputMux(CLB1_BASE, CLB_IN7, CLB_GLOBAL_IN_MUX_EPWM3A);
CLB_configGPInputMux(CLB1_BASE, CLB_IN7, CLB_GP_IN_MUX_EXTERNAL);
CLB_selectInputFilter(CLB1_BASE, CLB_IN7, CLB_FILTER_NONE);
CLB_configLocalInputMux(CLB3_BASE, CLB_IN3, CLB_LOCAL_IN_MUX_GLOBAL_IN);
CLB_configGlobalInputMux(CLB3_BASE, CLB_IN3, CLB_GLOBAL_IN_MUX_EPWM3A);
CLB_configGPInputMux(CLB3_BASE, CLB_IN3, CLB_GP_IN_MUX_EXTERNAL);
CLB_selectInputFilter(CLB3_BASE, CLB_IN3, CLB_FILTER_NONE);
// AOC
CLB_configAOC(CLB1_BASE, CLB_AOC0, 0x6000);
CLB_configAOC(CLB1_BASE, CLB_AOC1, 0);
CLB_configAOC(CLB1_BASE, CLB_AOC2, 0x6000);
CLB_configAOC(CLB1_BASE, CLB_AOC3, 0);
CLB_configAOC(CLB1_BASE, CLB_AOC4, 0);
CLB_configAOC(CLB1_BASE, CLB_AOC5, 0);
CLB_configAOC(CLB1_BASE, CLB_AOC6, 0);
CLB_configAOC(CLB1_BASE, CLB_AOC7, 0x6000);
CLB_configAOC(CLB3_BASE, CLB_AOC0, 0);
CLB_configAOC(CLB3_BASE, CLB_AOC1, 0);
CLB_configAOC(CLB3_BASE, CLB_AOC2, 0);
CLB_configAOC(CLB3_BASE, CLB_AOC3, 0x6000);
CLB_configAOC(CLB3_BASE, CLB_AOC4, 0);
CLB_configAOC(CLB3_BASE, CLB_AOC5, 0);
CLB_configAOC(CLB3_BASE, CLB_AOC6, 0);
CLB_configAOC(CLB3_BASE, CLB_AOC7, 0);
CLB_enableCLB(CLB1_BASE);
CLB_enableCLB(CLB3_BASE);
XBAR_setOutputMuxConfig(XBAR_OUTPUT1, XBAR_OUT_MUX00_ECAP1_OUT);
XBAR_enableOutputMux(XBAR_OUTPUT1, XBAR_MUX00);
GPIO_setPinConfig(GPIO_0_EPWM1_A);
GPIO_setPadConfig(0, GPIO_PIN_TYPE_STD);
GPIO_setQualificationMode(0, GPIO_QUAL_SYNC);
GPIO_setDirectionMode(0, GPIO_DIR_MODE_OUT);
GPIO_setPinConfig(GPIO_1_EPWM1_B);
GPIO_setPadConfig(1, GPIO_PIN_TYPE_STD);
GPIO_setQualificationMode(1, GPIO_QUAL_SYNC);
GPIO_setDirectionMode(1, GPIO_DIR_MODE_OUT);
GPIO_setPinConfig(GPIO_58_OUTPUTXBAR1);
GPIO_setPadConfig(58, GPIO_PIN_TYPE_STD);
GPIO_setQualificationMode(58, GPIO_QUAL_SYNC);
GPIO_setDirectionMode(58, GPIO_DIR_MODE_OUT);
GPIO_setPinConfig(GPIO_13_SCIB_RX);
GPIO_setPadConfig(13, GPIO_PIN_TYPE_STD);
GPIO_setQualificationMode(13, GPIO_QUAL_SYNC);
GPIO_setDirectionMode(13, GPIO_DIR_MODE_OUT);