PSM Applications : CML_OTHER_COM_FAULT

The device detected traffic on the bus that does not match expected protocols.

Possible Causes:

  • Improper SmBus read
    • A valid read from a PmBus device requires first sending a start, then address+write, then the command code, and then a repeated start (without a stop), before reading bytes from the slave
    • A common error for people familiar with I2C is to issue a stop, and then a new start with the address+read bit.  This is invalid and PmBus devices are required to pull ALERTB low and set this fault to signal to the host that it is communicating improperly
  • Poor signal integrity on the bus
  • Other unexpected protocol.
  • One some devices, if the device sees an empty start/stop sequence will trigger this fault.
    • Clock remains high while data goes low (start) then high (stop)
    • Some devices (like DC1613A, FPGAs or other logic) may issue such sequences from time to time
    • For devices that flag this fault, if you are unable to avoid creating it, you can mask this fault from pulling ALERTB low by using the SMB_ALERT_MASK feature

Remedies and Workarounds

Here are some experiments you can try to narrow things down:

  • Decrease the bus speed (View > Preferences) and see if the problem goes away
  • Clear the fault and see if it returns / is recurrent
  • Disable any other masters that may be conflicting with LTpowerPlay
    • Only one master should be communicating with the system at a time.  If you wish, you can disable LTpowerPlay by 'going offline'

Other Debugging Tips

There are a number of scenarios which can create a CML_OTHER_COM_FAULT.  If you have an oscilloscope, perhaps the fastest way to insight is to:

  • Trigger the scope on the falling edge of the ALERTB signal, and 
  • Look at SCL/SDA signals

The ALERTB signal will be pulled low by the IC at the time of the fault, indicating the time of the fault.  Look at SCL/SDA immediately preceding this for clues.