2401038_en-US

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

2401038_en-US

2401038_en-US

Recommended way to implement 6-step BLDC commutation with LCU complementary PWM and dead time?

Hi everyone,

I am working on a 3-phase BLDC 6-step commutation project on S32K311 using:

  • eMIOS for PWM generation

  • TRGMUX

  • LCU

  • GD3000 gate driver

  • RTD 5.0.0

My phase mapping is:

  • U_HS = eMIOS ch0

  • U_LS = eMIOS ch1

  • V_HS = eMIOS ch2

  • V_LS = eMIOS ch3

  • W_HS = eMIOS ch4

  • W_LS = eMIOS ch5

I use the following LUT values:

#define LCU_LUT_OFF 0x0000U


#define LCU_LUT_PWM 0xAAAAU

#define LCU_LUT_INV_PWM 0x5555U

#define LCU_LUT_ON 0xFFFFU

Initially I implemented commutation by dynamically changing the LUTs every sector using:

Lcu_Ip_SetSyncOutputLutControl(LCU_LutList, 6U);

Example for V+ / W-:

Emios_Pwm_Ip_SetDutyCycle(EMIOS_INSTANCE, PWM_CHANNEL_V_HS, activeDuty); LCU_LutList[PWM_CHANNEL_V_HS].Value = LCU_LUT_PWM; LCU_LutList[PWM_CHANNEL_V_LS].Value = LCU_LUT_INV_PWM; LCU_LutList[PWM_CHANNEL_W_LS].Value = LCU_LUT_ON; Lcu_Ip_SetSyncOutputLutControl(LCU_LutList, 6U);

A strange issue occurs:

  • If I configure V_HS once before the loop, PWM is present.

  • After entering the commutation loop and repeatedly calling Lcu_Ip_SetSyncOutputLutControl(), V_HS stops switching, while the other channels continue to work.

This made me wonder whether dynamic synchronized LUT updates are the correct approach for motor commutation.

 

My main question

For S32K311 + GD3000, what is the recommended architecture for:

  • 3 complementary PWM pairs

  • dead-time insertion

  • 6-step commutation

  • safe switching

Should I:

  • Keep the LCU LUTs static (PWM / INV_PWM) and perform commutation only by changing LCU output enable/override states?

  • Use Lcu_Ip_SetOutputLutControl() (immediate update) instead of Lcu_Ip_SetSyncOutputLutControl()?

  • Avoid dynamic LUT rewriting completely?

 

Dead-time question

I would like to generate complementary PWM with dead time using the LCU.

Is the intended method to:

  • Generate only 3 base PWMs with eMIOS (U, V, W),

  • Route them through TRGMUX to the LCU,

  • Use fixed LUTs: HS = 0xAAAA LS = 0x5555

  • Configure dead time in the LCU output/filter settings,

  • And then change only the output enable/override for each commutation sector?

If there is an NXP example (RTD or MBDT) that demonstrates 6-step BLDC with LCU complementary PWM and dead-time insertion, I would greatly appreciate a reference.

Thank you!

Re: Recommended way to implement 6-step BLDC commutation with LCU complementary PWM and dead time?

Hi@Esakki

you can refer to out motor solution in the link below, you can find the demo code and application node in this page:

https://www.nxp.com/design/design-center/development-boards-and-designs/MCSPTE1AK344


For example, in the six-step method for BLDC, changing the rotation direction of the motor is usually not achieved by updating the state of the LCU, you can take a look at our demo code and application node.


Tags (1)
No ratings
Version history
Last update:
3 weeks ago
Updated by: