I2C Clock Permanently Stuck To Logical Low

Version 1
    Answer:

    Question:  Why PSoC permanently holds SCL line low after it sends an ACK to a received address byte ?

    Response: Details given below,
         
    • Caused due to a bug in EzI2C user module code
    •    
    • Found in EzI2C user module version 1.2 shipped with PSoC Deisgner 5 SP5
    •    
    • Solution to this problem is to replace existing 'EzI2Csint.asm' template file from below locations with the one attached with this KB article,
         
               
      1. C:\Program Files\Cypress\Common\CypressSemiDeviceEditor\Data\CY8C20060\EzI2Cs
      2.        
      3. C:\Program Files\Cypress\Common\CypressSemiDeviceEditor\Data\psoc_0100\EzI2Cs
      4.        
      5. C:\Program Files\Cypress\Common\CypressSemiDeviceEditor\Data\Stdum\EzI2Cs
      6.    
         
    Symptoms:
         
    • I2C SCL line is stretched to logic zero permanently from the PSoC side soon after master send a data byte following an address byte
    •    
    • Address byte send by the master is ACK'ed by the PSoC even if it is not its address
    Root Cause:
         
    • Refer the attached 'pdf' file for details