I2C issue with 4-20mA Current Loop Transmitter I2C Mini Module

We are using the I2C 4-20mA Current Loop Transmitter I2C Mini Module together with a raspberry pi 4B as master. We see an issue with the voltage level on SDA line when the Transmitter is driving this line. The low level is around 0.8V in the acknowledge phase (driven low by the Mini Module). 0.8V is marginal with respect to input low level requirement of the rPI of maximum V_il=0.8V. We see occasional software errors (smbus2 Remote I/O error 121) which can be explained by the threshold not being met in the acknowledge pulse.
Analyzing the circuit it appears to be due to the ISO1541 on the mini module has the port side1 towards the master and not side2. Side 1 is for the low load side and it has a diode in the source of the driver which is giving rise to the 0.8V on voltage. So in reality the ISO1541 should be in the opposite direction - which it cant be due to the SCL being unidirectional. But ISO1540 could do this as it has bidirectional SCL also.
Anyway this is our assement.
Do others see problems with interfacing the 4-20mA Current Loop Transmitter I2C Mini Module to a master such as rPI?

Can you share a picture of your setup?

I could send a picture of the setup, but it is not that useful with regard to this issue
I can say - setup is an rpi 4B + a custom PCB and the minimodule. Total signal length is less than 10cm. All professionally manufactured.

The chain af the I2C is:
Rpi 4B – MAX3371 level shifter 3.3 to 5V – Minimodule
5V and 3.3V Power and GND is via the rPI IO connector.
I would rather suggest to share a plot of the I2C scope traces this is much more informative. I assume I can just upload an image here. Will have to produce it first though.

This product is frequently used with RPI.
We have not encountered any issues in past.

Ok good to know that it is working with rPI. Never the less I see marginal measurements on the I2C bus. And it also works for us with rPI but we see intermittent errors of Remote I/O error 121 using smbus2 (python). That is what worries us.

Please see the scope plots below. Measured at the SDA and SCL of the DAC board.
As seen the acknowledge from the DAC has a level of roughly 0.8V as expected from the datasheet of the ISO1541 side 1 driver. The driver has a diode in the source and thus can never pull lower than one diode drop. 0.8V is the required maximum of rpi.
The current in the driver is roughly (3.3V-0.8V)/1800ohm= 1.4mA given by the pull-up resistor in the rPI to 3.3v and 1k8 ohm.
Not shown below: Reading the internal DAC register exposes the same level of 0.8V in the low value of the SDA also in the read data phase. So the value of 0.8V is not special to the acknowledge signal but all driven signals from the dac.


Hello,

We have the same issue. We are measuring an 800mV offset, and we do not know where does this came from. We are using a RPI4 model B and 3V3 to 12V level shifter. We have used this I2C buffer before, but we had no issues in the past. We have tried to change the pullups at the 3.3V side 4.7k to 1.5k, but we measure the same 800 mV

We suspect the RPI, but we haven’t found the root cause yet.
Yellow: SDA, Blue: SCL
image

hi,
It is not clear what you setup is.
But if you use the ISO1541 it cannot pull lower than about one diode drop - this is very clear from the datasheet.
Increasing pull-up current only makes it worse as the diode drop increases.
According to rpi datasheet this driver should’nt work reliably with rpi due to the Rpi requirement Vin_low<0.8V or at least have a very poor noise margin. But normally it works. However noise on the gnd is very critical for the operation- Vcc noise less so - this is our experience.
I would avoid ISO1541 if possible.