Microchip CAP1114 SMBus/I2C communication

I’m trying to use a microchip CAP1114 (http://www.microchip.com/wwwproducts/en/CAP1114, Datasheet: http://ww1.microchip.com/downloads/en/DeviceDoc/1114.pdf) with an Arduino Nano.

I’ve got it soldered into a QFN adaptor, and the connections look good, although it is my first QFN project.

However, I can’t get any communication going. I’ve been trying both the Wire library and the SoftI2CMaster library. Here’s my current code with the SoftI2CMaster, as it has a simple way to check if devices respond:

// Pin 3 on Nano
#define SDA_PORT PORTD
#define SDA_PIN 3

// Pin 5 on Nano
#define SCL_PORT PORTD
#define SCL_PIN 5
#include <SoftI2CMaster.h>

//---------------------------------------------------------
void setup(void) {
  i2c_init();
  Serial.begin(115200); 
  Serial.println("Setting up");
  for( int i = 0; i < 0xFF; i++ ) {
    Serial.print(i);
    Serial.print("\t: ");
    Serial.println(i2c_start(i | I2C_READ));
    i2c_stop();
  }

}

void loop(void){

}

I’ve also tried the I2CScanSoft example, which doesn’t find anything on the bus.

With the CAP114 I have:

  • connected the underside of the chip to ground
  • pin 8 → 3.3v
  • 23,24,25 → Gnd
  • 21 (SDA) → SDA (or pin 3 in the SoftI2C example) with a 6k pullup
  • 22 (SCL) → SCL (or pin 5 in the SoftI2C example) with pullup

When I put a scope on it, I can see pulse trains happening on SDA and SCL, and they look nice and clean (but I don’t have a logic analyser to test in more depth)

Any suggestions for more debugging?

Or anyone have known good code for the CAP1114?

Or, another chip where I can set many (> 4) I2C addresses - I picked the 1114 as the I2C address is soft-configurable

Thanks!

CAP1114 : capacitive touch sensor and LED driver for 3.3V (some pins are 5V tolerant).
The bottom plate is the power ground, are you sure that it makes contact with GND ?
There is a note in the datasheet about the SMBus and I2C, I think it should work with I2C.

Did you try the common i2c_scanner ?
http://playground.arduino.cc/Main/I2cScanner

It has many registers and I don't understand all of it. Once you get the I2C bus working, you need to find example code for the chip.

Thanks Koepel, useful sketches!

Unfortunately, still no answer, even at a range of speeds. So I guess it's a hardware issue. Ground plane is definitely connected. I'll try soldering up another chip.

Thanks!