Table 2-3 and Table 2-4 show the EPWM0-2 Signal Motor 1 and EPWM3-5 Signal Motor 2 data,
respectively.
Table 2-3 EPWM0-2 Signal Motor 1
AM243x LP (PIN NUMBER) |
BP CONNECTORS |
BLDC BP |
SIGNAL NAME |
GPIO1_64(B16) |
J5.49 |
nPWM_EN_M1 |
DRV1 enable |
GPMC0_AD8(U18) |
J4.36 |
DRV1 EPWM High C |
DRV1 PWM High C |
GPMC0_AD9(U20) |
J4.35 |
DRV1 EPWM Low C |
DRV1 PWM Low C |
GPMC0_AD5(T20) |
J4.38 |
DRV1 EPWM High B |
DRV1 PWM High B |
GPMC0_AD6(T18) |
J4.37 |
DRV1 EPWM Low B |
DRV1 PWM Low B |
GPMC0_AD3(V21) |
J4.40 |
DRV1 EPWM High A |
DRV1 PWM High A |
GPMC0_AD4(U21) |
J4.39 |
DRV1 EPWM Low A |
DRV1 PWM Low A |
Table 2-4 EPWM3-5 Signal Motor 2
AM243x LP (PIN NUMBER) |
BP CONNECTORS |
BLDC BP |
SIGNAL NAME |
GPIO1_65(B15) |
J5.50 |
nPWM_EN_M2 |
DRV2 enable |
FSI_TX0_CLK (P21) |
J8.79 |
DRV2 EPWM High C |
DRV2 PWM High C |
FSI_TX0_D0(Y18) |
J8.80 |
DRV2 EPWM Low C |
DRV2 PWM Low C |
TEST_LED3_RED(D1) |
J8.75 |
DRV2 EPWM High B |
DRV2 PWM High B |
TEST_LED4_GREEN(F3) |
J8.76 |
DRV2 EPWM Low B |
DRV2 PWM Low B |
TEST_LED1_GREEN(U19) |
J8.77 |
DRV2 EPWM High A |
DRV2 PWM High A |
FSI_RX0_D1(V20) |
J8.78 |
DRV2 EPWM Low A |
DRV2 PWM Low A |
EPWM Setting (init_pwms):
- Configure the SYNCI, SYNCO
mapping to tie the three PWM groups together
- Have PWM0 SYNC from Time Sync
Router 38
- CSL_REG32_WR(CSL_TIMESYNC_EVENT_INTROUTER0_CFG_BASE + ((38 × 4) + 4),
(0x10000 | 29));
- Time Sync Router input 29 (ICSSG1
IEP0 SYNC0) → Time Sync Router output 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 sync event 0)
- timesync_event_introuter_out_38: epwm0_sync.input2
- TI E2E: [FAQ] AM64x: What is the Time Sync
Router for? How do I use it?
- Have PWM3 SYNC from Time Sync
Router 39
- 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));
- Time Sync Router input 29 (ICSSG1
IEP0 SYNC0) → Time Sync Router output 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 sync event 0)
- timesync_event_introuter_out_39: epwm3_sync.input2
- Have PWM6 SYNC from Time Sync
Router 40
- 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));
- Time
Sync Router input 29 (ICSSG1 IEP0 SYNC0) → Time Sync Router output 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 sync event 0)
- timesync_event_introuter_out_40: epwm6_sync.input2
- Force SW sync for EPWM0.
Other PWMs are synchronized through hardware synchronized daisy-chain
- 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);
- Set EPWM to 50 kHz:
- appEpwmCfg.epwmOutFreq =
gEpwmOutFreq;
- App_epwmConfig(&appEpwmCfg, &epwm2PrdVal,
&epwm2CmpAVal);
EPWM0 Interrupt:
- hwiPrms.intNum = EPWM0_INTR;
- hwiPrms.callback =
&App_epwmIntrISR;
EPWM0 Output Data: