Cirkit Designer Logo
Cirkit Designer
Your all-in-one circuit design IDE
Home / 
Component Documentation

How to Use PCA9306: Examples, Pinouts, and Specs

Image of PCA9306
Cirkit Designer LogoDesign with PCA9306 in Cirkit Designer

Introduction

The PCA9306 is a dual bidirectional I2C bus buffer designed to facilitate level shifting between two different voltage levels. This component enables seamless communication between devices operating at different I2C voltage levels, making it an essential tool for interfacing modern low-voltage microcontrollers with legacy or higher-voltage peripherals. The PCA9306 is particularly useful in applications where I2C devices with different voltage requirements need to coexist on the same bus.

Explore Projects Built with PCA9306

Use Cirkit Designer to design, explore, and prototype these projects online. Some projects support real-time simulation. Click "Open Project" to start designing instantly!
Battery-Powered Raspberry Pi Pico GPS Tracker with Sensor Integration
Image of Copy of CanSet v1: A project utilizing PCA9306 in a practical application
This circuit is a data acquisition and communication system powered by a LiPoly battery and managed by a Raspberry Pi Pico. It includes sensors (BMP280, MPU9250) for environmental data, a GPS module for location tracking, an SD card for data storage, and a WLR089-CanSAT for wireless communication. The TP4056 module handles battery charging, and a toggle switch controls power distribution.
Cirkit Designer LogoOpen Project in Cirkit Designer
Battery-Powered Health Monitoring System with Nucleo WB55RG and OLED Display
Image of Pulsefex: A project utilizing PCA9306 in a practical application
This circuit is a multi-sensor data acquisition system that uses a Nucleo WB55RG microcontroller to interface with a digital temperature sensor (TMP102), a pulse oximeter and heart-rate sensor (MAX30102), and a 0.96" OLED display via I2C. Additionally, it includes a Sim800l module for GSM communication, powered by a 3.7V LiPo battery.
Cirkit Designer LogoOpen Project in Cirkit Designer
ESP32-Based Battery-Powered Multi-Sensor System
Image of Dive sense: A project utilizing PCA9306 in a practical application
This circuit consists of a TP4056 module connected to a 3.7V LiPo battery, providing a charging interface for the battery. The TP4056 manages the charging process by connecting its B+ and B- pins to the battery's positive and ground terminals, respectively.
Cirkit Designer LogoOpen Project in Cirkit Designer
Raspberry Pi Pico-Based Navigation Assistant with Bluetooth and GPS
Image of sat_dish: compass example: A project utilizing PCA9306 in a practical application
This circuit features a Raspberry Pi Pico microcontroller interfaced with an HC-05 Bluetooth module for wireless communication, an HMC5883L compass module for magnetic field measurement, and a GPS NEO 6M module for location tracking. The Pico is configured to communicate with the HC-05 via serial connection (TX/RX), with the compass module via I2C (SCL/SDA), and with the GPS module via serial (TX/RX). Common power (VCC) and ground (GND) lines are shared among all modules, indicating a unified power system.
Cirkit Designer LogoOpen Project in Cirkit Designer

Explore Projects Built with PCA9306

Use Cirkit Designer to design, explore, and prototype these projects online. Some projects support real-time simulation. Click "Open Project" to start designing instantly!
Image of Copy of CanSet v1: A project utilizing PCA9306 in a practical application
Battery-Powered Raspberry Pi Pico GPS Tracker with Sensor Integration
This circuit is a data acquisition and communication system powered by a LiPoly battery and managed by a Raspberry Pi Pico. It includes sensors (BMP280, MPU9250) for environmental data, a GPS module for location tracking, an SD card for data storage, and a WLR089-CanSAT for wireless communication. The TP4056 module handles battery charging, and a toggle switch controls power distribution.
Cirkit Designer LogoOpen Project in Cirkit Designer
Image of Pulsefex: A project utilizing PCA9306 in a practical application
Battery-Powered Health Monitoring System with Nucleo WB55RG and OLED Display
This circuit is a multi-sensor data acquisition system that uses a Nucleo WB55RG microcontroller to interface with a digital temperature sensor (TMP102), a pulse oximeter and heart-rate sensor (MAX30102), and a 0.96" OLED display via I2C. Additionally, it includes a Sim800l module for GSM communication, powered by a 3.7V LiPo battery.
Cirkit Designer LogoOpen Project in Cirkit Designer
Image of Dive sense: A project utilizing PCA9306 in a practical application
ESP32-Based Battery-Powered Multi-Sensor System
This circuit consists of a TP4056 module connected to a 3.7V LiPo battery, providing a charging interface for the battery. The TP4056 manages the charging process by connecting its B+ and B- pins to the battery's positive and ground terminals, respectively.
Cirkit Designer LogoOpen Project in Cirkit Designer
Image of sat_dish: compass example: A project utilizing PCA9306 in a practical application
Raspberry Pi Pico-Based Navigation Assistant with Bluetooth and GPS
This circuit features a Raspberry Pi Pico microcontroller interfaced with an HC-05 Bluetooth module for wireless communication, an HMC5883L compass module for magnetic field measurement, and a GPS NEO 6M module for location tracking. The Pico is configured to communicate with the HC-05 via serial connection (TX/RX), with the compass module via I2C (SCL/SDA), and with the GPS module via serial (TX/RX). Common power (VCC) and ground (GND) lines are shared among all modules, indicating a unified power system.
Cirkit Designer LogoOpen Project in Cirkit Designer

Common Applications and Use Cases

  • Level shifting for I2C communication between 1.2V, 1.8V, 3.3V, and 5V devices.
  • Interfacing low-voltage microcontrollers with higher-voltage sensors or peripherals.
  • Multi-voltage I2C bus systems in embedded designs.
  • Consumer electronics, industrial automation, and IoT devices.

Technical Specifications

Key Technical Details

  • Operating Voltage Range (VREF1): 1.0V to 5.5V
  • Operating Voltage Range (VREF2): 1.8V to 5.5V
  • Maximum I2C Clock Frequency: 400 kHz
  • Low ON-State Resistance (RON): 6Ω (typical)
  • Bidirectional Communication: Supports both master-to-slave and slave-to-master data flow.
  • Operating Temperature Range: -40°C to +85°C
  • Package Options: Available in small TSSOP-8 and VSSOP-8 packages.

Pin Configuration and Descriptions

The PCA9306 is typically available in an 8-pin package. Below is the pinout and description:

Pin Name Type Description
1 VREF1 Power Input Reference voltage for the lower voltage side of the I2C bus.
2 EN Enable Input Active-high enable pin. Pull high to enable the device, low to disable it.
3 L1 I/O Low-voltage side I2C data line (SDA or SCL).
4 L2 I/O Low-voltage side I2C clock line (SDA or SCL).
5 H2 I/O High-voltage side I2C clock line (SDA or SCL).
6 H1 I/O High-voltage side I2C data line (SDA or SCL).
7 GND Ground Ground connection.
8 VREF2 Power Input Reference voltage for the higher voltage side of the I2C bus.

Usage Instructions

How to Use the PCA9306 in a Circuit

  1. Power Connections:

    • Connect the lower voltage supply (e.g., 1.8V) to the VREF1 pin.
    • Connect the higher voltage supply (e.g., 3.3V or 5V) to the VREF2 pin.
    • Ensure that both voltage supplies share a common ground connected to the GND pin.
  2. Enable the Device:

    • Pull the EN pin high to enable the PCA9306. If unused, connect it to VREF2.
  3. I2C Bus Connections:

    • Connect the low-voltage I2C lines (SDA and SCL) to the L1 and L2 pins, respectively.
    • Connect the high-voltage I2C lines (SDA and SCL) to the H1 and H2 pins, respectively.
  4. Pull-Up Resistors:

    • Place pull-up resistors on both the low-voltage and high-voltage sides of the I2C bus. The resistor values typically range from 4.7kΩ to 10kΩ, depending on the bus capacitance and voltage levels.
  5. Verify Voltage Levels:

    • Ensure that the voltage on VREF1 is less than or equal to the voltage on VREF2.

Important Considerations and Best Practices

  • The PCA9306 is designed for I2C buses and may not work reliably with other protocols.
  • Avoid exceeding the maximum voltage ratings for VREF1 and VREF2 to prevent damage.
  • Ensure proper decoupling capacitors (e.g., 0.1µF) are placed near the VREF1 and VREF2 pins to stabilize the power supply.
  • The device does not provide drive strength; ensure that the I2C master and slave devices can handle the required bus capacitance.

Example: Using PCA9306 with Arduino UNO

Below is an example of connecting a 3.3V I2C sensor to a 5V Arduino UNO using the PCA9306.

Circuit Diagram

  • VREF1: Connect to 3.3V (sensor side).
  • VREF2: Connect to 5V (Arduino side).
  • L1, L2: Connect to the SDA and SCL lines of the 3.3V sensor.
  • H1, H2: Connect to the SDA and SCL lines of the Arduino UNO.

Arduino Code Example

#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 sensor at I2C address 0x40
  Wire.beginTransmission(0x40); // Start communication with the sensor
  Wire.write(0x00); // Send a command or register address
  Wire.endTransmission(); // End the transmission
}

void loop() {
  Wire.requestFrom(0x40, 2); // Request 2 bytes of data from the sensor
  if (Wire.available() == 2) { // Check if 2 bytes are available
    int data = Wire.read() << 8 | Wire.read(); // Read and combine the data
    Serial.println(data); // Print the data to the serial monitor
  }
  delay(1000); // Wait for 1 second before the next read
}

Troubleshooting and FAQs

Common Issues and Solutions

  1. No Communication on the I2C Bus:

    • Cause: Incorrect pull-up resistor values or missing pull-up resistors.
    • Solution: Verify that pull-up resistors are present on both sides of the bus and are within the recommended range (4.7kΩ to 10kΩ).
  2. Voltage Levels Not Matching:

    • Cause: Incorrect connections to VREF1 or VREF2.
    • Solution: Ensure that VREF1 is connected to the lower voltage and VREF2 to the higher voltage.
  3. Device Not Responding:

    • Cause: The EN pin is not pulled high.
    • Solution: Pull the EN pin high or connect it to VREF2.
  4. Data Corruption on the Bus:

    • Cause: Excessive bus capacitance or noise.
    • Solution: Use shorter wires, reduce bus capacitance, and ensure proper decoupling capacitors are in place.

FAQs

  • Q: Can the PCA9306 be used for SPI communication?
    A: No, the PCA9306 is specifically designed for I2C communication and may not work reliably with SPI or other protocols.

  • Q: What happens if the EN pin is left floating?
    A: The device may not function correctly. Always pull the EN pin high to enable the PCA9306.

  • Q: Can I use the PCA9306 for 1.2V to 3.3V level shifting?
    A: Yes, the PCA9306 supports level shifting between 1.0V and 5.5V, making it suitable for 1.2V to 3.3V applications.

  • Q: Do I need pull-up resistors on both sides of the bus?
    A: Yes, pull-up resistors are required on both the low-voltage and high-voltage sides of the I2C bus for proper operation.