主题中讨论的其他器件:SysConfig
工具与软件:
专家们、您好!
我正在尝试从 GPIO 设置 PWM 跳闸、 并使用 GPIO 42作为输入。
这是 我目前拥有的:
// GPIO42 GPIO_setMasterCore(42, GPIO_CORE_CPU1); GPIO_setPinConfig(GPIO_42_GPIO42); GPIO_setDirectionMode(42, GPIO_DIR_MODE_IN); GPIO_setPadConfig(42, GPIO_PIN_TYPE_PULLUP);
void configurePWMTripFromGPIO()
{
//Select GPIO42 as INPUTXBAR1
XBAR_setInputPin(XBAR_INPUT1, 42);
//inputxbar1 trip
XBAR_setEPWMMuxConfig(XBAR_TRIP4, XBAR_EPWM_MUX01_INPUTXBAR1);
// Disable all the muxes first
XBAR_disableEPWMMux(XBAR_TRIP4, 0xFFFF);
// Enable Mux 0 OR Mux 4 to generate TRIP4
XBAR_enableEPWMMux(XBAR_TRIP4, XBAR_MUX00 | XBAR_MUX04 | XBAR_MUX10 | XBAR_MUX01);
//Setup trip zone actions
// EPWMxA will go low
// EPWMxB will go low
EPWM_setTripZoneAction(EPWM1_BASE, EPWM_TZ_ACTION_EVENT_TZA, EPWM_TZ_ACTION_LOW);
EPWM_setTripZoneAction(EPWM1_BASE, EPWM_TZ_ACTION_EVENT_TZB, EPWM_TZ_ACTION_LOW);
EPWM_setTripZoneAction(EPWM2_BASE, EPWM_TZ_ACTION_EVENT_TZA, EPWM_TZ_ACTION_LOW);
EPWM_setTripZoneAction(EPWM2_BASE, EPWM_TZ_ACTION_EVENT_TZB, EPWM_TZ_ACTION_LOW);
EPWM_setTripZoneAction(EPWM3_BASE, EPWM_TZ_ACTION_EVENT_TZA, EPWM_TZ_ACTION_LOW);
EPWM_setTripZoneAction(EPWM3_BASE, EPWM_TZ_ACTION_EVENT_TZB, EPWM_TZ_ACTION_LOW);
//Enable the PWM trip zone signals (OSH1)
EPWM_enableTripZoneSignals(EPWM1_BASE, EPWM_TZ_SIGNAL_OSHT1);
EPWM_enableTripZoneSignals(EPWM2_BASE, EPWM_TZ_SIGNAL_OSHT1);
EPWM_enableTripZoneSignals(EPWM3_BASE, EPWM_TZ_SIGNAL_OSHT1);
}
该引脚(GPIO42)已配置为"输入"、因为它也在其他一些控制逻辑中使用。
- 首先我的问题是,是否可以使用同一个 GPIO 引脚来设置 PWM 跳闸? 或者它是否应该是专用的 GPIO 引脚?
- 其次、如何 控制基于 GPIO 的 PWM 跳闸事件的逻辑电平? 我的意思是"仅当 GPIO42为低电平时、才激活 PWM 跳闸"
将来、如果我希望 PWM 跳闸事件在 GPIO42为高电平时激活、 我该如何设置它?
谢谢!
AK
