CY8C20110-SX2I Not Responding via I2C with ESP32 – No Touch Data or Output

Thread Starter

nirajbabuaan

Joined Jun 11, 2025
2
Hi all,

We’re working on a custom PCB under our startup “Slogfy” where we’ve integrated the CY8C20110-SX2I capacitive touch IC with an ESP32 microcontroller. However, we’re not able to receive any data or touch status over I2C.

IC: CY8C20110-SX2I
Microcontroller: ESP32 (using Arduino IDE)
I2C Pins: SDA = GPIO21, SCL = GPIO22
Pull-ups: 4.7kΩ on SDA and SCL
I2C Address: 0x00 (or configured value)
Status: ESP32 detects device on I2C bus with scanner, but data read always returns 0 or fails.

We’ve attached:
Our Schematic (PDF/image)
PCB layout (image)
Screenshot of serial output and code snippet




Things we've tried:
  • Confirmed 3.3V and GND supply is OK

  • Confirmed I2C lines with logic analyzer

  • Tried different delays and requestFrom() patterns

  • Used both Wire.h and other I2C libraries



Please help us identify what might be wrong—whether in hardware, address configuration, reset handling, or timing.

Thanks in advance
– Team Slogfy
 

Attachments

Thread Starter

nirajbabuaan

Joined Jun 11, 2025
2
hi niraj,
Welcome to AAC.
I do not see the ' Screenshot of serial output and code snippet '?

E
C-like:
#include <Wire.h>


#define SDA_PIN 21  // Use GPIO21 for SDA

#define SCL_PIN 22  // Use GPIO22 for SCL


void setup() {

  // Initialize serial communication

  Serial.begin(115200);

  delay(1000); // Give time for serial monitor to connect


  // Initialize I2C with specified SDA and SCL pins

  Wire.begin(SDA_PIN, SCL_PIN);

 

  Serial.println(" I2C Scanner Starting...");

  Serial.print("Using SDA: GPIO");

  Serial.print(SDA_PIN);

  Serial.print(" | SCL: GPIO");

  Serial.println(SCL_PIN);

}


void loop() {

  byte error, address;

  int count = 0;


  Serial.println("Scanning for I2C devices...");


  for (address = 1; address < 127; address++) {

    Wire.beginTransmission(address);

    error = Wire.endTransmission();


    if (error == 0) {

      Serial.print("✅ I2C device found at address 0x");

      if (address < 16)

        Serial.print("0");

      Serial.println(address, HEX);

      count++;

    }

  }


  if (count == 0)

    Serial.println("❌ No I2C devices found.");

  else

    Serial.println("✅ I2C Scan Complete.\n");


  delay(3000); // Scan every 3 seconds

}

"serial print is- ❌ No I2C devices found."
 

Attachments

Last edited by a moderator:
Top