I always try to make my circuits as low powered as possible. The current project includes 5V to 3.3V logic level conversion on multiple signals. I have attached a typical circuit which is quite popular. I know it works because I have a few breakout boards that I have used in prototyping.
However, are the pullup resistors on the high side or the low side really necessary in the Arduino world? For example, the Arduino uses the internal pullup resistor for SCL and SDA. So... is the 10K pullup attached to HV1 in the schematic necessary?
Most, if not all, I²C modules, have their own pullups on them. So... if I had, for example a 3.3V BMP280 that I wanted to use with a 5V Arduino, is the 10K pullup attached to LV1 in the schematic necessary?
Yes, I realize that the pins are initialized to INPUT and that puts them neither high nor low on the Arduino side. However, since the module on the 3.3V side has its pullup, it should be high on their side.
I don't think the pullups are necessary but what makes me unsure is that the Arduino defaults all pins to INPUT and thus leaves that "HV1" signal floating until it is either explicitly set as an OUTPUT or OUTPUT_PULLUP (which in this case Wire.begin would take care of).
So far I have only talked about I²C. Is SPI any different regarding the pullups for TTL conversion? Reset? The EN pin of an ESP-12?
It isn't the penny saved or the soldering time saved that has me asking. It's the 0.5mA per line and side that I would like to avoid if possible.
Thanks for your input.