I am trying to use pairs of PCA9615-Qwiic, to extend the Arduino output to reach some ICM-20948 IMU breakout boards, the furthest of which will be a couple of meters away from the Arduino. I have been able to use a pair to go from the Arduino to a TCA9548A Qwiic Mux. In that case, I severed the VDD A- B and connected VDD and Gnd to the Arduino 5V power and ground. And I have successfully run 11 IMUs from the Mux (8 ports + plus doubling three of the ports but normal Qwiic cables that are not supposed to go that far). However, when I tried to add a PCA9615 pair after the Mux, I had no success. I decided to make a very simple example and found that I had a problem with the pair, independent of the Mux.
The basic layout is shown in the attached image
The PCA9615-Qwiic boards in this example have not been altered. When I put a scope on the SCL and SDA of the board closest to the Arduino, I can see them both and I see the appropriate data from the two IMUs. When I move an IMU to the second board, no such luck. So, in the original configuration shown in the image I measured the SDA and SCL at the far end. I can see the SDA, but the SCL is flat. The cable is a ANSI/TIA-568-C . 2 CAT . 6 UTP. I tried swapping it with the cable that I used for the successful pair that I described earlier and it worked. I traded the two PCA9614-Qwiic boards, such that the one that was at the far end was at the near end. The far end still had a flat SCL. If I turn the boards over, I can see the differential signals for the SDA on both boards. But, I don’t see the differential SCL on either board. Recall, I can see the SCL on the near board. I tried unplugging the CAT 6 cable. Nothing changed on the near board. I still see an SCL signal, but the associated differential signals (on the same board) are still flat. I swapped the boards (still no CAT 6) and the results did not change.
I think that my setup matches VDD_A == VDD shown in.
I had hopes that the little image icon that was showing up in the preview would be the image or be clickable. I don’t seem to be able to see it. If you cannot see the image and know how to make it show, please let me know.
*Image note: if you upload and get a small yellow triangle warning sign next to it, then click ‘X’ to delete and retry until you get a green checkmark. This is a small known bug, sorry for the inconvenience.
Can you also provide a picture of your physical setup as much as possible?
Thank-you TS-Brandon. I found a Sparkfun forum entry titled HOW TO SHOW AN IMAGE? It indicated that I needed to use some service, so I could provide a url. I was looking into doing that when I saw your post. So, I am trying again to upload an image. This time, I see it in the preview. I don’t see an option for changing what I already did. If there is a way, I’d be happy to try to clean things up.Otherwise, please use the new image, where the icon shows up in the original post.
I apologize, I can’t even blame that sentence on bad grammar, just bad proof-reading. That sentence should simply have ended at … that I described earlier.
In no case have I seen a clock signal on the far board or even the differential clock signal on the near board. After submitting this, I ran another experiment. I went ahead and severed the VDD A-B connection and ran lines from the Redboard 5V and ground to the VDDB and ground on the PCA9615. This configuration is very similar to my successful pair. One difference is that I use the Qwiic connector on the Redboard to supply the I2C signal. On my successful pair, I am using an Arduino Mega. So, I connect the four I2C lines to the individual SDA, SCL, 3.3V and Gnd. Another difference is that I have an independent power supply on the successful pair. Now that I know how to upload an image, feel free to ask for any closes-ups, etc. that would be helpful.
Not sure if this has anything to do with what you are seeing, but on the mega, sda and scl are pulled up to 5V, while on the QWIIC connector they are pulled to 3.3V
MIke, That is interesting. I’ve been thinking that my next tests would focus on possible differences between the Omega and the Redboard. You may have hit it on the nose with the 5V vs. 3.3V pullup.
So, I started probing some additional voltages. The SCL on the IMUs was roughly 2.5 Volts. Probing the Redboard SCL gave closer to 3.5 volts. Both of the IMUs had their pullup resistors connected. I tried scratching through the I2C-PU and it made no difference. I re-read the hookup guide (https://learn.sparkfun.com/tutorials/sp … 1564845932). And found the following:
I2C Pullup - Does nothing, the pullups are not populated on the board because the TXS0108 has them built-in
Aux Pullup - Cut these jumpers to disconnect the pullup resistors from the auxiliary I2C bus.
What is the “auxiliary I2C bus”?
I put together the simplest example I could think of. It is shown in the following figure.
One IMU using quick connector to Redboard. The Redboard SCL shows about 3.5 volts. The IMU SCL shows about 2.5 volts. I’m wondering if this is too low for the differential breakout board. If so, does the PCA9615 not work with the Qwiic IMU?
Is the lower voltage on the IMU the result of the level shifters? Is this a pullup resistor thing? If so, back to my auxiliary I2C bus question.
I don’t know if I’m on the wrong track. But, I can’t think of anything simpler to try to get the PCA9615 to show a differential clock signal for the I2C associated with an IMU.
I don’t have this board or the PCA9615, but do have good knowledge about electronics. I had a look at the board and the datasheet.
I am surprised about the remark :I2C Pullup - Does nothing, the pullups are not populated on the board because the TXS0108 has them built-in. According to the schematics (and pictures) this board does NOT have a TXS0108, but is using FET’s to make the level shift. so you MUST have pull-up resistor as also the datasheet from the ICM-20948 indicates : SDA and SCL lines typically need pull-up resistors to VDD. You should use the pull-up’s on the PCA9615 (which pull up to VDD-A - coming from the 9DOF IMU)
The Aux I2Cbus (according to the datasheet) is a available to connect other/external sensors to the ICM20948. Not available to connect to the Arduino.
The SCL on the Arduino I would be around 4 to 5V as it is pulled-up to VDD-A (which is ~5v). I see you have an SCL now on the IMU (or do I see wrong) and then the SCL level will be depending on the VIN to the board. What is the VIN you use for the 9DOF board ? If that is 3V3, the 2.5V is enough.
I would connect as follows:
Arduino / near side
Keep the link VDD-A and VDD-B connected.
Keep the I2C pullup links connected.
Keep J3 and JP4 connected
Connect GND, 5V, SDA and SCL to the Arduino
IMU / far side
REMOVE the link VDD-A and VDD-B (assume you power the 9DOF locally)
Thank-you Paul, for those comments. In trying to come up with a simple case to demonstrate the problem, I think I came up with one of the few ways to hook it up (with the default PCA9615 boards) that did not work. Any time that I put two 9Dof boards on the near side PCA9615 (like in my original figure, or with a direct Qwiic cable from the Redboard to the PCA9615 and the two IMUs daisy chaned from there), I get no differential SCL signal. When I unplug either of them from the near side board, I see the differential SCL. Note that one of the IMUs has its I2C pullup cut. As far as the differential clock signal goes, it does not seem to matter which one is connected to which side. This would have lead me back to the conclusion that the I2C PU on the IMU board really is not connected (as suggested by the hook up guide quoted earlier). But I do find that my program does not seem to be able to properly query the IMUs when the IMU with the severed pullup is attached to the far PCA9615 (even though the differential SCL works in that case).
So, bottom line seems to be that I can get it to work and that I need to continue studying this to understand what is really going on. One thing: The differential clock signal is only showing about 1/2 V. I would have thought that it would be half of the 3.3 V. If it is really reconstructed by subtracting one from the other, then I would expect that I have a 1V clock signal, which would seem like it would not work. If the answer is simple, I’d love to hear it. If it is not, does anyone recommend a good reference?