Pwm Motor Control
Pwm Motor Control
3-Phase Sensorless PMSM Motor Control Kit with S32K344 using MBDT Blocks, Rev. 0, 03/2023
2 NXP Semiconductors
Motor Control PMSM example
o DEVKIT-MOTORGD board
o S32K3X4EVB-Q172 board
o Sunrise 42BLY3A78-24110 Motor
o 12V Power Supply
o Micro-USB cable
3-Phase Sensorless PMSM Motor Control Kit with S32K344 using MBDT Blocks, Rev. 0, 03/2023
NXP Semiconductors 3
Motor Control PMSM example
1. Connect a micro-USB cable between the host PC and the OpenSDA USB port (J40) and switch
the SW1 to position two on the S32K3X4EVB-Q172 board.
2. Connect the 12 V Power supply to the DEVKIT-MOTORGD board and switch the SW1 from
the position two to position one on the S32K3X4EVB-Q172 board.
3. The four LEDs next to SW1 will power on and be solid orange, if they are blinking, move the
switch from position one to two and back to position one to start the SBC without the active
watchdog.
4. Open the s32k3xx_mc_pmsm.mdl in MATLAB®. Users can choose between the Sunrise
42BLY3A78-24110 motor (MCSPTE1AK344 kit) or the Linix 45ZWN24-40 MCSPTE1AK144
development kit. To change from the default Sunrise motor, click on the Linix Motor Parameters
in the Motor Selection Block.
5. Build, Download the program to the target board and the RGBLED0_GREEN lights up.
6. Open the "S32K_PMSM_Sensorless.pmp" FreeMASTER project from the
"FreeMASTER_control" folder and click on the "Tools" menu, then "Connection Wizard," then
3-Phase Sensorless PMSM Motor Control Kit with S32K344 using MBDT Blocks, Rev. 0, 03/2023
4 NXP Semiconductors
Model overview
click Next twice, and select the COM port assigned to the S32K3X4EVB-Q172 board
and 115200 bauds.
3. Model overview
The following image shows the model overview with all the blocks present.
3-Phase Sensorless PMSM Motor Control Kit with S32K344 using MBDT Blocks, Rev. 0, 03/2023
NXP Semiconductors 5
Model overview
• Hardware_interrupt_handler calls the Measurement and drives the motor control algorithm
• Measurements reads the ADC FIFO buffer and calls the following blocks
• Board buttons control the start (in CW or CCW) and stop of the motor
• State machine subsystem contains the main "StateFlow" of the Motor Control Application,
along with the S functions executed in each of the states.
• Motor selection contains parameters for the Sunrise or the Linix motor.
• RGBLED0 toggle controls the blinking of the green LED
• Update PWM calls the peripheral block to update a new value of duty cycle
• Var. Init. contains most of the variables used in the model and in FreeMASTER
• FreeMASTER Recorder transfers the data from the model to the PC
More details about the specific hardware for the current measurements can be found in Chapter 3.3,
"Phase Current Measurement," of the document “3-Phase Sensorless PMSM Motor Control Kit with
S32K344 using RTD Low Level API” in "Application Note AN13767".
The hardware interrupt handler calls the Measurements block subsystem.
The Measurement block reads the ADC FIFO (First In First Out) buffer, and using the MUX, it creates a
bus with three signals, each containing the values from the respective ADC channel:
3-Phase Sensorless PMSM Motor Control Kit with S32K344 using MBDT Blocks, Rev. 0, 03/2023
NXP Semiconductors 7
Model overview
This subsystem also generates function calls for the other subsystems:
• Board Buttons
• State Machine
When the USER_SW0 button is pressed, the motor starts in the CW direction, and when the
USER_SW1 button is pressed, it starts in the CCW direction.
Pressing both buttons stops the motor and rearm the system to start again.
The FreeMASTER tool can read the two global variables (btSpeedUp and btSpeedDown) for starting or
stopping the motor in CW or CCW.
The speed step increase/decrease is done by sequentially pressing the same button and this triggers the If
Action subsystem below.
If the “cntSpeedUp” value is greater than the “MBD_SPEED_UP_CNT,” the counter value is reset to 0.
Otherwise, it increases with each run of the subsystem.
4. State machine
This is the main motor control block and the most complex one from the MATLAB model.
3-Phase Sensorless PMSM Motor Control Kit with S32K344 using MBDT Blocks, Rev. 0, 03/2023
NXP Semiconductors 9
State machine
The main state machine block controls the flow of the motor control application.
3-Phase Sensorless PMSM Motor Control Kit with S32K344 using MBDT Blocks, Rev. 0, 03/2023
10 NXP Semiconductors
State machine
3-Phase Sensorless PMSM Motor Control Kit with S32K344 using MBDT Blocks, Rev. 0, 03/2023
NXP Semiconductors 11
State machine
An event is generated only when the motor starts with OnOffState set to OFF and the OnOffSwitch set to
true, or when the motor stops with OnOffState set to ON and the OnOffSwitch set to false.
This subsystem checks if the OnOffState is equal to 1, and if it is true, it will set MBD_e_app_on as the
output for the event; otherwise, it will be off.
Calc_iABC obtains the ADC raw values and converts them to real currents.
3-Phase Sensorless PMSM Motor Control Kit with S32K344 using MBDT Blocks, Rev. 0, 03/2023
12 NXP Semiconductors
State machine
It also determines the third stator current, or , using the following formula:
The UDC_filt block gets the raw ADC value and computes the raw and filtered DC bus voltage:
The raw ADC values are shifted and multiplied with the constant MBD_U_DCB_MAX that is present in
the MATLAB script “s32k3xx_mc_pmsm_data.m”.
The AMMCLib function GDFLIB_FilterMA implements an exponential moving average filter. The
filter will initialize the internal state according to the preset value.
The purpose of this preset is to avoid excessive transients and, in this case, the constant 12 is used
because the nominal DC voltage is 12 volts.
The output of UDC_filt block updates two global variables:
• Udcb_Filt
• Udcb_Raw
These variables are particularly important because they are used in the current loop in the fault state to
check for overvoltage, the align state, and to eliminate the DC bus ripple.
3-Phase Sensorless PMSM Motor Control Kit with S32K344 using MBDT Blocks, Rev. 0, 03/2023
NXP Semiconductors 13
State machine
InitLeds block sets to zero the RGBLED0, along with OnOffState, OnOffSwitch, and SwitchFaultClear.
After all the variables are set, MBD_e_init_done is sent to the global variable Event.
3-Phase Sensorless PMSM Motor Control Kit with S32K344 using MBDT Blocks, Rev. 0, 03/2023
14 NXP Semiconductors
State machine
Overcurrent is also checked for each phase A, B, or C, as well as overDCBusVoltage and overcurrent on
the DC bus.
If any of the limits are reached, then a function call to disable PWM's outputs will be triggered.
The SetStates subsystem sets variables and resets the counter needed for the align process.
The inverse Park transformation is used by the Calc_uAIBReq to calculate the Ud and Uq voltages.
3-Phase Sensorless PMSM Motor Control Kit with S32K344 using MBDT Blocks, Rev. 0, 03/2023
16 NXP Semiconductors
State machine
The Wait_to_align block uses a counter to wait until the motor shaft is mechanically aligned.
The align subsystem is using a timer to wait until the counter is negative, and then it resets all the
following variables: DutyCycleValues(:), uDQReq1, uDQReq2, iDQReq1, iDQReq2, Rst_FastLoop,
Rst_SlowLoop, trackingToSensorless, speedLoopCntr, openLoop_wRotEl, pospeControl_wRotEl,
sensorless_wRotEl, sensorless_thRotEl, openLoop_thRotEl:
3-Phase Sensorless PMSM Motor Control Kit with S32K344 using MBDT Blocks, Rev. 0, 03/2023
NXP Semiconductors 17
State machine
After all values are set, the MBD_e_align_done will be sent to the Event global variable.
The last subsystem eliminates the DC bus ripple and calculates the PWM duty cycle:
We are using Modified Space Vector Modulation in order to achieve full DC bus voltage utilization by
continuously shifting up and down the 3-phase voltage system.
This shifting is called “3rd harmonic injection” and allows us to change the amplitude of the first
harmonic by 15.5%, which will allow us to get to a higher speed region or deliver more torque compared
to the standard sinusoidal PWM modulation.
The GreenLedOn sets the RGBLED0 to a solid GREEN color and turns off the other two color LEDs.
The “ReadyStateSetStates” sends the value “MBD_e_ready” to Event and the constant “MBD_ready” to
the “MBD_State” global variable.
The Ready state subsystem also creates a function call to disable the PWM outputs.
3-Phase Sensorless PMSM Motor Control Kit with S32K344 using MBDT Blocks, Rev. 0, 03/2023
20 NXP Semiconductors
State machine
The “Calculate_I_ABCoffsets” uses the “IphaseAB_raw” values and the constant “MBD_I_MAX” from
the MATLAB script as inputs for the AMMCLib blocks.
The “GDFLIB_FilterMA_FLT” function block implements an exponential moving average filter used to
calculate the offset between the raw phase currents and the maximum current “MBD_I_MAX” set as a
constant in the script “s32k3xx_mc_pmsm_data.m” file.
The function returns a single precision floating-point value, representing the filtered value of the input
signal in step (k).
The counter implementation is simple, using a decrement for each step and comparing.
3-Phase Sensorless PMSM Motor Control Kit with S32K344 using MBDT Blocks, Rev. 0, 03/2023
NXP Semiconductors 21
State machine
If the “CalibCnt” counter value is higher than the “CalibTimer” value, it will trigger the subsystem
“ResetVariables”:
This sets all variables above and sends the value “MBD_e_calib_done” to the Event global state.
3-Phase Sensorless PMSM Motor Control Kit with S32K344 using MBDT Blocks, Rev. 0, 03/2023
22 NXP Semiconductors
State machine
The “Rst_FastLoop” variable is used to reset the motor control algorithm when the user wants to stop
and restart the motor.
The motor control algorithm is pictured below, going from the current acquisition, Clark+Park
transforms, BEMF observer, Current loop, Inverse Park plus DC bus ripple compensation and PWM out.
The schematic above is similar to the motor control application from the document “3-Phase Sensorless
PMSM Motor Control Kit with S32K344 using RTD Low Level API” AN13767.
3-Phase Sensorless PMSM Motor Control Kit with S32K344 using MBDT Blocks, Rev. 0, 03/2023
NXP Semiconductors 23
State machine
The first step is the acquisition of the motor stator phase current.
3-Phase Sensorless PMSM Motor Control Kit with S32K344 using MBDT Blocks, Rev. 0, 03/2023
24 NXP Semiconductors
Current loop (Fast loop)
The voltage drop on the shunt resistors is sent into the Op-Amp for amplification and signal filtering
before being input for the ADC.
Then the ADC is used to sense two of the phase currents, and then the motor control algorithm
calculates the third current based on Kirchhoff's Law, which states that the sum of currents entering a
node is equal to zero.
The forward Clark transform is then used to convert the three-phase system to a two-phase orthogonal
system (α, β).
The stationary system is then translated into a rotating d-q reference frame using the Park transform,
after which it is fed into the back-EMF and Angle tracking Observer to compute the command voltages
for the next PWM commutation.
The d-q coordinates are transformed to the alpha and beta stationary frames using the inverse Park.
The space vector modulation (SVM) block uses the inverse Clark transformation to produce the three-
phase voltages for the motor windings, completing the motor control loop from current acquisition to the
generated voltage command.
For more information about the equations, stationary and rotating reference frames, please read Chapter
3.2, “PMSM model in quadrature phase synchronous reference frame,” in AN13767.
The direct (d-axis) current component is known as the flux-producing component, and the orthogonal
(q-axis) component to the magnetic flux is known as the torque-producing component.
The current control loop is used to control the torque and magnetic flux of the 3-phase motor with high
accuracy, dynamics, and bandwidth.
Looking back into the MATLAB model, let’s follow the same logic from the ADC signal acquisition
until the PWM output voltage commands.
First, we have the ADC raw values fed into the “Calc_iABC“ block that computes the three-phase
currents, which are then converted to single-precision floating point using the
“CurrentSenseProcessing” block.
Second, we have the Forward Clark transformation subsystem.
This uses the “GMCLIB_Clark_FLT” single precision floating point function, which is used to
transform values from the three-phase (A-B-C) coordinate system to the two-phase (α-β) orthogonal
coordinate system according to the following equations:
This transforms values from the two-phase (α-β) stationary orthogonal coordinate system to the two-
phase (d-q) rotational orthogonal coordinate system, according to these equations:
The “AMCLIB_CurrentLoop” function implements the current control loop, which is an integral part of
FOC and represents the most inner loop in the motor control structure.
The current control loop contains two PI controllers in recurrent form, and the parameters are
configurable inside the AMCLib block:
3-Phase Sensorless PMSM Motor Control Kit with S32K344 using MBDT Blocks, Rev. 0, 03/2023
NXP Semiconductors 27
Current loop (Fast loop)
These parameters can be modified in the script “s32k3xx_mc_pmsm_data.m” from the model folder.
The output of the Current Loop is the Ud and Uq required command voltages, which are fed into the
Invers Park block:
The “GMCLIB_ParkInv” function calculates the Inverse Park Transformation, which transforms
quantities from the two-phase (d-q) rotational orthogonal coordinate system to the two-phase (α-β)
stationary orthogonal coordinate system using the equations:
Next, the two signals feed the DC bus Ripple Compensation block.
3-Phase Sensorless PMSM Motor Control Kit with S32K344 using MBDT Blocks, Rev. 0, 03/2023
28 NXP Semiconductors
Current loop (Fast loop)
Next, these signals are passed into the PWM modulation block:
The DutyCycleValues values are used to update the MCU timer that generates the PWM signals, which
are fed into the GD3000 MOSFETs driver.
The “sin-cos” block calculates the sine, cosine of the rotor position (theta_e):
These signals are needed for the angle estimation and are fed into the Park and inverse Park blocks. The
top part of the back-EMF and Angle tracking Observer block contains the following.
3-Phase Sensorless PMSM Motor Control Kit with S32K344 using MBDT Blocks, Rev. 0, 03/2023
NXP Semiconductors 29
Current loop (Fast loop)
The “AMCLIB_BemfObsrvDQ” function returns the phase error between the real and the estimated
rotating reference frames:
The bottom part of the back-EMF and Angle tracking Observer block contains the
“AMCLIB_TrackObsrv_FLT” function.
The position tracking observer has a PI controller that is calculating a linear approximation around the
operating point Θestim = Θe.
The parameters of the block are:
3-Phase Sensorless PMSM Motor Control Kit with S32K344 using MBDT Blocks, Rev. 0, 03/2023
30 NXP Semiconductors
Current loop (Fast loop)
The Observer feeds the “Omega_e” to the Speed Loop, called Slow Loop in this model.
All the above blocks are part of the “Fast Loop” of the motor control algorithm and are essential for the
current control logic.
This function takes the phase error (Θerr) calculated by the “AMCLIB_BemfObsrvDQ” and uses it to
estimate the angular velocity and position of the rotor.
The estimated rotor position is obtained by driving the phase error (Θerr) of the γ-δ reference frame
towards zero in a phase-locked loop (PLL).
The PLL structure is depicted in the following diagram.
3-Phase Sensorless PMSM Motor Control Kit with S32K344 using MBDT Blocks, Rev. 0, 03/2023
NXP Semiconductors 31
Speed loop (Slow loop)
The counter “speedLoopCntr” is used to run the Slow Loop subsystem when it is equal to the variable
“MBD_SPEED_LOOP_CNTR”, executed 10 times slower than the Fast Loop:
First, the counter “speedLoopCntr” is reset to zero upon entering this subsystem, then it checks:
3-Phase Sensorless PMSM Motor Control Kit with S32K344 using MBDT Blocks, Rev. 0, 03/2023
32 NXP Semiconductors
Speed loop (Slow loop)
If “PosMode” equals two, it means that the motor is in sensorless mode, and it will set the speed:
Inside “PosMode1” there is a small state machine that works as a speed limiter:
This limits the speed output between two limits: “-HighLimSpeed” and “+HighLimSpeed”. The Speed
Loop block implements the function “AMCLIB_FWSpeedLoop”:
3-Phase Sensorless PMSM Motor Control Kit with S32K344 using MBDT Blocks, Rev. 0, 03/2023
NXP Semiconductors 33
Open loop
The “AMCLIB_FWSpeedLoop” function implements the speed PI controller in the FOC outer control
loop and the field-weakening algorithm for permanent magnet synchronous motors:
The speed PI controller and the field weakening controller are implemented by the "AMCLIB
FWSpeedLoop" function in the outer control loop shown in the preceding diagram.
7. Open loop
This block calculates the open loop “theta_e” using a couple of AMMCLib functions:
3-Phase Sensorless PMSM Motor Control Kit with S32K344 using MBDT Blocks, Rev. 0, 03/2023
34 NXP Semiconductors
Open loop
In order to calculate theta, we know that omega (ω) or angular velocity is equal to the rate of change of
the angular position θ with respect to time:
The function “GFLIB_IntegratorTR” implements a discrete integrator using the trapezoidal (bilinear)
transform.
The result is converted to a 32-bit fractional data type and multiplied with the “pi” constant.
There are four running modes in the system:
3-Phase Sensorless PMSM Motor Control Kit with S32K344 using MBDT Blocks, Rev. 0, 03/2023
NXP Semiconductors 35
Open loop
The tracking mode sets control omega to zero and theta to open loop:
When the motor is running in a closed loop (sensorless), the position mode is in case two.
3-Phase Sensorless PMSM Motor Control Kit with S32K344 using MBDT Blocks, Rev. 0, 03/2023
36 NXP Semiconductors
Open loop
This divides “theta_e” from the variable “sensorless_thRotEl” with the constant “pi” and convert it to
a 32-bit fractional data type.
The default mode is:
The Automatic Mode consists of a state machine that switches the “PosMode” based on the open loop
speed:
The function “MLIB_Abs_FLT” returns the absolute value of the open loop omega electrical.
The “PosMode” state machine has the following states:
3-Phase Sensorless PMSM Motor Control Kit with S32K344 using MBDT Blocks, Rev. 0, 03/2023
NXP Semiconductors 37
RGBLED0 toggle
8. RGBLED0 toggle
This block implements a timer that toggles the RGBLED0_GREEN.
3-Phase Sensorless PMSM Motor Control Kit with S32K344 using MBDT Blocks, Rev. 0, 03/2023
38 NXP Semiconductors
Updating PWMs
The second function of this subsystem is to also shut down the other two LEDs, giving the value 0 for
the NXP function block: Dio_WriteChannel for RGBLED0_BLUE and RGBLED0_RED.
The timer uses the variable "LEDCounter," which is incremented each period of the fast loop and
compares it with the value 2500.
If it is higher, it will reinitialize the counter value to 0, and it will trigger the If Action Subsystem.
In this subsystem, the LEDState is compared with logic “1” and masked bitwise XORed, giving the
resulting value to the variable and function Dio_WriteChannel for RGBLED0_GREEN.
9. Updating PWMs
This block generates the corresponding PWM duty cycle values based on the hardware scaling and the
pre-calculated values for each channel.
3-Phase Sensorless PMSM Motor Control Kit with S32K344 using MBDT Blocks, Rev. 0, 03/2023
NXP Semiconductors 39
FreeMASTER config GUI
The duty cycles are stored in a data variable as an array for the three channels.
They are multiplied by the constant "32768" for the duty cycle shift and then fed into the input for each
PWM channel.
Also, the “DutyCycleValues” are adjusted for the Phase Shift input of the same PWM blocks and the
Sync Update is fed with a constant "1," meaning that each channel is synchronized.
This subsystem uses the NXP PWM block and the function "PWM_SetDutyPhaseShift" for alignment
of the three channels: PWM0, PWM1, and PWM2.
3-Phase Sensorless PMSM Motor Control Kit with S32K344 using MBDT Blocks, Rev. 0, 03/2023
40 NXP Semiconductors
FreeMASTER config GUI
Furthermore, the user can look at various parameters, for example the IDQ currents below:
3-Phase Sensorless PMSM Motor Control Kit with S32K344 using MBDT Blocks, Rev. 0, 03/2023
NXP Semiconductors 41
References
The 3-phase currents are represented in RGB colors and show a peak of 1.4 [A] depending on the motor
load.
11. Conclusions
The MCSPTE1AK344 Development Kit offers a complete set of hardware features that work together
with the s32k3xx_mc_pmsm.mdl example, presented above, and creates a complete out-of-the-box
experience for modeling the motor control algorithm using the NXP Model-Based Design Toolbox for
S32K3.
MBDT enables the NXP tools like Automotive Math and Motor Control Library (AMMCLib),
Compilers, Configuration Tools, Real-Time Drivers (RTD), and Toolchain in the Simulink®
environment. Together with the Embedded Coder®, it generates optimized code for the microcontroller,
ensuring that the most advanced software loops can run on the NXP MCUs with maximum performance.
Please visit the MBDT Community Page to learn more about the features of the Model-Based Design
Toolbox for S32K3. You may start a topic here and have a direct conversation with the engineers that
created MBDT toolboxes. Aside from typical application demos concentrating on Battery Management
Systems, AUTOSAR, or Motor Control Applications, you can also follow the NXP MBDT training and
courses such as the Beginner's Guide Series.
You might also visit NXP.com for additional information on the development ecosystem that NXP
offers.
12. References
1. Application Note AN13767
2. The workshop “3-Phase PMSM Control Workshop with NXP's Model-Based Design Toolbox”
3. Module 4: Space Vector Modulation
3-Phase Sensorless PMSM Motor Control Kit with S32K344 using MBDT Blocks, Rev. 0, 03/2023
42 NXP Semiconductors
References
3-Phase Sensorless PMSM Motor Control Kit with S32K344 using MBDT Blocks, Rev. 0, 03/2023
NXP Semiconductors 43
NXP Semiconductors
Legal information
Legal information
Definitions Applications — Applications that are described herein for any of these
products are for illustrative purposes only. NXP Semiconductors makes no
Draft — A draft status on a document indicates that the content is still
representation or warranty that such applications will be suitable for the
under internal review and subject to formal approval, which may result
specified use without further testing or modification.
in modifications or additions. NXP Semiconductors does not give any
representations or warranties as to the accuracy or completeness of Customers are responsible for the design and operation of their applications
information included in a draft version of a document and shall have no and products using NXP Semiconductors products, and NXP Semiconductors
liability for the consequences of use of such information. accepts no liability for any assistance with applications or customer product
design. It is customer’s sole responsibility to determine whether the NXP
Semiconductors product is suitable and fit for the customer’s applications and
Disclaimers products planned, as well as for the planned application and use of customer’s
Limited warranty and liability — Information in this document is believed third party customer(s). Customers should provide appropriate design and
to be accurate and reliable. However, NXP Semiconductors does not give operating safeguards to minimize the risks associated with their applications
any representations or warranties, expressed or implied, as to the accuracy and products.
or completeness of such information and shall have no liability for the NXP Semiconductors does not accept any liability related to any default,
consequences of use of such information. NXP Semiconductors takes no damage, costs or problem which is based on any weakness or default in the
responsibility for the content in this document if provided by an information customer’s applications or products, or the application or use by customer’s
source outside of NXP Semiconductors. third party customer(s). Customer is responsible for doing all necessary testing
In no event shall NXP Semiconductors be liable for any indirect, incidental, for the customer’s applications and products using NXP Semiconductors
punitive, special or consequential damages (including - without limitation - products in order to avoid a default of the applications and the products or of the
lost profits, lost savings, business interruption, costs related to the removal or application or use by customer’s third party customer(s). NXP does not accept
replacement of any products or rework charges) whether or not such damages any liability in this respect.
are based on tort (including negligence), warranty, breach of contract or any
Terms and conditions of commercial sale — NXP Semiconductors products
other legal theory.
are sold subject to the general terms and conditions of commercial sale,
Notwithstanding any damages that customer might incur for any reason
as published at http://www.nxp.com/profile/terms, unless otherwise agreed
whatsoever, NXP Semiconductors’ aggregate and cumulative liability towards
in a valid written individual agreement. In case an individual agreement
customer for the products described herein shall be limited in accordance with
is concluded only the terms and conditions of the respective agreement
the Terms and conditions of commercial sale of NXP Semiconductors.
shall apply. NXP Semiconductors hereby expressly objects to applying the
customer’s general terms and conditions with regard to the purchase of NXP
Right to make changes — NXP Semiconductors reserves the right to make
Semiconductors products by customer.
changes to information published in this document, including without limitation
specifications and product descriptions, at any time and without notice. This
Suitability for use in automotive applications — This NXP product has been
document supersedes and replaces all information supplied prior to the
qualified for use in automotive applications. If this product is used by customer
publication hereof.
in the development of, or for incorporation into, products or services (a)
used in safety critical applications or (b) in which failure could lead to death,
personal injury, or severe physical or environmental damage (such products
and services hereinafter referred to as “Critical Applications”), then customer
makes the ultimate design decisions regarding its products and is solely
responsible for compliance with all legal, regulatory, safety, and security
related requirements concerning its products, regardless of any information
or support that may be provided by NXP. As such, customer assumes all risk
related to use of any products in Critical Applications and NXP and its suppliers
shall not be liable for any such use by customer. Accordingly, customer will
indemnify and hold NXP harmless from any claims, liabilities, damages and
associated costs and expenses (including attorneys’ fees) that NXP may incur
related to customer’s incorporation of any product in a Critical Application.
Export control — This document as well as the item(s) described herein may be
subject to export control regulations. Export might require a prior authorization
from competent authorities.
NXP Semiconductors
Legal information
Translations — A non-English (translated) version of a document, including Synopsys — Portions Copyright © 2021 Synopsys, Inc. Used with permission.
the legal information in that document, is for reference only. The English All rights reserved.
version shall prevail in case of any discrepancy between the translated and
English versions.
Customer shall select products with security features that best meet rules,
regulations, and standards of the intended application and make the
ultimate design decisions regarding its products and is solely responsible
for compliance with all legal, regulatory, and security related requirements
concerning its products, regardless of any information or support that may be
provided by NXP.
Trademarks
Notice: All referenced brands, product names, service names, and
trademarks are the property of their respective owners.