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: I2C bus speed and I2C errata

Part Number: MCT8316A
Other Parts Discussed in Thread: MCF8316A

Tool/software:

Hi,
I'm working on a motors control platform that using 4 X MCT8316A devices, all on the same I2C bus, using I2C mux to communicate with each separately. Speed is 100KHz.
My basic test software runs all 4 motors with some saw-tooth flow: increase the speed (over I2C, not gpio) up to some maximum, decrease to 0, change direction and run it again, and so on.
To increase / decrease the speed, I'm writing the speed into DEVICE_CTRL register using read-modified-write.
Once in many writes/reads, I can see read operation failure.
When reducing the I2C bus speed, I can see that the failures rate also reduced.


I have 2 questions:
1. Found this errata page - https://e2e.ti.com/support/motor-drivers-group/motor-drivers/f/motor-drivers-forum/1066777/faq-production-device-information
errata #8 said "Do not read registers from the device during motor operation".
Is it still relevant?

2. I2C write / read speed – in the datasheet, chapter 8.6.2, there is a note: "For reliable communication, a 100-µs delay should be used between every byte transferred over the I2C bus".
However, in the SDA/SCL AC characteristics table, I don't see any requirements for this delay.
I'm using STM32 device to control the drivers, and my code is using the ST HAL I2C functions which write the entire bytes stream, without the 100uS break between bytes (1 device address + 3 control word + 4 register data).
Should I add this delay to my code?

Thanks,

Dagan

-- Scope capture of write / read operation @100KHz

  • Hi Dagan,

    errata #8 said "Do not read registers from the device during motor operation".
    Is it still relevant?

    This errata is relevant only for the MCF8316A and is not an errata for the MCT8316A. This errata results in the MCF8316A's algorithm getting stuck and it is only able to recover by power cycling the device.

    I'm using STM32 device to control the drivers, and my code is using the ST HAL I2C functions which write the entire bytes stream, without the 100uS break between bytes (1 device address + 3 control word + 4 register data).
    Should I add this delay to my code?

    Please add the 100us interbyte delay, this delay allows time for the internal motor commutation algorithm to execute. 

    Regards,

    Joshua

  • Thanks you Joshua - I will add it.

    Dagan