

The SparkFun PCA9306 Breakout is a bi-directional I2C level shifter designed to facilitate communication between devices operating at different voltage levels. It supports voltage ranges from 1.8V to 5V, making it an ideal solution for interfacing 3.3V and 5V I2C devices. This breakout board is compact, easy to use, and highly reliable for voltage translation in I2C communication.








| Parameter | Value |
|---|---|
| Voltage Range (VREF1) | 1.8V to 5V |
| Voltage Range (VREF2) | 1.8V to 5V |
| Maximum I2C Frequency | 400 kHz |
| Communication Protocol | I2C |
| Operating Temperature | -40°C to +85°C |
| Dimensions | 0.4" x 0.4" (10.16mm x 10.16mm) |
| Pin Name | Description |
|---|---|
| VREF1 | Reference voltage for the low-voltage side (1.8V to 5V). |
| VREF2 | Reference voltage for the high-voltage side (1.8V to 5V). |
| GND | Ground connection. |
| SCL1 | Low-voltage side I2C clock line. |
| SDA1 | Low-voltage side I2C data line. |
| SCL2 | High-voltage side I2C clock line. |
| SDA2 | High-voltage side I2C data line. |
Power Connections:
VREF1 pin.VREF2 pin.GND pin to the ground of your circuit.I2C Connections:
SCL1 and SDA1) to the I2C pins of your low-voltage device (e.g., microcontroller).SCL2 and SDA2) to the I2C pins of your high-voltage device (e.g., sensor or module).Pull-Up Resistors:
Verify Connections:
VREF1 and VREF2 match the operating voltages of the connected devices.Below is an example of connecting the SparkFun PCA9306 Breakout to an Arduino UNO and a 5V I2C sensor.
VREF1 → 3.3V (Arduino UNO 3.3V pin)VREF2 → 5V (Arduino UNO 5V pin)GND → GND (common ground)SCL1 → A5 (Arduino I2C clock pin)SDA1 → A4 (Arduino I2C data pin)SCL2 → SCL pin of the 5V sensorSDA2 → SDA pin of the 5V sensor#include <Wire.h> // Include the Wire library for I2C communication
void setup() {
Wire.begin(); // Initialize I2C communication
Serial.begin(9600); // Start serial communication for debugging
// Example: Communicate with a 5V I2C sensor
Wire.beginTransmission(0x40); // Replace 0x40 with your sensor's I2C address
Wire.write(0x00); // Example: Write a command to the sensor
Wire.endTransmission();
Serial.println("I2C communication initialized.");
}
void loop() {
Wire.requestFrom(0x40, 2); // Request 2 bytes from the sensor
if (Wire.available() == 2) {
int data = Wire.read() << 8 | Wire.read(); // Read and combine two bytes
Serial.print("Sensor Data: ");
Serial.println(data);
}
delay(1000); // Wait 1 second before the next request
}
No Communication Between Devices:
VREF1 and VREF2 are connected to the correct voltage levels.Data Corruption or Noise:
Overheating or Damage:
VREF1 and VREF2 do not exceed the specified range (1.8V to 5V).Q: Can the PCA9306 be used for SPI communication?
A: No, the PCA9306 is specifically designed for I2C communication and does not support SPI.
Q: Do I need pull-up resistors on both sides of the level shifter?
A: Yes, pull-up resistors are required on both the low-voltage and high-voltage sides of the I2C bus for proper operation.
Q: What is the maximum I2C speed supported by the PCA9306?
A: The PCA9306 supports I2C speeds up to 400 kHz.
This documentation provides a comprehensive guide to using the SparkFun PCA9306 Breakout for I2C level shifting. By following the instructions and best practices outlined above, you can ensure reliable and efficient communication between devices operating at different voltage levels.