Tool/software:
Hi Team,
Customer is having trouble with the I2C/SMBus bus in MSPM0G1107 in multi-master mode.
On one bus there are:
- 2 master devices: host M0 and battery with Smart Battery system
- 1 slave: battery charger
The battery automatically transmits charging parameters to the charger.. Host M0 reads current condition from battery and charger every second. The communication itself works properly most of the time. However, from time to time the M0 reads completely meaningless data, which on the next read is already correct.
Logic analyzer shows that the bad readings are due to the fact that M0 communication started at the same time as transmitting on the battery side. In mutli-master such behavior is acceptable, but the problem is that the M0 controller cannot always handle such a situation. We use interrupts and the corresponding flag Arbitration Lost is not always raised (only sometimes). We also check the bus busy flag before starting M0 transmission.
There are a couple of driver in the SDK that do not support Multi-master mode, but I'm assuming the others do.
The I2Cx.MCR.MMST register is enabled when initializing I2C with "DL_I2C_enableMultiControllerMode"
Can you provide some guidance on other things to check on this bus?
BR,
-RT