Not able to detect i2c devices on portenta max carrier (arduino side)

I've been trying to connect or even just DETECT an i2c device I have connected to the bottom of the max carrier board via soldred wires on the i2c-0 pads as well as 5V and GND. For now I'm just trying to see if it will recognize a MCP4728 DAC using an I2C scanner code thats worked well in the past (attached below), however it doesnt detect anything. Ive done sudo modprobe i2c-dev even though thats for the linux side and im trying to just get the arduino to find the device, without luck. Here's the code:

#include <Wire.h>
#include <RPC.h>
#include <SerialRPC.h>

void setup()
{
  Wire.begin();
 pinMode(PA_12, INPUT);
  Serial.begin(115200);
 // while (!Serial);             // Leonardo: wait for serial monitor
  Serial.println("\nI2C Scanner");
  
}
 
 
void loop()
{
  byte error, address;
  int nDevices,aa;
  
  Serial.println("Scanning...");
  aa = 0;
  nDevices = 0;
  for(address = 1; address < 127; address++ )
  {
    // The i2c_scanner uses the return value of
    // the Write.endTransmisstion to see if
    // a device did acknowledge to the 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.print(address,HEX);
      Serial.println("  !");
      aa++;
      nDevices++;
    }
    else if (error==4)
    {
      Serial.print("Unknown error at address 0x");
      if (address<16)
        Serial.print("0");
      Serial.println(address,HEX);
    }    
  }
  if (nDevices == 0)
    Serial.println("No I2C devices found\n");
  else
    Serial.print("Found ");
    Serial.print(aa);
    Serial.println(" devices.");
    Serial.println("done\n");
    
 
  delay(5000);           // wait 5 seconds for next scan
}


Why did you buy that board ?

The Arduino layer for the STM32 is on top of Mbed. Here is the variant: https://github.com/arduino/ArduinoCore-mbed/tree/main/variants/PORTENTA_X8

The I2C Scanner sketch uses a I2C Write command with no data and Mbed can not do that. I don't know if that is fixed yet.

Have you seen the other issues about the I2C bus ? I can not found a solution there.

If you measure SDA and SCL after Wire.begin(), then they should be near 3.3V. Do you have a Logic Analyzer ?

1 Like

It is probably a wiring error as the software worked before. What value of Pull Up resistors did you use, hopefully something about 3K.

I'm usinag an adafruit MCP4728 DAC so its resistors are already integrated. I know that the chip works since it works perfectly on an Arduino MEGA. So I doubt its wiring given its just 4 wires going from the carrier board to the DAC

I will take SWAG since I have no clue to what you actually have. The Adafruit MCP4728 has 10K pull up resistors, that is on the light side. I would add supplemental 8K to 10K resistors and see if that solves the problem.

additional resistors didn't solve it, I used 10k on scl and sda. I now have a breakout board to work with

Since all of the parts are good and the voltage levels are compatible the only thing left is wiring.