This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

MCF8316A: Motor running at low max speed

Part Number: MCF8316A
Other Parts Discussed in Thread: MCF8316D, MCF8329HS, MOTORSTUDIO, MCF8329HS-Q1, MCT8316A

I am using Brushless 33 click PCB with MCF8316A. The motor is Turnigy Aerodrive SK3 2822-1275Kv loaded with 4", 6 blade air propeller .

Using settings of Brushless 33 click PCB that are for A2212/13T 1000KV BLDC motor, I can spin-up motor up to apptox 4800 rpm only at 11V power supply. Supply current is approx 0,5A from Lap PSU 30V/10A. After stating MPET and changing motor constants: R, L, bemf, current and speed loop Kp and Ki, no any change of motor max speed. MAX_SPEED parameter is set to 1500 Hz (9000 decimal value).  Turnigy motor is 12N14 type, Delta connected. Please help with appropriate settings of EEPROM and RAM registers for this motor. 

  • Hi Nikolay

    I would like to discuss a few points:

    1. Are you testing with EVM or a custom PCB?

    2. We recommend using MCF8316C or MCF8316D for any new designs. There are some limitations with MCF8316A captured in this errata link.

    (+) [FAQ] Production device information - Motor drivers forum - Motor drivers - TI E2E support forums

    3. For designs up to 40W, we recommend MCF8316C or MCF8316D, and above 40W, single shunt solution MCF8329HS is available.

    4. We support the SmartTune feature in the MOTORSTUDIO GUI. Using this feature, you can automatically tune entire sections starting from startup, open loop, closed loop, and fault settings appropriately. Please refer to the SmartTune demo for quick understanding Introducing SmartTune: Automatically Tune your Motor Parameters | Video | TI.com

    Thanks and Best regards

    Venkatadri S

  • Hi Venkatadri,

    1. I am testing with brushless 33 click board.

    https://www.mikroe.com/brushless-33-click?srsltid=AfmBOoqMJe0Oq6kgD67-Jqka9FIhNhAo1Nl2LmC5ldh1mHNZrNht4JJ-

    because your EVM is useless.

    2. I know about MCF8316A errata, but why it is not placed close to datasheet? In Mouser Electronics as well as Digikey are available thousands of MCF8316A. Maybe someone is buying them even now. TI MUST update MCF8316A documentation until it is available for selling.

    3. Probably you mean 40V, not 40W.

    4. SmartTune feature in the MOTORSTUDIO GUI is for your EVM only.

    Please provide detailed step-by-step information about MCF8316A setup that is missing in present documentation.

  • Hi Nikolay,

    We will be updating the datasheet in the next revision.

    We have provided a tuning guide for MCF8316A and also several useful tech notes in this link.

     MCF8316A data sheet, product information and support | TI.com

    Please verify the tuning guide first and then refer to other tech notes ticked in the image.

    If the motor speed is above 1500Hz, I recommend evaluating MCF8329HS-Q1.

    Thanks and Best regards

    Venkatadri S

  • Hi Venkatadri,

    Last revision of datasheet is from June 2023, but now is January 2026!!!

    Instead of revising datasheet, you are adding several application notes, but no one of them is describing register settings in details. Even errata thread do not include RAM register incorrect definition discussed in this thread:

    https://e2e.ti.com/support/motor-drivers-group/motor-drivers/f/motor-drivers-forum/1342841/mcf8316a-can-not-get-the-kp-ki-for-current_loop-and-speed_loop-after-mpet/5118330?tisearch=e2e-sitesearch&keymatch=SPEED_LOOP_KP#

    Max electrical speed of 1500Hz for MCF8316A for this motor that has 7 magnetic pole pairs means that 214 Hz (12857 r.p.m.) is maximum motor mechanical speed which is much more than 4800 r.p.m. So, something is wrong in my settings.

    MPET tool, ran 10 times gives:

    Phase resistance = 10100111 = 0.94 Ohm.

    Phase inductance = 00001000 = 1 uH.

    Motor bemf const = 00010100 = 3 mV/Hz

    MPET pwm freq = 1010

    CURRENT_LOOP_KP = 1101100101

    CURRENT_LOOP_KI = 0101001111

    SPEED_LOOP_KP = 0110001101

    SPEED_LOOP_KI = 1010001101

    Motor will rotate air propeller in small slow flying drone, so I do not need reverse drive or brake.

    Motor speed is controlled by analog voltage.

    Could you please post suggested values for EEPROM registers for this application.

  • Hi Nikolay,

    MCF8316A is a first generation device, and 8316C/16D provide additional features and bandwidth which cater to wider use case needs.

    For dynamic tuning while driving the motor, MCF8316A has I2C bandwidth limitations which make it a little difficult during the tuning cycle.

    About motor parameters, motor inductance is 1uH, which is less than the lowest range of 6uH.

    The LR time constant is very low at 1uS. The current ripple will be very high, and hence current control will be difficult due to the PWM maximum supported being 60kHz.

    We should try two approaches:

    APPROACH 1:

    With MCF8316A:

    Can we measure motor R with a meter and L with an LCR meter at 1kHz setting? I will create a reference JSON for MPET and provide it, but I am still not very confident due to the low LR constant and compatibility for the max PWM frequency we support, but we will give it a try.

    Approach 2:

    Motor winding seems to be concentrated, and BEMF may not be sinusoidal for drone motors. For such applications, trapezoidal-based solution is more suitable. Verify MCT8316A for this motor.

    You can find EVM and GUI for MCT8316A in the tools page of MCT8316A

    Thanks and Best regards

    Venkatadri S

  • Hi Venkatadri,

    Inductance value is wrong (my mistake!) 0b00001000 = 0x08 = 13 uH.

    Tomorrow I will measure inductance and resistance with GW INSTEK LCR-819 and will post results.

    This motor is 12N14P type, dLRK wound, so the BEMF voltage is sinusoidal.

    Why most hobby grade BLDC out runners are actually permanent magnet synchronous motors (PMSM)

    How to estimate the torque of a BLDC (PMSM) electric motor using only its Kv and current draw

    Kv constant of motor is 1275 rpm/V.

  • Hi Nikolay,

    Can you run MPET to find inductance ?

    What is the pole pair combination?

    Thanks and Best regards

    Venkatadri S

  • Results from MPET tool were posted above:

    Phase resistance = 0b10100111 = 0.94 Ohm.

    Phase inductance = 0b00001000 = 13 uH.

    Motor bemf const = 0b00010100 = 3 mV/Hz

    MPET pwm freq = 0b1010

    CURRENT_LOOP_KP = 0b1101100101

    CURRENT_LOOP_KI = 0b0101001111

    SPEED_LOOP_KP = 0b0110001101

    SPEED_LOOP_KI = 0b1010001101

    12N14P means 12 slots (coils), 14 magnets (7 pole pairs). dLRK winding, delta connected three phases.

    What will be difference if motor phases are star (Y, WYE)  connected?

  • Hi Nikolay,

    n a delta-connected motor, the phase resistance we're referring to is equivalent to the phase-to-center-tap resistance in a wye configuration.

    Great! It looks like MPET ran successfully. Do you need the full JSON configuration file that covers startup, open loop, and the transition to closed loop operation?

    Thanks and Best regards

    Venkatadri S

  • Hi Venkatadri,

    GW Instek LCR-819 mesurement results in 1V/1KHz mode:

    0.03357 mH / 0.277 Ohm

    0.03894 mH / 0.278 Ohm

    0.03410 mH / 0.275 Ohm

    measured between wires of delta-connected windings.

    Please, send me configuration of registers for this motor.

  • Hi Nikolay,

    Thank you, I will send the configuration and instructions today.

    Thanks and Best regards

    Venkatadri S

  • Hi Venkatadri,

    Any news?

  • Hi Nikolay,

    My apologies for the late reply. I have been out of office since Thursday.

    Please allow me until Monday to verify our previous discussion and prepare the reference file

    Thanks and Best regards

    Venkatadri S

  • Hi Venkatadri,

    Remember that the motor is rotating air propeller only (small moment inertia at low speed), so I do not need reverse and brake. Motor speed is increased and decreased by analog voltage on SPEED pin only. I do not care about motor start-up method and time to pass from start-up - open loop - handoff - closed loop. I am expecting to control the motor speed till max current or till max electrical speed, depending on size/types (diameter/pitch) of used propeller, because I must select appropriate propeller for three different motors (within MCF8316A specifications).

    Do not worry for delay - this is my hobby project without deadlines.

    Best regards,

    Nikolay

  • Hi Nikolay,

    Please post the JSON file and confirm which GUI interface you're using (MOTORSTUDIO?).

    I will modify the JSON with the required changes and share again.

    Thanks and Best regards

    Venkatadri S

  • I do not use MOTORSTUDIO. I am trying to understand register parameters and related values for my motor. Just send me register values.

  • 0x80 = ISD_CONFIG       = 0x74610C0E
    0x82 = REV_DRIVE_CONFIG = 0x28300000
    0x84 = MOTOR_STARTUP1   = 0x0F080DD0
    0x86 = MOTOR_STARTUP2   = 0x23066000
    0x88 = CLOSED_LOOP1     = 0x1C9981B4
    0x8A = CLOSED_LOOP2     = 0x4ADD320F
    0x8C = CLOSED_LOOP3     = 0x1800000A
    0x8E = CLOSED_LOOP4     = 0x218720D0

    0x90 = FAULT_CONFIG1    = 0x1FE80206
    0x92 = FAULT_CONFIG2    = 0x74000000

    0x94 = SPEED_PROFILES1  = 0x00000000
    0x96 = SPEED_PROFILES2  = 0x00000000
    0x98 = SPEED_PROFILES3  = 0x00000000
    0x9A = SPEED_PROFILES4  = 0x00000000
    0x9C = SPEED_PROFILES5  = 0x00000000
    0x9E = SPEED_PROFILES6  = 0x00000000

    0xA0 = INT_ALGO_1       = 0x00B2407D
    0xA2 = INT_ALGO_2       = 0x000001A7
    0xA4 = PIN_CONFIG       = 0x00000001
    0xA6 = DEVICE_CONFIG1   = 0x00100000
    0xA8 = DEVICE_CONFIG2   = 0x0000B000
    0xAA = PERI_CONFIG1     = 0x40000000
    0xAC = GD_CONFIG1       = 0x00000100
    0xAE = GD_CONFIG2       = 0x00200000

    These settings are for A2214/13T 1000Kv motor. Which registers to change for my motor?

  • Hi Nikolay,

    I made changes to few registers. Please refer to the attached CSV file for register.

    id	value	addr
    ISD_CONFIG	0x74610C0E	0x00000080
    REV_DRIVE_CONFIG	0x28300000	0x00000082
    MOTOR_STARTUP1	0x0B060DD0	0x00000084
    MOTOR_STARTUP2	0x2282A00D	0x00000086
    CLOSED_LOOP1	0x104181B4	0x00000088
    CLOSED_LOOP2	0x0ADD3F0F	0x0000008A
    CLOSED_LOOP3	0x00000002	0x0000008C
    CLOSED_LOOP4	0x218720D0	0x0000008E
    SPEED_PROFILES1	0x00000000	0x00000094
    SPEED_PROFILES2	0x00000000	0x00000096
    SPEED_PROFILES3	0x00000000	0x00000098
    SPEED_PROFILES4	0x00000000	0x0000009A
    SPEED_PROFILES5	0x00000000	0x0000009C
    SPEED_PROFILES6	0x00000000	0x0000009E
    FAULT_CONFIG1	0x1FE80206	0x00000090
    FAULT_CONFIG2	0x75400000	0x00000092
    INT_ALGO_1	0x03F2403D	0x000000A0
    INT_ALGO_2	0x000001A7	0x000000A2
    PIN_CONFIG	0x00000001	0x000000A4
    DEVICE_CONFIG1	0x00000000	0x000000A6
    DEVICE_CONFIG2	0x0000F000	0x000000A8
    PERI_CONFIG1	0x40000000	0x000000AA
    GD_CONFIG1	0x0C000100	0x000000AC
    GD_CONFIG2	0x00A00000	0x000000AE
    GATE_DRIVER_FAULT_STATUS	0x00000000	0x000000E0
    CONTROLLER_FAULT_STATUS	0x00000000	0x000000E2
    ALGO_STATUS	0x00000000	0x000000E4
    MTR_PARAMS	0x00000000	0x000000E6
    ALGO_STATUS_MPET	0x00000000	0x000000E8
    ALGO_CTRL1	0x00000000	0x000000EA
    ALGO_DEBUG1	0x00000000	0x000000EC
    ALGO_DEBUG2	0x00200000	0x000000EE
    

    Thanks and Best regards

    Venkatadri S

  • After test the test:

    0xE0 = 0x00000000 = 0b00000000000000000000000000000000
    0xE2 = 0x80080000 = 0b10000000000010000000000000000000
    0xE4 = 0x0AD77980 = 0b00001010110101110111100110000000
    0xE6 = 0x00000400 = 0b00000000000000000000010000000000
    0xE8 = 0x4A000000 = 0b01001010000000000000000000000000
    0xEA = 0x00000000 = 0b00000000000000000000000000000000
    0xEC = 0x00000000 = 0b00000000000000000000000000000000
    0xEE = 0x00000000 = 0b00000000000000000000000000000000

  • Hi NIkolay,

    Venkatadri is on leave for couple of days.

    are you still facing any issue in spinning the motor?

    Thanks,

    Dhinesh.

  • Hi Dhinesh,

    It is easy to see in register values in my previous post that driver raises overcurrent error. Motor try to rotate and stop. Wrong register setup.

    Do you have in TI experienced electronic engineers in motor control to solve my problem?

  • Hi Nikolay,

    I have changed few parameters in the Venkat's tuning file to avoid over current fault due to high switching transients.

    LOCK_ILIMIT_DEG = 0.5ms

    HW_LOCK_ILIMIT_DEG = 4us

    Also, BEMF was 0 in the shared tuning. i have updated the parameter with 3mV/hz.

    Increased ABNORMAL_BEMF_THR to 70% .

    MCF816A_register.csv

    Thanks,

    Dhinesh

  • OK, I'll test it.

  • Hi Dhinesh,

    Your settings rotate motor, but my problem still exist.

    I changed sightly settings for speed control via analog voltage on speed pin and for FG output frequency division by 7 (12N14P motors have 14 magnets or 7 pole pairs). 1500Hz / 7 = 214Hz mechanical speed

    Motor start, accelerate to approx 50Hz (approx. 25% 0f 214Hz), enter closed loop and then decrease speed according to analog voltage on SPEED pin. Increasing this voltage lead to increasing motor speed. At approximately 1,2V on SPEED pin, motor speed is approximately 88Hz (0,60A power supply current) and at this point increasing of speed stop independently of increasing voltage up to 3,3V.

    SPEED_LIMIT is set to 1500Hz (value is 9000 decimal). Motor have 8A max current and 1275 r.p.m/V.

    What is the reason for that?

    1. Driver register settings?

    2. Driver can not drive this motor?

    3. Low supply voltage of 11,1V (3S Li-Ion)?

    4. Else?

    Best regards,

    Nikolay

  • Hi Nikolay,

    FAULT_CONFIG1->ILIMIT parameter is set to 1A, which will limit the motor current to 1A irrespective of the speed command. Increase this parameter to 5A and test it once again.

    Thanks,

    Dhinesh

  • Now I can rotate motor to max speed using these settings:

    0x80 = 0x20210000

    0x82 = 0x00000000

    0x84 = 0x0B060000

    0x86 = 0x3382A00F

    0x88 = 0x3F0517B4

    0x8A = 0x0ADD3F0F

    0x8C = 0x0A000002

    0x8E = 0x218720D0

    0x90 = 0x7FFC0040

    0x92 = 0x00040000

    0xA0 = 0x380060F8

    0xA2 = 0x00000106

    0xA4 = 0x00000008

    0xA6 = 0x00100000

    0xA8 = 0x00003000

    0xAA = 0x40100000

    0xAC = 0x0C010200

    0xAE = 0x00000001

    They work even with another motor with different parameters.

  • Hi Nikolay,

    Thank you for sharing the working tuning file. Please close this thread if you do not have any further questions.

    Thanks,

    Dhinesh

  • I have a lot of questions, but no one to answer me here. Are you sure that you can provide any support Dhinesh?