表 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 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 |
表 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 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 設定 (init_pwms):
- 3 つの PWM グループを結合するように SYNCI、SYNCO のマッピングを構成します。
- 時間同期ルータ 38 から PWM0 を同期
- 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:[FAQ] AM64x :時間同期ルータは何のためのものですか?それはどのように使うのですか?
- 時間同期ルータ 39 から PWM3 を同期
- 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 を同期
- 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
- SW を強制的に EPWM0 に同期します。ハードウェア同期のデイジー チェーンにより他の 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 出力データ: