Post Go back to editing

# Problem using ADG3304 as level shifter for SPI with Arduino

I am working with ADG3304 (Low Voltage, 1.15 V to 5.5 V, 4-Channel, Bidirectional Logic Level Translator). My plan is to use it to establish SPI communication (8MHz clock) between a 5V microcontroller (Arduino Uno) and a 3.3V magnetic sensor (MLX90393).

I am currently testing the ADG3304 in the following configuration (see PDF), but I cannot retrieve any valid data from the sensor.

If instead of the Level Translator I use a simple voltage divider (330Ω/220Ω) I manage to gather the correct data.

As an example in the attachment you will also find the clock signal at the slave side in both the logic level translator and the voltage divider configuration.

Is the Arduino max driving current (40mA) too close to the 36 mA required by the level translator? If not, what else could be the problem?

Thank you for considering my request.

attachments.zip
• Hi Federico,

You mentioned:

"Is the Arduino max driving current (40mA) too close to the 36 mA required by the level translator?"

Can you check if the Arduino (5V) really provides 40mA current to the ADG3304? We need to be sure that Arduino(5V) is really providing enough input driving current to the ADG3304.

Best Regards,

May

• Dear May,

This is the voltage drop on a 100Ω resistor in series with the Y1 pin (clock on the Arduino side).

This suggests  0.8V/100Ω= 8mA .

Unfortunately I can't find on the datasheet the input impedance of ADG3304, therefore I don't know how big is the impact of this 100Ω series resistor on the total impedance.

Kind regards,

Federico

• Hi Federico,

Can you confirm where does the 0.8V come from? also, in your schematic previously, there is no 100 ohms present at any of the Y-side. Can you please share me your complete schematic?

If you'll have a look at the Theory of Operation Section of the ADG3304 datasheet on page 17, there is 6k ohm present at either sides of the input/output. Please see figure below.

Best Regards,

May

• Dear May,

Since you asked me to check the current from the Arduino5V I have connected a 100 ohms resistor in series with the pin Y3 (see PDF) and I have measured the voltage drop across this resistor using an oscilloscope (see jpg).

(As the vertical axis is scaled to 2V the distance between two dots should be 2V/5=0.4 V thus the voltage drop on the resistor should be 2x0.4V=0.8V ).

Kind Regards,

Federico.

• Hi Federico,

With 6k ohms resistance at both inputs of the ADG3304, can you now confirm how much current is driving the input?

You can also measure this without using an external 100 ohms resistor by just placing an ammeter at the input pins.

Best Regards,

May

• This question has been assumed as answered either offline via email or with a multi-part answer. This question has now been closed out. If you have an inquiry related to this topic please post a new question in the applicable product forum.

Thank you,