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.
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?
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!
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.