

The CH9329 is a USB to UART bridge controller designed to facilitate seamless communication between USB devices and UART (Universal Asynchronous Receiver-Transmitter) interfaces. It acts as a bridge, converting USB signals to UART signals and vice versa, enabling serial communication in embedded systems. The CH9329 supports a wide range of baud rates, making it versatile for various applications.








The CH9329 is a highly reliable and efficient component with the following key specifications:
The CH9329 is typically available in a 16-pin package. Below is the pin configuration and description:
| Pin Number | Pin Name | Description |
|---|---|---|
| 1 | VCC | Power supply input (3.3V to 5V) |
| 2 | GND | Ground |
| 3 | TXD | UART Transmit Data |
| 4 | RXD | UART Receive Data |
| 5 | RTS | Request to Send (flow control, optional) |
| 6 | CTS | Clear to Send (flow control, optional) |
| 7 | DTR | Data Terminal Ready (optional) |
| 8 | DSR | Data Set Ready (optional) |
| 9 | USB_DM | USB Data Minus |
| 10 | USB_DP | USB Data Plus |
| 11 | RESET | Reset input (active low) |
| 12 | NC | No connection |
| 13 | NC | No connection |
| 14 | NC | No connection |
| 15 | NC | No connection |
| 16 | NC | No connection |
The CH9329 is straightforward to use in a circuit. Below are the steps and best practices for integrating it into your design:
Below is an example of how to use the CH9329 with an Arduino UNO for serial communication:
#include <SoftwareSerial.h>
// Define RX and TX pins for SoftwareSerial
SoftwareSerial mySerial(10, 11); // RX = pin 10, TX = pin 11
void setup() {
// Start the hardware serial communication (USB to PC)
Serial.begin(9600);
// Start the software serial communication (to CH9329)
mySerial.begin(9600);
Serial.println("CH9329 Communication Initialized");
}
void loop() {
// Check if data is available from the CH9329
if (mySerial.available()) {
// Read data from CH9329 and send it to the Serial Monitor
char data = mySerial.read();
Serial.print("Received: ");
Serial.println(data);
}
// Check if data is available from the Serial Monitor
if (Serial.available()) {
// Read data from Serial Monitor and send it to the CH9329
char data = Serial.read();
mySerial.write(data);
Serial.print("Sent: ");
Serial.println(data);
}
}
No Communication Between USB and UART
Device Not Recognized by USB Host
Data Corruption or Loss
CH9329 Not Responding
Q1: Can the CH9329 support higher baud rates?
A1: The CH9329 supports baud rates up to 115200 bps. For higher baud rates, consider alternative USB-to-UART bridge controllers.
Q2: Is the CH9329 compatible with 1.8V logic levels?
A2: No, the CH9329 operates at 3.3V or 5V logic levels. Use a level shifter if interfacing with 1.8V devices.
Q3: Do I need external crystal oscillators for the CH9329?
A3: No, the CH9329 has an internal oscillator and does not require an external crystal.
Q4: Can I use the CH9329 with a Raspberry Pi?
A4: Yes, the CH9329 can be connected to the UART pins of a Raspberry Pi for serial communication.
By following this documentation, you can effectively integrate the CH9329 into your projects and troubleshoot common issues.