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.

MCF8315C-Q1: When it takes effect after I write RAM registers?

Part Number: MCF8315C-Q1
Other Parts Discussed in Thread: MCF8315C, , MCF8315A

Dear TI team:

     I have written to RAM register to change configure data, but it doesn't takes effect at the first motor start-up. While at the twice motor start-up, it works.

Why this occurs? And how i can make the register works at the first motor start-up after register writes?

The flow is a example to describe my operation steps:

   1) I write MOTOR_STARTUP1(84H) register by I2C communication, to configure ALIGN_TIME=1(=50 ms);

   2) I control the motor rotated and then stop.

   3) I write MOTOR_STARTUP1(84H) register, to configure ALIGN_TIME=2(=100 ms);

   4) I control the motor rotate, and measured the real align-time is 50 ms, not 100 ms. But I read back the MOTOR_STARTUP1(84H) register, which the ALIGN_TIME=2(=100 ms);

   5) I stopped the motor , and rotate it again. Now I measured the align-time is 100 ms.

  • Hi,

    I will reply to you by this week end. Are you using GUI to do this or your own host controller?

    Can you try reading back after writing the new configuration before issuing strat commnad?

    Thanks and Best Regards,

    Venkatadri S

  • Hi,

    I am used my own host controller. 

    I have read back to check the write command is OK. "But I read back the MOTOR_STARTUP1(84H) register, which the ALIGN_TIME=2(=100 ms);".

    More details: After power-on my controller (also to MCF8315C), I initialized all RAM registers, and then rotate motor, the align-time is also not my configured time.

  • Hi,

    They are one week passed, do you have any more feed-back?

    More details: After power-on my controller (also to MCF8315C), I initialized all RAM registers, and then rotate motor, the align-time is also not my configured time. The flow picture shows the phase current. And why the current is decreasing stepply from open-loop to closed-loop?

  • Hi,

    This is running MPET, can you check Speed KP, KI fields. Even any of this are zero when you give speed command device starts MPET whhc measures motor parameters to tune for speed loop. The current profiling is because MPET running. Can you share step by step how you are starting? Can you share the JSON file which you are trying.

    As I mentioned writing to EEPROM will not work if motor is in run state.

    I recommend use EVM and GUI , tune the motor and use the  tuned parameter to program from your host controller.

    Follow the instruction provided in the data sheet (6.6) about programing the RAM and register and writing to EEPROM

    Thanks and Best Regards,

    Venkatadri S

  • Hi,

    I didn't used the EEPROM, I directly write to RAM registers. Use the above register write example, I write new ALIGN_TIME value, and then control to rotate motor, the real align time is not change. But if I wait 150 ms (TBD) and then control to rotate motor, the real align time is updated. Do these meet your design? And how can i to eliminate the delay time?

    I want to calculate current from register value (phase A/B/C; id, iq), which the formula is: reg_value / 2^27 * base_current / 8. What's the value of base_current?

  • Hi ,

    Regarding update rate , we recommend any change to RAM registers do in IDLE state and wait for 200 ms and it takes effect.

    When motor is running update rate to RAM may vary based on Motor running priority.

    Base current value is 6.25A.

    Thanks and Best Regards,

    Venkatadri S

  • Hi,

    I have add a long delay (200ms) to wait for the write regs make effect.

    One more question:

    I read FG_SPEED_FDBK register (offset=196h) to calculate motor speed. When motor is move, the register value is varied. But when I stop or brake (hold) the motor, the register value is not a very low value (no speed), but it will keep with no change.  Why and how can I make the register value is low when motor is stop or brake?

  • Hi ,

    This register is Read only. You can also read the ALGORTHM_STATE value in parallel, this shows motor state, if IDLE or Brake.

    Thanks and Best Regards,

    Venkatadri S

  • Hi,

    1) For register PHASE_CURRENT_A(44h), if value is 2^25, does the real current is calculated as follow:

    iA=PHASE_CURRENT_A/2^27*Base_Current/8=2^25/2^27*6.25A/8=6.25A/4/8=0.1953125A.

    2) If I configure DAC2(F6h) register with value 0x00020440, how to calculate the DACOUT2 voltage value?

    3) If I configure DAC2(F6h) register with value 0x00100440, how to calculate the DACOUT2 voltage value?

  • Hi

    Since you are seeing the PHASE current which changes direction, use Bipolar mode. In Bi Polar 3V is +1pu, 0V is -1pu.

    You can use DACOUTSCALING to start with 8/8 , if you don't see enough resolution then adjust.

    If you see DACOUT is saturated, then reduce scaling.

    +1pu is max positive current, - 1pu is max negative direction current, with this you can set the scaling.

    Thanks and Best Regards,

    Venkatadri S

  • Hi,

    Thank you for your answer. But for example, I am asked how to eat fish, while you are answered how to fishing. 

    I'm don't knowing how to calculate the bipolar current. Can you help me? My chip type is MCF8315C-Q1.

  • Hi,

    Bipolar DACOUPUT zero current is 1.5V on DAC, 

    2) If I configure DAC2(F6h) register with value 0x00020440, how to calculate the DACOUT2 voltage value?

    If you assume positive direction for 0.195 A current

    For scaling of 8/8 1pu is 3V, for scaling 4/8 2pu is 3V and so on.

    (2^25/2^27) * (6.25/8)* Scaling/8 + 1.5

    Thanks and Best Regards,

    Venkatadri S

  • Hi ,

    Please note this equation 

    Current(A) = [(DAC VOLTAGE - 1.5)/1.5]* (SCLAING FACTOR/8) * (Base current/8)

    Thanks and Best Regards,

    Venkatadri S

  • Hi,

    Sorry for error in my previous message. plead use this 

    Current(A) = [(DAC VOLTAGE - 1.5)/1.5]* (8/SCLAING FACTOR) * (Base current/8)

    Base Current = 6.25A

    Thanks and Best Regards,

    Venkatadri S

  • Hi,

    I used my own host controller. I have some questions when I used the DAC function.

    1. I set DAC1 register, will the DACOUT2 output the signal; I set DAC2 register, will the DACOUT1 output the signal. Does anywhere wrong?

    For example, I set DAC1=0x1e440, the DACOUT2 output phase A current signal.

    2. I set DAC1=0x1e440 and DAC2=0x0x7475c. the DACOUT1 and DACOUT2 output voltage oscilloscope waveform as follow, in which waveform 1 is DACOUT1 output voltage (theta est), waveform 3 is DACOUT2 output voltage (phase current A). 

    Why the 75CH(THETA_EST) register is a sinusoid with a offset voltage( about 1550 mV). And when motor accelerated, the offset voltage also enlarged.

    3. As the datasheet ' 7.2.1.6 Real time variable tracking using DACOUT' used register 736H for DACOUT2 to measure rotor angle. But I didn't find anything more details of 736H register. I set DAC2=0x0x74736, but the DACOUT2 output voltage keeps 0 while motor is running or stop. How can I use this register to get the Sawtooth wave?

  • Hi,

    1. MCF831x EVM still showing the DACOUT1, DACOUT2 to the same location, MCF8316C DACOUT1 is on Pin#37 whereas DACOUT1 for MCF8315A is on Pin#36. 

    2. I will verify this and get back to you.

    3. Can you please re check the data sheet MCF8315C Sensorless Field Oriented Control (FOC) Integrated FET BLDC Driver datasheet (Rev. A) (ti.com)  for correct address of the variables?

    Thanks and Best Regards

    Venkatadri S

  • Hi,

    I am using MCF8315C-Q1 40 pin VQFN chip, and the data sheet is SLLSFV6-JANUARY 2024. Please reply the question 1 and 3. Thanks.

    In details, I used two batch chip: a) MCF8315ACVQ1  TI 488 AQLK 64; b) MCF8315ACVQ1  TI 438 ARBP 64.

    I also find after power-on both batch chip, the registers default value are not completely consistent.

  • Hi

    Thanks for sharing, I will verify and get back to you.

    Thanks and Best Regards

    Venkatadri S

  • Hi,

    Do you have any progression? Please tell me at the first time. Thanks.

  • Hi ,

    I verified the address of the THETA_EST, it is 0x75E not 0x75C we will update the data sheet. Also, the data sheet provides sample exmple of 0x736 but actual address is 0x75E. You can find the address in the GUI RAM Variable map.

    I just used your setting for DAC1 and DAC2 and changed the THETA_EST from 0x75C to 0x75E, please verify the waveform. 

    The waveform1 is Phase A current and Waveform 2 is THETA_EST

    Thanks and Best Regards

    Venkatadri S