There's a few problems. Designing circuits that are only partially powered are hard unless you know a lot about how the ICs are designed.
When 3.3V supply provides 3.3V, the 25LC512 is powered via the diode which drops some voltage. If the diode is approximated to drop about 0.7V, the VI2C supply for the EEPROM is about 2.6V. That is very close to the 2.5V ...
You need to think about the voltage drop across the diode (You can assume 0.7V for a bulk standard diode). Make sure the rail voltage specifications for your I2C eeprom do allow this in case the 3V3 rail is used. You also should add decoupling capacitors to your device on the VI2C line (100nF and 1uF) for good measure. Also make sure, that your application ...
The folks at Adafruit have thought of this for you. If you go to the Adafruit site you linked to for the HMC5883L, they tell you this about the SDA and SCL lines for I2C:
So my interpretation of this is that you can use external pullup resistors to 5V.
The Atmega, on the other hand, has digital high defined as such by the datasheet:
With 5V source, 0.7*VDD ...
You have added an absurdly large amount of pull-up resistors to the I2C bus.
The Raspberry Pi or the chips you are talking to can't communicate with such strong total value of pull-ups.
The Raspberry Pi itself supposedly has 1.8k pull-ups.
The interface hat has 2.2k pull-ups.
Each of the TCA9548 modules have 4.7k pull-ups on the main port, and there's four ...
Since the datasheet does not specify any requirement, it can be directly connected to VDD.
So a resistor is not necessary. However, nothing prevents putting a resistor to pull the pin up. It does not make much difference, as long as the resistor has a reasonable value, like between 0 ohms and 100 kohms.
There are several issues with your design.
VDD_IO pins of the LSM303 are connected to ground
Vref pin of ADC128D818 connected to 5V which exceeds the supply voltage
possibly more, I have not made an exhaustive check.
The first of these is probably sufficient to cause the problem.
Very tight 5 mil clearances everywhere and traces getting ...
Using a resistor to pull up the pin, will make the pull-up weaker (both adding the resistor and the need of longer traces) and the pin will be vulnerable to noise (for example if a antenna radiates nearby, it will disrupt the pull up, and it may cause the pin to read 0 instead of 1).
And yes, it will draw a little bit of current, but usually the pin is ...
Logic low is GND and logic high is VCC. No resistor needed.
If you would add a resistor (with a large value) to VCC, a small current would lower the voltage at the pin and it would no longer be at logic high.
Instead of a diode, use an ideal diode made up of a P-channel MOSFET with the gate to ground. It will work just like a diode, but it will have 0 voltage drop, avoiding the issues others have brought up.
Thus, the I2C lines are referenced to a voltage of 5 volts
Nope. They are referenced to a GND.
connecting 3.3 volts from the Nano to the corresponding pin on the
Don't do this! The 3.3V on the sensor is an output.
The HMC5883L module has pull-up resistors on it already for both 5V
While they are indeed pull-up resistors, they are also ...
In general it is possible to interoperate 5V and 3.3V systems with I2C - provided that (a) you pull-up to 3.3V and (b) the minimum high-level for the 5V side is below 3.3V. You’d have to look at datasheets for specific devices to be sure, but I’ve certainly done this successfully with a handful of devices.
The business with pinning, I/O drivers/buffers and constraints is very vendor-specific compared to the actual logic. That's why IP cores usually implement the logic only and leave you to connect, drive and constrain the external signals. There are also details that are board-specific (internal or external pullups? clock/trace skew?) which IP core designers ...
It's a datasheet mistake, introduced between different versions of the datasheet.
I was asked to help with a design using that MFRC522 several years ago and I remembered a different version of that table.
Here is the equivalent table from old datasheet v3.2 :
As you see, that uses colors to differentiate between signals which are Input, Outputs and ...
This strange behavior lasts event after power-cycling and MCU reset.
This behavior can be repaired by reheating the PCB again even with
temperature which is lower than melt-point of used solder-paste.
Reheating, cooling to freeze, twisting the PCB makes the circuitry work momentarily, but breaks eventually. That is a popular problem due to marginal PCB ...