Hello Peter,
yes, it's a semtech SX8644 .... which I will use also as a LED-Driver ...
My code so far .....
The adress of the chip:
#define I2C_TouchControl 0x2B // SEMTECH SX8634 Capacitive Touch Button on Channel 0 of I2C Multiplexer
The SPM-Registers ....
int SpmCfg = 0x0D; //SPM Gateway ....
int ActivateSpmCfg = 0x10; //activate SPM to set configuration
int ReadSpmCfg = 0x18; // activate SPM Read Modus ....
int SpmBaseAdress = 0x0E; // Register für die Startadresse .....
int TerminateSpmCfg = 0x00;
int CompOpMode = 0x09;
int SetModeActive = 0x00;
int SetModeSleep = 0x02;
The Array with the Control-Registers:
uint8_t BtnCfgAdr = 0x20; //Startadresse Button Parameter
uint8_t SetBtnCfg[8]={0x00, // 0x20: Default
0x10, // 0x21: BtnCfg - 0x10 - Interrupt triggered by Touch
0x50, // 0x22: Default
0x50, // 0x23: Default
0x01, // 0x24: Default
0x0A, // 0x25: Default
0x00, // 0x26: Default
0x00}; // 0x27: Default
uint8_t BtnCfg[8];
And here, the programming ....
Step 1:
I2c.write(I2C_TouchControl, SpmCfg, ActivateSpmCfg); // Activate SPM WRITE - Modus
Works fine. Is doing what it should do .....
Step 2:
I2c.write(I2C_TouchControl, SpmBaseAdress, BtnCfgAdr); // Set SPM Base Adress to ButtonConfigAdress 0x20 = #32 ....
Works fine. Is doing what it should do ..... BaseAdress is now 0x20.
Now Step 3: Writing the SetBtnCfg Array with the 8 control Registers - you can find above - to the start adress .....
I2c.write(I2C_TouchControl, SpmBaseAdress, SetBtnCfg,8);
Then I terminate the configuration ....
I2c.write(I2C_TouchControl, SpmCfg, TerminateSpmCfg); //Deactivate SPM Modus ......
Serial.println("STEP 3: SPM - Konfiguration beendet ........ ");
I2c.write(I2C_TouchControl, 0x09, 0x02); //Sleep Mode
delay(300);
I2c.write(I2C_TouchControl, 0x09, 0x00); //Active Mode
And to control it, I read it out .....
I2c.write(I2C_TouchControl, SpmCfg, ReadSpmCfg);
I2c.write(I2C_TouchControl, SpmBaseAdress, BtnCfgAdr); // Set SPM Base Adress to ButtonConfigAdress 0x20 = #32 ....
I2c.read(I2C_TouchControl, SpmBaseAdress, 8, BtnCfg);
I2c.write(I2C_TouchControl, SpmCfg, TerminateSpmCfg); //Deactivate SPM Modus ......
delay(1000);
Serial.print("Button Startadresse : 0x"); Serial.println(BtnCfg[0], HEX);
Serial.print("BtnCfg : 0x"); Serial.println(BtnCfg[1], HEX);
Serial.print("BtnAvgThresh : 0x"); Serial.println(BtnCfg[2], HEX);
Serial.print("BtnCompNegThresh : 0x"); Serial.println(BtnCfg[3], HEX);
Serial.print("BtnCompNegCntMax : 0x"); Serial.println(BtnCfg[4], HEX);
Serial.print("BtnHysteresis : 0x"); Serial.println(BtnCfg[5], HEX);
Serial.print("BtnStuckAtTimeout : 0x"); Serial.println(BtnCfg[6], HEX);
Serial.print("Register 027 : 0x"); Serial.println(BtnCfg[7], HEX);
Serial.print(" SpmCfg beendet .... ");
And here is the Output:
SPM - Configuration Starts ........
STEP 1: SPM - WRITE Modus initiieren ........
SpmCfg: 0x10
STEP 2: SPM - Adresse schreiben ........
SpmBaseAddr: 32
Neue SpmBaseAddr: 0x20
STEP 3: SPM - Konfiguration schreiben ........
STEP 3: SPM - Konfiguration beendet ........
Active again ........ :-)
Button Startadresse : 0x20
BtnCfg : 0x10
BtnAvgThresh : 0x0
BtnCompNegThresh : 0x0
BtnCompNegCntMax : 0x0
BtnHysteresis : 0x0
BtnStuckAtTimeout : 0x0
Register 027 : 0x0
SpmCfg beendet .... **
Unfortunately it is not doing what it should do. Only the first two Registers seems to be ok .... and the chip stops working 
The readed Registers differ from the SetBtnCfg Array.
I'm using the latest I2c Master library ....... Rev. 5.0, I think. Found it easier to use it ... less coding :
Thanks for your Support ...
Ingo