We are using the Atmel SAM4S2C 32 bit ARM microprocessor along with a smart battery, controlled by a bq20z45 controller in it. The Battery sends a message to a (non-present) smart battery charger on the SMBus. It seems that within 24 - 72 hrs the microcontroller and the smart battery try to send data on the bus at the same time. This would usually not be such a huge problem, but sometimes after that incident the SAM4S pulls both TWI-Lines (SDA, SCL) low. We are resetting the bus to overcome this problem, but it would be great to understand what happens here.
We can reproduce this problem by putting a function generator on the bus with a 100kHz square signal. The ARBLST (Arbitration Lost) flag is set in the microprocessor, both lines get pulled low.
Using a bus with the battery disconnected (+ function generator connected) works, too, but tends to be more robust. This might be due to the fact that there is no actual communication with the battery and only the address byte is on the bus. So there is much less communication to collide with.
Has anyone had any problems related to this, too? Any Experience? Reading datasheets over and over again did not bring up any useful results.
The SAM4S is in Master Mode.