Hi,
I am working on a project where i need to interface with my DAC through I2C pull up by 3.3V, through various forums, I came to conclusion that I cannot use Arduino UNO to interface with my DAC as it high level logic voltage is 3.5V, simple solution to the problem is to use level translator. But It will be better if I use a controller which works with I2C 3.3V logic. Any suggestion on the board is appreciated.
There are many 3.3V boards and even more 3.3V microcontrollers. In fact, the 5V Arduinos are more of an exception than the rule...
ESP-boards are 3.3V
STM32 boards are 3.3V
Several of the more modern/recent Arduino boards are 3.3V (just click on any Arduino board on this page https://www.arduino.cc/en/Main/Products and look under tech specs)
Indeed, and as far as I can tell from your question there's no reason why this solution wouldn't work...
That's the safe level, typically applicable to output pins. See the input pin voltage diagrams that start HIGH at about 2.6V for 5V Vcc, including hysteresis (0.05*Vcc=0.25V around Vcc/2=2.5V).
Thanks for your reply.
I know the solution works but it adds extra space and component.
Actually i am validating a circuit board (Used for Automotive application) which actually has some processor interface to the DAC and couple of other circuits too, but i am trying to validate the board without the use of processor i.e with other controller externally. Adding a level translator to the controller adds extra component.
If this needs to be qualified for automotive use I think most Arduino boards are not an option as they aren't qualified for this application. They may have a few types that are, but I never dived into it. Forget about the regular consumer boards in any case if this is a serious commercial application.
yeah sure! also i am not validating the whole board, just validation is going to be done on particular circuit (validate a specific ic in my case) on the board.
Ok, I get it; in that case requirements aren't very strict on the board. Basically any board in which the microcontroller runs on 3.3V you could assume the logic high on I2C to be 3.3V.
Of course in fact it's a little different, since on I2C neither master nor slave ever writes a HIGH level to either of the lines. The high level is just the level to which both lines are pulled up with external pullup resistors. Due to the limitations of voltages on digital pins combined with the voltage needed to be read reliably as HIGH, it's customary at least on the microcontroller side to pull up I2C lines to the Vcc of the microcontroller. On I2C slave devices the situation is often different, with their I2C pins being often (but not always!) tolerant to higher levels than the supply voltage of the chip itself.
So remember this: in I2C, a HIGH level is never actively written by either master or slave. The HIGH level is only constituted by the rail the pullup-resistors connect to.
In my case, i actually have a pull up resistor between my processor and DAC with 3.3V, since i am not using the processor looking for other controllers to externally interface with I2C line of the DAC (which actually have pullup resistor), wants to make sure its logic level is sufficient enough to communicate.
Now I understood the fact!