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