There are two common cases:
1. A 2-pin quartz [crystal](https://www.onzuu.com/category/crystals)/[resonator](https://www.onzuu.com/category/resonators) (the MCU provides the amplifier → “Pierce oscillator”)
2. A 4-pin [oscillator](https://www.onzuu.com/category/oscillators) module (it outputs a ready-to-use clock)
I’ll cover both, plus how to choose the capacitors and the layout rules that make or break startup.

**1) Using a 2-pin crystal (most common)**
**Typical wiring (Pierce oscillator)**
```
C1 C2
OSC_IN o--||----+---------Xtal----||--o OSC_OUT
| |
(R) GND
|
GND
```
* OSC_IN / OSC_OUT are often labeled XTAL1/XTAL2, OSC1/OSC2, HSE_IN/HSE_OUT, etc.
* C1 and C2 are the load capacitors (usually NP0/C0G ceramic).
* R is optional (depends on MCU and crystal); common options:
* No [resistor](https://www.onzuu.com/category/resistors) (many MCUs already include the bias resistor internally)
* 1 MΩ in parallel across the crystal (bias / startup help on some designs)
* 0–100 Ω in series with OSC_OUT (or crystal) to reduce drive/EMI if needed
**How to pick the load capacitors (C1, C2)**
Crystals are specified with a load capacitance 𝐶𝐿(e.g., 8 pF, 12 pF, 18 pF).
If you use two equal caps C1 = C2 = C, the crystal “sees” approximately:
𝐶𝐿≈𝐶/2+𝐶𝑠𝑡𝑟𝑎𝑦
So a good starting estimate is:
𝐶≈2⋅(𝐶𝐿−𝐶𝑠𝑡𝑟𝑎𝑦)
Where 𝐶𝑠𝑡𝑟𝑎𝑦 (pin + trace + pad) is often 2–5 pF per side.
**Example (very common):**
Crystal CL = 18 pF, assume stray ≈ 3 pF →
C ≈ 2 × (18 − 3) = 30 pF → choose 27 pF or 33 pF (most people land on 22–33 pF depending on layout and MCU).
**Common “works most of the time” values:**
* For 8–16 MHz crystals: 18–33 pF (often 22 pF)
* For 32.768 kHz watch crystals: 6–12 pF (often 8–10 pF)
(LSE circuits are more sensitive to ESR and stray capacitance.)
**Crystal selection checklist**
* Frequency within MCU oscillator range (and allowed drive level)
* Correct CL value and acceptable ESR (especially important for 32 kHz crystals)
* Temperature tolerance and stability as needed
**2) Using a 4-pin oscillator module (XO/CMOS oscillator)**
An oscillator module already generates a clock. Wiring is simpler:
* VCC → supply (often 3.3 V or 5 V per part)
* GND → ground
* OUT → MCU clock input pin (often OSC_IN / EXTCLK / CLKIN)
* EN/OE (if present) → tie high (or to an MCU pin)
Important: with an oscillator module you usually connect only the input pin (OSC_IN). The MCU’s OSC_OUT pin is typically left unconnected.
Also ensure:
* The oscillator output level is compatible (CMOS 3.3 V into a 3.3 V MCU, etc.)
* Add local decoupling: 0.1 µF at the oscillator VCC pin (very close)
**3) Layout rules (this is where most failures come from)**
Do these and crystals “just work”:
* Place the crystal as close as possible to the MCU pins (a few mm if you can)
* Keep the two traces short, symmetric, and isolated
* Put C1/C2 right next to the MCU pins, and connect their ground to a clean ground with short return (often a dedicated via each)
* Avoid running other signals under/near the crystal traces (especially fast clocks, SPI, USB, DC/DC switch node)
* Avoid soldermask openings / long pads that add stray capacitance
* If you have EMI/noise issues: consider a guard ring ground around the oscillator area (board-dependent)
**4) Firmware/config steps (don’t forget this)**
Hardware can be perfect but it still won’t run if you don’t enable it:
* Select external crystal/oscillator mode in the MCU configuration:
* AVR: fuse bits (external crystal/clock)
* [STM32](https://www.ampheo.com/search/STM32): RCC clock config (HSE/LSE on, correct drive)
* [PIC](https://www.ampheo.com/search/PIC): oscillator configuration bits
* Set the correct frequency in toolchains if needed (for baud rate, delays, etc.)
**5) Quick troubleshooting**
If it doesn’t start oscillating:
* Wrong [capacitor](https://www.onzuu.com/category/capacitors) values (too big or too small) → try stepping C1/C2 up/down
* Crystal ESR too high (common with 32 kHz watch crystals)
* [MCU](https://www.ampheoelec.de/c/microcontrollers) drive strength too weak/strong → adjust drive settings (if available) or add small series resistor
* Layout too long/noisy → shorten/clean routing, move parts
* You selected “external clock” in firmware but wired a crystal (or vice versa)
Measuring tip: probing the crystal pins with a normal scope probe can stop oscillation. Use a 10× probe, short ground spring, or use the MCU’s clock-out feature if available.