NXP Sensorless Motor Control Eval Kit + Motor - Review

Table of contents

RoadTest: NXP Sensorless Motor Control Eval Kit + Motor

Author: kas.lewis

Creation date:

Evaluation Type: Electromechanical

Did you receive all parts the manufacturer stated would be included in the package?: True

What other parts do you consider comparable to this product?: This was compared with the TI BOOSTXL-DRV8301 motor control board

What were the biggest problems encountered?: The biggest issue was finding correct information to get started. Once this was resolved the next issue was moving past the basic demo.

Detailed Review:


Having been asked by Element14 and given the option to review a second small motor control board I couldn’t pass up the opportunity. The S12ZVML-MINIKIT developed by Freescale and rebranded by NXP is a motor controller evaluation board. Its intended use is with 3-phase BLDC and PMSM motors in sensorless control applications. These include cordless tools, automotive applications, as well as others where low cost is important.


The S12ZVML-MINIKIT incorporates an automotive qualified S912ZVML12F3MKHR microcontroller. Included in this version of the S912ZVML are:

  • 6-ch 15bit PWM for motor control with dead time and fault management
  • Dual 12-bit analog to digital converter (ADC)
  • Gate drive unit (GDU) for six power MOSFETs
  • 2 Op-Amps for current measurement/sensing

As can be seen from this partial list, the selected microcontroller is designed for and aimed at motor control. More specifically field oriented control (FOC) of BLDC and PMSM motors. The S12ZVM datasheet does specify other possible motor types.



The kit is shipped in a standard box with no unusual or special packaging. The components fit tightly in the box which makes putting everything back slightly difficult. A box with better arranged or custom padding to provide a separate cutout for the board as well as the motor would make storage easier and allow for a better presentation.


The box containing the S12ZVML-MINIKIT


Included in the box on top of the padding are two pieces of paper. The first, a packing slip lists the components contained in the box. While not overly descriptive it's enough to inform you that there is a S12ZVML_MINBRD (the control board), USB cable, 12V-7A power supply and a “HW assembly, motor, S12ZVL-MINIKIT”. From the provided information it's unclear what the last component is.


The second, is a product card with some basic information about the kit. On the side of the card is a box with the heading “Jump Start Your Design” includes a link to the product information page. There is nothing explaining that this might be the best and most up to date place to get started. At a glance this card looks nondescript and just another paper in the box. This is mentioned due to the lack of clarity in the documentation as will be explained under “Documentation”.


Product information card included with the S12ZVML-MINIKIT



Getting Started

The documentation provided by Freescale/NXP for this kit is not in short supply. There are three getting started guides and various application notes. The first getting started guide is included in the User Manual, the second, a stand alone Quick Start Guide and the third is a video tutorial. Each of these have their merits, are not the same and not all are useful. The User Manual, might seem logical start for someone who might use this document to determine whether this is the correct product for their application. Sections 1 - 4 of this manual outlines: the board, its interfaces and connections as well as design considerations. Section 5 continues with a “Board Quick Start Guide”. This could be assumed to be the same as the stand alone “Quick Start Guide” but this is incorrect. The links, and software names are all no longer useful. While the general steps may be correct the specifics are not and therefore, neither is the “Board Quick Start Guide”.


The second document, the “Quick Start Guide” is better in that the links are more relevant. Unfortunately this document also points to sections that no longer exist. The first step instructs you to go to the no longer existent “Getting Started”.


The first step in the “Quick Start Guide” providing incorrect information


The referenced page does however provide a link to “MagniVu and S12 Solutions”. Following that link would bring a user closer to locating up to date getting started information. The best solution would be to skip directly to step four, this has a link with up to date information (at least of the publishing of this review).


This steps provides accurate and correct information


The link provided in this step has the most consistent and relevant information. On this page the needed software with names that match those in the getting started guide can be found. Interestingly, this is the link provided at the end of the “Quick Start Guide” as the suggested place to get started.



Some noticeable technical inconsistencies between the two documents are the rated upper and lower motor speeds, which motor to use (BLDC or PMSM) and whether or not the debugger needs to be disconnected before connecting FreeMaster (it does not). Over all, the getting started guides can cause a decent amount of confusion, frustration and wasted time.


The last option, following the link on the product information card or in step four of the “Quick Start Guide”, is a getting started tutorial. The link takes you to the S12ZVML_MINIKIT product page presumably with the “Get Started” button mentioned in the “Board Quick Start Guide”. This inturn takes you to a video tutorial that walks you through the process needed to start the product demonstration. There are also witten step by step instructions that follow those of the video tutorial with up to date links. Again, the steps differ slightly from the “Quick Start Guide”. The benefit to this tutorial over the getting started guides is the steps are visually displayed and all steps are walked through as would be done for an actual installation. One noticeable addition here is the installation of the PEmicro driver which is not referenced in either document.


S12ZVML-MINIBRD product page with the “Get Started” button and correct software


In both getting started guides there are two firmware versions mentioned that can be selected based on the motor used. One version is for BLDC motors and the other for PMSM. Neither document tells a user which to code version to use. However the tutorial uses the PSMSM version even though a 3-phase brushless DC motor is included with the kit. Attempting to use the BLDC version with the 3-phase BLDC motor produces no response from the motor.


Supporting Documentation

The above documents relate to getting started with the S12ZVML-MINIKIT. There are more documentations related to understanding how 3-phase sensorless motor control works. Here too there is confusion as to which application note AN4704 (BLDC) or AN5327 (PMSM) should be used (oddly searching AN5327 returns a different document). These application notes explain the details of sensorless operation for each motor type. As each motor type has different control principles it's important to know which method is being used. Since the code used (as demonstrated in the tutorial) is the PMSM version, it would seem that although a BLDC motor is used the correct application note to reference should be AN5327 even though AN4704 is recommended by NXP.


Adding to the notion of an uncoordinated effort to produce useful documentation for the S912ZVML is the list of acronyms included in each document. Here again, what is selected to be explained and what is left out appears to be somewhat arbitrary. Acronyms such as BLDC and PMSM are explained but GDU, ECLK and HSD among others are not, even though the former are more likely than the latter to be understood. What becomes apparent from these documents and differing information is that Freescale/NXP has a documentation issue that hampers the usability of this product.


Discussed so far are the issues with existing documentation. What has not been discussed is what information is lacking. The kit includes a Linix 45ZWN24-40 BLDC motor, there is however no datasheet provided or available. Inorder to correctly tune the control algorithm the motor parameters are needed. Without these values tuning the motor becomes a more of a guessing game then a mathematically backed science. Also not available are mechanical specifications such as housing and shaft dimensions, and screw sizes and locations. The motor’s cable has eight wires three of which are fed through a choke to be connected to the board.


Linix BLDC with 8 wires exiting the motor and 3 passing through the choke


Also at issue is information on using the Automotive Math and Motor Control Library Set, the library that provides the control algorithms. With no link on the product page this information has been left behind. This document has an index 64 pages long, making it a tedious document to use. There also appears to be no further demo software other than those previously mentioned. As a product that NXP looks interested in promoting, they have done a subpar job of making it available and usable to the average developer and embedded software engineer.


Over all the documentation for the S12ZVML-MINIKIT is lacking and confusing. There are missing and incorrect steps in the getting started guides with references to application notes that don't seem to be relevant to the setup used. There is also no information regarding the included motor.


Lastly there is also no information on how to move past the demo software. The ability to tune a motor and have it working relatively quickly is helpful but it doesn't give a developer the tools needed to get their application working. The same is true for the “Automotive Math and Motor Control Library”. With no clear information on how its used in this project or how to use it in general the average user needs to resort to using forums or trial and error to get their application working. This may work in large companies where there is support from suppliers, however, in smaller, less supported companies it causes frustration and forces users to look elsewhere for a viable motor control solution.


Initial Setup

Once the correct steps have been found, setting up the board is simple and relatively quick. Installing the various pieces of software (CodeWarrior, FreeMaster and PEmicro drivers) while time consuming are par for the course. After installing the needed software the S12ZVM-MINIBRD hardware needs to be connected. Connections to the motor (JP1, JP2 and JP3), power (12 V) and lastly to the PC via the USB cable needs to be made. The the correct program (PMSM) is then selected and loaded into CodeWarrior. This process is well explained in the Quick Start Guide and tutorial. Once built and compiled the selected (BLDC/PMSM) program is loaded to the board via CodeWarrior. Whether or not CodeWarrior needs to be disconnected from the board depends on which getting started guide is used. After running this a number of times without first disconnecting the debugger, it is clear that while not harmful is not necessary. Lastly FreeMaster is opened and again the relevant program (BLDC/PMSM) is run. FreeMaster does have a “Connection Wizard” but, for an unknown reason, could not find the S12ZVM-MINIBRD. Instead using Project -> Options the settings can be selected manually. Using these steps there have been no observed issues. At this point the kit is ready to be used to either evaluate the S912ZVML or to tune the motor’s parameters.


S12ZVML-MINBRD connect and controlling the connected motor



There are two demonstration firmware versions provided for the S12ZVM-MINIBRD, one for BLDC and one for PMSM motors. Each of these demos includes a corresponding program for FreeMaster. The specific firmware (BLDC/PMSM) is loaded onto the board using Freescale's (Now NXPs) CodeWarrior IDE. The steps to load the program, as mentioned above are well documented in both the stand alone Quick Start Guide and in the video tutorial. There is no explanation outlining the structure of the code nor are there many comments within the code other than function headers. There appears to be no attempt to make the demo code an easy starting point for custom applications. There also doesn't appear to be any additional demos.


As mentioned the demo works in conjunction with FreeMaster. This is a stand alone with a GUI that allows you to change various motor and performance parameters as well as display operating parameters in what is labeled the oscilloscope page. The list of operating parameters is long and sadly meaningless for an uninitiated user. There is little information given, at least in the recommended documents, on what the parameters are, what they mean or how to interpret them. Thus a user is left using parameters such as speed, state and a few more while ignoring the ~200 others. This is not to say that a user would need all 200 but that there may be information useful to solve issues, improve performance, etc. but without knowing what the parameters mean they become useless.


Oscilloscope window, here showing estimated vs open loop speed


In FreeMaster there are eight tabs in the control window. The first is an introduction tab. This outlines the control flow of the software. There is no clear correlation between the parameters listed on this tab and those on subsequent tabs. Also for someone who is not immersed in motor control or control theory this tab does not provide much explanation as to how the system operates.


Control diagram for the PMSM control sequence


The second tab is used to input the parameters of the connected motor. With only symbols and abbreviations, it’s difficult to know what these parameters are. Compounded with this, not all of these parameters (Ld, Lq, J, kt, etc) are found in relevant datasheets. A mouse over box explaining these abbreviations would allow a user understand what these parameters are and how they are used.


FreeMaster motor and hardware parameter input page


The next three tabs provide the ability to change the values of the control variables used in current, speed and sensorless control. Although this does allow a user a great amount of control and the ability to fine tune the control performance, there are no explanations for the parameters. This makes the ability to change these variables of little use to an uninitiated user.


FreeMaster current control parameter page


FreeMaster speed control parameter page


FreeMaster sensorless control parameter page


The next tab is more interesting and provides some educational value. Here a user can control the motor using four separate modes allowing for some experimentation. The first mode, scalar control, allows a user to select both the V/rpm_factor as well as the speed. By changing the V/rpm_factor one can see how this value has an effect on motor performance and torque. If the value is to low the motor will not rotate, to high and the controller produces a fault condition. The other control modes available are Voltage, Current and Speed FOC. Each of these allow for their unique parameters to be tuned. The second to last tab shows the header file generated based on the tuned parameters. This file, with all the correctly named constants, can be imported into and used in a new CodeWarrior application.


FreeMaster current control parameter page


The last tab is application control. This is used to give a high level overview from what is presented in the control structure tab. While values such as rpm and bus voltages are displayed they are done using an analog gauge. This does not allow for accuracy or for clear measurements. Although the rpm can be set and read in the variable watch window there does not appear to be the same option for the bus voltage.

FreeMaster application control page


Additionally, there is an issue with the readouts as well as some odd behaviour on this page. The issue with the readouts relates to both the specified direction as well as the actual speed. If the system is started with speed preset to 100 rpm the system will randomly rotate the motor at 2000 rpm. The set speed will still indicate 100 rpm and the actual speed will report 2000 rpm but there is no attempt by the software to match these two values. The same applies to direction of rotation. The motor can be set to rotate in a positive direction but at times will in fact rotate in the negative direction. The system will report the true direction but again will make no attempt to correct this. Further complicating this issue, when the desired speed and direction are changed to match the actual values the system throws a fault condition and stops operation. It should be clearly noted, this happens even when the desired speed and direction are changed to exactly match the actual speed and direction.

Because of the lack of clarity in the code it's unclear as to what the cause for this is. It could be in multiple stages along the code path. FreeMaster could be incorrectly setting the speed and direction and therefore the firmware detects no issue. The API used for the control might for some inexplicable reason not take this into account or most likely the main program (the firmware) might not take into account error conditions such as these mentioned. Unfortunately without a clear explanation of the code it would take considerable time and effort to locate where the error lies.


Overall the FreeMaster software is half decent and usable for those who have an understanding of what each variable means and what its effect is on the overall system. For those who don't, there is little help in getting to that point. With no explanation of variables or even where to get more information a user is merely selecting values without understanding of what their effects might be.



The hardware included in this kit is simple to use and easy to set up. The size of the board allows for it to be used in a prototype. With the provision of the LIN protocol, along with the ability to power the board with ±25 V the board can be incorporated in any automotive application.

The microcontroller’s serial interface is broken out, this allows for easy debugging or for communication with other peripherals. Also broken out is a single digital pin. This is supposed to allow for the motor to be started and stopped in the provided demos without the use of FreeMaster. While this performance is specified (Quick Start Guide, Page 9), this behaviour has not been achievable.


There are a few aspects of the hardware that could be improved. The first is the number of available IOs. There appears to be 16 unused I/Os from the microcontroller that have not been broken out. Although the board does have a LIN connection there are applications where other I/O would be useable or even preferred. This design decision demonstrates that this board is aimed very much at the automotive sector and not at other applications where low cost motor control is desired. This should not be surprising as NXP is the largest automotive IC supplier at ~14% market share (Semicast 2016 report).


Another aspect that could be improved is the connection method of the motor to the board. Currently there are 3 header pins that connect to crimped wires. These crimps are what would be used inside a board to cable connector. This method has two drawbacks. The first is the reliability of this connection. Often during benchtop testing one or more connections would come undone. The second drawback is the inability to easily use other motors with the evaluation kit. There is no easy way to add crimps to another motor if one does not have the right size crimps or the correct criper (which can often be very expensive). A terminal block would have solved both issues, allowing for any motor to be reliably connected to the board.


Crimps used on the motor wires to connect to the control board


Crimps connected to header pins on control board


Product Feel and Comparison

Part of the review process for the S12ZVML-MINIBRD was to see how it compared with similar products. As a review of the Texas Instruments BOOSTXL-DRV8301 has previously been completed, it was chosen as a competitive solution. Although the DRV8301 is designed for BLDC and PMSM motor applications and the S12ZVML could be used for other motor types, the S12ZVML-MINIBRD is targeted at BLDC and PMSM motors and so the comparison is valid. It should be noted that Texas Instruments requires two ICs while NXP only requires one.


The first noticeable difference between the two boards is how they are designed. Freescale/NXP has gone with a single board design. There is no option for other I/Os to be used or to incorporate other functionality in to the board. This again points to its automotive specific application. The BOOSTXL-DRV8301 on the other hand plugs into a Piccolo Launchpad where the control firmware resides. This arrangement allows for other boards and functionality such as WiFi, displays, etc. to be used in conjunction with the motor control board.


BOOSTXL-DRV8301 mounted on a Piccolo Launchpad


The next major difference is the abundance of demo code for the BOOSTXL-DRV8301. With 19 different demos there are examples demonstrating how to setup and use the API commands. Each of the 19 demos explain how to use the hardware and software to accomplish different tasks and types of control. It should also be mentioned that accompanying these demos is a lab manual. This manual walks a user through each demo, what the goals of that demo are and how the demo works. This includes information and explanations on how the motor is controlled in that specific lab.


Even with these notable achievements by Texas Instruments, their documentation suffers from some of the same setbacks as mentioned above. There are multiple entry points to get started. This includes multiple getting started guides that leads to confusion and frustration. Another similarity is the lack of comments within the code, even with the accompanying lab manual there are instances where further explanation or a brief comment would resolve confusion and ambiguity.



NXP has produced a very capable product with the S912ZVML12F3MKHR. The ability to use one component to control and interface with various motor types is convenient, saves space and cost and helps to reduce design complexity. Unfortunately the execution of the evaluation kit for this component is lacking and gives over a less than inspiring display of this product.


Issues getting started with the kit prevent someone from looking into its use unless they are determined to to evaluate this part specifically. The hardware lends itself one one market segment and closes out other potential uses due to inability to use other ports on the microcontroller. Lastly the software is brief and not explained. The demo which is supposed to show how well the hardware and software work together, does not work as it should or respond to user commands desirably.


Overall, this kit is useful if you know this is the product for your application and your design does not need more ports. If you must use NXP or you understand motor control then again this would be an option for you. This narrows the market to mainly the automotive sector. Outside of this, the kit provides little functionality and little help regarding usability.