表 2-3 和表 2-4 分别显示了 EPWM0-2 信号电机 1 和 EPWM3-5 信号电机 2 数据。
表 2-3 EPWM0-2 信号电机 1
AM243x LP(引脚编号) |
BP 连接器 |
BLDC BP |
信号名称 |
GPIO1_64(B16) |
J5.49 |
nPWM_EN_M1 |
DRV1 使能 |
GPMC0_AD8(U18) |
J4.36 |
DRV1 EPWM 高电平 C |
DRV1 PWM 高电平 C |
GPMC0_AD9(U20) |
J4.35 |
DRV1 EPWM 低电平 C |
DRV1 PWM 低电平 C |
GPMC0_AD5(T20) |
J4.38 |
DRV1 EPWM 高电平 B |
DRV1 PWM 高电平 B |
GPMC0_AD6(T18) |
J4.37 |
DRV1 EPWM 低电平 B |
DRV1 PWM 低电平 B |
GPMC0_AD3(V21) |
J4.40 |
DRV1 EPWM 高电平 A |
DRV1 PWM 高电平 A |
GPMC0_AD4(U21) |
J4.39 |
DRV1 EPWM 低电平 A |
DRV1 PWM 低电平 A |
表 2-4 EPWM3-5 信号电机 2
AM243x LP(引脚编号) |
BP 连接器 |
BLDC BP |
信号名称 |
GPIO1_65(B15) |
J5.50 |
nPWM_EN_M2 |
DRV2 使能 |
FSI_TX0_CLK (P21) |
J8.79 |
DRV2 EPWM 高电平 C |
DRV2 PWM 高电平 C |
FSI_TX0_D0(Y18) |
J8.80 |
DRV2 EPWM 低电平 C |
DRV2 PWM 低电平 C |
TEST_LED3_RED(D1) |
J8.75 |
DRV2 EPWM 高电平 B |
DRV2 PWM 高电平 B |
TEST_LED4_GREEN(F3) |
J8.76 |
DRV2 EPWM 低电平 B |
DRV2 PWM 低电平 B |
TEST_LED1_GREEN(U19) |
J8.77 |
DRV2 EPWM 高电平 A |
DRV2 PWM 高电平 A |
FSI_RX0_D1(V20) |
J8.78 |
DRV2 EPWM 低电平 A |
DRV2 PWM 低电平 A |
EPWM 设置 (init_pwms):
- 配置 SYNCI、SYNCO 映射以将三个 PWM 组绑定在一起
- 由时间同步路由器 38 提供 PWM0 SYNC 信号
- CSL_REG32_WR(CSL_TIMESYNC_EVENT_INTROUTER0_CFG_BASE + ((38 × 4) + 4), (0x10000 | 29));
- 时间同步路由器输入 29 (ICSSG1 IEP0 SYNC0) → 时间同步路由器输出 38
- CSL_REG32_WR(CSL_CTRL_MMR0_CFG0_BASE + CSL_MAIN_CTRL_MMR_CFG0_EPWM0_CTRL, (2 << CSL_MAIN_CTRL_MMR_CFG0_EPWM0_CTRL_SYNCIN_SEL_SHIFT));
- TIMESYNC_INTRTR0_IN_29:PRU_ICSSG1_PR1_EDC0_SYNC0_OUT_0(IEP0 同步事件 0)
- timesync_event_introuter_out_38: epwm0_sync.input2
- TI E2E:[常见问题解答] AM64x:时间同步路由器有什么用?如何使用它?
- 由时间同步路由器 39 提供 PWM3 SYNC 信号
- CSL_REG32_WR(CSL_CTRL_MMR0_CFG0_BASE + CSL_MAIN_CTRL_MMR_CFG0_EPWM3_CTRL, (2 << CSL_MAIN_CTRL_MMR_CFG0_EPWM3_CTRL_SYNCIN_SEL_SHIFT));
- 时间同步路由器输入 29 (ICSSG1 IEP0 SYNC0) → 时间同步路由器输出 39
- CSL_REG32_WR(CSL_TIMESYNC_EVENT_INTROUTER0_CFG_BASE + ((39 × 4) + 4), (0x10000 | 29));
- TIMESYNC_INTRTR0_IN_29:PRU_ICSSG1_PR1_EDC0_SYNC0_OUT_0(IEP0 同步事件 0)
- timesync_event_introuter_out_39: epwm3_sync.input2
- 由时间同步路由器 40 提供 PWM6 SYNC 信号
- CSL_REG32_WR(CSL_CTRL_MMR0_CFG0_BASE + CSL_MAIN_CTRL_MMR_CFG0_EPWM6_CTRL, (2 << CSL_MAIN_CTRL_MMR_CFG0_EPWM6_CTRL_SYNCIN_SEL_SHIFT));
- 时间同步路由器输入 29 (ICSSG1 IEP0 SYNC0) → 时间同步路由器输出 40
- CSL_REG32_WR(CSL_TIMESYNC_EVENT_INTROUTER0_CFG_BASE + ((40 * 4) + 4), (0x10000 | 29));
- TIMESYNC_INTRTR0_IN_29:PRU_ICSSG1_PR1_EDC0_SYNC0_OUT_0(IEP0 同步事件 0)
- timesync_event_introuter_out_40: epwm6_sync.input2
- 为 EPWM0 强制 SW 同步。其他 PWM 通过硬件同步菊花链进行同步
- Epwm_tbTriggerSwSync(gEpwm0BaseAddr);
- HW_WR_FIELD16(((gEpwm0BaseAddr + PWMSS_EPWM_OFFSET) + PWMSS_EPWM_TBCTL), PWMSS_EPWM_TBCTL_SWFSYNC, (uint16_t)PWMSS_EPWM_TBCTL_SWFSYNC_FORCE_SYNC);
- 将 EPWM 设置为 50kHz:
- appEpwmCfg.epwmOutFreq = gEpwmOutFreq;
- App_epwmConfig(&appEpwmCfg, &epwm2PrdVal, &epwm2CmpAVal);
EPWM0 中断:
- hwiPrms.intNum = EPWM0_INTR;
- hwiPrms.callback = &App_epwmIntrISR;
EPWM0 输出数据: