I2C not working on F9P boards

I have my GPS working with RTK using hardwired UART2. Works great with RTCM updates every second. However, I received my I2C cables yesterday and hooked them up… nothing.

I’m a new user so I’m not allowed to upload pictures. I’ll describe here:
UBX-MON-TBUF - shows activity on UART1, UART2 and USB. Nothing on I2c or SPI.
UBX-Mon-IO - shows the following:

Parameter I2C UART1 UART2 USB SPI
RX bytes 0 0 0 654 0
TX bytes 0 70320120 105302 8197364 0
Parity/Drop Errors 0 0 0 0 0
Frameing Errors 0 0 0 0 0
Overrun Errors 0 0 0 0 0
Break Conditions 0 0 0 0 0

I have the I2C setup for RTCM in and out. I have all the RTCM messges set with I2C/1 checked

Nothing out, nothing in. Looks the same on both boards.

Please help!

Well I2C and SPI are demand driven from the MCU Host, and clocked.
The UARTs shovel out data regardless of whether anyone is listening or not.
If the I2C stalls you have to send a query form command to unstall it. ie UBX-MON-VER

I saw that on a forum last night (I think ublox).

This is what I see when I get to that page. The only thing it looks like I can do is to Poll. Is that what you’re suggesting?

I mean you need to push the UBX-MON-VER (0xB5,0x62,0x0A,0x04,0x00,0x00,0x0E,0x34), or another query, over the I2C connection because it stalls after 1.5 seconds of inattention from your MCU side.

I’m connected to the GPS modules via USB and they are connected to eachother via I2C. I’m not using a raspberry pi or anything connected via I2C. I don’t have a way to do this.

Also - I don’t think this is the issue. Even after a cold boot, there is nothing on the I2C bus.

Ok, well this is NOT how you’re going to determine that it’s “Not Working”, the receiver is the Slave device on the I2C bus, you are the Master, you’ll have to directly interact with it. By default it will be trying to transmit the same NMEA Sentences it just pushes out of UART1

Wait, are you connecting two F9P’s together via qwiic/I2C and trying to get them to talk to one another?

1 Like

In a point-to-point sense I2C between two slaves isn’t going to work automatically.
With two different slave addresses an MCU could manage them, move data, or configure. I’d only look to do this with relatively low bandwidth.
For example with a NEO-D9S + ZED-F9P you could use I2C to configure both, send parameters/keys, whilst freeing up UART TX to UART RX hard wired plumbing for the actual data transit. Say for RTCM3 or SPARTN transfer from radio or modems

Thanks guys. I’m a novice and just assumed since the boards had the ports it would work. Didn’t realize it was low bandwidth. I was trying to avoid soldering. So much for being lazy.

Thanks again!
Jay

2 Likes