SparkFun RedBoard Artemis - I2C bus problem through Qwiic

Hi there,

I just bought myself the RedBoard Artemis along with various Qwiic modules for a project but when I was going to start changing I2C addresses for two Qwiic Buttons, the board had trouble reading the I2C bus.

Using the I2C scanner sketch the board reads a device on every address.

The problem seems to be the ReadBoard since I swapped it out for an Arduino Due and that worked as expected.

This is similar to reading an I2C bus without pull-up resistors but since this is the Qwiic system, that can’t be the problem can it?

Can someone help me with this?

Thanks

Hi Baldurk,

Out of curiousity, what SVL Baud Rate did you use to program the RedBoard Artemis?

I experienced this exact same problem yesterday when trying to connect I2C devices to my Artemis Nano. I ran the same I2C Scanner sketch and no I2C devices were detected. I then realized I had unknowingly left the SVL Baud Rate at the default of 921600. As soon as I changed this to 115200 and re-uploaded the sketch, my I2C devices were detected.

Hopefully this helps!

Cheers,

Adam

I am having similar issues - Brand new artemis red board. With nothing plugged in, it shows “unknow error” for every address.

Testing devices one at a time,

When I plug in my QWIIC GPIO, it works as expected.

When I plug in my SerLCD, it works as expected.

When I plug in my QWIIC single relay board, it says it finds a device on EVERY address up to 0x3f, but then “Unknow error” for 0x40 and above

When I plug in my QWIIC RFID reader, it says device found on EVERY address.

In the interest of full disclosure, I hooked this up as a second-system to test because my RFID reader isn’t working on a RaspPi … (Doesn’t show up at all) but all the other devices listed above work, separately, and as a group all together. I suspect my RFID reader is bad, which is why I was testing on the redboard as a second validating system.

Because of this, for my experience here, I would exclude my RFID reader as not good test data until it is otherwise proven, but I’m curious why I might be getting these strange results with the relay board, when it is known working on the RPi, so I know it’s good? Also I’m curious why the upload speed to the RedBoard should have any bearing whatsoever? Once it’s uploaded, the speed at which the code was sent to the device should have no impact (and it isn’t having an impact for me, so I’m wondering if Adam.G’s experience was possibly a fluke, or if there’s some validity as to why that should have happened. I tried, and it made no difference (other than uploading slower!)

I have seen vague references to changing the actual i2c bus speed/timing, but I am not sure how to do that. I’d be fine slowing it down if it makes this stuff work more reliably!

Any comments or ideas? I’m anxious to be able to trust and rely on the QWIIC system!!

I’m going to see if I can wire up a good old fashioned UNO with a QWIIC to breadboard cable and see how it goes…

Thanks in advance!

-Steve

Hi guys - I see this issue and will look into it but it might take me a moment to recreate.

In the meantime I just wanted to share that you can use the following code to change the I2C speed

Wire.setClock(100000);    // 100 kHz (slower)
Wire.setClock(400000);    // 400 kHz (default) 
Wire.setClock(1000000);   // 1 MHz.  (faster)
Wire.begin();

Also we are working on an improvement to the Arduino core that will allow arbitrary clock values, such as 4359 Hz. But for now you must use one of the three listed above.