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.

MCT8316A: Write EEPROM issue

Part Number: MCT8316A

Tool/software:

Hi support team all.

Is it necessary to cycle the power after following the write procedure in the data sheet so that the settings from the shadow register are transferred and stored in the EEPROM?

Currently, there are many cases where the device does not operate as set unless the power is cycled after executing the write permission from the shadow register to the EEPROM.

Best regards,

Higa

  • Hi Higa,

    It is not necessary to power cycle the MCT8316A for the shadow registers to be stored into EEPROM. The only steps required to load the shadow register information are the steps in the EEPROM write procedure. Power cycling the device is recommended just to confirm that the EEPROM was loaded and is functioning correctly since the shadow registers are loaded from EEPROM when the device is powered on.

    After writing to the EEPROM and waiting for at least 100ms, you can preform a read command to the EEPROM to check if the EEPROM has the correct register configuration stored.  

    Just to confirm, if an EEPROM read command is made before power cycling the MCT8316A does the device still not operate as expected? Also, what difference in operation are you seeing before the power cycle occurs?

    Regards,

    Joshua

  • Hi Joshua-san

    Sorry for the delay.

    Thank you for answering.

    Currently, abnormal behavior has been confirmed after writing to EEPROM.
    To be specific, IPD is used in the startup sequence, but the IPD does not operate as set.
    However, when the power is turned on again, it operates as set.
    This can be reproduced with MCT8316AEVM, and it is very reproducible.

    The procedure for confirming abnormal behavior is as follows.
    After turning on VM=24V, the following procedure is performed to confirm.

    1. Write the factory default EEPROM state (initialization)

    {
      "signature": "oneui-register-data",
      "data": [
        [
          {
            "idx": 0,
            "id": "isd_config",
            "value": "0x64738C20"
          },
          {
            "idx": 1,
            "id": "motor_startup1",
            "value": "0x28200000"
          },
          {
            "idx": 2,
            "id": "motor_startup2",
            "value": "0x0B6807D0"
          },
          {
            "idx": 3,
            "id": "closed_loop1",
            "value": "0x2306600C"
          },
          {
            "idx": 4,
            "id": "closed_loop2",
            "value": "0x0D3201B5"
          },
          {
            "idx": 5,
            "id": "closed_loop3",
            "value": "0x1BAD0000"
          },
          {
            "idx": 6,
            "id": "closed_loop4",
            "value": "0x00000000"
          },
          {
            "idx": 7,
            "id": "const_speed",
            "value": "0x00000000"
          },
          {
            "idx": 8,
            "id": "const_pwr",
            "value": "0x3EC80106"
          },
          {
            "idx": 9,
            "id": "150_deg_two_ph_profile",
            "value": "0x00000000"
          },
          {
            "idx": 10,
            "id": "150_deg_three_ph_profile",
            "value": "0x00000000"
          },
          {
            "idx": 11,
            "id": "trap_config1",
            "value": "0x000D0000"
          },
          {
            "idx": 12,
            "id": "trap_config2",
            "value": "0x00000000"
          }
        ],
        [
          {
            "idx": 0,
            "id": "fault_config1",
            "value": "0x70D00888"
          },
          {
            "idx": 1,
            "id": "fault_config2",
            "value": "0x00000000"
          }
        ],
        [
          {
            "idx": 0,
            "id": "gd_config1",
            "value": "0x1C450100"
          },
          {
            "idx": 1,
            "id": "gd_config2",
            "value": "0x14200000"
          }
        ],
        [
          {
            "idx": 0,
            "id": "pin_config1",
            "value": "0x00000000"
          },
          {
            "idx": 1,
            "id": "pin_config2",
            "value": "0x00101462"
          },
          {
            "idx": 2,
            "id": "device_config",
            "value": "0x4000F00F"
          },
          {
            "idx": 3,
            "id": "peri_config",
            "value": "0x00000000"
          }
        ],
        [
          {
            "idx": 0,
            "id": "ana_trim3",
            "value": "0x48004800"
          },
          {
            "idx": 1,
            "id": "ana_trim4",
            "value": "0x00000000"
          },
          {
            "idx": 2,
            "id": "ana_trim5",
            "value": "0x000003F9"
          },
          {
            "idx": 3,
            "id": "ana_trim6",
            "value": "0x00000000"
          },
          {
            "idx": 4,
            "id": "ana_trim7",
            "value": "0x00000000"
          },
          {
            "idx": 5,
            "id": "ana_trim8",
            "value": "0x00005281"
          },
          {
            "idx": 6,
            "id": "ana_trim9",
            "value": "0x00A1C921"
          },
          {
            "idx": 7,
            "id": "ana_trim10",
            "value": "0x536C0137"
          }
        ],
        [
          {
            "idx": 0,
            "id": "algo_reserved1",
            "value": "0x00000000"
          },
          {
            "idx": 1,
            "id": "algo_reserved2",
            "value": "0x00000000"
          },
          {
            "idx": 2,
            "id": "algo_reserved3",
            "value": "0x00000000"
          }
        ],
        [
          {
            "idx": 0,
            "id": "gate_driver_fault_status",
            "value": "0x00000000"
          },
          {
            "idx": 1,
            "id": "controller_fault_status",
            "value": "0x00000000"
          }
        ],
        [
          {
            "idx": 0,
            "id": "sys_status1",
            "value": "0x00000000"
          },
          {
            "idx": 1,
            "id": "sys_status2",
            "value": "0x60010000"
          },
          {
            "idx": 2,
            "id": "sys_status3",
            "value": "0x00000000"
          }
        ],
        [
          {
            "idx": 0,
            "id": "device_ctrl",
            "value": "0x00000000"
          }
        ],
        [
          {
            "idx": 0,
            "id": "algo_ctrl1",
            "value": 0
          }
        ]
      ]
    }

    2. Read back and confirm that the writing was successful

    3. Write the attached settings to EEPROM

    {
      "signature": "oneui-register-data",
      "data": [
        [
          {
            "idx": 0,
            "id": "isd_config",
            "value": "0x6F04C140"
          },
          {
            "idx": 1,
            "id": "motor_startup1",
            "value": "0x55489195"
          },
          {
            "idx": 2,
            "id": "motor_startup2",
            "value": "0x1A295990"
          },
          {
            "idx": 3,
            "id": "closed_loop1",
            "value": "0x0E396632"
          },
          {
            "idx": 4,
            "id": "closed_loop2",
            "value": "0x04A6E4C8"
          },
          {
            "idx": 5,
            "id": "closed_loop3",
            "value": "0x4CC40109"
          },
          {
            "idx": 6,
            "id": "closed_loop4",
            "value": "0x000CE944"
          },
          {
            "idx": 7,
            "id": "const_speed",
            "value": "0x00A00504"
          },
          {
            "idx": 8,
            "id": "const_pwr",
            "value": "0x0C804C84"
          },
          {
            "idx": 9,
            "id": "150_deg_two_ph_profile",
            "value": "0x36DB6DA6"
          },
          {
            "idx": 10,
            "id": "150_deg_three_ph_profile",
            "value": "0x36DB6D80"
          },
          {
            "idx": 11,
            "id": "trap_config1",
            "value": "0x054BA106"
          },
          {
            "idx": 12,
            "id": "trap_config2",
            "value": "0x3A880000"
          }
        ],
        [
          {
            "idx": 0,
            "id": "fault_config1",
            "value": "0x78F43025"
          },
          {
            "idx": 1,
            "id": "fault_config2",
            "value": "0x7247A009"
          }
        ],
        [
          {
            "idx": 0,
            "id": "gd_config1",
            "value": "0x1C440001"
          },
          {
            "idx": 1,
            "id": "gd_config2",
            "value": "0x14200000"
          }
        ],
        [
          {
            "idx": 0,
            "id": "pin_config1",
            "value": "0x2D720644"
          },
          {
            "idx": 1,
            "id": "pin_config2",
            "value": "0x080C0000"
          },
          {
            "idx": 2,
            "id": "device_config",
            "value": "0x7FFF0000"
          },
          {
            "idx": 3,
            "id": "peri_config",
            "value": "0x00000000"
          }
        ],
        [
          {
            "idx": 0,
            "id": "ana_trim3",
            "value": "0x48004800"
          },
          {
            "idx": 1,
            "id": "ana_trim4",
            "value": "0x00000000"
          },
          {
            "idx": 2,
            "id": "ana_trim5",
            "value": "0x000003D4"
          },
          {
            "idx": 3,
            "id": "ana_trim6",
            "value": "0x00000000"
          },
          {
            "idx": 4,
            "id": "ana_trim7",
            "value": "0x00000000"
          },
          {
            "idx": 5,
            "id": "ana_trim8",
            "value": "0x00004963"
          },
          {
            "idx": 6,
            "id": "ana_trim9",
            "value": "0x008DA8A0"
          },
          {
            "idx": 7,
            "id": "ana_trim10",
            "value": "0x536C0F3C"
          }
        ],
        [
          {
            "idx": 0,
            "id": "algo_reserved1",
            "value": "0x00000000"
          },
          {
            "idx": 1,
            "id": "algo_reserved2",
            "value": "0x00000000"
          },
          {
            "idx": 2,
            "id": "algo_reserved3",
            "value": "0x00000000"
          }
        ],
        [
          {
            "idx": 0,
            "id": "gate_driver_fault_status",
            "value": "0x00000000"
          },
          {
            "idx": 1,
            "id": "controller_fault_status",
            "value": "0x00000000"
          }
        ],
        [
          {
            "idx": 0,
            "id": "sys_status1",
            "value": "0x00F10000"
          },
          {
            "idx": 1,
            "id": "sys_status2",
            "value": "0x60010000"
          },
          {
            "idx": 2,
            "id": "sys_status3",
            "value": "0x00000000"
          }
        ],
        [
          {
            "idx": 0,
            "id": "device_ctrl",
            "value": "0x00008000"
          }
        ],
        [
          {
            "idx": 0,
            "id": "algo_ctrl1",
            "value": "0x00000000"
          }
        ]
      ]
    }

    4. Read back and confirm that the writing was successful

    5. When the motor rotates, an "IPD frequency fault" occurs and the motor does not rotate.
        The waveform at startup at this time is as follows.

    Light blue : Phase A voltage , Red : Phase B voltage , Orange : Phase C voltage , Blue : Phase B current , Purple : Phase C current


    6. Turn the VM off and on again.

    7. When the motor rotates again, no fault occurs and it rotates without any problems.
        The waveform is as follows.

    It is clear that the IPD operation is not as set in 5.
    Also, I do not understand why the operation is as set when the power is turned on again in 6.
    Could you please explain the reason for this?

    Even though we have verified by reading back that writing to the EEPROM is being done correctly, this abnormal behavior is occurring, and it poses the risk of losing important business.
    We would appreciate your cooperation in resolving this issue.

    Best regards,

    Higa

  • Hi Higa,

    Please allow me sometime to look into this. I will aim to get back with you by this Friday.

    Regards,

    Joshua

  • Hi Joshua-san

    Thank you for your support.

    Could you please share me your looking into this issue?

    Best regards,

    Higa

  • Hi Higa,

    I was unable to reproduce the issue you are seeing in step 5. I believe this is due to a difference in the motor being used.

    We typically recommend power cycling our MCx devices after writing to EEPROM to garentee the devices settings are correctly being set to the EEPROM settings. This helps to clear all settings in the device and have the EEPROM be the only effect on the MCT8316A's register configuration including the RAM registers. Since the register configuration is not getting reset before the power cycle, the IPD settings are not getting set correctly.

    When you power cycle the device after writing to the EEPROM, do you see any issues with IPD even after many start ups?

    Regards,

    Joshua

  • Hi Jushua-san

    Thank you for your checking with EVM.

    The issue can be reproduced using the MCT8316AEVM even when using the following motor that comes with the DRV8312-C2-KIT.

    Motor model: DT4260-24-055-04

    I also checked another type and it reproduced.

    So I don't think it's because of the difference in the motor.

    The reproduction rate is also very high.

    You said in another post that a power cycle is not necessary after writing to the EEPROM, but is that incorrect information?

    https://e2e.ti.com/support/motor-drivers-group/motor-drivers/f/motor-drivers-forum/1371872/mct8316a-write-eeprom-issue

    If a power cycle is necessary, why is it not mentioned in the datasheet or application note?

    These are questions from my customers.

    Regards,

    Higa

  • Hi Higa,

    How many MCT8316A units were tested? I would like to rule out that this is only occurring with a single MCT8316A device.

    The mention of needing to power cycle the device was made by one of our systems engineers. I will double check with our systems team to see if the procedure needs to be updated for writing to EEPROM.

    I will aim to provide you an update on Friday.

    Regards,

    Joshua

  • Hi Higa, 

    Based on the provided procedure and the captures, we believe that the EEPROM was loaded with the correct register configuration since the device operates as expected after a power cycle. So the EEPROM does not need a power cycle when being written to. We believe that the shadow registers may have an incorrect setting which is leading to the IPD issue.

    How many MCT8316A devices have had this issue? 

    Regards,

    Joshua 

  • Joshua-san

    I just can't understand what you're pointing out.
    If it's a problem with the IPD settings, the problem should occur when you set it to a shadow register.
    Why does the issue only occur immediately after writing to the EEPROM after setting it to a shadow register?
    Currently we are checking three devices.
    One is mounted on a customer's board, and the other two are both mounted on the EVM.

    Best regards,

    Higa

  • Hi Higa-san,

    Does the motor spin fine if, after device power up, the register settings in step 3 are written to the device but without loading these register settings into EEPROM? Based on the procedure outline I thought that the motor was only tested after the EEPROM was written to, not before.

    Regards,

    Joshua

  • Hi Joshua-san

    IPD errors occur both before and after writing.
    It works fine after a power cycle.

    regards,

    Higa

  • Joshua-san

    What we are concerned about is that the IPD settings (especially current threshold: IPS_CURRENT_THR,IPD_CLK_FREQ) are not reflected correctly, as can be seen in the waveform data presented earlier.
    Also, it is inexplicable that cycling the power after writing to EEPROM will set the correct settings.
    We need to clarify the reason for this, so please help us.

    Regards,

    HIga

  • Hi Higa-san,

    Please allow me some time to reach out to our firmware team about this issue. I will aim to provide you with an update by Friday.

    Regards,

    Joshua 

  • Hi Joshua-san

    Any info from the firmware team?

    regards,

    Higa

  • Hi Higa-san,

    I am still waiting for a reply from our firmware team.

    Regards,

    Joshua

  • Hi Joshua-san

    Thank you for your kindly coopration.

    However, we are receiving complaints from customers about this issue.
    If we don't find a solution quickly, we could lose this important business opportunity.
    Please urge the firmware team to act quickly.

    Best regards,

    Higa

  • Hello Joshua-san

    Do you have any update?

    Regards,

    Higa

  • Hi Higa-san,

    From the response I received from our firmware team, there are some hardware peripheral settings that are initialized only at powerup. EEPROM changes made while the MCT8316A is powered that affect these HW peripheral settings will not take effect until the MCT8316A is power cycled. Since the EEPROM configuration changes between procedure steps 1 and 4 are made without power cycling the MCT8316A, the EEPROM configuration is not being reflected in some HW peripheral settings and leading to the abnormal behavior being observed in step 5.

    Because some HW peripheral settings cannot be changed until a power cycle is made, please always power cycle the MCT8316A after writing to the EEPROM to make sure that these HW peripheral settings are set as per the most recent EEPROM settings. 

    Please let me know if further explanation is needed!

    Regards,

    Joshua

  • Hi Joshua-san

    Thank you for checking with the firmware team.

    Hopefully things will improve now!

    I have a few final questions.

    Am I correct in saying that the IPD settings will only be reflected after a power cycle?

    Could you tell me any other settings that require a power cycle?

    The fact that a power cycle is required after writing to the EEPROM is not mentioned in any of the documentation. Are there any plans to add this to the datasheet or application note?

    Best regards,

    Higa

  • Hi Higa,

    Am I correct in saying that the IPD settings will only be reflected after a power cycle?

    Some of the IPD related settings will be reflected without requiring a power cycle, although other IPD related settings will only be set after a power cycle. In general it is best to assume that all the settings written to EEPROM will only be properly reflected after a power cycle. I will see if I can get a list of the IPD related examples from the firmware team which are only set at power up.

    Could you tell me any other settings that require a power cycle?

    I will ask our firmware team for some examples of the settings which set only when the device is powered on. I will aim to provide an update tomorrow.

    The fact that a power cycle is required after writing to the EEPROM is not mentioned in any of the documentation. Are there any plans to add this to the datasheet or application note?

    We will be adding a mention of this requirement into app notes such as our tuning guides and I will make the request to add a mention of needed to power cycle after programming the EEPROM in the datasheet.

    Regards,

    Joshua 

  • Hi Joshua-san

    Thank you for your kind support.

    We look forward to hearing from the firmware team.

    Thanks!

    Regards,

    Higa

  • Hi Joshua-san

    I forgot that there is one thing I haven't heard from you about.
    Is there any update on the following matter?

    Could you tell me any other settings that require a power cycle?

                I will ask our firmware team for some examples of the settings which set only when the device is powered on. I will aim to provide an update tomorrow.

    Best regards,

    Higa

  • Hi Higa-san,

    Apologize on the delay in response, I have not gotten a response from our firmware team yet for specific examples of peripheral settings are set at power up.

    I have reached out to the firmware team again to try and get an answer.

    Regards,

    Joshua 

  • Hi Higa-san,

    HW related configurations like: CSA gain, external clock, external watchdog, SSM enable, sleep time, etc. are examples of settings which are set only when the device is powered on or may not properly be set when changed while the device is powered on.

    For these settings we recommend burring the desired configuration into EEPROM and then power cycling the device.

    Regards,

    Joshua