ZHCA963 August 2019 TMS320F280040-Q1 , TMS320F280040C-Q1 , TMS320F280041 , TMS320F280041-Q1 , TMS320F280041C , TMS320F280041C-Q1 , TMS320F280045 , TMS320F280048-Q1 , TMS320F280048C-Q1 , TMS320F280049 , TMS320F280049-Q1 , TMS320F280049C , TMS320F280049C-Q1 , TMS320F28374D , TMS320F28375D , TMS320F28376D , TMS320F28377D , TMS320F28377D-EP , TMS320F28377D-Q1 , TMS320F28378D , TMS320F28379D , TMS320F28379D-Q1
要将信号从 CLB (BOUNDARY OUTx) 导出到 GPIO,对于 OUT4 和 OUT5,请使用输出 X-BAR,OUT0-3 和 OUT6-7 会在 GPIO 处拦截特定外设输出。
如果使用 OUT4 和 OUT5,请使用输出 X-BAR 并执行以下步骤:
以下代码片段展示了如何使用器件驱动程序库来完成上述步骤。
//
// Configure GPIO31 for OUTPUTXBAR8
//
GPIO_setPinConfig(GPIO_31_OUTPUTXBAR8);
GPIO_setDirectionMode(31, GPIO_DIR_MODE_OUT);
GPIO_setPadConfig(31, GPIO_PIN_TYPE_STD);
//
// Configure OUTPUT-XBAR OUTPUT8 as CLB1_OUT4
//
XBAR_setOutputMuxConfig(XBAR_OUTPUT8, XBAR_OUT_MUX01_CLB1_OUT4);
XBAR_enableOutputMux(XBAR_OUTPUT8, XBAR_MUX01);
//
// Configure GPIO34 for OUTPUTXBAR1
//
GPIO_setPinConfig(GPIO_34_OUTPUTXBAR1);
GPIO_setDirectionMode(34, GPIO_DIR_MODE_OUT);
GPIO_setPadConfig(34, GPIO_PIN_TYPE_STD);
//
// Configure OUTPUT-XBAR OUTPUT1 as CLB1_OUT5
//
XBAR_setOutputMuxConfig(XBAR_OUTPUT1, XBAR_OUT_MUX03_CLB1_OUT5);
XBAR_enableOutputMux(XBAR_OUTPUT1, XBAR_MUX03);
如果进行外设输出拦截(逻辑块 OUT0-3 和 OUT6-7):
GPIO 的输出是 CLB OUT 而非外设输出。TRM 中的外设信号多路复用器表提到了哪个 CLB OUT 对应于哪个外设输出。以下代码片段展示了如何使用器件驱动程序库来完成上述步骤。
//
// Configure GPIO0 for EPWM1A which will be overriden by CLB0_OUT0
//
GPIO_setPinConfig(GPIO_0_EPWM1A);
GPIO_setDirectionMode(0, GPIO_DIR_MODE_OUT);
GPIO_setPadConfig(0, GPIO_PIN_TYPE_STD);
//
// Configure GPIO1 for EPWM1B which will be overriden by CLB0_OUT1
//
GPIO_setPinConfig(GPIO_1_EPWM1B);
GPIO_setDirectionMode(1, GPIO_DIR_MODE_OUT);
GPIO_setPadConfig(1, GPIO_PIN_TYPE_STD);
最后,必须启用 CLB 逻辑块输出。如下代码片段将使用器件驱动程序库完成此任务。
CLB_setOutputEnableMask(CLB1_BASE, 1 << 0 | 1 << 2);