seiko_epson_TSX_3225 module#

Seiko Epson TSX-3225 Crystal Units#

One component class for the TSX-3225 series: 16 MHz to 50 MHz fundamental crystal units in a 3.2 mm x 2.5 mm x 0.6 mm four-pad package, from the Epson FA-238V / FA-238 / TSX-3225 data sheet.

The data sheet asks for the load capacitance to be specified and lists the frequency tolerance and frequency versus temperature characteristics as per-order requirements, so the series has no ordering code that can be built from those fields. Each orderable unit is instead a product number. The data sheet prints it as X1E000021xxxx17; the catalog numbers used here are the thirteen-character X1E000021xxxx and omit that two-digit 17 suffix. TSX3225 takes the specification fields as constructor arguments and looks the product number up in seiko_epson_TSX_3225.csv, the TSX-3225 rows of Epson’s product-search catalog (https://download.epsondevice.com/td/ps/xtal_mhz.json). A combination the catalog does not list raises ValueError; a combination it lists under more than one product number needs part_number= to choose one.

Pads 1 and 3 are the crystal; pads 2 and 4 are connected to the cover and go to ground.

class CrystalComponent(*args, **kwargs)[source]#

Bases: Component

OSC1: Port = Port()#
OSC2: Port = Port()#
class CrystalResonator(*, load_capacitance, shunt_capacitance, motional_capacitance, esr, frequency, frequency_tolerance, max_drive_level)[source]#

Bases: CrystalComponent

A two-terminal crystal with the electrical parameters a load-capacitor calculation needs. shunt_capacitance and motional_capacitance are None when the manufacturer does not publish them.

Parameters:
  • load_capacitance (float)

  • shunt_capacitance (float | None)

  • motional_capacitance (float | None)

  • esr (float)

  • frequency (float)

  • frequency_tolerance (float)

  • max_drive_level (float)

load_capacitance: float#
shunt_capacitance: float | None#
motional_capacitance: float | None#
esr: float#
frequency: float#
frequency_tolerance: float#
max_drive_level: float#
add_load_caps(gnd, stray_capacitance=5e-12)[source]#

Add a C0G load capacitor for each crystal pin to the current circuit, sized to the nearest E24 value of 2 * (load_capacitance - stray_capacitance), and return both.

Each capacitor’s p1 joins the crystal pin it serves through ShortTrace(cap.p1, <OSC1 or OSC2>), so placement and routing keep it close to that pin, and its p2 joins gnd.

The returned capacitors already belong to the current circuit. Read them, but do not assign them to an attribute of the circuit as well: each would then be registered twice, and translating the design fails with “Child object … encountered multiple times”.

Return type:

tuple[Capacitor, Capacitor]

Parameters:
class CatalogEntry(part_number, frequency_mhz, load_capacitance_pf, tolerance_ppm, stability_ppm, temperature_min_c, temperature_max_c, esr_max_ohm, drive_level_max_uw)[source]#

Bases: object

One row of seiko_epson_TSX_3225.csv, in the catalog’s units.

Parameters:
part_number: str#
frequency_mhz: float#
load_capacitance_pf: float#
tolerance_ppm: float#
stability_ppm: float#
temperature_min_c: float#
temperature_max_c: float#
esr_max_ohm: float#
drive_level_max_uw: float#
catalog()[source]#

The TSX-3225 product numbers Epson lists, with their specifications.

Return type:

tuple[CatalogEntry, ...]

class RectangleSMDPad(*args, **kwargs)[source]#

Bases: Pad

shape: Shape | PadShape = Polygon(elements=((0.7, 0.575), (-0.7, 0.575), (-0.7, -0.575), (0.7, -0.575)), holes=())#

The geometric shape of the pad or a PadShape to specify the regular shape and the shape when non-functional pads are removed. Can be overridden on a per-layer basis by shapes. When using a PadShape with nfp, the nfp removal does not apply to surface layers, to have surface nfp removal, use the shapes mapping to declare top and bottom explicitly.

soldermask = Soldermask(shape=Polygon(elements=((0.725, 0.6), (-0.725, 0.6), (-0.725, -0.6), (0.725, -0.6)), holes=()), side=<Side.Top: 0>)#
paste = Paste(shape=Polygon(elements=((0.725, 0.6), (-0.725, 0.6), (-0.725, -0.6), (0.725, -0.6)), holes=()), side=<Side.Top: 0>)#
class TSX3225Package(*, load_capacitance, shunt_capacitance, motional_capacitance, esr, frequency, frequency_tolerance, max_drive_level)[source]#

Bases: CrystalResonator

The pins, symbol and recommended footprint every TSX-3225 unit shares.

Pads 1 and 3 are the crystal (OSC1, OSC2); pads 2 and 4 are connected to the cover (GND1, GND0). A subclass supplies the electrical parameters, the part number and the data sheet.

Parameters:
  • load_capacitance (float)

  • shunt_capacitance (float | None)

  • motional_capacitance (float | None)

  • esr (float)

  • frequency (float)

  • frequency_tolerance (float)

  • max_drive_level (float)

manufacturer: str | None = 'Seiko Epson'#

Manufacturer for this component.

reference_designator_prefix: str | None = 'X'#

Reference designator prefix for this component. This will be used to generate a unique reference designator for each component of the same type.

Note

This field is a required data point for matching components between builds. If this value changes (including changing from unset to set), it will be treated as a new component, even if nothing else changes.

GND0 = Port()#
GND1 = Port()#
symbol = symbol()#
landpattern = landpattern()#
class TSX3225(*, frequency, load_capacitance, frequency_tolerance, frequency_stability, temperature_range, part_number=None)[source]#

Bases: TSX3225Package

Seiko Epson TSX-3225 crystal unit, 3.2 mm x 2.5 mm, selected by its specification.

Parameters:
  • frequency (float) – nominal frequency in Hz.

  • load_capacitance (float) – load capacitance CL in farads.

  • frequency_tolerance (float) – frequency tolerance at +25 C, as a fraction (10e-6 for +/-10 ppm).

  • frequency_stability (float) – frequency versus temperature over temperature_range, as a fraction.

  • temperature_range (tuple[float, float]) – the range frequency_stability holds over, as (minimum, maximum) in degrees Celsius.

  • part_number (str | None) – the product number to use when the catalog lists the specification under more than one. It must be one of those.

Raises:

ValueError – the catalog lists no product number for the specification; lists several and part_number is not given; or part_number is not one the catalog lists for it.

datasheet = 'https://download.epsondevice.com/td/pdf/brief/TSX-3225_en.pdf'#
frequency_stability: float#
temperature_range: tuple[float, float]#
class TSX_3225_32_0000MF10Z_W6[source]#

Bases: TSX3225Package

32 MHz +/-10 ppm crystal, 12 pF, 40 ohms, ordered by its distributor code. Its values come from the distributor’s data sheet. No source here ties the distributor code to one of the catalog’s product numbers, so the unit takes no catalog row and has no frequency_stability or temperature_range.

mpn: str | None = 'TSX-3225 32.0000MF10Z-W6'#

Manufacturer part number for this component.

datasheet = 'https://datasheet.lcsc.com/lcsc/2201301130_Seiko-Epson-TSX-3225-32-0000MF10Z-W6_C1986412.pdf'#
Device#

alias of TSX_3225_32_0000MF10Z_W6