I was implementing I2C on my Teensy 4.1 board and the board is 3.3V logic. I get data but it's choppy data. I have the SDA and SCL lines connected directly to the SDA and SCL lines of the device I am trying to read from.
I successfully received consistent data using I2C on an Arduino Mega 2560 board so I switched the board out with my Teensy4.1 board and that's where I observed the inconsistent data.
I have a level shifting device txs0108e and I tried using it with no success.
I guess I am just confused on what is causing this inconsistent reading on the I2C lines.
BTW the device I am trying to read from is a Smart Li-on battery SMBus communication.
Placing your pullups to the 3V3 line should work. If the parts are of the new specification the operation will be marginal as the specification changed. I use something in the 3.3K range. The outputs of the I2C drivers (in chip) are open drain and do not source any current. This supplied solely by the pull up resistors. If they are to high in value the rise times go to pot and you can get intermittent results. Try this after you get your speed set to the appropriate value. Slower would be OK. Here is a link to the specification.