Boron as I2C Slave won't ACK

Trying to get my Boron I2C-slave to ACK my Cypress I2C-master starts. I confirmed the address (0x04) is correct (I see only my 3rd address bit high on the scope). But the Boron just wont pull SDA low on the 9th clock pulse to ACK.

The Cypress is using 100kbps and internal pull-ups.

Boron code is as follows:

void receiveEvent(int howMany) { 
  while(1 < Wire.available()) { // loop through all but the last
    char c = Wire.read();       // receive byte as a character
    Serial.print(c);            // print the character
  }
  int x = Wire.read();          // receive byte as an integer
  Serial.println(x);            // print the integer
}

void setup() {
    
    Wire.setSpeed(100000); // Wire.setSpeed(CLOCK_SPEED_100KHZ);
    Wire.begin(4);                // join i2c bus with address #4
    Wire.onReceive(receiveEvent); // register event
    Serial.begin(9600);           // start serial for output
}

void loop() {
  delay(100);

}

My Cypress is doing:

    I2CM_Start();
    I2CM_MasterClearStatus();
    Status = I2CM_MasterSendStart(4u, I2CM_WRITE_XFER_MODE);

Hmmm. Is it working at all?

I think I2C slave is available in rc.26 with this PR: https://github.com/particle-iot/firmware/pull/1591

1 Like

Yeah, she won’t ACK a master’s start, so not working at all; running v0.8.0-rc.25.