diff --git a/edg/abstract_parts/IoControllerWrapper.py b/edg/abstract_parts/IoControllerWrapper.py index f9d2b3ff5..d7bdcc196 100644 --- a/edg/abstract_parts/IoControllerWrapper.py +++ b/edg/abstract_parts/IoControllerWrapper.py @@ -5,6 +5,7 @@ from .IoController import BaseIoController +@non_library class BaseIoControllerModelable(BaseIoController): """Base class for a BaseIoController that can (optionally) be used as a (non-physical) model. This only adds parameters as a standard interface and is not functional. @@ -17,9 +18,11 @@ def __init__( self._model = self.ArgParameter(_model) self._allowed_pins = self.ArgParameter(_allowed_pins) - self.generator_param(self._allowed_pins) + if isinstance(self, GeneratorBlock): + self.generator_param(self._allowed_pins) +@non_library class BaseIoControllerWrapped(BaseIoController): """Base class for IoController wrapped blocks, particularly footprints that are used with an outer WrapperSubboardBlock to implement e.g. a dev board or module around a modeling subcircuit. @@ -156,6 +159,7 @@ def _make_pinning( return pinning +@non_library class BaseIoControllerWrapper(BaseIoController): """Base class for a block that contains a BaseIoControllerWrapped as the physical footprint as well as a non-physical device model. diff --git a/edg/circuits/PowerConditioning.py b/edg/circuits/PowerConditioning.py index 1093c24db..82745b003 100644 --- a/edg/circuits/PowerConditioning.py +++ b/edg/circuits/PowerConditioning.py @@ -347,7 +347,10 @@ def __init__( optional=True, doc="Allows the button state to be read independently of the control signal. Open-drain.", ) - self.btn_in = self.Port(DigitalBidir.empty(), doc="Should be connected to a button output. Do not connect IO") + self.btn_in = self.Port( + DigitalBidir.empty(), + doc="Connect to button that pulls down to GND to turn on power. Do not connect to GPIO.", + ) self.control = self.Port( DigitalSink.empty(), doc="external control to latch the power on" ) # digital level control - gnd-referenced NFET gate diff --git a/edg/electronics_interfaces/DigitalPorts.py b/edg/electronics_interfaces/DigitalPorts.py index 023cb5e70..f2148de89 100644 --- a/edg/electronics_interfaces/DigitalPorts.py +++ b/edg/electronics_interfaces/DigitalPorts.py @@ -608,6 +608,9 @@ def __init__( self.pulldown_capable: BoolExpr = self.Parameter(BoolExpr(pulldown_capable)) self._bridged_internal: BoolExpr = self.Parameter(BoolExpr(_bridged_internal)) + def as_voltage_source(self) -> VoltageSource: + return self._convert(DigitalSourceAdapterVoltageSource()) + class DigitalSingleSourceFake: @staticmethod diff --git a/edg/parts/connector/SwdHeaders.py b/edg/parts/connector/SwdHeaders.py index 8dfff6615..f531fec7c 100644 --- a/edg/parts/connector/SwdHeaders.py +++ b/edg/parts/connector/SwdHeaders.py @@ -51,35 +51,3 @@ def contents(self) -> None: self.conn = self.Block(TagConnect(6)).connected( {"1": self.pwr, "2": self.swd.swdio, "3": self.reset, "4": self.swd.swclk, "5": self.gnd, "6": self.swo} ) - - -class SwdCortexTargetTc2050( - SwdCortexTargetConnector, SwdCortexTargetConnectorReset, SwdCortexTargetConnectorSwo, SwdCortexTargetConnectorTdi -): - """UNOFFICIAL tag connect SWD header, maintaining physical pin compatibility with the 2x05 1.27mm header. - NOT RECOMMENDED for use, this is a legacy artifact and will be removed. - Use one of the official pinnings instead.""" - - @override - def contents(self) -> None: - super().contents() - - self.gnd.init_from(Ground()) - self.pwr.init_from(VoltageSink()) - self.swd.init_from(SwdHostPort()) - self.swo.init_from(DigitalBidir()) - self.tdi.init_from(DigitalBidir()) - # reset modeled as pulldown to not conflict with other drivers, technically an open-drain - self.reset.init_from(DigitalSource.pulldown_from_supply(self.gnd)) - - self.conn = self.Block(TagConnect(10)).connected( - { - "1": self.pwr, - ("2", "3", "5"): self.gnd, - "10": self.swd.swdio, - "9": self.swd.swclk, - "8": self.swo, - "7": self.tdi, - "6": self.reset, - } - ) diff --git a/edg/parts/connector/__init__.py b/edg/parts/connector/__init__.py index 7b60d479b..41e2f2ebe 100644 --- a/edg/parts/connector/__init__.py +++ b/edg/parts/connector/__init__.py @@ -53,4 +53,4 @@ # Applications from .SwdHeaders import SwdCortexTargetHeader -from .SwdHeaders import SwdCortexTargetTagConnect, SwdCortexTargetTc2050 +from .SwdHeaders import SwdCortexTargetTagConnect diff --git a/edg/parts/microcontroller/Ch32v003.py b/edg/parts/microcontroller/Ch32v003.py new file mode 100644 index 000000000..660615126 --- /dev/null +++ b/edg/parts/microcontroller/Ch32v003.py @@ -0,0 +1,249 @@ +from typing import * + +from typing_extensions import override + +from ...circuits import * +from ...vendor_parts.jlc.JlcPart import JlcPart +from ..connector.Headers import PinHeader254 +from ..connector.TagConnect import TagConnect + + +@abstract_block_default(lambda: Ch32vSdiHeader254) +class Ch32vSdiHeader(ProgrammingConnector): + """Abstract programming header for the CH32V using the one-pin SDI interface with SWIO pin.""" + + def __init__(self) -> None: + super().__init__() + + self.pwr = self.Port(VoltageSink.empty(), [Power]) + self.gnd = self.Port(Ground.empty(), [Common]) + self.swio = self.Port(DigitalBidir.empty()) + self.reset = self.Port(DigitalBidir.empty(), optional=True) # may not be connected internally + + +class Ch32vSdiHeader254(Ch32vSdiHeader): + """3-pin minimal programming header for CH32V.""" + + @override + def contents(self) -> None: + super().contents() + + self.gnd.init_from(Ground()) + self.pwr.init_from(VoltageSink()) + self.swio.init_from(DigitalBidir()) + self.reset.init_from(DigitalBidir()) # not connected + + self.conn = self.Block(PinHeader254()).connected({"1": self.pwr, "2": self.gnd, "3": self.swio}) + + +class Ch32vSdiTc2030(Ch32vSdiHeader): + """UNOFFICIAL tag connect header, based on the SWD pinout and mapping SWDIO to SWIO.""" + + @override + def contents(self) -> None: + super().contents() + + self.gnd.init_from(Ground()) + self.pwr.init_from(VoltageSink()) + self.swio.init_from(DigitalBidir()) + self.reset.init_from(DigitalBidir()) + + self.conn = self.Block(TagConnect(6)).connected({"1": self.pwr, "5": self.gnd, "2": self.swio, "3": self.reset}) + # unused: 4 = swclk, 6 = swo + + +class Ch32v003_Device( + IoControllerI2cTarget, + InternalSubcircuit, + BaseIoControllerPinmapGenerator, + GeneratorBlock, + JlcPart, + FootprintBlock, +): + _PIN_MAPPING = { # F4P6 version, TSSOP-20 + "PD4": "1", + "PD5": "2", + "PD6": "3", + # "PD7": "4", # NRST + # "PA1": "5", # OSCI + # "PA2": "6", # OSCO + "PD0": "8", + "PC0": "10", + "PC1": "11", + "PC2": "12", + "PC3": "13", + "PC4": "14", + "PC5": "15", + "PC6": "16", + "PC7": "17", + # "PD1": "18", # SWIO + "PD2": "19", + "PD3": "20", + } + + def __init__(self, **kwargs: Any) -> None: + super().__init__(**kwargs) + + # Additional ports (on top of BaseIoController) + self.vdd = self.Port( + VoltageSink( + voltage_limits=(2.8, 5.5) * Volt, # stricter range when ADC used + current_draw=(0.009, 8.0) * mAmp + self.io_current_draw.upper(), # standby min to 48MHz run max + ), + [Power], + ) + self.vss = self.Port(Ground(), [Common]) + + self.nrst = self.Port( # Table 3-19 + DigitalSink.from_supply( + self.vss, + self.vdd, + voltage_limit_tolerance=(-0.3, 0.3) * Volt, + input_threshold_abs=( + 0.28 * (self.vdd.link().voltage.lower() - 1.8) + 0.6 + self.vss.link().voltage.lower(), + 0.41 * (self.vdd.link().voltage.upper() - 1.8) + 1.3 + self.vss.link().voltage.upper(), + ), + pullup_capable=True, + ), + optional=True, + ) # note, switched internal pull-up resistor, 35-55 kOhm + + self.osc = self.Port( + CrystalDriver(frequency_limits=(4, 25) * MHertz, voltage_out=self.vdd.link().voltage), optional=True + ) # Table 3-10 crystal / resonator specs, typ 24 MHz + + self._dio_ft_model = DigitalBidir.from_supply( + self.vss, + self.vdd, + voltage_limit_abs=(-0.3, 5.5) * Volt, # table 3.1 + current_limits=(-20, 20) * mAmp, # table 3.1 + input_threshold_abs=( # table 3-16 + 0.19 * (self.vdd.link().voltage.lower() - 2.7) + 0.65 + self.vss.link().voltage.lower(), + 0.22 * (self.vdd.link().voltage.upper() - 2.7) + 1.55 + self.vss.link().voltage.upper(), + ), + pullup_capable=True, # 35-55 kOhm + pulldown_capable=True, # 35-55 kOhm + ) + self._dio_std_model = DigitalBidir.from_supply( + self.vss, + self.vdd, + voltage_limit_tolerance=(-0.3, 0.3) * Volt, # table 3.1 + current_limits=(-20, 20) * mAmp, # table 3.1 + input_threshold_abs=( # table 3-16 + 0.19 * (self.vdd.link().voltage.lower() - 2.7) + 0.65 + self.vss.link().voltage.lower(), + 0.22 * (self.vdd.link().voltage.upper() - 2.7) + 1.55 + self.vss.link().voltage.upper(), + ), + pullup_capable=True, # 35-55 kOhm + pulldown_capable=True, # 35-55 kOhm + ) + + self.swio = self.Port(self._dio_std_model) + + @override + def _system_pinmap(self) -> Mapping[Union[Iterable[str], str], Union[Passive, HasPassivePort]]: + return { + "7": self.vss, + "9": self.vdd, + "5": self.osc.xtal_in, # TODO remappable to PA1 + "6": self.osc.xtal_out, # TODO remappable to PA2 + "4": self.nrst, + "18": self.swio, + } + + @override + def _io_pinmap(self) -> PinMapUtil: + # Port models + adc_model = AnalogSink.from_supply( + self.vss, + self.vdd, + voltage_limit_tolerance=(-0.3, 0.3) * Volt, # table 3.1 + impedance=(100, float("inf")) * kOhm, + ) + + uart_model = UartPort(DigitalBidir.empty()) + spi_model = SpiController(DigitalBidir.empty()) + # TODO SPI peripherals, which have fixed-pin CS lines + i2c_model = I2cController(DigitalBidir.empty()) + i2c_target_model = I2cTarget(DigitalBidir.empty()) + + return PinMapUtil( + [ # table 2-1 + PinResource("PD4", {"PD4": self._dio_std_model, "A7": adc_model}), + PinResource("PD5", {"PD5": self._dio_std_model, "A5": adc_model}), + PinResource("PD6", {"PD6": self._dio_std_model, "A6": adc_model}), + PinResource("PD7", {"PD7": self._dio_std_model}), # NRST + PinResource("PA1", {"PA1": self._dio_std_model, "A1": adc_model}), + PinResource("PA2", {"PA2": self._dio_std_model, "A0": adc_model}), + PinResource("PD0", {"PD0": self._dio_std_model}), + PinResource("PC0", {"PC0": self._dio_std_model}), + PinResource("PC1", {"PC1": self._dio_ft_model}), + PinResource("PC2", {"PC2": self._dio_ft_model}), + PinResource("PC3", {"PC3": self._dio_std_model}), + PinResource("PC4", {"PC4": self._dio_ft_model, "A2": adc_model}), + PinResource("PC5", {"PC5": self._dio_ft_model}), + PinResource("PC6", {"PC6": self._dio_ft_model}), + PinResource("PC7", {"PC7": self._dio_std_model}), + PinResource("PD1", {"PD1": self._dio_std_model}), # SWIO + PinResource("PD2", {"PD2": self._dio_std_model, "A3": adc_model}), + PinResource("PD3", {"PD3": self._dio_std_model, "A4": adc_model}), + PeripheralFixedResource( + "U", uart_model, {"tx": ["PD5", "PD0", "PD6", "PC0"], "rx": ["PD6", "PD1", "PD5", "PC1"]} + ), + PeripheralFixedResource("SPI", spi_model, {"sck": ["PC5"], "miso": ["PC7"], "mosi": ["PC6"]}), + PeripheralFixedResource("I2C", i2c_model, {"scl": ["PC2", "PD1", "PC5"], "sda": ["PC1", "PD0", "PC6"]}), + PeripheralFixedResource( + "I2C_T", i2c_target_model, {"scl": ["PC2", "PD1", "PC5"], "sda": ["PC1", "PD0", "PC6"]} + ), + ] + ).remap_pins(self._PIN_MAPPING) + + @override + def generate(self) -> None: + super().generate() + + self.footprint( + "U", + "Package_SO:TSSOP-20_4.4x6.5mm_P0.65mm", + self._make_pinning(), + mfr="WCH", + part="CH32V003F4P6", + datasheet="https://www.wch-ic.com/downloads/CH32V003DS0_PDF.html", + ) + self.assign(self.lcsc_part, "C5187096") + self.assign(self.actual_basic_part, False) + + +class Ch32v003( + Resettable, + IoControllerI2cTarget, + Microcontroller, + WithCrystalGenerator, + IoControllerPowerRequired, + GeneratorBlock, +): + """Low-cost, bare bones RISC-V (RV32EC) microcontroller""" + + DEFAULT_CRYSTAL_FREQUENCY = 24 * MHertz(tol=0.005) # 24 MHz as typical in datasheet + + def __init__(self, **kwargs: Any) -> None: + super().__init__(**kwargs) + self.generator_param(self.reset.is_connected()) + + @override + def generate(self) -> None: + super().generate() + + with self.implicit_connect(ImplicitConnect(self.pwr, [Power]), ImplicitConnect(self.gnd, [Common])) as imp: + self.ic = imp.Block(Ch32v003_Device(pin_assigns=ArrayStringExpr())) + self._wrap_inner(self.ic) + + self.sdi = imp.Block(Ch32vSdiHeader()) + self.connect(self.ic.swio, self.sdi.swio) + self.connect(self.ic.nrst, self.sdi.reset) + + self.connect(self.xtal_node, self.ic.osc) + + self.vdd_cap = imp.Block(DecouplingCapacitor(0.1 * uFarad(tol=0.2))) + + if self.get(self.reset.is_connected()): + self.connect(self.reset, self.ic.nrst) diff --git a/edg/parts/microcontroller/__init__.py b/edg/parts/microcontroller/__init__.py index 5bf3f7be1..53760c553 100644 --- a/edg/parts/microcontroller/__init__.py +++ b/edg/parts/microcontroller/__init__.py @@ -1,3 +1,4 @@ +from .Ch32v003 import Ch32v003, Ch32vSdiHeader, Ch32vSdiHeader254, Ch32vSdiTc2030 from .Lpc1549 import Lpc1549_48, Lpc1549_64 from .Stm32f103 import Stm32f103_48 from .Stm32f303 import Nucleo_F303k8 diff --git a/edg/parts/microcontroller/nRF52840.py b/edg/parts/microcontroller/nRF52840.py index 34575f10a..cabb9806a 100644 --- a/edg/parts/microcontroller/nRF52840.py +++ b/edg/parts/microcontroller/nRF52840.py @@ -529,7 +529,7 @@ def generate(self) -> None: self._make_model_pinning(Holyiot_18010_Footprint._PIN_REMAPPING, self.get(self.pin_assigns)), ) - self.device = self.Block(Holyiot_18010_Footprint(pin_assigns=self.model.actual_pin_assigns, external=True)) + self.device = self.Block(Holyiot_18010_Footprint(pin_assigns=self.model.actual_pin_assigns), external=True) self.assign(self.actual_pin_assigns, self.device.actual_pin_assigns) self._export_tap_ios_inner(self.device) self.export_tap(self.gnd, self.device.gnd) diff --git a/edg/parts/power/BatteryCharger_Mcp73831.py b/edg/parts/power/BatteryCharger_Mcp73831.py index 6f224d721..53af6cfce 100644 --- a/edg/parts/power/BatteryCharger_Mcp73831.py +++ b/edg/parts/power/BatteryCharger_Mcp73831.py @@ -51,8 +51,9 @@ def contents(self) -> None: self.assign(self.actual_basic_part, False) -class Mcp73831(PowerConditioner, Block): - """Single-cell Li-ion / Li-poly charger, seemingly popular on Adafruit and Sparkfun boards.""" +class Mcp73831(PowerConditioner, GeneratorBlock): + """Single-cell Li-ion / Li-poly charger, seemingly popular on Adafruit and Sparkfun boards. + Optional disable via the PROG pin, which generates an additional FET.""" def __init__(self, charging_current: RangeLike) -> None: super().__init__() @@ -65,12 +66,19 @@ def __init__(self, charging_current: RangeLike) -> None: self.stat = self.Export( self.ic.stat, optional=True ) # hi-Z when not charging, low when charging, high when done + self.prog_ctl = self.Port( + DigitalBidir(), + optional=True, + doc="GPIO that controls a FET that enables charging, pull high to enable", + ) + + self.generator_param(self.prog_ctl.is_connected()) self.charging_current = self.ArgParameter(charging_current) @override - def contents(self) -> None: - super().contents() + def generate(self) -> None: + super().generate() self.vdd_cap = self.Block( # not formally specified on the datasheet, but this is used in the reference board DecouplingCapacitor(4.7 * uFarad(tol=0.2)) @@ -84,7 +92,21 @@ def contents(self) -> None: AnalogSetpointResistor( resistance=(1 / self.charging_current).shrink_multiply(Range.from_tolerance(1000, 0.1)) ) - ).connected(self.gnd, self.ic.prog) + ).connected(io=self.ic.prog) + if self.get(self.prog_ctl.is_connected()): + self.prog_sw = self.Block( + SwitchFet.NFet( + drain_voltage=self.pwr.link().voltage, + drain_current=(0, 0), # effectively none + gate_voltage=(self.prog_ctl.link().output_thresholds.upper(), self.prog_ctl.link().voltage.upper()), + ) + ) + self.connect(self.prog_res.gnd, self.prog_sw.drain.adapt_to(Ground())) + self.connect(self.prog_sw.source.adapt_to(Ground()), self.gnd) + self.connect(self.prog_sw.gate, self.prog_ctl.net) + else: + self.connect(self.prog_res.gnd, self.gnd) + # tolerance is a guess self.assign(self.ic.actual_charging_current, 1000 * Volt(tol=0.1) / self.prog_res.actual_resistance) self.require( diff --git a/examples/BleJoystick/BleJoystick.net.ref b/examples/BleJoystick/BleJoystick.net.ref index e9785e1eb..4b6610025 100644 --- a/examples/BleJoystick/BleJoystick.net.ref +++ b/examples/BleJoystick/BleJoystick.net.ref @@ -49,17 +49,41 @@ (sheetpath (names "/") (tstamps "/")) (tstamps "025f0138")) (comp (ref "JJ2") - (value "usb") + (value "usb.conn") (footprint "Connector_USB:USB_C_Receptacle_XKB_U262-16XN-4BVC11") - (property (name "Sheetname") (value "")) - (property (name "Sheetfile") (value "")) + (property (name "Sheetname") (value "usb")) + (property (name "Sheetfile") (value "edg.parts.connector.UsbPorts.UsbCReceptacle")) (property (name "edg_path") (value "usb.conn")) - (property (name "edg_short_path") (value "usb")) + (property (name "edg_short_path") (value "usb.conn")) (property (name "edg_refdes") (value "JJ2")) (property (name "edg_part") (value "COM-15111 (Sparkfun)")) (property (name "edg_value") (value "COM-15111")) - (sheetpath (names "/") (tstamps "/")) - (tstamps "02aa014b")) + (sheetpath (names "/usb/") (tstamps "/02aa014b/")) + (tstamps "042701af")) +(comp (ref "JR1") + (value "usb.cc_pull.cc1") + (footprint "Resistor_SMD:R_0603_1608Metric") + (property (name "Sheetname") (value "cc_pull")) + (property (name "Sheetfile") (value "edg.parts.connector.UsbPorts.UsbCcPulldownResistor")) + (property (name "edg_path") (value "usb.cc_pull.cc1.res")) + (property (name "edg_short_path") (value "usb.cc_pull.cc1")) + (property (name "edg_refdes") (value "JR1")) + (property (name "edg_part") (value "0603WAF5101T5E (UNI-ROYAL(Uniroyal Elec))")) + (property (name "edg_value") (value "±1% 1/10W Thick Film Resistors 75V ±100ppm/℃ -55℃~+155℃ 5.1kΩ 0603 Chip Resistor - Surface Mount ROHS")) + (sheetpath (names "/usb/cc_pull/") (tstamps "/02aa014b/0b4c02e3/")) + (tstamps "022300f8")) +(comp (ref "JR2") + (value "usb.cc_pull.cc2") + (footprint "Resistor_SMD:R_0603_1608Metric") + (property (name "Sheetname") (value "cc_pull")) + (property (name "Sheetfile") (value "edg.parts.connector.UsbPorts.UsbCcPulldownResistor")) + (property (name "edg_path") (value "usb.cc_pull.cc2.res")) + (property (name "edg_short_path") (value "usb.cc_pull.cc2")) + (property (name "edg_refdes") (value "JR2")) + (property (name "edg_part") (value "0603WAF5101T5E (UNI-ROYAL(Uniroyal Elec))")) + (property (name "edg_value") (value "±1% 1/10W Thick Film Resistors 75V ±100ppm/℃ -55℃~+155℃ 5.1kΩ 0603 Chip Resistor - Surface Mount ROHS")) + (sheetpath (names "/usb/cc_pull/") (tstamps "/02aa014b/0b4c02e3/")) + (tstamps "022400f9")) (comp (ref "JTP1") (value "vbat") (footprint "edg:TestPoint_TE_RCT_0805") @@ -97,101 +121,113 @@ (sheetpath (names "/") (tstamps "/")) (tstamps "08df027d")) (comp (ref "JU1") - (value "mp2722.ic") - (footprint "edg:MPS_QFN-22_2.5x3.5mm_P0.4mm") - (property (name "Sheetname") (value "mp2722")) - (property (name "Sheetfile") (value "edg.parts.power.converter.Mp2722.Mp2722")) - (property (name "edg_path") (value "mp2722.ic")) - (property (name "edg_short_path") (value "mp2722.ic")) + (value "vbat_sense.ic") + (footprint "Package_TO_SOT_SMD:SOT-23-8") + (property (name "Sheetname") (value "vbat_sense")) + (property (name "Sheetfile") (value "edg.parts.analog.opamp.Ina219.Ina219")) + (property (name "edg_path") (value "vbat_sense.ic")) + (property (name "edg_short_path") (value "vbat_sense.ic")) (property (name "edg_refdes") (value "JU1")) - (property (name "edg_part") (value "MP2722GRH-0000-P (Monolithic Power Systems Inc.)")) - (property (name "edg_value") (value "MP2722GRH-0000-P")) - (sheetpath (names "/mp2722/") (tstamps "/06c701ab/")) + (property (name "edg_part") (value "INA219AIDCNR (Texas Instruments)")) + (property (name "edg_value") (value "INA219AIDCNR")) + (sheetpath (names "/vbat_sense/") (tstamps "/16ee042b/")) (tstamps "013700cd")) (comp (ref "JC1") - (value "mp2722.vbst_cap") + (value "vbat_sense.vs_cap") (footprint "Capacitor_SMD:C_0603_1608Metric") - (property (name "Sheetname") (value "mp2722")) - (property (name "Sheetfile") (value "edg.parts.power.converter.Mp2722.Mp2722")) - (property (name "edg_path") (value "mp2722.vbst_cap.cap")) - (property (name "edg_short_path") (value "mp2722.vbst_cap")) + (property (name "Sheetname") (value "vbat_sense")) + (property (name "Sheetfile") (value "edg.parts.analog.opamp.Ina219.Ina219")) + (property (name "edg_path") (value "vbat_sense.vs_cap.cap")) + (property (name "edg_short_path") (value "vbat_sense.vs_cap")) (property (name "edg_refdes") (value "JC1")) - (property (name "edg_part") (value "CL10B223KB8NNNC (Samsung Electro-Mechanics)")) - (property (name "edg_value") (value "50V 22nF X7R ±10% 0603 Multilayer Ceramic Capacitors MLCC - SMD/SMT ROHS")) - (sheetpath (names "/mp2722/") (tstamps "/06c701ab/")) - (tstamps "0f330353")) -(comp (ref "JC2") - (value "mp2722.pmid_cap") - (footprint "Capacitor_SMD:C_0805_2012Metric") - (property (name "Sheetname") (value "mp2722")) - (property (name "Sheetfile") (value "edg.parts.power.converter.Mp2722.Mp2722")) - (property (name "edg_path") (value "mp2722.pmid_cap.cap")) - (property (name "edg_short_path") (value "mp2722.pmid_cap")) - (property (name "edg_refdes") (value "JC2")) - (property (name "edg_part") (value "CL21A106KAYNNNE (Samsung Electro-Mechanics)")) - (property (name "edg_value") (value "X5R 25V ±10% 10uF 0805 Multilayer Ceramic Capacitors MLCC - SMD/SMT ROHS")) - (sheetpath (names "/mp2722/") (tstamps "/06c701ab/")) - (tstamps "0ec4033e")) -(comp (ref "JC3") - (value "mp2722.batt_cap") - (footprint "Capacitor_SMD:C_1206_3216Metric") - (property (name "Sheetname") (value "mp2722")) - (property (name "Sheetfile") (value "edg.parts.power.converter.Mp2722.Mp2722")) - (property (name "edg_path") (value "mp2722.batt_cap.cap")) - (property (name "edg_short_path") (value "mp2722.batt_cap")) - (property (name "edg_refdes") (value "JC3")) - (property (name "edg_part") (value "CL31A226KPHNNNE (Samsung Electro-Mechanics)")) - (property (name "edg_value") (value "10V 22uF X5R ±10% 1206 Multilayer Ceramic Capacitors MLCC - SMD/SMT ROHS")) - (sheetpath (names "/mp2722/") (tstamps "/06c701ab/")) - (tstamps "0e92033f")) -(comp (ref "JC4") - (value "mp2722.vcc_cap") - (footprint "Capacitor_SMD:C_0805_2012Metric") - (property (name "Sheetname") (value "mp2722")) - (property (name "Sheetfile") (value "edg.parts.power.converter.Mp2722.Mp2722")) - (property (name "edg_path") (value "mp2722.vcc_cap.cap")) - (property (name "edg_short_path") (value "mp2722.vcc_cap")) - (property (name "edg_refdes") (value "JC4")) - (property (name "edg_part") (value "CL21A475KAQNNNE (Samsung Electro-Mechanics)")) - (property (name "edg_value") (value "25V 4.7uF X5R ±10% 0805 Multilayer Ceramic Capacitors MLCC - SMD/SMT ROHS")) - (sheetpath (names "/mp2722/") (tstamps "/06c701ab/")) - (tstamps "0b5902d0")) -(comp (ref "JL1") - (value "mp2722.power_path.inductor") - (footprint "Inductor_SMD:L_1210_3225Metric") - (property (name "Sheetname") (value "power_path")) - (property (name "Sheetfile") (value "edg.circuits.BuckConverterPowerPath.BuckConverterPowerPath")) - (property (name "edg_path") (value "mp2722.power_path.inductor")) - (property (name "edg_short_path") (value "mp2722.power_path.inductor")) - (property (name "edg_refdes") (value "JL1")) - (property (name "edg_part") (value "BRL3225T1R5M (Taiyo Yuden)")) - (property (name "edg_value") (value "1.75A 1.5uH ±20% 54mΩ 1210 Inductors (SMD) ROHS")) - (sheetpath (names "/mp2722/power_path/") (tstamps "/06c701ab/1786043a/")) - (tstamps "0f2b0369")) -(comp (ref "JC5") - (value "mp2722.power_path.in_cap") - (footprint "Capacitor_SMD:C_0805_2012Metric") - (property (name "Sheetname") (value "power_path")) - (property (name "Sheetfile") (value "edg.circuits.BuckConverterPowerPath.BuckConverterPowerPath")) - (property (name "edg_path") (value "mp2722.power_path.in_cap.cap")) - (property (name "edg_short_path") (value "mp2722.power_path.in_cap")) - (property (name "edg_refdes") (value "JC5")) - (property (name "edg_part") (value "CL21A475KAQNNNE (Samsung Electro-Mechanics)")) - (property (name "edg_value") (value "25V 4.7uF X5R ±10% 0805 Multilayer Ceramic Capacitors MLCC - SMD/SMT ROHS")) - (sheetpath (names "/mp2722/power_path/") (tstamps "/06c701ab/1786043a/")) - (tstamps "0879026b")) -(comp (ref "JC6") - (value "mp2722.power_path.out_cap") - (footprint "Capacitor_SMD:C_0805_2012Metric") - (property (name "Sheetname") (value "power_path")) - (property (name "Sheetfile") (value "edg.circuits.BuckConverterPowerPath.BuckConverterPowerPath")) - (property (name "edg_path") (value "mp2722.power_path.out_cap.cap")) - (property (name "edg_short_path") (value "mp2722.power_path.out_cap")) - (property (name "edg_refdes") (value "JC6")) - (property (name "edg_part") (value "CL21A106KAYNNNE (Samsung Electro-Mechanics)")) - (property (name "edg_value") (value "X5R 25V ±10% 10uF 0805 Multilayer Ceramic Capacitors MLCC - SMD/SMT ROHS")) - (sheetpath (names "/mp2722/power_path/") (tstamps "/06c701ab/1786043a/")) - (tstamps "0be902ec")) + (property (name "edg_part") (value "CC0603KRX7R9BB104 (YAGEO)")) + (property (name "edg_value") (value "50V 100nF X7R ±10% 0603 Multilayer Ceramic Capacitors MLCC - SMD/SMT ROHS")) + (sheetpath (names "/vbat_sense/") (tstamps "/16ee042b/")) + (tstamps "08e0027d")) +(comp (ref "JR3") + (value "vbat_sense.Rs") + (footprint "Resistor_SMD:R_1206_3216Metric") + (property (name "Sheetname") (value "vbat_sense")) + (property (name "Sheetfile") (value "edg.parts.analog.opamp.Ina219.Ina219")) + (property (name "edg_path") (value "vbat_sense.Rs.res.res")) + (property (name "edg_short_path") (value "vbat_sense.Rs")) + (property (name "edg_refdes") (value "JR3")) + (property (name "edg_part") (value "1206W4F100LT5E (UNI-ROYAL(Uniroyal Elec))")) + (property (name "edg_value") (value "±1% 250mW Thick Film Resistors 200V ±800ppm/℃ -55℃~+155℃ 100mΩ 1206 Chip Resistor - Surface Mount ROHS")) + (sheetpath (names "/vbat_sense/") (tstamps "/16ee042b/")) + (tstamps "011900c6")) +(comp (ref "JR4") + (value "gate.pull_res") + (footprint "Resistor_SMD:R_0603_1608Metric") + (property (name "Sheetname") (value "gate")) + (property (name "Sheetfile") (value "edg.circuits.PowerConditioning.SoftPowerGate")) + (property (name "edg_path") (value "gate.pull_res")) + (property (name "edg_short_path") (value "gate.pull_res")) + (property (name "edg_refdes") (value "JR4")) + (property (name "edg_part") (value "0603WAF1002T5E (UNI-ROYAL(Uniroyal Elec))")) + (property (name "edg_value") (value "±1% 1/10W Thick Film Resistors 75V ±100ppm/℃ -55℃~+155℃ 10kΩ 0603 Chip Resistor - Surface Mount ROHS")) + (sheetpath (names "/gate/") (tstamps "/041001a2/")) + (tstamps "0f6e0367")) +(comp (ref "JQ1") + (value "gate.pwr_fet") + (footprint "Package_TO_SOT_SMD:SOT-23") + (property (name "Sheetname") (value "gate")) + (property (name "Sheetfile") (value "edg.circuits.PowerConditioning.SoftPowerGate")) + (property (name "edg_path") (value "gate.pwr_fet")) + (property (name "edg_short_path") (value "gate.pwr_fet")) + (property (name "edg_refdes") (value "JQ1")) + (property (name "edg_part") (value "SI2301CDS-T1-GE3 (Vishay Intertech)")) + (property (name "edg_value") (value "20V 3.1A 860mW 112mΩ@4.5V,2.8A 1V@250μA P Channel SOT-23(SOT-23-3) MOSFETs ROHS")) + (sheetpath (names "/gate/") (tstamps "/041001a2/")) + (tstamps "0c0702f8")) +(comp (ref "JR5") + (value "gate.amp_res") + (footprint "Resistor_SMD:R_0603_1608Metric") + (property (name "Sheetname") (value "gate")) + (property (name "Sheetfile") (value "edg.circuits.PowerConditioning.SoftPowerGate")) + (property (name "edg_path") (value "gate.amp_res")) + (property (name "edg_short_path") (value "gate.amp_res")) + (property (name "edg_refdes") (value "JR5")) + (property (name "edg_part") (value "0603WAF1002T5E (UNI-ROYAL(Uniroyal Elec))")) + (property (name "edg_value") (value "±1% 1/10W Thick Film Resistors 75V ±100ppm/℃ -55℃~+155℃ 10kΩ 0603 Chip Resistor - Surface Mount ROHS")) + (sheetpath (names "/gate/") (tstamps "/041001a2/")) + (tstamps "0b7b02e8")) +(comp (ref "JQ2") + (value "gate.amp_fet") + (footprint "Package_TO_SOT_SMD:SOT-23") + (property (name "Sheetname") (value "gate")) + (property (name "Sheetfile") (value "edg.circuits.PowerConditioning.SoftPowerGate")) + (property (name "edg_path") (value "gate.amp_fet")) + (property (name "edg_short_path") (value "gate.amp_fet")) + (property (name "edg_refdes") (value "JQ2")) + (property (name "edg_part") (value "2N7002 (Changjiang Electronics Tech (CJ))")) + (property (name "edg_value") (value "60V 115mA 200mW 7.5Ω@10V,500mA 2.5V@250μA N Channel SOT-23(SOT-23-3) MOSFETs ROHS")) + (sheetpath (names "/gate/") (tstamps "/041001a2/")) + (tstamps "0b5802dd")) +(comp (ref "JD1") + (value "gate.ctl_diode") + (footprint "Diode_SMD:D_SOD-323") + (property (name "Sheetname") (value "gate")) + (property (name "Sheetfile") (value "edg.circuits.PowerConditioning.SoftPowerGate")) + (property (name "edg_path") (value "gate.ctl_diode")) + (property (name "edg_short_path") (value "gate.ctl_diode")) + (property (name "edg_refdes") (value "JD1")) + (property (name "edg_part") (value "RB751V-40 (Yangzhou Yangjie Elec Tech)")) + (property (name "edg_value") (value "30V 370mV@1mA 30mA SOD-323 Schottky Barrier Diodes (SBD) ROHS")) + (sheetpath (names "/gate/") (tstamps "/041001a2/")) + (tstamps "126403a8")) +(comp (ref "JD2") + (value "gate.btn_diode") + (footprint "Diode_SMD:D_SOD-323") + (property (name "Sheetname") (value "gate")) + (property (name "Sheetfile") (value "edg.circuits.PowerConditioning.SoftPowerGate")) + (property (name "edg_path") (value "gate.btn_diode")) + (property (name "edg_short_path") (value "gate.btn_diode")) + (property (name "edg_refdes") (value "JD2")) + (property (name "edg_part") (value "RB751V-40 (Yangzhou Yangjie Elec Tech)")) + (property (name "edg_value") (value "30V 370mV@1mA 30mA SOD-323 Schottky Barrier Diodes (SBD) ROHS")) + (sheetpath (names "/gate/") (tstamps "/041001a2/")) + (tstamps "126903a9")) (comp (ref "JU2") (value "reg_3v3.ic") (footprint "Package_TO_SOT_SMD:SOT-89-3") @@ -204,26 +240,26 @@ (property (name "edg_value") (value "AP7215-33YG-13")) (sheetpath (names "/reg_3v3/") (tstamps "/0aba027a/")) (tstamps "013700cd")) -(comp (ref "JC7") +(comp (ref "JC2") (value "reg_3v3.in_cap") (footprint "Capacitor_SMD:C_0603_1608Metric") (property (name "Sheetname") (value "reg_3v3")) (property (name "Sheetfile") (value "edg.parts.power.converter.LinearRegulators.Ap7215")) (property (name "edg_path") (value "reg_3v3.in_cap.cap")) (property (name "edg_short_path") (value "reg_3v3.in_cap")) - (property (name "edg_refdes") (value "JC7")) + (property (name "edg_refdes") (value "JC2")) (property (name "edg_part") (value "CL10A105KB8NNNC (Samsung Electro-Mechanics)")) (property (name "edg_value") (value "50V 1uF X5R ±10% 0603 Multilayer Ceramic Capacitors MLCC - SMD/SMT ROHS")) (sheetpath (names "/reg_3v3/") (tstamps "/0aba027a/")) (tstamps "0879026b")) -(comp (ref "JC8") +(comp (ref "JC3") (value "reg_3v3.out_cap") (footprint "Capacitor_SMD:C_0603_1608Metric") (property (name "Sheetname") (value "reg_3v3")) (property (name "Sheetfile") (value "edg.parts.power.converter.LinearRegulators.Ap7215")) (property (name "edg_path") (value "reg_3v3.out_cap.cap")) (property (name "edg_short_path") (value "reg_3v3.out_cap")) - (property (name "edg_refdes") (value "JC8")) + (property (name "edg_refdes") (value "JC3")) (property (name "edg_part") (value "CL10A105KB8NNNC (Samsung Electro-Mechanics)")) (property (name "edg_value") (value "50V 1uF X5R ±10% 0603 Multilayer Ceramic Capacitors MLCC - SMD/SMT ROHS")) (sheetpath (names "/reg_3v3/") (tstamps "/0aba027a/")) @@ -240,358 +276,372 @@ (property (name "edg_value") (value "v3v3")) (sheetpath (names "/") (tstamps "/")) (tstamps "08220220")) -(comp (ref "JD1") +(comp (ref "JD3") (value "prot_3v3") (footprint "Diode_SMD:D_SOD-323") (property (name "Sheetname") (value "")) (property (name "Sheetfile") (value "")) (property (name "edg_path") (value "prot_3v3.diode")) (property (name "edg_short_path") (value "prot_3v3")) - (property (name "edg_refdes") (value "JD1")) + (property (name "edg_refdes") (value "JD3")) (property (name "edg_part") (value "BZT52B3V6S (SMC(Sangdest Microelectronicstronic (Nanjing)))")) (property (name "edg_value") (value "5μA@1V 90Ω Single 3.53V~3.67V 200mW 3.6V SOD-323 Zener Diodes ROHS")) (sheetpath (names "/") (tstamps "/")) (tstamps "0eb80301")) -(comp (ref "JR1") - (value "fake_ntc.top_res") - (footprint "Resistor_SMD:R_0603_1608Metric") - (property (name "Sheetname") (value "fake_ntc")) - (property (name "Sheetfile") (value "edg.circuits.ResistiveDivider.VoltageDivider")) - (property (name "edg_path") (value "fake_ntc.div.top_res")) - (property (name "edg_short_path") (value "fake_ntc.top_res")) - (property (name "edg_refdes") (value "JR1")) - (property (name "edg_part") (value "0603WAF1003T5E (UNI-ROYAL(Uniroyal Elec))")) - (property (name "edg_value") (value "±1% 1/10W Thick Film Resistors 75V ±100ppm/℃ -55℃~+155℃ 100kΩ 0603 Chip Resistor - Surface Mount ROHS")) - (sheetpath (names "/fake_ntc/") (tstamps "/0e6b033c/")) - (tstamps "0c0c02fd")) -(comp (ref "JR2") - (value "fake_ntc.bottom_res") - (footprint "Resistor_SMD:R_0603_1608Metric") - (property (name "Sheetname") (value "fake_ntc")) - (property (name "Sheetfile") (value "edg.circuits.ResistiveDivider.VoltageDivider")) - (property (name "edg_path") (value "fake_ntc.div.bottom_res")) - (property (name "edg_short_path") (value "fake_ntc.bottom_res")) - (property (name "edg_refdes") (value "JR2")) - (property (name "edg_part") (value "0603WAF1003T5E (UNI-ROYAL(Uniroyal Elec))")) - (property (name "edg_value") (value "±1% 1/10W Thick Film Resistors 75V ±100ppm/℃ -55℃~+155℃ 100kΩ 0603 Chip Resistor - Surface Mount ROHS")) - (sheetpath (names "/fake_ntc/") (tstamps "/0e6b033c/")) - (tstamps "175b043f")) -(comp (ref "JJ3") - (value "mcu.prog") - (footprint "Connector:Tag-Connect_TC2030-IDC-FP_2x03_P1.27mm_Vertical") - (property (name "Sheetname") (value "mcu")) - (property (name "Sheetfile") (value "edg.parts.microcontroller.Esp32c3.Esp32c3_Wroom02")) - (property (name "edg_path") (value "mcu.prog.conn")) - (property (name "edg_short_path") (value "mcu.prog")) - (property (name "edg_refdes") (value "JJ3")) - (property (name "edg_part") (value "")) - (property (name "edg_value") (value "")) - (sheetpath (names "/mcu/") (tstamps "/02850146/")) - (tstamps "045f01b9")) -(comp (ref "JSW1") - (value "mcu.boot") - (footprint "project:MembraneSwitch_4mm") - (property (name "Sheetname") (value "mcu")) - (property (name "Sheetfile") (value "edg.parts.microcontroller.Esp32c3.Esp32c3_Wroom02")) - (property (name "edg_path") (value "mcu.boot.package")) - (property (name "edg_short_path") (value "mcu.boot")) - (property (name "edg_refdes") (value "JSW1")) - (property (name "edg_part") (value "3.9x2.9mm Switch")) - (property (name "edg_value") (value "3.9x2.9mm Switch")) - (sheetpath (names "/mcu/") (tstamps "/02850146/")) - (tstamps "042b01b5")) +(comp (ref "JTP5") + (value "vbat_gated") + (footprint "edg:TestPoint_TE_RCT_0805") + (property (name "Sheetname") (value "")) + (property (name "Sheetfile") (value "")) + (property (name "edg_path") (value "tp_vgate.tp")) + (property (name "edg_short_path") (value "tp_vgate")) + (property (name "edg_refdes") (value "JTP5")) + (property (name "edg_part") (value "5015 (Keystone)")) + (property (name "edg_value") (value "vbat_gated")) + (sheetpath (names "/") (tstamps "/")) + (tstamps "0f4c035b")) (comp (ref "JU3") + (value "chg.ic") + (footprint "Package_TO_SOT_SMD:SOT-23-5") + (property (name "Sheetname") (value "chg")) + (property (name "Sheetfile") (value "edg.parts.power.BatteryCharger_Mcp73831.Mcp73831")) + (property (name "edg_path") (value "chg.ic")) + (property (name "edg_short_path") (value "chg.ic")) + (property (name "edg_refdes") (value "JU3")) + (property (name "edg_part") (value "MCP73831T-2ACI/OT (Microchip Technology)")) + (property (name "edg_value") (value "MCP73831T-2ACI/OT")) + (sheetpath (names "/chg/") (tstamps "/02630133/")) + (tstamps "013700cd")) +(comp (ref "JC4") + (value "chg.vdd_cap") + (footprint "Capacitor_SMD:C_0805_2012Metric") + (property (name "Sheetname") (value "chg")) + (property (name "Sheetfile") (value "edg.parts.power.BatteryCharger_Mcp73831.Mcp73831")) + (property (name "edg_path") (value "chg.vdd_cap.cap")) + (property (name "edg_short_path") (value "chg.vdd_cap")) + (property (name "edg_refdes") (value "JC4")) + (property (name "edg_part") (value "CL21A475KAQNNNE (Samsung Electro-Mechanics)")) + (property (name "edg_value") (value "25V 4.7uF X5R ±10% 0805 Multilayer Ceramic Capacitors MLCC - SMD/SMT ROHS")) + (sheetpath (names "/chg/") (tstamps "/02630133/")) + (tstamps "0b6402d2")) +(comp (ref "JC5") + (value "chg.vbat_cap") + (footprint "Capacitor_SMD:C_0805_2012Metric") + (property (name "Sheetname") (value "chg")) + (property (name "Sheetfile") (value "edg.parts.power.BatteryCharger_Mcp73831.Mcp73831")) + (property (name "edg_path") (value "chg.vbat_cap.cap")) + (property (name "edg_short_path") (value "chg.vbat_cap")) + (property (name "edg_refdes") (value "JC5")) + (property (name "edg_part") (value "CL21A475KAQNNNE (Samsung Electro-Mechanics)")) + (property (name "edg_value") (value "25V 4.7uF X5R ±10% 0805 Multilayer Ceramic Capacitors MLCC - SMD/SMT ROHS")) + (sheetpath (names "/chg/") (tstamps "/02630133/")) + (tstamps "0ec70341")) +(comp (ref "JR6") + (value "chg.prog_res") + (footprint "Resistor_SMD:R_0603_1608Metric") + (property (name "Sheetname") (value "chg")) + (property (name "Sheetfile") (value "edg.parts.power.BatteryCharger_Mcp73831.Mcp73831")) + (property (name "edg_path") (value "chg.prog_res.res")) + (property (name "edg_short_path") (value "chg.prog_res")) + (property (name "edg_refdes") (value "JR6")) + (property (name "edg_part") (value "0603WAF1002T5E (UNI-ROYAL(Uniroyal Elec))")) + (property (name "edg_value") (value "±1% 1/10W Thick Film Resistors 75V ±100ppm/℃ -55℃~+155℃ 10kΩ 0603 Chip Resistor - Surface Mount ROHS")) + (sheetpath (names "/chg/") (tstamps "/02630133/")) + (tstamps "0f520362")) +(comp (ref "JQ3") + (value "chg.prog_sw") + (footprint "Package_TO_SOT_SMD:SOT-23") + (property (name "Sheetname") (value "chg")) + (property (name "Sheetfile") (value "edg.parts.power.BatteryCharger_Mcp73831.Mcp73831")) + (property (name "edg_path") (value "chg.prog_sw")) + (property (name "edg_short_path") (value "chg.prog_sw")) + (property (name "edg_refdes") (value "JQ3")) + (property (name "edg_part") (value "2N7002 (Changjiang Electronics Tech (CJ))")) + (property (name "edg_value") (value "60V 115mA 200mW 7.5Ω@10V,500mA 2.5V@250μA N Channel SOT-23(SOT-23-3) MOSFETs ROHS")) + (sheetpath (names "/chg/") (tstamps "/02630133/")) + (tstamps "0c040302")) +(comp (ref "JU4") (value "mcu.ic") - (footprint "RF_Module:ESP-WROOM-02") + (footprint "edg:Holyiot-18010-NRF52840") (property (name "Sheetname") (value "mcu")) - (property (name "Sheetfile") (value "edg.parts.microcontroller.Esp32c3.Esp32c3_Wroom02")) + (property (name "Sheetfile") (value "edg.parts.microcontroller.nRF52840.Holyiot_18010")) (property (name "edg_path") (value "mcu.ic.device")) (property (name "edg_short_path") (value "mcu.ic")) - (property (name "edg_refdes") (value "JU3")) - (property (name "edg_part") (value "ESP32-C3-WROOM-02 (Espressif Systems)")) - (property (name "edg_value") (value "ESP32-C3-WROOM-02")) + (property (name "edg_refdes") (value "JU4")) + (property (name "edg_part") (value "18010 (Holyiot)")) + (property (name "edg_value") (value "18010")) (sheetpath (names "/mcu/") (tstamps "/02850146/")) (tstamps "013700cd")) -(comp (ref "JC9") - (value "mcu.vcc_cap0") +(comp (ref "JC6") + (value "mcu.vcc_cap") (footprint "Capacitor_SMD:C_0805_2012Metric") (property (name "Sheetname") (value "mcu")) - (property (name "Sheetfile") (value "edg.parts.microcontroller.Esp32c3.Esp32c3_Wroom02")) - (property (name "edg_path") (value "mcu.vcc_cap0.cap")) - (property (name "edg_short_path") (value "mcu.vcc_cap0")) - (property (name "edg_refdes") (value "JC9")) + (property (name "Sheetfile") (value "edg.parts.microcontroller.nRF52840.Holyiot_18010")) + (property (name "edg_path") (value "mcu.vcc_cap.cap")) + (property (name "edg_short_path") (value "mcu.vcc_cap")) + (property (name "edg_refdes") (value "JC6")) (property (name "edg_part") (value "CL21A106KAYNNNE (Samsung Electro-Mechanics)")) (property (name "edg_value") (value "X5R 25V ±10% 10uF 0805 Multilayer Ceramic Capacitors MLCC - SMD/SMT ROHS")) (sheetpath (names "/mcu/") (tstamps "/02850146/")) - (tstamps "0e590300")) -(comp (ref "JC10") - (value "mcu.vcc_cap1") - (footprint "Capacitor_SMD:C_0603_1608Metric") + (tstamps "0b5902d0")) +(comp (ref "JJ3") + (value "mcu.swd") + (footprint "Connector:Tag-Connect_TC2030-IDC-FP_2x03_P1.27mm_Vertical") (property (name "Sheetname") (value "mcu")) - (property (name "Sheetfile") (value "edg.parts.microcontroller.Esp32c3.Esp32c3_Wroom02")) - (property (name "edg_path") (value "mcu.vcc_cap1.cap")) - (property (name "edg_short_path") (value "mcu.vcc_cap1")) - (property (name "edg_refdes") (value "JC10")) - (property (name "edg_part") (value "CC0603KRX7R9BB104 (YAGEO)")) - (property (name "edg_value") (value "50V 100nF X7R ±10% 0603 Multilayer Ceramic Capacitors MLCC - SMD/SMT ROHS")) + (property (name "Sheetfile") (value "edg.parts.microcontroller.nRF52840.Holyiot_18010")) + (property (name "edg_path") (value "mcu.swd.conn")) + (property (name "edg_short_path") (value "mcu.swd")) + (property (name "edg_refdes") (value "JJ3")) + (property (name "edg_part") (value "")) + (property (name "edg_value") (value "")) (sheetpath (names "/mcu/") (tstamps "/02850146/")) - (tstamps "0e5a0301")) -(comp (ref "JR3") - (value "mcu.en_pull.r") - (footprint "Resistor_SMD:R_0603_1608Metric") - (property (name "Sheetname") (value "en_pull")) - (property (name "Sheetfile") (value "edg.circuits.PassiveFilters.PullupDelayRc")) - (property (name "edg_path") (value "mcu.en_pull.rc.r")) - (property (name "edg_short_path") (value "mcu.en_pull.r")) - (property (name "edg_refdes") (value "JR3")) - (property (name "edg_part") (value "0603WAF1002T5E (UNI-ROYAL(Uniroyal Elec))")) - (property (name "edg_value") (value "±1% 1/10W Thick Film Resistors 75V ±100ppm/℃ -55℃~+155℃ 10kΩ 0603 Chip Resistor - Surface Mount ROHS")) - (sheetpath (names "/mcu/en_pull/") (tstamps "/02850146/0b9c02f0/")) - (tstamps "00730073")) -(comp (ref "JC11") - (value "mcu.en_pull.c") - (footprint "Capacitor_SMD:C_0603_1608Metric") - (property (name "Sheetname") (value "en_pull")) - (property (name "Sheetfile") (value "edg.circuits.PassiveFilters.PullupDelayRc")) - (property (name "edg_path") (value "mcu.en_pull.rc.c")) - (property (name "edg_short_path") (value "mcu.en_pull.c")) - (property (name "edg_refdes") (value "JC11")) - (property (name "edg_part") (value "CL10A105KB8NNNC (Samsung Electro-Mechanics)")) - (property (name "edg_value") (value "50V 1uF X5R ±10% 0603 Multilayer Ceramic Capacitors MLCC - SMD/SMT ROHS")) - (sheetpath (names "/mcu/en_pull/") (tstamps "/02850146/0b9c02f0/")) - (tstamps "00640064")) -(comp (ref "JJ4") - (value "stick") - (footprint "Connector_FFC-FPC:Hirose_FH12-6S-0.5SH_1x06-1MP_P0.50mm_Horizontal") - (property (name "Sheetname") (value "")) - (property (name "Sheetfile") (value "")) - (property (name "edg_path") (value "stick.conn.ext")) - (property (name "edg_short_path") (value "stick")) - (property (name "edg_refdes") (value "JJ4")) - (property (name "edg_part") (value "AFC01-S06FC*-00 (Jushuo)")) - (property (name "edg_value") (value "AFC01-S06FC*-00")) - (sheetpath (names "/") (tstamps "/")) - (tstamps "0680021f")) -(comp (ref "JR4") - (value "ax1_div.top_res") - (footprint "Resistor_SMD:R_0603_1608Metric") - (property (name "Sheetname") (value "ax1_div")) - (property (name "Sheetfile") (value "edg.circuits.ResistiveDivider.SignalDivider")) - (property (name "edg_path") (value "ax1_div.div.top_res")) - (property (name "edg_short_path") (value "ax1_div.top_res")) - (property (name "edg_refdes") (value "JR4")) - (property (name "edg_part") (value "0603WAF1002T5E (UNI-ROYAL(Uniroyal Elec))")) - (property (name "edg_value") (value "±1% 1/10W Thick Film Resistors 75V ±100ppm/℃ -55℃~+155℃ 10kΩ 0603 Chip Resistor - Surface Mount ROHS")) - (sheetpath (names "/ax1_div/") (tstamps "/0a6302ad/")) - (tstamps "0c0c02fd")) -(comp (ref "JR5") - (value "ax1_div.bottom_res") - (footprint "Resistor_SMD:R_0603_1608Metric") - (property (name "Sheetname") (value "ax1_div")) - (property (name "Sheetfile") (value "edg.circuits.ResistiveDivider.SignalDivider")) - (property (name "edg_path") (value "ax1_div.div.bottom_res")) - (property (name "edg_short_path") (value "ax1_div.bottom_res")) - (property (name "edg_refdes") (value "JR5")) - (property (name "edg_part") (value "0603WAF1002T5E (UNI-ROYAL(Uniroyal Elec))")) - (property (name "edg_value") (value "±1% 1/10W Thick Film Resistors 75V ±100ppm/℃ -55℃~+155℃ 10kΩ 0603 Chip Resistor - Surface Mount ROHS")) - (sheetpath (names "/ax1_div/") (tstamps "/0a6302ad/")) - (tstamps "175b043f")) -(comp (ref "JR6") - (value "ax2_div.top_res") - (footprint "Resistor_SMD:R_0603_1608Metric") - (property (name "Sheetname") (value "ax2_div")) - (property (name "Sheetfile") (value "edg.circuits.ResistiveDivider.SignalDivider")) - (property (name "edg_path") (value "ax2_div.div.top_res")) - (property (name "edg_short_path") (value "ax2_div.top_res")) - (property (name "edg_refdes") (value "JR6")) - (property (name "edg_part") (value "0603WAF1002T5E (UNI-ROYAL(Uniroyal Elec))")) - (property (name "edg_value") (value "±1% 1/10W Thick Film Resistors 75V ±100ppm/℃ -55℃~+155℃ 10kΩ 0603 Chip Resistor - Surface Mount ROHS")) - (sheetpath (names "/ax2_div/") (tstamps "/0a6802ae/")) - (tstamps "0c0c02fd")) + (tstamps "02ae014f")) +(comp (ref "JC7") + (value "mcu.vbus_cap") + (footprint "Capacitor_SMD:C_0805_2012Metric") + (property (name "Sheetname") (value "mcu")) + (property (name "Sheetfile") (value "edg.parts.microcontroller.nRF52840.Holyiot_18010")) + (property (name "edg_path") (value "mcu.vbus_cap.cap")) + (property (name "edg_short_path") (value "mcu.vbus_cap")) + (property (name "edg_refdes") (value "JC7")) + (property (name "edg_part") (value "CL21A106KAYNNNE (Samsung Electro-Mechanics)")) + (property (name "edg_value") (value "X5R 25V ±10% 10uF 0805 Multilayer Ceramic Capacitors MLCC - SMD/SMT ROHS")) + (sheetpath (names "/mcu/") (tstamps "/02850146/")) + (tstamps "0f3a0354")) (comp (ref "JR7") - (value "ax2_div.bottom_res") + (value "mcu.usb_res.dp") (footprint "Resistor_SMD:R_0603_1608Metric") - (property (name "Sheetname") (value "ax2_div")) - (property (name "Sheetfile") (value "edg.circuits.ResistiveDivider.SignalDivider")) - (property (name "edg_path") (value "ax2_div.div.bottom_res")) - (property (name "edg_short_path") (value "ax2_div.bottom_res")) + (property (name "Sheetname") (value "usb_res")) + (property (name "Sheetfile") (value "edg.circuits.UsbSeriesResistor.UsbSeriesResistor")) + (property (name "edg_path") (value "mcu.usb_res.dp.res")) + (property (name "edg_short_path") (value "mcu.usb_res.dp")) (property (name "edg_refdes") (value "JR7")) - (property (name "edg_part") (value "0603WAF1002T5E (UNI-ROYAL(Uniroyal Elec))")) - (property (name "edg_value") (value "±1% 1/10W Thick Film Resistors 75V ±100ppm/℃ -55℃~+155℃ 10kΩ 0603 Chip Resistor - Surface Mount ROHS")) - (sheetpath (names "/ax2_div/") (tstamps "/0a6802ae/")) - (tstamps "175b043f")) -(comp (ref "JU5") - (value "trig.ic") - (footprint "Package_TO_SOT_SMD:SOT-23") - (property (name "Sheetname") (value "trig")) - (property (name "Sheetfile") (value "edg.parts.sensor.Mag_A1304.A1304")) - (property (name "edg_path") (value "trig.ic")) - (property (name "edg_short_path") (value "trig.ic")) - (property (name "edg_refdes") (value "JU5")) - (property (name "edg_part") (value "A1304ELHLX-T (Allegro MicroSystems)")) - (property (name "edg_value") (value "A1304ELHLX-T")) - (sheetpath (names "/trig/") (tstamps "/046301b7/")) - (tstamps "013700cd")) -(comp (ref "JC12") - (value "trig.cbyp") - (footprint "Capacitor_SMD:C_0603_1608Metric") - (property (name "Sheetname") (value "trig")) - (property (name "Sheetfile") (value "edg.parts.sensor.Mag_A1304.A1304")) - (property (name "edg_path") (value "trig.cbyp.cap")) - (property (name "edg_short_path") (value "trig.cbyp")) - (property (name "edg_refdes") (value "JC12")) - (property (name "edg_part") (value "CC0603KRX7R9BB104 (YAGEO)")) - (property (name "edg_value") (value "50V 100nF X7R ±10% 0603 Multilayer Ceramic Capacitors MLCC - SMD/SMT ROHS")) - (sheetpath (names "/trig/") (tstamps "/046301b7/")) - (tstamps "041801af")) + (property (name "edg_part") (value "0603WAF270JT5E (UNI-ROYAL(Uniroyal Elec))")) + (property (name "edg_value") (value "±1% 1/10W Thick Film Resistors 75V ±200ppm/℃ -55℃~+155℃ 27Ω 0603 Chip Resistor - Surface Mount ROHS")) + (sheetpath (names "/mcu/usb_res/") (tstamps "/02850146/0be502f4/")) + (tstamps "013a00d5")) (comp (ref "JR8") - (value "trig_div.top_res") + (value "mcu.usb_res.dm") (footprint "Resistor_SMD:R_0603_1608Metric") - (property (name "Sheetname") (value "trig_div")) - (property (name "Sheetfile") (value "edg.circuits.ResistiveDivider.SignalDivider")) - (property (name "edg_path") (value "trig_div.div.top_res")) - (property (name "edg_short_path") (value "trig_div.top_res")) + (property (name "Sheetname") (value "usb_res")) + (property (name "Sheetfile") (value "edg.circuits.UsbSeriesResistor.UsbSeriesResistor")) + (property (name "edg_path") (value "mcu.usb_res.dm.res")) + (property (name "edg_short_path") (value "mcu.usb_res.dm")) (property (name "edg_refdes") (value "JR8")) - (property (name "edg_part") (value "0603WAF1002T5E (UNI-ROYAL(Uniroyal Elec))")) - (property (name "edg_value") (value "±1% 1/10W Thick Film Resistors 75V ±100ppm/℃ -55℃~+155℃ 10kΩ 0603 Chip Resistor - Surface Mount ROHS")) - (sheetpath (names "/trig_div/") (tstamps "/0f2f0359/")) - (tstamps "0c0c02fd")) -(comp (ref "JR9") - (value "trig_div.bottom_res") - (footprint "Resistor_SMD:R_0603_1608Metric") - (property (name "Sheetname") (value "trig_div")) - (property (name "Sheetfile") (value "edg.circuits.ResistiveDivider.SignalDivider")) - (property (name "edg_path") (value "trig_div.div.bottom_res")) - (property (name "edg_short_path") (value "trig_div.bottom_res")) - (property (name "edg_refdes") (value "JR9")) - (property (name "edg_part") (value "0603WAF1002T5E (UNI-ROYAL(Uniroyal Elec))")) - (property (name "edg_value") (value "±1% 1/10W Thick Film Resistors 75V ±100ppm/℃ -55℃~+155℃ 10kΩ 0603 Chip Resistor - Surface Mount ROHS")) - (sheetpath (names "/trig_div/") (tstamps "/0f2f0359/")) - (tstamps "175b043f")) -(comp (ref "JSW2") - (value "sw[0]") - (footprint "project:MembraneSwitch_4mm") - (property (name "Sheetname") (value "")) - (property (name "Sheetfile") (value "")) - (property (name "edg_path") (value "sw[0].package")) - (property (name "edg_short_path") (value "sw[0]")) - (property (name "edg_refdes") (value "JSW2")) - (property (name "edg_part") (value "3.9x2.9mm Switch")) - (property (name "edg_value") (value "3.9x2.9mm Switch")) - (sheetpath (names "/") (tstamps "/")) - (tstamps "05ee01d3")) -(comp (ref "JSW3") - (value "sw[1]") - (footprint "project:MembraneSwitch_4mm") - (property (name "Sheetname") (value "")) - (property (name "Sheetfile") (value "")) - (property (name "edg_path") (value "sw[1].package")) - (property (name "edg_short_path") (value "sw[1]")) - (property (name "edg_refdes") (value "JSW3")) - (property (name "edg_part") (value "3.9x2.9mm Switch")) - (property (name "edg_value") (value "3.9x2.9mm Switch")) - (sheetpath (names "/") (tstamps "/")) - (tstamps "05f001d4")) -(comp (ref "JSW4") - (value "sw[2]") - (footprint "project:MembraneSwitch_4mm") + (property (name "edg_part") (value "0603WAF270JT5E (UNI-ROYAL(Uniroyal Elec))")) + (property (name "edg_value") (value "±1% 1/10W Thick Film Resistors 75V ±200ppm/℃ -55℃~+155℃ 27Ω 0603 Chip Resistor - Surface Mount ROHS")) + (sheetpath (names "/mcu/usb_res/") (tstamps "/02850146/0be502f4/")) + (tstamps "013700d2")) +(comp (ref "JU5") + (value "usb_esd") + (footprint "Package_TO_SOT_SMD:SOT-23") (property (name "Sheetname") (value "")) (property (name "Sheetfile") (value "")) - (property (name "edg_path") (value "sw[2].package")) - (property (name "edg_short_path") (value "sw[2]")) - (property (name "edg_refdes") (value "JSW4")) - (property (name "edg_part") (value "3.9x2.9mm Switch")) - (property (name "edg_value") (value "3.9x2.9mm Switch")) + (property (name "edg_path") (value "usb_esd")) + (property (name "edg_short_path") (value "usb_esd")) + (property (name "edg_refdes") (value "JU5")) + (property (name "edg_part") (value "PESD5V0X1BT (Nexperia)")) + (property (name "edg_value") (value "PESD5V0X1BT")) (sheetpath (names "/") (tstamps "/")) - (tstamps "05f201d5")) -(comp (ref "JD2") + (tstamps "0bcb02e6")) +(comp (ref "JD4") (value "ledr.package") (footprint "LED_SMD:LED_0603_1608Metric") (property (name "Sheetname") (value "ledr")) (property (name "Sheetfile") (value "edg.abstract_parts.Led.IndicatorSinkLedResistor")) (property (name "edg_path") (value "ledr.package")) (property (name "edg_short_path") (value "ledr.package")) - (property (name "edg_refdes") (value "JD2")) + (property (name "edg_refdes") (value "JD4")) (property (name "edg_part") (value "KT-0603R (Hubei KENTO Elec)")) (property (name "edg_value") (value "Red 615~630nm 1.9~2.2V 0603 Light Emitting Diodes (LED) RoHS")) (sheetpath (names "/ledr/") (tstamps "/041d01a8/")) (tstamps "0b4e02cd")) -(comp (ref "JR10") +(comp (ref "JR9") (value "ledr.res") (footprint "Resistor_SMD:R_0603_1608Metric") (property (name "Sheetname") (value "ledr")) (property (name "Sheetfile") (value "edg.abstract_parts.Led.IndicatorSinkLedResistor")) (property (name "edg_path") (value "ledr.res")) (property (name "edg_short_path") (value "ledr.res")) - (property (name "edg_refdes") (value "JR10")) + (property (name "edg_refdes") (value "JR9")) (property (name "edg_part") (value "0603WAF1001T5E (UNI-ROYAL(Uniroyal Elec))")) (property (name "edg_value") (value "±1% 1/10W Thick Film Resistors 75V ±100ppm/℃ -55℃~+155℃ 1kΩ 0603 Chip Resistor - Surface Mount ROHS")) (sheetpath (names "/ledr/") (tstamps "/041d01a8/")) (tstamps "0296014b")) -(comp (ref "JR11") - (value "vbat_sense.top_res") - (footprint "Resistor_SMD:R_0603_1608Metric") - (property (name "Sheetname") (value "vbat_sense")) - (property (name "Sheetfile") (value "edg.circuits.ResistiveDivider.VoltageSenseDivider")) - (property (name "edg_path") (value "vbat_sense.div.top_res")) - (property (name "edg_short_path") (value "vbat_sense.top_res")) - (property (name "edg_refdes") (value "JR11")) - (property (name "edg_part") (value "0603WAF1002T5E (UNI-ROYAL(Uniroyal Elec))")) - (property (name "edg_value") (value "±1% 1/10W Thick Film Resistors 75V ±100ppm/℃ -55℃~+155℃ 10kΩ 0603 Chip Resistor - Surface Mount ROHS")) - (sheetpath (names "/vbat_sense/") (tstamps "/16ee042b/")) - (tstamps "0c0c02fd")) -(comp (ref "JR12") - (value "vbat_sense.bottom_res") - (footprint "Resistor_SMD:R_0603_1608Metric") - (property (name "Sheetname") (value "vbat_sense")) - (property (name "Sheetfile") (value "edg.circuits.ResistiveDivider.VoltageSenseDivider")) - (property (name "edg_path") (value "vbat_sense.div.bottom_res")) - (property (name "edg_short_path") (value "vbat_sense.bottom_res")) - (property (name "edg_refdes") (value "JR12")) - (property (name "edg_part") (value "0603WAF1002T5E (UNI-ROYAL(Uniroyal Elec))")) - (property (name "edg_value") (value "±1% 1/10W Thick Film Resistors 75V ±100ppm/℃ -55℃~+155℃ 10kΩ 0603 Chip Resistor - Surface Mount ROHS")) - (sheetpath (names "/vbat_sense/") (tstamps "/16ee042b/")) - (tstamps "175b043f")) -(comp (ref "JR13") +(comp (ref "JR10") (value "i2c_pull.scl_res") (footprint "Resistor_SMD:R_0603_1608Metric") (property (name "Sheetname") (value "i2c_pull")) (property (name "Sheetfile") (value "edg.circuits.I2cPullup.I2cPullup")) (property (name "edg_path") (value "i2c_pull.scl_res.res")) (property (name "edg_short_path") (value "i2c_pull.scl_res")) - (property (name "edg_refdes") (value "JR13")) + (property (name "edg_refdes") (value "JR10")) (property (name "edg_part") (value "0603WAF4701T5E (UNI-ROYAL(Uniroyal Elec))")) (property (name "edg_value") (value "±1% 1/10W Thick Film Resistors 75V ±100ppm/℃ -55℃~+155℃ 4.7kΩ 0603 Chip Resistor - Surface Mount ROHS")) (sheetpath (names "/i2c_pull/") (tstamps "/0d3e031b/")) (tstamps "0ba902ec")) -(comp (ref "JR14") +(comp (ref "JR11") (value "i2c_pull.sda_res") (footprint "Resistor_SMD:R_0603_1608Metric") (property (name "Sheetname") (value "i2c_pull")) (property (name "Sheetfile") (value "edg.circuits.I2cPullup.I2cPullup")) (property (name "edg_path") (value "i2c_pull.sda_res.res")) (property (name "edg_short_path") (value "i2c_pull.sda_res")) - (property (name "edg_refdes") (value "JR14")) + (property (name "edg_refdes") (value "JR11")) (property (name "edg_part") (value "0603WAF4701T5E (UNI-ROYAL(Uniroyal Elec))")) (property (name "edg_value") (value "±1% 1/10W Thick Film Resistors 75V ±100ppm/℃ -55℃~+155℃ 4.7kΩ 0603 Chip Resistor - Surface Mount ROHS")) (sheetpath (names "/i2c_pull/") (tstamps "/0d3e031b/")) - (tstamps "0b7802e2"))) + (tstamps "0b7802e2")) +(comp (ref "JTP6") + (value "_mcu_i2c_i2c_link.scl") + (footprint "edg:TestPoint_TE_RCT_0805") + (property (name "Sheetname") (value "tp_i2c")) + (property (name "Sheetfile") (value "edg.abstract_parts.TestPoint.I2cTestPoint")) + (property (name "edg_path") (value "tp_i2c.tp_scl.tp")) + (property (name "edg_short_path") (value "tp_i2c.tp_scl")) + (property (name "edg_refdes") (value "JTP6")) + (property (name "edg_part") (value "5015 (Keystone)")) + (property (name "edg_value") (value "_mcu_i2c_i2c_link.scl")) + (sheetpath (names "/tp_i2c/") (tstamps "/086c0242/")) + (tstamps "08f50286")) +(comp (ref "JTP7") + (value "_mcu_i2c_i2c_link.sda") + (footprint "edg:TestPoint_TE_RCT_0805") + (property (name "Sheetname") (value "tp_i2c")) + (property (name "Sheetfile") (value "edg.abstract_parts.TestPoint.I2cTestPoint")) + (property (name "edg_path") (value "tp_i2c.tp_sda.tp")) + (property (name "edg_short_path") (value "tp_i2c.tp_sda")) + (property (name "edg_refdes") (value "JTP7")) + (property (name "edg_part") (value "5015 (Keystone)")) + (property (name "edg_value") (value "_mcu_i2c_i2c_link.sda")) + (sheetpath (names "/tp_i2c/") (tstamps "/086c0242/")) + (tstamps "08ec027c")) +(comp (ref "JU6") + (value "imu.ic") + (footprint "Package_LGA:Bosch_LGA-14_3x2.5mm_P0.5mm") + (property (name "Sheetname") (value "imu")) + (property (name "Sheetfile") (value "edg.parts.sensor.Imu_Lsm6ds3trc.Lsm6ds3trc")) + (property (name "edg_path") (value "imu.ic")) + (property (name "edg_short_path") (value "imu.ic")) + (property (name "edg_refdes") (value "JU6")) + (property (name "edg_part") (value "LSM6DS3TR-C (STMicroelectronics)")) + (property (name "edg_value") (value "LSM6DS3TR-C")) + (sheetpath (names "/imu/") (tstamps "/028d014c/")) + (tstamps "013700cd")) +(comp (ref "JC8") + (value "imu.vdd_cap") + (footprint "Capacitor_SMD:C_0603_1608Metric") + (property (name "Sheetname") (value "imu")) + (property (name "Sheetfile") (value "edg.parts.sensor.Imu_Lsm6ds3trc.Lsm6ds3trc")) + (property (name "edg_path") (value "imu.vdd_cap.cap")) + (property (name "edg_short_path") (value "imu.vdd_cap")) + (property (name "edg_refdes") (value "JC8")) + (property (name "edg_part") (value "CC0603KRX7R9BB104 (YAGEO)")) + (property (name "edg_value") (value "50V 100nF X7R ±10% 0603 Multilayer Ceramic Capacitors MLCC - SMD/SMT ROHS")) + (sheetpath (names "/imu/") (tstamps "/028d014c/")) + (tstamps "0b6402d2")) +(comp (ref "JC9") + (value "imu.vddio_cap") + (footprint "Capacitor_SMD:C_0603_1608Metric") + (property (name "Sheetname") (value "imu")) + (property (name "Sheetfile") (value "edg.parts.sensor.Imu_Lsm6ds3trc.Lsm6ds3trc")) + (property (name "edg_path") (value "imu.vddio_cap.cap")) + (property (name "edg_short_path") (value "imu.vddio_cap")) + (property (name "edg_refdes") (value "JC9")) + (property (name "edg_part") (value "CC0603KRX7R9BB104 (YAGEO)")) + (property (name "edg_value") (value "50V 100nF X7R ±10% 0603 Multilayer Ceramic Capacitors MLCC - SMD/SMT ROHS")) + (sheetpath (names "/imu/") (tstamps "/028d014c/")) + (tstamps "128303aa")) +(comp (ref "JU7") + (value "mag.ic") + (footprint "Package_LGA:LGA-16_3x3mm_P0.5mm") + (property (name "Sheetname") (value "mag")) + (property (name "Sheetfile") (value "edg.parts.sensor.Mag_Qmc5883l.Qmc5883l")) + (property (name "edg_path") (value "mag.ic")) + (property (name "edg_short_path") (value "mag.ic")) + (property (name "edg_refdes") (value "JU7")) + (property (name "edg_part") (value "QMC5883L (QST)")) + (property (name "edg_value") (value "QMC5883L")) + (sheetpath (names "/mag/") (tstamps "/02730136/")) + (tstamps "013700cd")) +(comp (ref "JC10") + (value "mag.vdd_cap") + (footprint "Capacitor_SMD:C_0603_1608Metric") + (property (name "Sheetname") (value "mag")) + (property (name "Sheetfile") (value "edg.parts.sensor.Mag_Qmc5883l.Qmc5883l")) + (property (name "edg_path") (value "mag.vdd_cap.cap")) + (property (name "edg_short_path") (value "mag.vdd_cap")) + (property (name "edg_refdes") (value "JC10")) + (property (name "edg_part") (value "CC0603KRX7R9BB104 (YAGEO)")) + (property (name "edg_value") (value "50V 100nF X7R ±10% 0603 Multilayer Ceramic Capacitors MLCC - SMD/SMT ROHS")) + (sheetpath (names "/mag/") (tstamps "/02730136/")) + (tstamps "0b6402d2")) +(comp (ref "JC11") + (value "mag.set_cap") + (footprint "Capacitor_SMD:C_0603_1608Metric") + (property (name "Sheetname") (value "mag")) + (property (name "Sheetfile") (value "edg.parts.sensor.Mag_Qmc5883l.Qmc5883l")) + (property (name "edg_path") (value "mag.set_cap")) + (property (name "edg_short_path") (value "mag.set_cap")) + (property (name "edg_refdes") (value "JC11")) + (property (name "edg_part") (value "CL10B224KA8NNNC (Samsung Electro-Mechanics)")) + (property (name "edg_value") (value "25V 220nF X7R ±10% 0603 Multilayer Ceramic Capacitors MLCC - SMD/SMT ROHS")) + (sheetpath (names "/mag/") (tstamps "/02730136/")) + (tstamps "0ba502e0")) +(comp (ref "JC12") + (value "mag.c1") + (footprint "Capacitor_SMD:C_0805_2012Metric") + (property (name "Sheetname") (value "mag")) + (property (name "Sheetfile") (value "edg.parts.sensor.Mag_Qmc5883l.Qmc5883l")) + (property (name "edg_path") (value "mag.c1.cap")) + (property (name "edg_short_path") (value "mag.c1")) + (property (name "edg_refdes") (value "JC12")) + (property (name "edg_part") (value "CL21A475KAQNNNE (Samsung Electro-Mechanics)")) + (property (name "edg_value") (value "25V 4.7uF X5R ±10% 0805 Multilayer Ceramic Capacitors MLCC - SMD/SMT ROHS")) + (sheetpath (names "/mag/") (tstamps "/02730136/")) + (tstamps "00f90095")) +(comp (ref "JJ4") + (value "stick") + (footprint "Connector_FFC-FPC:Hirose_FH12-8S-0.5SH_1x08-1MP_P0.50mm_Horizontal") + (property (name "Sheetname") (value "")) + (property (name "Sheetfile") (value "")) + (property (name "edg_path") (value "stick.conn.ext")) + (property (name "edg_short_path") (value "stick")) + (property (name "edg_refdes") (value "JJ4")) + (property (name "edg_part") (value "AFC01-S08FC*-00 (Jushuo)")) + (property (name "edg_value") (value "AFC01-S08FC*-00")) + (sheetpath (names "/") (tstamps "/")) + (tstamps "0680021f")) +(comp (ref "JJ7") + (value "btns") + (footprint "Connector_FFC-FPC:Hirose_FH12-8S-0.5SH_1x08-1MP_P0.50mm_Horizontal") + (property (name "Sheetname") (value "")) + (property (name "Sheetfile") (value "")) + (property (name "edg_path") (value "btns.conn.ext")) + (property (name "edg_short_path") (value "btns")) + (property (name "edg_refdes") (value "JJ7")) + (property (name "edg_part") (value "AFC01-S08FC*-00 (Jushuo)")) + (property (name "edg_value") (value "AFC01-S08FC*-00")) + (sheetpath (names "/") (tstamps "/")) + (tstamps "043701b8"))) (nets (net (code 1) (name "Jvbat") (node (ref JJ1) (pin 2)) (node (ref JTP1) (pin 1)) - (node (ref JU1) (pin 12)) - (node (ref JU1) (pin 14)) - (node (ref JC3) (pin 1)) - (node (ref JR11) (pin 1))) + (node (ref JR4) (pin 1)) + (node (ref JQ1) (pin 2)) + (node (ref JU3) (pin 3)) + (node (ref JC5) (pin 1))) (net (code 2) (name "Jvusb") (node (ref JJ2) (pin A4)) (node (ref JJ2) (pin A9)) (node (ref JJ2) (pin B4)) (node (ref JJ2) (pin B9)) (node (ref JTP2) (pin 1)) - (node (ref JU1) (pin 2)) - (node (ref JC5) (pin 1))) + (node (ref JU3) (pin 4)) + (node (ref JC4) (pin 1)) + (node (ref JU4) (pin 22)) + (node (ref JC7) (pin 1))) (net (code 3) (name "Jgnd") (node (ref JJ1) (pin 1)) (node (ref JJ2) (pin A1)) @@ -599,165 +649,186 @@ (node (ref JJ2) (pin B1)) (node (ref JJ2) (pin B12)) (node (ref JJ2) (pin S1)) + (node (ref JR1) (pin 1)) + (node (ref JR2) (pin 1)) (node (ref JTP3) (pin 1)) - (node (ref JU1) (pin 18)) - (node (ref JU1) (pin 5)) + (node (ref JU1) (pin 3)) + (node (ref JU1) (pin 7)) + (node (ref JU1) (pin 8)) + (node (ref JC1) (pin 2)) + (node (ref JR5) (pin 1)) + (node (ref JQ2) (pin 2)) + (node (ref JU2) (pin 1)) (node (ref JC2) (pin 2)) (node (ref JC3) (pin 2)) + (node (ref JD3) (pin 2)) + (node (ref JU3) (pin 2)) (node (ref JC4) (pin 2)) (node (ref JC5) (pin 2)) + (node (ref JQ3) (pin 2)) + (node (ref JU4) (pin 1)) + (node (ref JU4) (pin 25)) + (node (ref JU4) (pin 37)) (node (ref JC6) (pin 2)) - (node (ref JU2) (pin 1)) + (node (ref JJ3) (pin 5)) (node (ref JC7) (pin 2)) + (node (ref JU5) (pin 3)) + (node (ref JU6) (pin 1)) + (node (ref JU6) (pin 2)) + (node (ref JU6) (pin 3)) + (node (ref JU6) (pin 6)) + (node (ref JU6) (pin 7)) (node (ref JC8) (pin 2)) - (node (ref JD1) (pin 2)) - (node (ref JR2) (pin 2)) - (node (ref JJ3) (pin 5)) - (node (ref JSW1) (pin 2)) - (node (ref JU3) (pin 19)) - (node (ref JU3) (pin 9)) (node (ref JC9) (pin 2)) + (node (ref JU7) (pin 11)) + (node (ref JU7) (pin 9)) (node (ref JC10) (pin 2)) - (node (ref JC11) (pin 2)) - (node (ref JJ4) (pin 1)) - (node (ref JR5) (pin 2)) - (node (ref JR7) (pin 2)) - (node (ref JU5) (pin 3)) (node (ref JC12) (pin 2)) - (node (ref JR9) (pin 2)) - (node (ref JSW2) (pin 2)) - (node (ref JSW3) (pin 2)) - (node (ref JSW4) (pin 2)) - (node (ref JR12) (pin 2))) -(net (code 4) (name "Jv3v3") + (node (ref JJ4) (pin 1)) + (node (ref JJ7) (pin 1)) + (node (ref JJ7) (pin 6))) +(net (code 4) (name "Jvbat_gated") + (node (ref JU1) (pin 1)) + (node (ref JR3) (pin 1)) + (node (ref JQ1) (pin 3)) + (node (ref JTP5) (pin 1)) + (node (ref JJ7) (pin 7)) + (node (ref JJ7) (pin 8))) +(net (code 5) (name "Jv3v3") + (node (ref JU1) (pin 4)) + (node (ref JC1) (pin 1)) (node (ref JU2) (pin 3)) - (node (ref JC8) (pin 1)) + (node (ref JC3) (pin 1)) (node (ref JTP4) (pin 1)) - (node (ref JD1) (pin 1)) + (node (ref JD3) (pin 1)) + (node (ref JU4) (pin 14)) + (node (ref JC6) (pin 1)) (node (ref JJ3) (pin 1)) - (node (ref JU3) (pin 1)) - (node (ref JU3) (pin 16)) - (node (ref JU3) (pin 7)) + (node (ref JD4) (pin 2)) + (node (ref JR10) (pin 1)) + (node (ref JR11) (pin 1)) + (node (ref JU6) (pin 12)) + (node (ref JU6) (pin 5)) + (node (ref JU6) (pin 8)) + (node (ref JC8) (pin 1)) (node (ref JC9) (pin 1)) + (node (ref JU7) (pin 13)) + (node (ref JU7) (pin 2)) + (node (ref JU7) (pin 4)) (node (ref JC10) (pin 1)) - (node (ref JR3) (pin 1)) - (node (ref JJ4) (pin 2)) - (node (ref JU5) (pin 1)) - (node (ref JC12) (pin 1)) - (node (ref JD2) (pin 2)) - (node (ref JR13) (pin 1)) - (node (ref JR14) (pin 1))) -(net (code 5) (name "Jusb.usb.dp") + (node (ref JJ7) (pin 2))) +(net (code 6) (name "Jusb_chain_0.d_P") (node (ref JJ2) (pin A6)) - (node (ref JJ2) (pin B6))) -(net (code 6) (name "Jusb.usb.dm") + (node (ref JJ2) (pin B6)) + (node (ref JR7) (pin 1)) + (node (ref JU5) (pin 2))) +(net (code 7) (name "Jusb_chain_0.d_N") (node (ref JJ2) (pin A7)) - (node (ref JJ2) (pin B7))) -(net (code 7) (name "Jusb.cc.cc1") + (node (ref JJ2) (pin B7)) + (node (ref JR8) (pin 1)) + (node (ref JU5) (pin 1))) +(net (code 8) (name "Jusb.conn.cc.cc1") (node (ref JJ2) (pin A5)) - (node (ref JU1) (pin 1))) -(net (code 8) (name "Jusb.cc.cc2") + (node (ref JR1) (pin 2))) +(net (code 9) (name "Jusb.conn.cc.cc2") (node (ref JJ2) (pin B5)) - (node (ref JU1) (pin 22))) -(net (code 9) (name "Jmp2722.pwr_out") - (node (ref JU1) (pin 13)) - (node (ref JL1) (pin 2)) - (node (ref JC6) (pin 1)) - (node (ref JU2) (pin 2)) - (node (ref JC7) (pin 1))) -(net (code 10) (name "Jmp2722.vrntc") - (node (ref JU1) (pin 7)) - (node (ref JR1) (pin 1))) -(net (code 11) (name "Jmp2722.ntc1") - (node (ref JU1) (pin 10)) - (node (ref JR1) (pin 2)) - (node (ref JR2) (pin 1))) -(net (code 12) (name "Jmp2722.rst") - (node (ref JU1) (pin 17)) - (node (ref JU3) (pin 5)) - (node (ref JJ4) (pin 4))) -(net (code 13) (name "Jmp2722.int") - (node (ref JU1) (pin 8))) -(net (code 14) (name "Jmp2722.stat") - (node (ref JU1) (pin 11))) -(net (code 15) (name "Jmp2722.pg") - (node (ref JU1) (pin 9))) -(net (code 16) (name "Jmp2722.i2c.scl") - (node (ref JU1) (pin 16)) - (node (ref JU3) (pin 4)) - (node (ref JR13) (pin 2))) -(net (code 17) (name "Jmp2722.i2c.sda") - (node (ref JU1) (pin 15)) - (node (ref JU3) (pin 14)) - (node (ref JR14) (pin 2))) -(net (code 18) (name "Jmp2722.usb.dp") - (node (ref JU1) (pin 21))) -(net (code 19) (name "Jmp2722.usb.dm") - (node (ref JU1) (pin 20))) -(net (code 20) (name "Jmp2722.ic.sw") - (node (ref JU1) (pin 4)) - (node (ref JC1) (pin 2)) - (node (ref JL1) (pin 1))) -(net (code 21) (name "Jmp2722.ic.pmid") - (node (ref JU1) (pin 3)) - (node (ref JC2) (pin 1))) -(net (code 22) (name "Jmp2722.ic.bst") + (node (ref JR2) (pin 2))) +(net (code 10) (name "Jvbat_sense.i2c.scl") + (node (ref JU1) (pin 5)) + (node (ref JU4) (pin 12)) + (node (ref JR10) (pin 2)) + (node (ref JTP6) (pin 1)) + (node (ref JU6) (pin 13)) + (node (ref JU7) (pin 1)) + (node (ref JJ7) (pin 3))) +(net (code 11) (name "Jvbat_sense.i2c.sda") (node (ref JU1) (pin 6)) - (node (ref JC1) (pin 1))) -(net (code 23) (name "Jmp2722.ic.vcc") - (node (ref JU1) (pin 19)) - (node (ref JC4) (pin 1))) -(net (code 24) (name "Jmcu.program_uart_node.a_tx") - (node (ref JJ3) (pin 4)) - (node (ref JU3) (pin 11))) -(net (code 25) (name "Jmcu.program_uart_node.b_tx") - (node (ref JJ3) (pin 3)) - (node (ref JU3) (pin 12))) -(net (code 26) (name "Jmcu.program_en_node") - (node (ref JJ3) (pin 6)) - (node (ref JU3) (pin 2)) + (node (ref JU4) (pin 13)) + (node (ref JR11) (pin 2)) + (node (ref JTP7) (pin 1)) + (node (ref JU6) (pin 14)) + (node (ref JU7) (pin 16)) + (node (ref JJ7) (pin 4))) +(net (code 12) (name "Jvbat_sense.sense_neg") + (node (ref JU1) (pin 2)) (node (ref JR3) (pin 2)) - (node (ref JC11) (pin 1))) -(net (code 27) (name "Jmcu.program_boot_node") - (node (ref JJ3) (pin 2)) - (node (ref JSW1) (pin 1)) - (node (ref JU3) (pin 8)) - (node (ref JR10) (pin 2))) -(net (code 28) (name "Jstick.ax1") - (node (ref JJ4) (pin 5)) - (node (ref JR4) (pin 1))) -(net (code 29) (name "Jstick.ax2") - (node (ref JJ4) (pin 6)) - (node (ref JR6) (pin 1))) -(net (code 30) (name "Jax1_div.output") - (node (ref JU3) (pin 3)) + (node (ref JU2) (pin 2)) + (node (ref JC2) (pin 1))) +(net (code 13) (name "Jgate.btn_out") + (node (ref JD2) (pin 2)) + (node (ref JU4) (pin 5))) +(net (code 14) (name "Jgate.btn_in") + (node (ref JD1) (pin 1)) + (node (ref JD2) (pin 1)) + (node (ref JJ4) (pin 4))) +(net (code 15) (name "Jgate.control") + (node (ref JR5) (pin 2)) + (node (ref JQ2) (pin 1)) + (node (ref JU4) (pin 4))) +(net (code 16) (name "Jgate.pull_res.b") (node (ref JR4) (pin 2)) - (node (ref JR5) (pin 1))) -(net (code 31) (name "Jax2_div.output") - (node (ref JU3) (pin 15)) - (node (ref JR6) (pin 2)) - (node (ref JR7) (pin 1))) -(net (code 32) (name "Jtrig.out") - (node (ref JU5) (pin 2)) - (node (ref JR8) (pin 1))) -(net (code 33) (name "Jtrig_div.output") - (node (ref JU3) (pin 17)) - (node (ref JR8) (pin 2)) + (node (ref JQ1) (pin 1)) + (node (ref JQ2) (pin 3)) + (node (ref JD1) (pin 2))) +(net (code 17) (name "Jchg.stat") + (node (ref JU3) (pin 1))) +(net (code 18) (name "Jchg.prog_ctl") + (node (ref JQ3) (pin 1)) + (node (ref JU4) (pin 10))) +(net (code 19) (name "Jchg.ic.prog") + (node (ref JU3) (pin 5)) + (node (ref JR6) (pin 2))) +(net (code 20) (name "Jchg.prog_res.gnd") + (node (ref JR6) (pin 1)) + (node (ref JQ3) (pin 3))) +(net (code 21) (name "Jmcu.swd_node.swdio") + (node (ref JU4) (pin 32)) + (node (ref JJ3) (pin 2))) +(net (code 22) (name "Jmcu.swd_node.swclk") + (node (ref JU4) (pin 31)) + (node (ref JJ3) (pin 4))) +(net (code 23) (name "Jmcu.reset_node") + (node (ref JU4) (pin 21)) + (node (ref JJ3) (pin 3))) +(net (code 24) (name "Jmcu.swd.swo") + (node (ref JJ3) (pin 6))) +(net (code 25) (name "Jmcu.usb_res.interior.dp") + (node (ref JU4) (pin 24)) + (node (ref JR7) (pin 2))) +(net (code 26) (name "Jmcu.usb_res.interior.dm") + (node (ref JU4) (pin 23)) + (node (ref JR8) (pin 2))) +(net (code 27) (name "Jledr.signal") + (node (ref JU4) (pin 7)) + (node (ref JR9) (pin 2))) +(net (code 28) (name "Jledr.package.k") + (node (ref JD4) (pin 1)) (node (ref JR9) (pin 1))) -(net (code 34) (name "Jsw[0].out") - (node (ref JU3) (pin 10)) - (node (ref JSW2) (pin 1))) -(net (code 35) (name "Jsw[1].out") - (node (ref JU3) (pin 13)) - (node (ref JSW3) (pin 1))) -(net (code 36) (name "Jsw[2].out") - (node (ref JU3) (pin 6)) - (node (ref JSW4) (pin 1))) -(net (code 37) (name "Jledr.package.k") - (node (ref JD2) (pin 1)) - (node (ref JR10) (pin 1))) -(net (code 38) (name "Jvbat_sense.output") - (node (ref JU3) (pin 18)) - (node (ref JR11) (pin 2)) - (node (ref JR12) (pin 1)))) +(net (code 29) (name "Jimu.int1") + (node (ref JU6) (pin 4))) +(net (code 30) (name "Jimu.int2") + (node (ref JU6) (pin 9))) +(net (code 31) (name "Jmag.drdy") + (node (ref JU7) (pin 15))) +(net (code 32) (name "Jmag.ic.setp") + (node (ref JU7) (pin 8)) + (node (ref JC11) (pin 1))) +(net (code 33) (name "Jmag.ic.setc") + (node (ref JU7) (pin 12)) + (node (ref JC11) (pin 2))) +(net (code 34) (name "Jmag.ic.c1") + (node (ref JU7) (pin 10)) + (node (ref JC12) (pin 1))) +(net (code 35) (name "Jstick.pwr") + (node (ref JU4) (pin 3)) + (node (ref JJ4) (pin 2))) +(net (code 36) (name "Jstick.ax1") + (node (ref JU4) (pin 11)) + (node (ref JJ4) (pin 5))) +(net (code 37) (name "Jstick.ax2") + (node (ref JU4) (pin 9)) + (node (ref JJ4) (pin 6))) +(net (code 38) (name "Jbtns.io0") + (node (ref JU4) (pin 8)) + (node (ref JJ7) (pin 5)))) ) \ No newline at end of file diff --git a/examples/BleJoystick/BleJoystick.svgpcb.js b/examples/BleJoystick/BleJoystick.svgpcb.js index b41c77e67..714a28916 100644 --- a/examples/BleJoystick/BleJoystick.svgpcb.js +++ b/examples/BleJoystick/BleJoystick.svgpcb.js @@ -2,288 +2,308 @@ const board = new PCB(); // jlc_th.th1 const JH1 = board.add(JlcToolingHole_1_152mm, { - translate: pt(1.950, 1.551), rotate: 0, + translate: pt(0.936, 1.640), rotate: 0, id: 'JH1' }) // jlc_th.th2 const JH2 = board.add(JlcToolingHole_1_152mm, { - translate: pt(1.989, 1.551), rotate: 0, + translate: pt(0.975, 1.640), rotate: 0, id: 'JH2' }) // jlc_th.th3 const JH3 = board.add(JlcToolingHole_1_152mm, { - translate: pt(1.950, 1.591), rotate: 0, + translate: pt(0.936, 1.680), rotate: 0, id: 'JH3' }) // bat.conn const JJ1 = board.add(JST_PH_B2B_PH_K_1x02_P2_00mm_Vertical, { - translate: pt(1.233, 1.252), rotate: 0, + translate: pt(0.487, 1.429), rotate: 0, id: 'JJ1' }) // usb.conn const JJ2 = board.add(USB_C_Receptacle_XKB_U262_16XN_4BVC11, { - translate: pt(1.804, 0.640), rotate: 0, + translate: pt(1.243, 0.165), rotate: 0, id: 'JJ2' }) +// usb.cc_pull.cc1.res +const JR1 = board.add(R_0603_1608Metric, { + translate: pt(1.091, 0.420), rotate: 0, + id: 'JR1' +}) +// usb.cc_pull.cc2.res +const JR2 = board.add(R_0603_1608Metric, { + translate: pt(1.247, 0.420), rotate: 0, + id: 'JR2' +}) // tp_bat.tp const JTP1 = board.add(TestPoint_TE_RCT_0805, { - translate: pt(0.770, 1.589), rotate: 0, + translate: pt(1.566, 1.337), rotate: 0, id: 'JTP1' }) // tp_usb.tp const JTP2 = board.add(TestPoint_TE_RCT_0805, { - translate: pt(1.020, 1.589), rotate: 0, + translate: pt(1.817, 1.337), rotate: 0, id: 'JTP2' }) // tp_gnd.tp const JTP3 = board.add(TestPoint_TE_RCT_0805, { - translate: pt(1.271, 1.589), rotate: 0, + translate: pt(2.067, 1.337), rotate: 0, id: 'JTP3' }) -// mp2722.ic -const JU1 = board.add(MPS_QFN_22_2_5x3_5mm_P0_4mm, { - translate: pt(1.924, 0.280), rotate: 0, +// vbat_sense.ic +const JU1 = board.add(SOT_23_8, { + translate: pt(1.651, 0.067), rotate: 0, id: 'JU1' }) -// mp2722.vbst_cap.cap +// vbat_sense.vs_cap.cap const JC1 = board.add(C_0603_1608Metric, { - translate: pt(1.826, 0.309), rotate: 0, + translate: pt(1.628, 0.330), rotate: 0, id: 'JC1' }) -// mp2722.pmid_cap.cap -const JC2 = board.add(C_0805_2012Metric, { - translate: pt(1.661, 0.202), rotate: 0, - id: 'JC2' +// vbat_sense.Rs.res.res +const JR3 = board.add(R_1206_3216Metric, { + translate: pt(1.660, 0.217), rotate: 0, + id: 'JR3' }) -// mp2722.batt_cap.cap -const JC3 = board.add(C_1206_3216Metric, { - translate: pt(1.904, 0.045), rotate: 0, - id: 'JC3' +// gate.pull_res +const JR4 = board.add(R_0603_1608Metric, { + translate: pt(0.390, 1.038), rotate: 0, + id: 'JR4' }) -// mp2722.vcc_cap.cap -const JC4 = board.add(C_0805_2012Metric, { - translate: pt(1.835, 0.202), rotate: 0, - id: 'JC4' +// gate.pwr_fet +const JQ1 = board.add(SOT_23, { + translate: pt(0.076, 0.903), rotate: 0, + id: 'JQ1' }) -// mp2722.power_path.inductor -const JL1 = board.add(L_1210_3225Metric, { - translate: pt(1.684, 0.062), rotate: 0, - id: 'JL1' +// gate.amp_res +const JR5 = board.add(R_0603_1608Metric, { + translate: pt(0.058, 1.152), rotate: 0, + id: 'JR5' }) -// mp2722.power_path.in_cap.cap -const JC5 = board.add(C_0805_2012Metric, { - translate: pt(2.008, 0.202), rotate: 0, - id: 'JC5' +// gate.amp_fet +const JQ2 = board.add(SOT_23, { + translate: pt(0.266, 0.903), rotate: 0, + id: 'JQ2' }) -// mp2722.power_path.out_cap.cap -const JC6 = board.add(C_0805_2012Metric, { - translate: pt(1.661, 0.319), rotate: 0, - id: 'JC6' +// gate.ctl_diode +const JD1 = board.add(D_SOD_323, { + translate: pt(0.063, 1.047), rotate: 0, + id: 'JD1' +}) +// gate.btn_diode +const JD2 = board.add(D_SOD_323, { + translate: pt(0.229, 1.047), rotate: 0, + id: 'JD2' }) // reg_3v3.ic const JU2 = board.add(SOT_89_3, { - translate: pt(0.589, 1.220), rotate: 0, + translate: pt(1.710, 0.935), rotate: 0, id: 'JU2' }) // reg_3v3.in_cap.cap -const JC7 = board.add(C_0603_1608Metric, { - translate: pt(0.535, 1.387), rotate: 0, - id: 'JC7' +const JC2 = board.add(C_0603_1608Metric, { + translate: pt(1.656, 1.101), rotate: 0, + id: 'JC2' }) // reg_3v3.out_cap.cap -const JC8 = board.add(C_0603_1608Metric, { - translate: pt(0.691, 1.387), rotate: 0, - id: 'JC8' +const JC3 = board.add(C_0603_1608Metric, { + translate: pt(1.812, 1.101), rotate: 0, + id: 'JC3' }) // tp_3v3.tp const JTP4 = board.add(TestPoint_TE_RCT_0805, { - translate: pt(1.521, 1.589), rotate: 0, + translate: pt(0.066, 1.678), rotate: 0, id: 'JTP4' }) // prot_3v3.diode -const JD1 = board.add(D_SOD_323, { - translate: pt(1.769, 1.589), rotate: 0, - id: 'JD1' -}) -// fake_ntc.div.top_res -const JR1 = board.add(R_0603_1608Metric, { - translate: pt(1.819, 1.151), rotate: 0, - id: 'JR1' -}) -// fake_ntc.div.bottom_res -const JR2 = board.add(R_0603_1608Metric, { - translate: pt(1.819, 1.248), rotate: 0, - id: 'JR2' -}) -// mcu.prog.conn -const JJ3 = board.add(Tag_Connect_TC2030_IDC_FP_2x03_P1_27mm_Vertical, { - translate: pt(1.329, 0.167), rotate: 0, - id: 'JJ3' -}) -// mcu.boot.package -const JSW1 = board.add(MembraneSwitch_4mm, { - translate: pt(1.473, 0.491), rotate: 0, - id: 'JSW1' -}) -// mcu.ic.device -const JU3 = board.add(ESP_WROOM_02, { - translate: pt(0.561, 0.281), rotate: 0, +const JD3 = board.add(D_SOD_323, { + translate: pt(0.314, 1.678), rotate: 0, + id: 'JD3' +}) +// tp_vgate.tp +const JTP5 = board.add(TestPoint_TE_RCT_0805, { + translate: pt(0.561, 1.678), rotate: 0, + id: 'JTP5' +}) +// chg.ic +const JU3 = board.add(SOT_23_5, { + translate: pt(1.948, 0.067), rotate: 0, id: 'JU3' }) -// mcu.vcc_cap0.cap -const JC9 = board.add(C_0805_2012Metric, { - translate: pt(1.228, 0.413), rotate: 0, - id: 'JC9' +// chg.vdd_cap.cap +const JC4 = board.add(C_0805_2012Metric, { + translate: pt(1.935, 0.212), rotate: 0, + id: 'JC4' }) -// mcu.vcc_cap1.cap -const JC10 = board.add(C_0603_1608Metric, { - translate: pt(1.393, 0.403), rotate: 0, - id: 'JC10' +// chg.vbat_cap.cap +const JC5 = board.add(C_0805_2012Metric, { + translate: pt(2.108, 0.212), rotate: 0, + id: 'JC5' }) -// mcu.en_pull.rc.r -const JR3 = board.add(R_0603_1608Metric, { - translate: pt(1.220, 0.519), rotate: 0, - id: 'JR3' +// chg.prog_res.res +const JR6 = board.add(R_0603_1608Metric, { + translate: pt(1.926, 0.319), rotate: 0, + id: 'JR6' }) -// mcu.en_pull.rc.c -const JC11 = board.add(C_0603_1608Metric, { - translate: pt(1.376, 0.519), rotate: 0, - id: 'JC11' +// chg.prog_sw +const JQ3 = board.add(SOT_23, { + translate: pt(2.144, 0.067), rotate: 0, + id: 'JQ3' }) -// stick.conn.ext -const JJ4 = board.add(Hirose_FH12_6S_0_5SH_1x06_1MP_P0_50mm_Horizontal, { - translate: pt(0.179, 1.315), rotate: 0, - id: 'JJ4' +// mcu.ic.device +const JU4 = board.add(Holyiot_18010_NRF52840, { + translate: pt(0.290, 0.324), rotate: 0, + id: 'JU4' }) -// ax1_div.div.top_res -const JR4 = board.add(R_0603_1608Metric, { - translate: pt(2.054, 1.151), rotate: 0, - id: 'JR4' +// mcu.vcc_cap.cap +const JC6 = board.add(C_0805_2012Metric, { + translate: pt(0.667, 0.413), rotate: 0, + id: 'JC6' }) -// ax1_div.div.bottom_res -const JR5 = board.add(R_0603_1608Metric, { - translate: pt(2.054, 1.248), rotate: 0, - id: 'JR5' +// mcu.swd.conn +const JJ3 = board.add(Tag_Connect_TC2030_IDC_FP_2x03_P1_27mm_Vertical, { + translate: pt(0.767, 0.167), rotate: 0, + id: 'JJ3' }) -// ax2_div.div.top_res -const JR6 = board.add(R_0603_1608Metric, { - translate: pt(2.288, 1.151), rotate: 0, - id: 'JR6' +// mcu.vbus_cap.cap +const JC7 = board.add(C_0805_2012Metric, { + translate: pt(0.840, 0.413), rotate: 0, + id: 'JC7' }) -// ax2_div.div.bottom_res +// mcu.usb_res.dp.res const JR7 = board.add(R_0603_1608Metric, { - translate: pt(2.288, 1.248), rotate: 0, + translate: pt(0.658, 0.519), rotate: 0, id: 'JR7' }) -// trig.ic -const JU5 = board.add(SOT_23, { - translate: pt(0.943, 1.189), rotate: 0, - id: 'JU5' -}) -// trig.cbyp.cap -const JC12 = board.add(C_0603_1608Metric, { - translate: pt(0.925, 1.324), rotate: 0, - id: 'JC12' -}) -// trig_div.div.top_res +// mcu.usb_res.dm.res const JR8 = board.add(R_0603_1608Metric, { - translate: pt(0.058, 1.580), rotate: 0, + translate: pt(0.814, 0.519), rotate: 0, id: 'JR8' }) -// trig_div.div.bottom_res -const JR9 = board.add(R_0603_1608Metric, { - translate: pt(0.058, 1.677), rotate: 0, - id: 'JR9' -}) -// sw[0].package -const JSW2 = board.add(MembraneSwitch_4mm, { - translate: pt(2.107, 1.551), rotate: 0, - id: 'JSW2' -}) -// sw[1].package -const JSW3 = board.add(MembraneSwitch_4mm, { - translate: pt(2.226, 1.551), rotate: 0, - id: 'JSW3' -}) -// sw[2].package -const JSW4 = board.add(MembraneSwitch_4mm, { - translate: pt(2.344, 1.551), rotate: 0, - id: 'JSW4' +// usb_esd +const JU5 = board.add(SOT_23, { + translate: pt(0.821, 1.707), rotate: 0, + id: 'JU5' }) // ledr.package -const JD2 = board.add(LED_0603_1608Metric, { - translate: pt(1.584, 1.151), rotate: 0, - id: 'JD2' +const JD4 = board.add(LED_0603_1608Metric, { + translate: pt(1.089, 1.328), rotate: 0, + id: 'JD4' }) // ledr.res +const JR9 = board.add(R_0603_1608Metric, { + translate: pt(1.089, 1.425), rotate: 0, + id: 'JR9' +}) +// i2c_pull.scl_res.res const JR10 = board.add(R_0603_1608Metric, { - translate: pt(1.584, 1.248), rotate: 0, + translate: pt(1.324, 1.328), rotate: 0, id: 'JR10' }) -// vbat_sense.div.top_res +// i2c_pull.sda_res.res const JR11 = board.add(R_0603_1608Metric, { - translate: pt(0.293, 1.580), rotate: 0, + translate: pt(1.324, 1.425), rotate: 0, id: 'JR11' }) -// vbat_sense.div.bottom_res -const JR12 = board.add(R_0603_1608Metric, { - translate: pt(0.293, 1.677), rotate: 0, - id: 'JR12' +// tp_i2c.tp_scl.tp +const JTP6 = board.add(TestPoint_TE_RCT_0805, { + translate: pt(0.846, 1.337), rotate: 0, + id: 'JTP6' }) -// i2c_pull.scl_res.res -const JR13 = board.add(R_0603_1608Metric, { - translate: pt(0.528, 1.580), rotate: 0, - id: 'JR13' +// tp_i2c.tp_sda.tp +const JTP7 = board.add(TestPoint_TE_RCT_0805, { + translate: pt(0.846, 1.451), rotate: 0, + id: 'JTP7' }) -// i2c_pull.sda_res.res -const JR14 = board.add(R_0603_1608Metric, { - translate: pt(0.528, 1.677), rotate: 0, - id: 'JR14' +// imu.ic +const JU6 = board.add(Bosch_LGA_14_3x2_5mm_P0_5mm, { + translate: pt(0.073, 1.362), rotate: 0, + id: 'JU6' +}) +// imu.vdd_cap.cap +const JC8 = board.add(C_0603_1608Metric, { + translate: pt(0.058, 1.493), rotate: 0, + id: 'JC8' +}) +// imu.vddio_cap.cap +const JC9 = board.add(C_0603_1608Metric, { + translate: pt(0.214, 1.493), rotate: 0, + id: 'JC9' +}) +// mag.ic +const JU7 = board.add(LGA_16_3x3mm_P0_5mm, { + translate: pt(2.057, 0.905), rotate: 0, + id: 'JU7' +}) +// mag.vdd_cap.cap +const JC10 = board.add(C_0603_1608Metric, { + translate: pt(2.046, 1.042), rotate: 0, + id: 'JC10' +}) +// mag.set_cap +const JC11 = board.add(C_0603_1608Metric, { + translate: pt(2.202, 1.042), rotate: 0, + id: 'JC11' +}) +// mag.c1.cap +const JC12 = board.add(C_0805_2012Metric, { + translate: pt(2.232, 0.875), rotate: 0, + id: 'JC12' +}) +// stick.conn.ext +const JJ4 = board.add(Hirose_FH12_8S_0_5SH_1x08_1MP_P0_50mm_Horizontal, { + translate: pt(0.765, 1.029), rotate: 0, + id: 'JJ4' +}) +// btns.conn.ext +const JJ7 = board.add(Hirose_FH12_8S_0_5SH_1x08_1MP_P0_50mm_Horizontal, { + translate: pt(1.281, 1.029), rotate: 0, + id: 'JJ7' }) board.setNetlist([ - {name: "Jvbat", pads: [["JJ1", "2"], ["JTP1", "1"], ["JU1", "12"], ["JU1", "14"], ["JC3", "1"], ["JR11", "1"]]}, - {name: "Jvusb", pads: [["JJ2", "A4"], ["JJ2", "A9"], ["JJ2", "B4"], ["JJ2", "B9"], ["JTP2", "1"], ["JU1", "2"], ["JC5", "1"]]}, - {name: "Jgnd", pads: [["JJ1", "1"], ["JJ2", "A1"], ["JJ2", "A12"], ["JJ2", "B1"], ["JJ2", "B12"], ["JJ2", "S1"], ["JTP3", "1"], ["JU1", "18"], ["JU1", "5"], ["JC2", "2"], ["JC3", "2"], ["JC4", "2"], ["JC5", "2"], ["JC6", "2"], ["JU2", "1"], ["JC7", "2"], ["JC8", "2"], ["JD1", "2"], ["JR2", "2"], ["JJ3", "5"], ["JSW1", "2"], ["JU3", "19"], ["JU3", "9"], ["JC9", "2"], ["JC10", "2"], ["JC11", "2"], ["JJ4", "1"], ["JR5", "2"], ["JR7", "2"], ["JU5", "3"], ["JC12", "2"], ["JR9", "2"], ["JSW2", "2"], ["JSW3", "2"], ["JSW4", "2"], ["JR12", "2"]]}, - {name: "Jv3v3", pads: [["JU2", "3"], ["JC8", "1"], ["JTP4", "1"], ["JD1", "1"], ["JJ3", "1"], ["JU3", "1"], ["JU3", "16"], ["JU3", "7"], ["JC9", "1"], ["JC10", "1"], ["JR3", "1"], ["JJ4", "2"], ["JU5", "1"], ["JC12", "1"], ["JD2", "2"], ["JR13", "1"], ["JR14", "1"]]}, - {name: "Jusb.usb.dp", pads: [["JJ2", "A6"], ["JJ2", "B6"]]}, - {name: "Jusb.usb.dm", pads: [["JJ2", "A7"], ["JJ2", "B7"]]}, - {name: "Jusb.cc.cc1", pads: [["JJ2", "A5"], ["JU1", "1"]]}, - {name: "Jusb.cc.cc2", pads: [["JJ2", "B5"], ["JU1", "22"]]}, - {name: "Jmp2722.pwr_out", pads: [["JU1", "13"], ["JL1", "2"], ["JC6", "1"], ["JU2", "2"], ["JC7", "1"]]}, - {name: "Jmp2722.vrntc", pads: [["JU1", "7"], ["JR1", "1"]]}, - {name: "Jmp2722.ntc1", pads: [["JU1", "10"], ["JR1", "2"], ["JR2", "1"]]}, - {name: "Jmp2722.rst", pads: [["JU1", "17"], ["JU3", "5"], ["JJ4", "4"]]}, - {name: "Jmp2722.int", pads: [["JU1", "8"]]}, - {name: "Jmp2722.stat", pads: [["JU1", "11"]]}, - {name: "Jmp2722.pg", pads: [["JU1", "9"]]}, - {name: "Jmp2722.i2c.scl", pads: [["JU1", "16"], ["JU3", "4"], ["JR13", "2"]]}, - {name: "Jmp2722.i2c.sda", pads: [["JU1", "15"], ["JU3", "14"], ["JR14", "2"]]}, - {name: "Jmp2722.usb.dp", pads: [["JU1", "21"]]}, - {name: "Jmp2722.usb.dm", pads: [["JU1", "20"]]}, - {name: "Jmp2722.ic.sw", pads: [["JU1", "4"], ["JC1", "2"], ["JL1", "1"]]}, - {name: "Jmp2722.ic.pmid", pads: [["JU1", "3"], ["JC2", "1"]]}, - {name: "Jmp2722.ic.bst", pads: [["JU1", "6"], ["JC1", "1"]]}, - {name: "Jmp2722.ic.vcc", pads: [["JU1", "19"], ["JC4", "1"]]}, - {name: "Jmcu.program_uart_node.a_tx", pads: [["JJ3", "4"], ["JU3", "11"]]}, - {name: "Jmcu.program_uart_node.b_tx", pads: [["JJ3", "3"], ["JU3", "12"]]}, - {name: "Jmcu.program_en_node", pads: [["JJ3", "6"], ["JU3", "2"], ["JR3", "2"], ["JC11", "1"]]}, - {name: "Jmcu.program_boot_node", pads: [["JJ3", "2"], ["JSW1", "1"], ["JU3", "8"], ["JR10", "2"]]}, - {name: "Jstick.ax1", pads: [["JJ4", "5"], ["JR4", "1"]]}, - {name: "Jstick.ax2", pads: [["JJ4", "6"], ["JR6", "1"]]}, - {name: "Jax1_div.output", pads: [["JU3", "3"], ["JR4", "2"], ["JR5", "1"]]}, - {name: "Jax2_div.output", pads: [["JU3", "15"], ["JR6", "2"], ["JR7", "1"]]}, - {name: "Jtrig.out", pads: [["JU5", "2"], ["JR8", "1"]]}, - {name: "Jtrig_div.output", pads: [["JU3", "17"], ["JR8", "2"], ["JR9", "1"]]}, - {name: "Jsw[0].out", pads: [["JU3", "10"], ["JSW2", "1"]]}, - {name: "Jsw[1].out", pads: [["JU3", "13"], ["JSW3", "1"]]}, - {name: "Jsw[2].out", pads: [["JU3", "6"], ["JSW4", "1"]]}, - {name: "Jledr.package.k", pads: [["JD2", "1"], ["JR10", "1"]]}, - {name: "Jvbat_sense.output", pads: [["JU3", "18"], ["JR11", "2"], ["JR12", "1"]]} + {name: "Jvbat", pads: [["JJ1", "2"], ["JTP1", "1"], ["JR4", "1"], ["JQ1", "2"], ["JU3", "3"], ["JC5", "1"]]}, + {name: "Jvusb", pads: [["JJ2", "A4"], ["JJ2", "A9"], ["JJ2", "B4"], ["JJ2", "B9"], ["JTP2", "1"], ["JU3", "4"], ["JC4", "1"], ["JU4", "22"], ["JC7", "1"]]}, + {name: "Jgnd", pads: [["JJ1", "1"], ["JJ2", "A1"], ["JJ2", "A12"], ["JJ2", "B1"], ["JJ2", "B12"], ["JJ2", "S1"], ["JR1", "1"], ["JR2", "1"], ["JTP3", "1"], ["JU1", "3"], ["JU1", "7"], ["JU1", "8"], ["JC1", "2"], ["JR5", "1"], ["JQ2", "2"], ["JU2", "1"], ["JC2", "2"], ["JC3", "2"], ["JD3", "2"], ["JU3", "2"], ["JC4", "2"], ["JC5", "2"], ["JQ3", "2"], ["JU4", "1"], ["JU4", "25"], ["JU4", "37"], ["JC6", "2"], ["JJ3", "5"], ["JC7", "2"], ["JU5", "3"], ["JU6", "1"], ["JU6", "2"], ["JU6", "3"], ["JU6", "6"], ["JU6", "7"], ["JC8", "2"], ["JC9", "2"], ["JU7", "11"], ["JU7", "9"], ["JC10", "2"], ["JC12", "2"], ["JJ4", "1"], ["JJ7", "1"], ["JJ7", "6"]]}, + {name: "Jvbat_gated", pads: [["JU1", "1"], ["JR3", "1"], ["JQ1", "3"], ["JTP5", "1"], ["JJ7", "7"], ["JJ7", "8"]]}, + {name: "Jv3v3", pads: [["JU1", "4"], ["JC1", "1"], ["JU2", "3"], ["JC3", "1"], ["JTP4", "1"], ["JD3", "1"], ["JU4", "14"], ["JC6", "1"], ["JJ3", "1"], ["JD4", "2"], ["JR10", "1"], ["JR11", "1"], ["JU6", "12"], ["JU6", "5"], ["JU6", "8"], ["JC8", "1"], ["JC9", "1"], ["JU7", "13"], ["JU7", "2"], ["JU7", "4"], ["JC10", "1"], ["JJ7", "2"]]}, + {name: "Jusb_chain_0.d_P", pads: [["JJ2", "A6"], ["JJ2", "B6"], ["JR7", "1"], ["JU5", "2"]]}, + {name: "Jusb_chain_0.d_N", pads: [["JJ2", "A7"], ["JJ2", "B7"], ["JR8", "1"], ["JU5", "1"]]}, + {name: "Jusb.conn.cc.cc1", pads: [["JJ2", "A5"], ["JR1", "2"]]}, + {name: "Jusb.conn.cc.cc2", pads: [["JJ2", "B5"], ["JR2", "2"]]}, + {name: "Jvbat_sense.i2c.scl", pads: [["JU1", "5"], ["JU4", "12"], ["JR10", "2"], ["JTP6", "1"], ["JU6", "13"], ["JU7", "1"], ["JJ7", "3"]]}, + {name: "Jvbat_sense.i2c.sda", pads: [["JU1", "6"], ["JU4", "13"], ["JR11", "2"], ["JTP7", "1"], ["JU6", "14"], ["JU7", "16"], ["JJ7", "4"]]}, + {name: "Jvbat_sense.sense_neg", pads: [["JU1", "2"], ["JR3", "2"], ["JU2", "2"], ["JC2", "1"]]}, + {name: "Jgate.btn_out", pads: [["JD2", "2"], ["JU4", "5"]]}, + {name: "Jgate.btn_in", pads: [["JD1", "1"], ["JD2", "1"], ["JJ4", "4"]]}, + {name: "Jgate.control", pads: [["JR5", "2"], ["JQ2", "1"], ["JU4", "4"]]}, + {name: "Jgate.pull_res.b", pads: [["JR4", "2"], ["JQ1", "1"], ["JQ2", "3"], ["JD1", "2"]]}, + {name: "Jchg.stat", pads: [["JU3", "1"]]}, + {name: "Jchg.prog_ctl", pads: [["JQ3", "1"], ["JU4", "10"]]}, + {name: "Jchg.ic.prog", pads: [["JU3", "5"], ["JR6", "2"]]}, + {name: "Jchg.prog_res.gnd", pads: [["JR6", "1"], ["JQ3", "3"]]}, + {name: "Jmcu.swd_node.swdio", pads: [["JU4", "32"], ["JJ3", "2"]]}, + {name: "Jmcu.swd_node.swclk", pads: [["JU4", "31"], ["JJ3", "4"]]}, + {name: "Jmcu.reset_node", pads: [["JU4", "21"], ["JJ3", "3"]]}, + {name: "Jmcu.swd.swo", pads: [["JJ3", "6"]]}, + {name: "Jmcu.usb_res.interior.dp", pads: [["JU4", "24"], ["JR7", "2"]]}, + {name: "Jmcu.usb_res.interior.dm", pads: [["JU4", "23"], ["JR8", "2"]]}, + {name: "Jledr.signal", pads: [["JU4", "7"], ["JR9", "2"]]}, + {name: "Jledr.package.k", pads: [["JD4", "1"], ["JR9", "1"]]}, + {name: "Jimu.int1", pads: [["JU6", "4"]]}, + {name: "Jimu.int2", pads: [["JU6", "9"]]}, + {name: "Jmag.drdy", pads: [["JU7", "15"]]}, + {name: "Jmag.ic.setp", pads: [["JU7", "8"], ["JC11", "1"]]}, + {name: "Jmag.ic.setc", pads: [["JU7", "12"], ["JC11", "2"]]}, + {name: "Jmag.ic.c1", pads: [["JU7", "10"], ["JC12", "1"]]}, + {name: "Jstick.pwr", pads: [["JU4", "3"], ["JJ4", "2"]]}, + {name: "Jstick.ax1", pads: [["JU4", "11"], ["JJ4", "5"]]}, + {name: "Jstick.ax2", pads: [["JU4", "9"], ["JJ4", "6"]]}, + {name: "Jbtns.io0", pads: [["JU4", "8"], ["JJ7", "5"]]} ]) const limit0 = pt(-0.07874015748031496, -0.07874015748031496); -const limit1 = pt(2.464763779527559, 1.8236220472440945); +const limit1 = pt(2.4173228346456694, 1.833070866141732); const xMin = Math.min(limit0[0], limit1[0]); const xMax = Math.max(limit0[0], limit1[0]); const yMin = Math.min(limit0[1], limit1[1]); diff --git a/examples/BleJoystick/BleJoystick_btns.net.ref b/examples/BleJoystick/BleJoystick_btns.net.ref new file mode 100644 index 000000000..c46066f20 --- /dev/null +++ b/examples/BleJoystick/BleJoystick_btns.net.ref @@ -0,0 +1,849 @@ +(export (version D) +(components +(comp (ref "JTP8") + (value "gnd") + (footprint "edg:TestPoint_TE_RCT_0805") + (property (name "Sheetname") (value "btns")) + (property (name "Sheetfile") (value "examples.test_ble_joystick.ButtonSubboard")) + (property (name "edg_path") (value "btns.tp_gnd.tp")) + (property (name "edg_short_path") (value "btns.tp_gnd")) + (property (name "edg_refdes") (value "JTP8")) + (property (name "edg_part") (value "5015 (Keystone)")) + (property (name "edg_value") (value "gnd")) + (sheetpath (names "/btns/") (tstamps "/043701b8/")) + (tstamps "08df027d")) +(comp (ref "JTP9") + (value "v3v3") + (footprint "edg:TestPoint_TE_RCT_0805") + (property (name "Sheetname") (value "btns")) + (property (name "Sheetfile") (value "examples.test_ble_joystick.ButtonSubboard")) + (property (name "edg_path") (value "btns.tp_pwr.tp")) + (property (name "edg_short_path") (value "btns.tp_pwr")) + (property (name "edg_refdes") (value "JTP9")) + (property (name "edg_part") (value "5015 (Keystone)")) + (property (name "edg_value") (value "v3v3")) + (sheetpath (names "/btns/") (tstamps "/043701b8/")) + (tstamps "091a029d")) +(comp (ref "JTP10") + (value "vbat") + (footprint "edg:TestPoint_TE_RCT_0805") + (property (name "Sheetname") (value "btns")) + (property (name "Sheetfile") (value "examples.test_ble_joystick.ButtonSubboard")) + (property (name "edg_path") (value "btns.tp_vbat.tp")) + (property (name "edg_short_path") (value "btns.tp_vbat")) + (property (name "edg_refdes") (value "JTP10")) + (property (name "edg_part") (value "5015 (Keystone)")) + (property (name "edg_value") (value "vbat")) + (sheetpath (names "/btns/") (tstamps "/043701b8/")) + (tstamps "0be202f1")) +(comp (ref "JTP11") + (value "i2c.scl") + (footprint "edg:TestPoint_TE_RCT_0805") + (property (name "Sheetname") (value "tp_i2c")) + (property (name "Sheetfile") (value "edg.abstract_parts.TestPoint.I2cTestPoint")) + (property (name "edg_path") (value "btns.tp_i2c.tp_scl.tp")) + (property (name "edg_short_path") (value "btns.tp_i2c.tp_scl")) + (property (name "edg_refdes") (value "JTP11")) + (property (name "edg_part") (value "5015 (Keystone)")) + (property (name "edg_value") (value "i2c.scl")) + (sheetpath (names "/btns/tp_i2c/") (tstamps "/043701b8/086c0242/")) + (tstamps "08f50286")) +(comp (ref "JTP12") + (value "i2c.sda") + (footprint "edg:TestPoint_TE_RCT_0805") + (property (name "Sheetname") (value "tp_i2c")) + (property (name "Sheetfile") (value "edg.abstract_parts.TestPoint.I2cTestPoint")) + (property (name "edg_path") (value "btns.tp_i2c.tp_sda.tp")) + (property (name "edg_short_path") (value "btns.tp_i2c.tp_sda")) + (property (name "edg_refdes") (value "JTP12")) + (property (name "edg_part") (value "5015 (Keystone)")) + (property (name "edg_value") (value "i2c.sda")) + (sheetpath (names "/btns/tp_i2c/") (tstamps "/043701b8/086c0242/")) + (tstamps "08ec027c")) +(comp (ref "JTP13") + (value "io0") + (footprint "edg:TestPoint_TE_RCT_0805") + (property (name "Sheetname") (value "btns")) + (property (name "Sheetfile") (value "examples.test_ble_joystick.ButtonSubboard")) + (property (name "edg_path") (value "btns.tp_io0.tp")) + (property (name "edg_short_path") (value "btns.tp_io0")) + (property (name "edg_refdes") (value "JTP13")) + (property (name "edg_part") (value "5015 (Keystone)")) + (property (name "edg_value") (value "io0")) + (sheetpath (names "/btns/") (tstamps "/043701b8/")) + (tstamps "08b3024c")) +(comp (ref "JU9") + (value "btns.ioe.ic") + (footprint "Package_SO:TSSOP-20_4.4x6.5mm_P0.65mm") + (property (name "Sheetname") (value "ioe")) + (property (name "Sheetfile") (value "edg.parts.microcontroller.Ch32v003.Ch32v003")) + (property (name "edg_path") (value "btns.ioe.ic")) + (property (name "edg_short_path") (value "btns.ioe.ic")) + (property (name "edg_refdes") (value "JU9")) + (property (name "edg_part") (value "CH32V003F4P6 (WCH)")) + (property (name "edg_value") (value "CH32V003F4P6")) + (sheetpath (names "/btns/ioe/") (tstamps "/043701b8/0281013e/")) + (tstamps "013700cd")) +(comp (ref "JJ6") + (value "btns.ioe.sdi") + (footprint "Connector:Tag-Connect_TC2030-IDC-FP_2x03_P1.27mm_Vertical") + (property (name "Sheetname") (value "ioe")) + (property (name "Sheetfile") (value "edg.parts.microcontroller.Ch32v003.Ch32v003")) + (property (name "edg_path") (value "btns.ioe.sdi.conn")) + (property (name "edg_short_path") (value "btns.ioe.sdi")) + (property (name "edg_refdes") (value "JJ6")) + (property (name "edg_part") (value "")) + (property (name "edg_value") (value "")) + (sheetpath (names "/btns/ioe/") (tstamps "/043701b8/0281013e/")) + (tstamps "028d0141")) +(comp (ref "JC13") + (value "btns.ioe.vdd_cap") + (footprint "Capacitor_SMD:C_0603_1608Metric") + (property (name "Sheetname") (value "ioe")) + (property (name "Sheetfile") (value "edg.parts.microcontroller.Ch32v003.Ch32v003")) + (property (name "edg_path") (value "btns.ioe.vdd_cap.cap")) + (property (name "edg_short_path") (value "btns.ioe.vdd_cap")) + (property (name "edg_refdes") (value "JC13")) + (property (name "edg_part") (value "CC0603KRX7R9BB104 (YAGEO)")) + (property (name "edg_value") (value "50V 100nF X7R ±10% 0603 Multilayer Ceramic Capacitors MLCC - SMD/SMT ROHS")) + (sheetpath (names "/btns/ioe/") (tstamps "/043701b8/0281013e/")) + (tstamps "0b6402d2")) +(comp (ref "JSW1") + (value "btns.sw[0]") + (footprint "Button_Switch_SMD:SW_SPST_SKQG_WithoutStem") + (property (name "Sheetname") (value "btns")) + (property (name "Sheetfile") (value "examples.test_ble_joystick.ButtonSubboard")) + (property (name "edg_path") (value "btns.sw[0].package")) + (property (name "edg_short_path") (value "btns.sw[0]")) + (property (name "edg_refdes") (value "JSW1")) + (property (name "edg_part") (value "5.1mm switch")) + (property (name "edg_value") (value "5.1mm switch")) + (sheetpath (names "/btns/") (tstamps "/043701b8/")) + (tstamps "05ee01d3")) +(comp (ref "JSW2") + (value "btns.sw[1]") + (footprint "Button_Switch_SMD:SW_SPST_SKQG_WithoutStem") + (property (name "Sheetname") (value "btns")) + (property (name "Sheetfile") (value "examples.test_ble_joystick.ButtonSubboard")) + (property (name "edg_path") (value "btns.sw[1].package")) + (property (name "edg_short_path") (value "btns.sw[1]")) + (property (name "edg_refdes") (value "JSW2")) + (property (name "edg_part") (value "5.1mm switch")) + (property (name "edg_value") (value "5.1mm switch")) + (sheetpath (names "/btns/") (tstamps "/043701b8/")) + (tstamps "05f001d4")) +(comp (ref "JSW3") + (value "btns.sw[2]") + (footprint "Button_Switch_SMD:SW_SPST_SKQG_WithoutStem") + (property (name "Sheetname") (value "btns")) + (property (name "Sheetfile") (value "examples.test_ble_joystick.ButtonSubboard")) + (property (name "edg_path") (value "btns.sw[2].package")) + (property (name "edg_short_path") (value "btns.sw[2]")) + (property (name "edg_refdes") (value "JSW3")) + (property (name "edg_part") (value "5.1mm switch")) + (property (name "edg_value") (value "5.1mm switch")) + (sheetpath (names "/btns/") (tstamps "/043701b8/")) + (tstamps "05f201d5")) +(comp (ref "JSW4") + (value "btns.sw[3]") + (footprint "Button_Switch_SMD:SW_SPST_SKQG_WithoutStem") + (property (name "Sheetname") (value "btns")) + (property (name "Sheetfile") (value "examples.test_ble_joystick.ButtonSubboard")) + (property (name "edg_path") (value "btns.sw[3].package")) + (property (name "edg_short_path") (value "btns.sw[3]")) + (property (name "edg_refdes") (value "JSW4")) + (property (name "edg_part") (value "5.1mm switch")) + (property (name "edg_value") (value "5.1mm switch")) + (sheetpath (names "/btns/") (tstamps "/043701b8/")) + (tstamps "05f401d6")) +(comp (ref "JSW5") + (value "btns.sw[4]") + (footprint "Button_Switch_SMD:SW_SPST_SKQG_WithoutStem") + (property (name "Sheetname") (value "btns")) + (property (name "Sheetfile") (value "examples.test_ble_joystick.ButtonSubboard")) + (property (name "edg_path") (value "btns.sw[4].package")) + (property (name "edg_short_path") (value "btns.sw[4]")) + (property (name "edg_refdes") (value "JSW5")) + (property (name "edg_part") (value "5.1mm switch")) + (property (name "edg_value") (value "5.1mm switch")) + (sheetpath (names "/btns/") (tstamps "/043701b8/")) + (tstamps "05f601d7")) +(comp (ref "JSW6") + (value "btns.sw[5]") + (footprint "Button_Switch_SMD:SW_SPST_SKQG_WithoutStem") + (property (name "Sheetname") (value "btns")) + (property (name "Sheetfile") (value "examples.test_ble_joystick.ButtonSubboard")) + (property (name "edg_path") (value "btns.sw[5].package")) + (property (name "edg_short_path") (value "btns.sw[5]")) + (property (name "edg_refdes") (value "JSW6")) + (property (name "edg_part") (value "5.1mm switch")) + (property (name "edg_value") (value "5.1mm switch")) + (sheetpath (names "/btns/") (tstamps "/043701b8/")) + (tstamps "05f801d8")) +(comp (ref "JSW7") + (value "btns.sw[6]") + (footprint "Button_Switch_SMD:SW_SPST_SKQG_WithoutStem") + (property (name "Sheetname") (value "btns")) + (property (name "Sheetfile") (value "examples.test_ble_joystick.ButtonSubboard")) + (property (name "edg_path") (value "btns.sw[6].package")) + (property (name "edg_short_path") (value "btns.sw[6]")) + (property (name "edg_refdes") (value "JSW7")) + (property (name "edg_part") (value "5.1mm switch")) + (property (name "edg_value") (value "5.1mm switch")) + (sheetpath (names "/btns/") (tstamps "/043701b8/")) + (tstamps "05fa01d9")) +(comp (ref "JSW8") + (value "btns.sw[7]") + (footprint "Button_Switch_SMD:SW_SPST_SKQG_WithoutStem") + (property (name "Sheetname") (value "btns")) + (property (name "Sheetfile") (value "examples.test_ble_joystick.ButtonSubboard")) + (property (name "edg_path") (value "btns.sw[7].package")) + (property (name "edg_short_path") (value "btns.sw[7]")) + (property (name "edg_refdes") (value "JSW8")) + (property (name "edg_part") (value "5.1mm switch")) + (property (name "edg_value") (value "5.1mm switch")) + (sheetpath (names "/btns/") (tstamps "/043701b8/")) + (tstamps "05fc01da")) +(comp (ref "JSW9") + (value "btns.bumper_sw") + (footprint "Button_Switch_SMD:SW_SPST_SKQG_WithoutStem") + (property (name "Sheetname") (value "btns")) + (property (name "Sheetfile") (value "examples.test_ble_joystick.ButtonSubboard")) + (property (name "edg_path") (value "btns.bumper_sw.package")) + (property (name "edg_short_path") (value "btns.bumper_sw")) + (property (name "edg_refdes") (value "JSW9")) + (property (name "edg_part") (value "5.1mm switch")) + (property (name "edg_value") (value "5.1mm switch")) + (sheetpath (names "/btns/") (tstamps "/043701b8/")) + (tstamps "12f903d5")) +(comp (ref "JU10") + (value "btns.trig.ic") + (footprint "Package_TO_SOT_SMD:SOT-23") + (property (name "Sheetname") (value "trig")) + (property (name "Sheetfile") (value "edg.parts.sensor.Mag_A1304.A1304")) + (property (name "edg_path") (value "btns.trig.ic")) + (property (name "edg_short_path") (value "btns.trig.ic")) + (property (name "edg_refdes") (value "JU10")) + (property (name "edg_part") (value "A1304ELHLX-T (Allegro MicroSystems)")) + (property (name "edg_value") (value "A1304ELHLX-T")) + (sheetpath (names "/btns/trig/") (tstamps "/043701b8/046301b7/")) + (tstamps "013700cd")) +(comp (ref "JC14") + (value "btns.trig.cbyp") + (footprint "Capacitor_SMD:C_0603_1608Metric") + (property (name "Sheetname") (value "trig")) + (property (name "Sheetfile") (value "edg.parts.sensor.Mag_A1304.A1304")) + (property (name "edg_path") (value "btns.trig.cbyp.cap")) + (property (name "edg_short_path") (value "btns.trig.cbyp")) + (property (name "edg_refdes") (value "JC14")) + (property (name "edg_part") (value "CC0603KRX7R9BB104 (YAGEO)")) + (property (name "edg_value") (value "50V 100nF X7R ±10% 0603 Multilayer Ceramic Capacitors MLCC - SMD/SMT ROHS")) + (sheetpath (names "/btns/trig/") (tstamps "/043701b8/046301b7/")) + (tstamps "041801af")) +(comp (ref "JTP14") + (value "btns._ioe_gpio_npx_link") + (footprint "edg:TestPoint_TE_RCT_0805") + (property (name "Sheetname") (value "btns")) + (property (name "Sheetfile") (value "examples.test_ble_joystick.ButtonSubboard")) + (property (name "edg_path") (value "btns.npx_tp.tp")) + (property (name "edg_short_path") (value "btns.npx_tp")) + (property (name "edg_refdes") (value "JTP14")) + (property (name "edg_part") (value "5015 (Keystone)")) + (property (name "edg_value") (value "btns._ioe_gpio_npx_link")) + (sheetpath (names "/btns/") (tstamps "/043701b8/")) + (tstamps "091f029a")) +(comp (ref "JD5") + (value "btns.npx_js.led[0].device") + (footprint "LED_SMD:LED_WS2812B-2020_PLCC4_2.0x2.0mm") + (property (name "Sheetname") (value "led[0]")) + (property (name "Sheetfile") (value "edg.parts.human_interface.Neopixel.Ws2812c_2020")) + (property (name "edg_path") (value "btns.npx_js.led[0].device")) + (property (name "edg_short_path") (value "btns.npx_js.led[0].device")) + (property (name "edg_refdes") (value "JD5")) + (property (name "edg_part") (value "WS2812C-2020-V1 (Worldsemi)")) + (property (name "edg_value") (value "WS2812C-2020-V1")) + (sheetpath (names "/btns/npx_js/led[0]/") (tstamps "/043701b8/090e0293/07e5021e/")) + (tstamps "08950271")) +(comp (ref "JC15") + (value "btns.npx_js.led[0].cap") + (footprint "Capacitor_SMD:C_0603_1608Metric") + (property (name "Sheetname") (value "led[0]")) + (property (name "Sheetfile") (value "edg.parts.human_interface.Neopixel.Ws2812c_2020")) + (property (name "edg_path") (value "btns.npx_js.led[0].cap.cap")) + (property (name "edg_short_path") (value "btns.npx_js.led[0].cap")) + (property (name "edg_refdes") (value "JC15")) + (property (name "edg_part") (value "CC0603KRX7R9BB104 (YAGEO)")) + (property (name "edg_value") (value "50V 100nF X7R ±10% 0603 Multilayer Ceramic Capacitors MLCC - SMD/SMT ROHS")) + (sheetpath (names "/btns/npx_js/led[0]/") (tstamps "/043701b8/090e0293/07e5021e/")) + (tstamps "025e0135")) +(comp (ref "JD6") + (value "btns.npx_js.led[1].device") + (footprint "LED_SMD:LED_WS2812B-2020_PLCC4_2.0x2.0mm") + (property (name "Sheetname") (value "led[1]")) + (property (name "Sheetfile") (value "edg.parts.human_interface.Neopixel.Ws2812c_2020")) + (property (name "edg_path") (value "btns.npx_js.led[1].device")) + (property (name "edg_short_path") (value "btns.npx_js.led[1].device")) + (property (name "edg_refdes") (value "JD6")) + (property (name "edg_part") (value "WS2812C-2020-V1 (Worldsemi)")) + (property (name "edg_value") (value "WS2812C-2020-V1")) + (sheetpath (names "/btns/npx_js/led[1]/") (tstamps "/043701b8/090e0293/07e7021f/")) + (tstamps "08950271")) +(comp (ref "JC16") + (value "btns.npx_js.led[1].cap") + (footprint "Capacitor_SMD:C_0603_1608Metric") + (property (name "Sheetname") (value "led[1]")) + (property (name "Sheetfile") (value "edg.parts.human_interface.Neopixel.Ws2812c_2020")) + (property (name "edg_path") (value "btns.npx_js.led[1].cap.cap")) + (property (name "edg_short_path") (value "btns.npx_js.led[1].cap")) + (property (name "edg_refdes") (value "JC16")) + (property (name "edg_part") (value "CC0603KRX7R9BB104 (YAGEO)")) + (property (name "edg_value") (value "50V 100nF X7R ±10% 0603 Multilayer Ceramic Capacitors MLCC - SMD/SMT ROHS")) + (sheetpath (names "/btns/npx_js/led[1]/") (tstamps "/043701b8/090e0293/07e7021f/")) + (tstamps "025e0135")) +(comp (ref "JD7") + (value "btns.npx_js.led[2].device") + (footprint "LED_SMD:LED_WS2812B-2020_PLCC4_2.0x2.0mm") + (property (name "Sheetname") (value "led[2]")) + (property (name "Sheetfile") (value "edg.parts.human_interface.Neopixel.Ws2812c_2020")) + (property (name "edg_path") (value "btns.npx_js.led[2].device")) + (property (name "edg_short_path") (value "btns.npx_js.led[2].device")) + (property (name "edg_refdes") (value "JD7")) + (property (name "edg_part") (value "WS2812C-2020-V1 (Worldsemi)")) + (property (name "edg_value") (value "WS2812C-2020-V1")) + (sheetpath (names "/btns/npx_js/led[2]/") (tstamps "/043701b8/090e0293/07e90220/")) + (tstamps "08950271")) +(comp (ref "JC17") + (value "btns.npx_js.led[2].cap") + (footprint "Capacitor_SMD:C_0603_1608Metric") + (property (name "Sheetname") (value "led[2]")) + (property (name "Sheetfile") (value "edg.parts.human_interface.Neopixel.Ws2812c_2020")) + (property (name "edg_path") (value "btns.npx_js.led[2].cap.cap")) + (property (name "edg_short_path") (value "btns.npx_js.led[2].cap")) + (property (name "edg_refdes") (value "JC17")) + (property (name "edg_part") (value "CC0603KRX7R9BB104 (YAGEO)")) + (property (name "edg_value") (value "50V 100nF X7R ±10% 0603 Multilayer Ceramic Capacitors MLCC - SMD/SMT ROHS")) + (sheetpath (names "/btns/npx_js/led[2]/") (tstamps "/043701b8/090e0293/07e90220/")) + (tstamps "025e0135")) +(comp (ref "JD8") + (value "btns.npx_js.led[3].device") + (footprint "LED_SMD:LED_WS2812B-2020_PLCC4_2.0x2.0mm") + (property (name "Sheetname") (value "led[3]")) + (property (name "Sheetfile") (value "edg.parts.human_interface.Neopixel.Ws2812c_2020")) + (property (name "edg_path") (value "btns.npx_js.led[3].device")) + (property (name "edg_short_path") (value "btns.npx_js.led[3].device")) + (property (name "edg_refdes") (value "JD8")) + (property (name "edg_part") (value "WS2812C-2020-V1 (Worldsemi)")) + (property (name "edg_value") (value "WS2812C-2020-V1")) + (sheetpath (names "/btns/npx_js/led[3]/") (tstamps "/043701b8/090e0293/07eb0221/")) + (tstamps "08950271")) +(comp (ref "JC18") + (value "btns.npx_js.led[3].cap") + (footprint "Capacitor_SMD:C_0603_1608Metric") + (property (name "Sheetname") (value "led[3]")) + (property (name "Sheetfile") (value "edg.parts.human_interface.Neopixel.Ws2812c_2020")) + (property (name "edg_path") (value "btns.npx_js.led[3].cap.cap")) + (property (name "edg_short_path") (value "btns.npx_js.led[3].cap")) + (property (name "edg_refdes") (value "JC18")) + (property (name "edg_part") (value "CC0603KRX7R9BB104 (YAGEO)")) + (property (name "edg_value") (value "50V 100nF X7R ±10% 0603 Multilayer Ceramic Capacitors MLCC - SMD/SMT ROHS")) + (sheetpath (names "/btns/npx_js/led[3]/") (tstamps "/043701b8/090e0293/07eb0221/")) + (tstamps "025e0135")) +(comp (ref "JD9") + (value "btns.npx_js.led[4].device") + (footprint "LED_SMD:LED_WS2812B-2020_PLCC4_2.0x2.0mm") + (property (name "Sheetname") (value "led[4]")) + (property (name "Sheetfile") (value "edg.parts.human_interface.Neopixel.Ws2812c_2020")) + (property (name "edg_path") (value "btns.npx_js.led[4].device")) + (property (name "edg_short_path") (value "btns.npx_js.led[4].device")) + (property (name "edg_refdes") (value "JD9")) + (property (name "edg_part") (value "WS2812C-2020-V1 (Worldsemi)")) + (property (name "edg_value") (value "WS2812C-2020-V1")) + (sheetpath (names "/btns/npx_js/led[4]/") (tstamps "/043701b8/090e0293/07ed0222/")) + (tstamps "08950271")) +(comp (ref "JC19") + (value "btns.npx_js.led[4].cap") + (footprint "Capacitor_SMD:C_0603_1608Metric") + (property (name "Sheetname") (value "led[4]")) + (property (name "Sheetfile") (value "edg.parts.human_interface.Neopixel.Ws2812c_2020")) + (property (name "edg_path") (value "btns.npx_js.led[4].cap.cap")) + (property (name "edg_short_path") (value "btns.npx_js.led[4].cap")) + (property (name "edg_refdes") (value "JC19")) + (property (name "edg_part") (value "CC0603KRX7R9BB104 (YAGEO)")) + (property (name "edg_value") (value "50V 100nF X7R ±10% 0603 Multilayer Ceramic Capacitors MLCC - SMD/SMT ROHS")) + (sheetpath (names "/btns/npx_js/led[4]/") (tstamps "/043701b8/090e0293/07ed0222/")) + (tstamps "025e0135")) +(comp (ref "JD10") + (value "btns.npx_js.led[5].device") + (footprint "LED_SMD:LED_WS2812B-2020_PLCC4_2.0x2.0mm") + (property (name "Sheetname") (value "led[5]")) + (property (name "Sheetfile") (value "edg.parts.human_interface.Neopixel.Ws2812c_2020")) + (property (name "edg_path") (value "btns.npx_js.led[5].device")) + (property (name "edg_short_path") (value "btns.npx_js.led[5].device")) + (property (name "edg_refdes") (value "JD10")) + (property (name "edg_part") (value "WS2812C-2020-V1 (Worldsemi)")) + (property (name "edg_value") (value "WS2812C-2020-V1")) + (sheetpath (names "/btns/npx_js/led[5]/") (tstamps "/043701b8/090e0293/07ef0223/")) + (tstamps "08950271")) +(comp (ref "JC20") + (value "btns.npx_js.led[5].cap") + (footprint "Capacitor_SMD:C_0603_1608Metric") + (property (name "Sheetname") (value "led[5]")) + (property (name "Sheetfile") (value "edg.parts.human_interface.Neopixel.Ws2812c_2020")) + (property (name "edg_path") (value "btns.npx_js.led[5].cap.cap")) + (property (name "edg_short_path") (value "btns.npx_js.led[5].cap")) + (property (name "edg_refdes") (value "JC20")) + (property (name "edg_part") (value "CC0603KRX7R9BB104 (YAGEO)")) + (property (name "edg_value") (value "50V 100nF X7R ±10% 0603 Multilayer Ceramic Capacitors MLCC - SMD/SMT ROHS")) + (sheetpath (names "/btns/npx_js/led[5]/") (tstamps "/043701b8/090e0293/07ef0223/")) + (tstamps "025e0135")) +(comp (ref "JD11") + (value "btns.npx_js.led[6].device") + (footprint "LED_SMD:LED_WS2812B-2020_PLCC4_2.0x2.0mm") + (property (name "Sheetname") (value "led[6]")) + (property (name "Sheetfile") (value "edg.parts.human_interface.Neopixel.Ws2812c_2020")) + (property (name "edg_path") (value "btns.npx_js.led[6].device")) + (property (name "edg_short_path") (value "btns.npx_js.led[6].device")) + (property (name "edg_refdes") (value "JD11")) + (property (name "edg_part") (value "WS2812C-2020-V1 (Worldsemi)")) + (property (name "edg_value") (value "WS2812C-2020-V1")) + (sheetpath (names "/btns/npx_js/led[6]/") (tstamps "/043701b8/090e0293/07f10224/")) + (tstamps "08950271")) +(comp (ref "JC21") + (value "btns.npx_js.led[6].cap") + (footprint "Capacitor_SMD:C_0603_1608Metric") + (property (name "Sheetname") (value "led[6]")) + (property (name "Sheetfile") (value "edg.parts.human_interface.Neopixel.Ws2812c_2020")) + (property (name "edg_path") (value "btns.npx_js.led[6].cap.cap")) + (property (name "edg_short_path") (value "btns.npx_js.led[6].cap")) + (property (name "edg_refdes") (value "JC21")) + (property (name "edg_part") (value "CC0603KRX7R9BB104 (YAGEO)")) + (property (name "edg_value") (value "50V 100nF X7R ±10% 0603 Multilayer Ceramic Capacitors MLCC - SMD/SMT ROHS")) + (sheetpath (names "/btns/npx_js/led[6]/") (tstamps "/043701b8/090e0293/07f10224/")) + (tstamps "025e0135")) +(comp (ref "JD12") + (value "btns.npx_js.led[7].device") + (footprint "LED_SMD:LED_WS2812B-2020_PLCC4_2.0x2.0mm") + (property (name "Sheetname") (value "led[7]")) + (property (name "Sheetfile") (value "edg.parts.human_interface.Neopixel.Ws2812c_2020")) + (property (name "edg_path") (value "btns.npx_js.led[7].device")) + (property (name "edg_short_path") (value "btns.npx_js.led[7].device")) + (property (name "edg_refdes") (value "JD12")) + (property (name "edg_part") (value "WS2812C-2020-V1 (Worldsemi)")) + (property (name "edg_value") (value "WS2812C-2020-V1")) + (sheetpath (names "/btns/npx_js/led[7]/") (tstamps "/043701b8/090e0293/07f30225/")) + (tstamps "08950271")) +(comp (ref "JC22") + (value "btns.npx_js.led[7].cap") + (footprint "Capacitor_SMD:C_0603_1608Metric") + (property (name "Sheetname") (value "led[7]")) + (property (name "Sheetfile") (value "edg.parts.human_interface.Neopixel.Ws2812c_2020")) + (property (name "edg_path") (value "btns.npx_js.led[7].cap.cap")) + (property (name "edg_short_path") (value "btns.npx_js.led[7].cap")) + (property (name "edg_refdes") (value "JC22")) + (property (name "edg_part") (value "CC0603KRX7R9BB104 (YAGEO)")) + (property (name "edg_value") (value "50V 100nF X7R ±10% 0603 Multilayer Ceramic Capacitors MLCC - SMD/SMT ROHS")) + (sheetpath (names "/btns/npx_js/led[7]/") (tstamps "/043701b8/090e0293/07f30225/")) + (tstamps "025e0135")) +(comp (ref "JD13") + (value "btns.npx_dpad.led[0].device") + (footprint "LED_SMD:LED_WS2812B-2020_PLCC4_2.0x2.0mm") + (property (name "Sheetname") (value "led[0]")) + (property (name "Sheetfile") (value "edg.parts.human_interface.Neopixel.Ws2812c_2020")) + (property (name "edg_path") (value "btns.npx_dpad.led[0].device")) + (property (name "edg_short_path") (value "btns.npx_dpad.led[0].device")) + (property (name "edg_refdes") (value "JD13")) + (property (name "edg_part") (value "WS2812C-2020-V1 (Worldsemi)")) + (property (name "edg_value") (value "WS2812C-2020-V1")) + (sheetpath (names "/btns/npx_dpad/led[0]/") (tstamps "/043701b8/0f39034f/07e5021e/")) + (tstamps "08950271")) +(comp (ref "JC23") + (value "btns.npx_dpad.led[0].cap") + (footprint "Capacitor_SMD:C_0603_1608Metric") + (property (name "Sheetname") (value "led[0]")) + (property (name "Sheetfile") (value "edg.parts.human_interface.Neopixel.Ws2812c_2020")) + (property (name "edg_path") (value "btns.npx_dpad.led[0].cap.cap")) + (property (name "edg_short_path") (value "btns.npx_dpad.led[0].cap")) + (property (name "edg_refdes") (value "JC23")) + (property (name "edg_part") (value "CC0603KRX7R9BB104 (YAGEO)")) + (property (name "edg_value") (value "50V 100nF X7R ±10% 0603 Multilayer Ceramic Capacitors MLCC - SMD/SMT ROHS")) + (sheetpath (names "/btns/npx_dpad/led[0]/") (tstamps "/043701b8/0f39034f/07e5021e/")) + (tstamps "025e0135")) +(comp (ref "JD14") + (value "btns.npx_dpad.led[1].device") + (footprint "LED_SMD:LED_WS2812B-2020_PLCC4_2.0x2.0mm") + (property (name "Sheetname") (value "led[1]")) + (property (name "Sheetfile") (value "edg.parts.human_interface.Neopixel.Ws2812c_2020")) + (property (name "edg_path") (value "btns.npx_dpad.led[1].device")) + (property (name "edg_short_path") (value "btns.npx_dpad.led[1].device")) + (property (name "edg_refdes") (value "JD14")) + (property (name "edg_part") (value "WS2812C-2020-V1 (Worldsemi)")) + (property (name "edg_value") (value "WS2812C-2020-V1")) + (sheetpath (names "/btns/npx_dpad/led[1]/") (tstamps "/043701b8/0f39034f/07e7021f/")) + (tstamps "08950271")) +(comp (ref "JC24") + (value "btns.npx_dpad.led[1].cap") + (footprint "Capacitor_SMD:C_0603_1608Metric") + (property (name "Sheetname") (value "led[1]")) + (property (name "Sheetfile") (value "edg.parts.human_interface.Neopixel.Ws2812c_2020")) + (property (name "edg_path") (value "btns.npx_dpad.led[1].cap.cap")) + (property (name "edg_short_path") (value "btns.npx_dpad.led[1].cap")) + (property (name "edg_refdes") (value "JC24")) + (property (name "edg_part") (value "CC0603KRX7R9BB104 (YAGEO)")) + (property (name "edg_value") (value "50V 100nF X7R ±10% 0603 Multilayer Ceramic Capacitors MLCC - SMD/SMT ROHS")) + (sheetpath (names "/btns/npx_dpad/led[1]/") (tstamps "/043701b8/0f39034f/07e7021f/")) + (tstamps "025e0135")) +(comp (ref "JD15") + (value "btns.npx_dpad.led[2].device") + (footprint "LED_SMD:LED_WS2812B-2020_PLCC4_2.0x2.0mm") + (property (name "Sheetname") (value "led[2]")) + (property (name "Sheetfile") (value "edg.parts.human_interface.Neopixel.Ws2812c_2020")) + (property (name "edg_path") (value "btns.npx_dpad.led[2].device")) + (property (name "edg_short_path") (value "btns.npx_dpad.led[2].device")) + (property (name "edg_refdes") (value "JD15")) + (property (name "edg_part") (value "WS2812C-2020-V1 (Worldsemi)")) + (property (name "edg_value") (value "WS2812C-2020-V1")) + (sheetpath (names "/btns/npx_dpad/led[2]/") (tstamps "/043701b8/0f39034f/07e90220/")) + (tstamps "08950271")) +(comp (ref "JC25") + (value "btns.npx_dpad.led[2].cap") + (footprint "Capacitor_SMD:C_0603_1608Metric") + (property (name "Sheetname") (value "led[2]")) + (property (name "Sheetfile") (value "edg.parts.human_interface.Neopixel.Ws2812c_2020")) + (property (name "edg_path") (value "btns.npx_dpad.led[2].cap.cap")) + (property (name "edg_short_path") (value "btns.npx_dpad.led[2].cap")) + (property (name "edg_refdes") (value "JC25")) + (property (name "edg_part") (value "CC0603KRX7R9BB104 (YAGEO)")) + (property (name "edg_value") (value "50V 100nF X7R ±10% 0603 Multilayer Ceramic Capacitors MLCC - SMD/SMT ROHS")) + (sheetpath (names "/btns/npx_dpad/led[2]/") (tstamps "/043701b8/0f39034f/07e90220/")) + (tstamps "025e0135")) +(comp (ref "JD16") + (value "btns.npx_dpad.led[3].device") + (footprint "LED_SMD:LED_WS2812B-2020_PLCC4_2.0x2.0mm") + (property (name "Sheetname") (value "led[3]")) + (property (name "Sheetfile") (value "edg.parts.human_interface.Neopixel.Ws2812c_2020")) + (property (name "edg_path") (value "btns.npx_dpad.led[3].device")) + (property (name "edg_short_path") (value "btns.npx_dpad.led[3].device")) + (property (name "edg_refdes") (value "JD16")) + (property (name "edg_part") (value "WS2812C-2020-V1 (Worldsemi)")) + (property (name "edg_value") (value "WS2812C-2020-V1")) + (sheetpath (names "/btns/npx_dpad/led[3]/") (tstamps "/043701b8/0f39034f/07eb0221/")) + (tstamps "08950271")) +(comp (ref "JC26") + (value "btns.npx_dpad.led[3].cap") + (footprint "Capacitor_SMD:C_0603_1608Metric") + (property (name "Sheetname") (value "led[3]")) + (property (name "Sheetfile") (value "edg.parts.human_interface.Neopixel.Ws2812c_2020")) + (property (name "edg_path") (value "btns.npx_dpad.led[3].cap.cap")) + (property (name "edg_short_path") (value "btns.npx_dpad.led[3].cap")) + (property (name "edg_refdes") (value "JC26")) + (property (name "edg_part") (value "CC0603KRX7R9BB104 (YAGEO)")) + (property (name "edg_value") (value "50V 100nF X7R ±10% 0603 Multilayer Ceramic Capacitors MLCC - SMD/SMT ROHS")) + (sheetpath (names "/btns/npx_dpad/led[3]/") (tstamps "/043701b8/0f39034f/07eb0221/")) + (tstamps "025e0135")) +(comp (ref "JD17") + (value "btns.npx_dpad.led[4].device") + (footprint "LED_SMD:LED_WS2812B-2020_PLCC4_2.0x2.0mm") + (property (name "Sheetname") (value "led[4]")) + (property (name "Sheetfile") (value "edg.parts.human_interface.Neopixel.Ws2812c_2020")) + (property (name "edg_path") (value "btns.npx_dpad.led[4].device")) + (property (name "edg_short_path") (value "btns.npx_dpad.led[4].device")) + (property (name "edg_refdes") (value "JD17")) + (property (name "edg_part") (value "WS2812C-2020-V1 (Worldsemi)")) + (property (name "edg_value") (value "WS2812C-2020-V1")) + (sheetpath (names "/btns/npx_dpad/led[4]/") (tstamps "/043701b8/0f39034f/07ed0222/")) + (tstamps "08950271")) +(comp (ref "JC27") + (value "btns.npx_dpad.led[4].cap") + (footprint "Capacitor_SMD:C_0603_1608Metric") + (property (name "Sheetname") (value "led[4]")) + (property (name "Sheetfile") (value "edg.parts.human_interface.Neopixel.Ws2812c_2020")) + (property (name "edg_path") (value "btns.npx_dpad.led[4].cap.cap")) + (property (name "edg_short_path") (value "btns.npx_dpad.led[4].cap")) + (property (name "edg_refdes") (value "JC27")) + (property (name "edg_part") (value "CC0603KRX7R9BB104 (YAGEO)")) + (property (name "edg_value") (value "50V 100nF X7R ±10% 0603 Multilayer Ceramic Capacitors MLCC - SMD/SMT ROHS")) + (sheetpath (names "/btns/npx_dpad/led[4]/") (tstamps "/043701b8/0f39034f/07ed0222/")) + (tstamps "025e0135")) +(comp (ref "JD18") + (value "btns.npx_dpad.led[5].device") + (footprint "LED_SMD:LED_WS2812B-2020_PLCC4_2.0x2.0mm") + (property (name "Sheetname") (value "led[5]")) + (property (name "Sheetfile") (value "edg.parts.human_interface.Neopixel.Ws2812c_2020")) + (property (name "edg_path") (value "btns.npx_dpad.led[5].device")) + (property (name "edg_short_path") (value "btns.npx_dpad.led[5].device")) + (property (name "edg_refdes") (value "JD18")) + (property (name "edg_part") (value "WS2812C-2020-V1 (Worldsemi)")) + (property (name "edg_value") (value "WS2812C-2020-V1")) + (sheetpath (names "/btns/npx_dpad/led[5]/") (tstamps "/043701b8/0f39034f/07ef0223/")) + (tstamps "08950271")) +(comp (ref "JC28") + (value "btns.npx_dpad.led[5].cap") + (footprint "Capacitor_SMD:C_0603_1608Metric") + (property (name "Sheetname") (value "led[5]")) + (property (name "Sheetfile") (value "edg.parts.human_interface.Neopixel.Ws2812c_2020")) + (property (name "edg_path") (value "btns.npx_dpad.led[5].cap.cap")) + (property (name "edg_short_path") (value "btns.npx_dpad.led[5].cap")) + (property (name "edg_refdes") (value "JC28")) + (property (name "edg_part") (value "CC0603KRX7R9BB104 (YAGEO)")) + (property (name "edg_value") (value "50V 100nF X7R ±10% 0603 Multilayer Ceramic Capacitors MLCC - SMD/SMT ROHS")) + (sheetpath (names "/btns/npx_dpad/led[5]/") (tstamps "/043701b8/0f39034f/07ef0223/")) + (tstamps "025e0135")) +(comp (ref "JD19") + (value "btns.npx_dpad.led[6].device") + (footprint "LED_SMD:LED_WS2812B-2020_PLCC4_2.0x2.0mm") + (property (name "Sheetname") (value "led[6]")) + (property (name "Sheetfile") (value "edg.parts.human_interface.Neopixel.Ws2812c_2020")) + (property (name "edg_path") (value "btns.npx_dpad.led[6].device")) + (property (name "edg_short_path") (value "btns.npx_dpad.led[6].device")) + (property (name "edg_refdes") (value "JD19")) + (property (name "edg_part") (value "WS2812C-2020-V1 (Worldsemi)")) + (property (name "edg_value") (value "WS2812C-2020-V1")) + (sheetpath (names "/btns/npx_dpad/led[6]/") (tstamps "/043701b8/0f39034f/07f10224/")) + (tstamps "08950271")) +(comp (ref "JC29") + (value "btns.npx_dpad.led[6].cap") + (footprint "Capacitor_SMD:C_0603_1608Metric") + (property (name "Sheetname") (value "led[6]")) + (property (name "Sheetfile") (value "edg.parts.human_interface.Neopixel.Ws2812c_2020")) + (property (name "edg_path") (value "btns.npx_dpad.led[6].cap.cap")) + (property (name "edg_short_path") (value "btns.npx_dpad.led[6].cap")) + (property (name "edg_refdes") (value "JC29")) + (property (name "edg_part") (value "CC0603KRX7R9BB104 (YAGEO)")) + (property (name "edg_value") (value "50V 100nF X7R ±10% 0603 Multilayer Ceramic Capacitors MLCC - SMD/SMT ROHS")) + (sheetpath (names "/btns/npx_dpad/led[6]/") (tstamps "/043701b8/0f39034f/07f10224/")) + (tstamps "025e0135")) +(comp (ref "JD20") + (value "btns.npx_dpad.led[7].device") + (footprint "LED_SMD:LED_WS2812B-2020_PLCC4_2.0x2.0mm") + (property (name "Sheetname") (value "led[7]")) + (property (name "Sheetfile") (value "edg.parts.human_interface.Neopixel.Ws2812c_2020")) + (property (name "edg_path") (value "btns.npx_dpad.led[7].device")) + (property (name "edg_short_path") (value "btns.npx_dpad.led[7].device")) + (property (name "edg_refdes") (value "JD20")) + (property (name "edg_part") (value "WS2812C-2020-V1 (Worldsemi)")) + (property (name "edg_value") (value "WS2812C-2020-V1")) + (sheetpath (names "/btns/npx_dpad/led[7]/") (tstamps "/043701b8/0f39034f/07f30225/")) + (tstamps "08950271")) +(comp (ref "JC30") + (value "btns.npx_dpad.led[7].cap") + (footprint "Capacitor_SMD:C_0603_1608Metric") + (property (name "Sheetname") (value "led[7]")) + (property (name "Sheetfile") (value "edg.parts.human_interface.Neopixel.Ws2812c_2020")) + (property (name "edg_path") (value "btns.npx_dpad.led[7].cap.cap")) + (property (name "edg_short_path") (value "btns.npx_dpad.led[7].cap")) + (property (name "edg_refdes") (value "JC30")) + (property (name "edg_part") (value "CC0603KRX7R9BB104 (YAGEO)")) + (property (name "edg_value") (value "50V 100nF X7R ±10% 0603 Multilayer Ceramic Capacitors MLCC - SMD/SMT ROHS")) + (sheetpath (names "/btns/npx_dpad/led[7]/") (tstamps "/043701b8/0f39034f/07f30225/")) + (tstamps "025e0135")) +(comp (ref "JJ8") + (value "btns.conn") + (footprint "Connector_FFC-FPC:Hirose_FH12-8S-0.5SH_1x08-1MP_P0.50mm_Horizontal") + (property (name "Sheetname") (value "btns")) + (property (name "Sheetfile") (value "examples.test_ble_joystick.ButtonSubboard")) + (property (name "edg_path") (value "btns.conn.int")) + (property (name "edg_short_path") (value "btns.conn")) + (property (name "edg_refdes") (value "JJ8")) + (property (name "edg_part") (value "AFC01-S08FC*-00 (Jushuo)")) + (property (name "edg_value") (value "AFC01-S08FC*-00")) + (sheetpath (names "/btns/") (tstamps "/043701b8/")) + (tstamps "042701af"))) +(nets +(net (code 1) (name "Jbtns.gnd") + (node (ref JTP8) (pin 1)) + (node (ref JU9) (pin 7)) + (node (ref JJ6) (pin 5)) + (node (ref JC13) (pin 2)) + (node (ref JSW1) (pin 2)) + (node (ref JSW2) (pin 2)) + (node (ref JSW3) (pin 2)) + (node (ref JSW4) (pin 2)) + (node (ref JSW5) (pin 2)) + (node (ref JSW6) (pin 2)) + (node (ref JSW7) (pin 2)) + (node (ref JSW8) (pin 2)) + (node (ref JSW9) (pin 2)) + (node (ref JU10) (pin 3)) + (node (ref JC14) (pin 2)) + (node (ref JD5) (pin 2)) + (node (ref JC15) (pin 2)) + (node (ref JD6) (pin 2)) + (node (ref JC16) (pin 2)) + (node (ref JD7) (pin 2)) + (node (ref JC17) (pin 2)) + (node (ref JD8) (pin 2)) + (node (ref JC18) (pin 2)) + (node (ref JD9) (pin 2)) + (node (ref JC19) (pin 2)) + (node (ref JD10) (pin 2)) + (node (ref JC20) (pin 2)) + (node (ref JD11) (pin 2)) + (node (ref JC21) (pin 2)) + (node (ref JD12) (pin 2)) + (node (ref JC22) (pin 2)) + (node (ref JD13) (pin 2)) + (node (ref JC23) (pin 2)) + (node (ref JD14) (pin 2)) + (node (ref JC24) (pin 2)) + (node (ref JD15) (pin 2)) + (node (ref JC25) (pin 2)) + (node (ref JD16) (pin 2)) + (node (ref JC26) (pin 2)) + (node (ref JD17) (pin 2)) + (node (ref JC27) (pin 2)) + (node (ref JD18) (pin 2)) + (node (ref JC28) (pin 2)) + (node (ref JD19) (pin 2)) + (node (ref JC29) (pin 2)) + (node (ref JD20) (pin 2)) + (node (ref JC30) (pin 2)) + (node (ref JJ8) (pin 1)) + (node (ref JJ8) (pin 6))) +(net (code 2) (name "Jbtns.pwr") + (node (ref JTP9) (pin 1)) + (node (ref JU9) (pin 9)) + (node (ref JJ6) (pin 1)) + (node (ref JC13) (pin 1)) + (node (ref JU10) (pin 1)) + (node (ref JC14) (pin 1)) + (node (ref JJ8) (pin 2))) +(net (code 3) (name "Jbtns.vbat") + (node (ref JTP10) (pin 1)) + (node (ref JD5) (pin 4)) + (node (ref JC15) (pin 1)) + (node (ref JD6) (pin 4)) + (node (ref JC16) (pin 1)) + (node (ref JD7) (pin 4)) + (node (ref JC17) (pin 1)) + (node (ref JD8) (pin 4)) + (node (ref JC18) (pin 1)) + (node (ref JD9) (pin 4)) + (node (ref JC19) (pin 1)) + (node (ref JD10) (pin 4)) + (node (ref JC20) (pin 1)) + (node (ref JD11) (pin 4)) + (node (ref JC21) (pin 1)) + (node (ref JD12) (pin 4)) + (node (ref JC22) (pin 1)) + (node (ref JD13) (pin 4)) + (node (ref JC23) (pin 1)) + (node (ref JD14) (pin 4)) + (node (ref JC24) (pin 1)) + (node (ref JD15) (pin 4)) + (node (ref JC25) (pin 1)) + (node (ref JD16) (pin 4)) + (node (ref JC26) (pin 1)) + (node (ref JD17) (pin 4)) + (node (ref JC27) (pin 1)) + (node (ref JD18) (pin 4)) + (node (ref JC28) (pin 1)) + (node (ref JD19) (pin 4)) + (node (ref JC29) (pin 1)) + (node (ref JD20) (pin 4)) + (node (ref JC30) (pin 1)) + (node (ref JJ8) (pin 7)) + (node (ref JJ8) (pin 8))) +(net (code 4) (name "Jbtns.i2c.scl") + (node (ref JTP11) (pin 1)) + (node (ref JU9) (pin 12)) + (node (ref JJ8) (pin 3))) +(net (code 5) (name "Jbtns.i2c.sda") + (node (ref JTP12) (pin 1)) + (node (ref JU9) (pin 11)) + (node (ref JJ8) (pin 4))) +(net (code 6) (name "Jbtns.io0") + (node (ref JTP13) (pin 1)) + (node (ref JU9) (pin 2)) + (node (ref JJ8) (pin 5))) +(net (code 7) (name "Jbtns.ioe.ic.nrst") + (node (ref JU9) (pin 4)) + (node (ref JJ6) (pin 3))) +(net (code 8) (name "Jbtns.ioe.ic.osc.xtal_in") + (node (ref JU9) (pin 5))) +(net (code 9) (name "Jbtns.ioe.ic.osc.xtal_out") + (node (ref JU9) (pin 6))) +(net (code 10) (name "Jbtns.ioe.ic.swio") + (node (ref JU9) (pin 18)) + (node (ref JJ6) (pin 2))) +(net (code 11) (name "Jbtns.sw[0].out") + (node (ref JU9) (pin 3)) + (node (ref JSW1) (pin 1))) +(net (code 12) (name "Jbtns.sw[1].out") + (node (ref JU9) (pin 8)) + (node (ref JSW2) (pin 1))) +(net (code 13) (name "Jbtns.sw[2].out") + (node (ref JU9) (pin 10)) + (node (ref JSW3) (pin 1))) +(net (code 14) (name "Jbtns.sw[3].out") + (node (ref JU9) (pin 13)) + (node (ref JSW4) (pin 1))) +(net (code 15) (name "Jbtns.sw[4].out") + (node (ref JU9) (pin 14)) + (node (ref JSW5) (pin 1))) +(net (code 16) (name "Jbtns.sw[5].out") + (node (ref JU9) (pin 15)) + (node (ref JSW6) (pin 1))) +(net (code 17) (name "Jbtns.sw[6].out") + (node (ref JU9) (pin 16)) + (node (ref JSW7) (pin 1))) +(net (code 18) (name "Jbtns.sw[7].out") + (node (ref JU9) (pin 17)) + (node (ref JSW8) (pin 1))) +(net (code 19) (name "Jbtns.bumper_sw.out") + (node (ref JU9) (pin 19)) + (node (ref JSW9) (pin 1))) +(net (code 20) (name "Jbtns.trig.out") + (node (ref JU9) (pin 1)) + (node (ref JU10) (pin 2))) +(net (code 21) (name "Jbtns.npx_tp.io") + (node (ref JU9) (pin 20)) + (node (ref JTP14) (pin 1)) + (node (ref JD5) (pin 3))) +(net (code 22) (name "Jbtns.npx_js.dout") + (node (ref JD12) (pin 1)) + (node (ref JD13) (pin 3))) +(net (code 23) (name "Jbtns.npx_js.led[0].dout") + (node (ref JD5) (pin 1)) + (node (ref JD6) (pin 3))) +(net (code 24) (name "Jbtns.npx_js.led[1].dout") + (node (ref JD6) (pin 1)) + (node (ref JD7) (pin 3))) +(net (code 25) (name "Jbtns.npx_js.led[2].dout") + (node (ref JD7) (pin 1)) + (node (ref JD8) (pin 3))) +(net (code 26) (name "Jbtns.npx_js.led[3].dout") + (node (ref JD8) (pin 1)) + (node (ref JD9) (pin 3))) +(net (code 27) (name "Jbtns.npx_js.led[4].dout") + (node (ref JD9) (pin 1)) + (node (ref JD10) (pin 3))) +(net (code 28) (name "Jbtns.npx_js.led[5].dout") + (node (ref JD10) (pin 1)) + (node (ref JD11) (pin 3))) +(net (code 29) (name "Jbtns.npx_js.led[6].dout") + (node (ref JD11) (pin 1)) + (node (ref JD12) (pin 3))) +(net (code 30) (name "Jbtns.npx_dpad.dout") + (node (ref JD20) (pin 1))) +(net (code 31) (name "Jbtns.npx_dpad.led[0].dout") + (node (ref JD13) (pin 1)) + (node (ref JD14) (pin 3))) +(net (code 32) (name "Jbtns.npx_dpad.led[1].dout") + (node (ref JD14) (pin 1)) + (node (ref JD15) (pin 3))) +(net (code 33) (name "Jbtns.npx_dpad.led[2].dout") + (node (ref JD15) (pin 1)) + (node (ref JD16) (pin 3))) +(net (code 34) (name "Jbtns.npx_dpad.led[3].dout") + (node (ref JD16) (pin 1)) + (node (ref JD17) (pin 3))) +(net (code 35) (name "Jbtns.npx_dpad.led[4].dout") + (node (ref JD17) (pin 1)) + (node (ref JD18) (pin 3))) +(net (code 36) (name "Jbtns.npx_dpad.led[5].dout") + (node (ref JD18) (pin 1)) + (node (ref JD19) (pin 3))) +(net (code 37) (name "Jbtns.npx_dpad.led[6].dout") + (node (ref JD19) (pin 1)) + (node (ref JD20) (pin 3)))) +) \ No newline at end of file diff --git a/examples/BleJoystick/BleJoystick_stick.net.ref b/examples/BleJoystick/BleJoystick_stick.net.ref index c6b66197f..e6a89123c 100644 --- a/examples/BleJoystick/BleJoystick_stick.net.ref +++ b/examples/BleJoystick/BleJoystick_stick.net.ref @@ -1,46 +1,46 @@ (export (version D) (components -(comp (ref "JU4") +(comp (ref "JU8") (value "stick.stick") (footprint "edg:Joystick_XboxElite2") (property (name "Sheetname") (value "stick")) (property (name "Sheetfile") (value "examples.test_ble_joystick.JoystickSubboard")) (property (name "edg_path") (value "stick.stick")) (property (name "edg_short_path") (value "stick.stick")) - (property (name "edg_refdes") (value "JU4")) + (property (name "edg_refdes") (value "JU8")) (property (name "edg_part") (value "")) (property (name "edg_value") (value "")) (sheetpath (names "/stick/") (tstamps "/0680021f/")) (tstamps "0680021f")) (comp (ref "JJ5") (value "stick.conn") - (footprint "Connector_FFC-FPC:Hirose_FH12-6S-0.5SH_1x06-1MP_P0.50mm_Horizontal") + (footprint "Connector_FFC-FPC:Hirose_FH12-8S-0.5SH_1x08-1MP_P0.50mm_Horizontal") (property (name "Sheetname") (value "stick")) (property (name "Sheetfile") (value "examples.test_ble_joystick.JoystickSubboard")) (property (name "edg_path") (value "stick.conn.int")) (property (name "edg_short_path") (value "stick.conn")) (property (name "edg_refdes") (value "JJ5")) - (property (name "edg_part") (value "AFC01-S06FC*-00 (Jushuo)")) - (property (name "edg_value") (value "AFC01-S06FC*-00")) + (property (name "edg_part") (value "AFC01-S08FC*-00 (Jushuo)")) + (property (name "edg_value") (value "AFC01-S08FC*-00")) (sheetpath (names "/stick/") (tstamps "/0680021f/")) (tstamps "042701af"))) (nets (net (code 1) (name "Jstick.gnd") - (node (ref JU4) (pin 2)) - (node (ref JU4) (pin 3)) - (node (ref JU4) (pin 8)) - (node (ref JJ5) (pin 6))) + (node (ref JU8) (pin 2)) + (node (ref JU8) (pin 3)) + (node (ref JU8) (pin 8)) + (node (ref JJ5) (pin 8))) (net (code 2) (name "Jstick.pwr") - (node (ref JU4) (pin 5)) - (node (ref JU4) (pin 6)) - (node (ref JJ5) (pin 5))) + (node (ref JU8) (pin 5)) + (node (ref JU8) (pin 6)) + (node (ref JJ5) (pin 7))) (net (code 3) (name "Jstick.sw") - (node (ref JU4) (pin 1)) - (node (ref JJ5) (pin 3))) + (node (ref JU8) (pin 1)) + (node (ref JJ5) (pin 5))) (net (code 4) (name "Jstick.ax1") - (node (ref JU4) (pin 4)) - (node (ref JJ5) (pin 2))) + (node (ref JU8) (pin 4)) + (node (ref JJ5) (pin 4))) (net (code 5) (name "Jstick.ax2") - (node (ref JU4) (pin 7)) - (node (ref JJ5) (pin 1)))) + (node (ref JU8) (pin 7)) + (node (ref JJ5) (pin 3)))) ) \ No newline at end of file diff --git a/examples/Keyboard/Keyboard.kicad_pro b/examples/Keyboard/Keyboard.kicad_pro index 2b461db85..f8ea8a338 100644 --- a/examples/Keyboard/Keyboard.kicad_pro +++ b/examples/Keyboard/Keyboard.kicad_pro @@ -3,14 +3,17 @@ "3dviewports": [], "design_settings": { "defaults": { - "board_outline_line_width": 0.038099999999999995, + "apply_defaults_to_fp_fields": false, + "apply_defaults_to_fp_shapes": false, + "apply_defaults_to_fp_text": false, + "board_outline_line_width": 0.0381, "copper_line_width": 0.254, "copper_text_italic": false, "copper_text_size_h": 1.524, "copper_text_size_v": 1.524, - "copper_text_thickness": 0.30479999999999996, + "copper_text_thickness": 0.3048, "copper_text_upright": false, - "courtyard_line_width": 0.049999999999999996, + "courtyard_line_width": 0.05, "dimension_precision": 4, "dimension_units": 3, "dimensions": { @@ -21,13 +24,13 @@ "text_position": 0, "units_format": 1 }, - "fab_line_width": 0.09999999999999999, + "fab_line_width": 0.1, "fab_text_italic": false, "fab_text_size_h": 1.0, "fab_text_size_v": 1.0, "fab_text_thickness": 0.15, "fab_text_upright": false, - "other_line_width": 0.09999999999999999, + "other_line_width": 0.1, "other_text_italic": false, "other_text_size_h": 1.0, "other_text_size_v": 1.0, @@ -38,11 +41,11 @@ "height": 1.152, "width": 1.152 }, - "silk_line_width": 0.09999999999999999, + "silk_line_width": 0.1, "silk_text_italic": false, "silk_text_size_h": 0.6, - "silk_text_size_v": 0.7999999999999999, - "silk_text_thickness": 0.09999999999999999, + "silk_text_size_v": 0.8, + "silk_text_thickness": 0.1, "silk_text_upright": false, "zones": { "45_degree_only": false, @@ -84,9 +87,11 @@ "duplicate_footprints": "warning", "extra_footprint": "warning", "footprint": "error", + "footprint_symbol_mismatch": "warning", "footprint_type_mismatch": "error", "hole_clearance": "error", "hole_near_hole": "error", + "holes_co_located": "warning", "invalid_outline": "error", "isolated_copper": "warning", "item_on_disabled_layer": "error", @@ -132,24 +137,21 @@ "min_copper_edge_clearance": 0.01, "min_hole_clearance": 0.254, "min_hole_to_hole": 0.5, - "min_microvia_diameter": 0.19999999999999998, - "min_microvia_drill": 0.09999999999999999, + "min_microvia_diameter": 0.2, + "min_microvia_drill": 0.1, "min_resolved_spokes": 2, "min_silk_clearance": 0.0, "min_text_height": 0.7, "min_text_thickness": 0.08, "min_through_hole_diameter": 0.3, "min_track_width": 0.127, - "min_via_annular_width": 0.049999999999999996, + "min_via_annular_width": 0.05, "min_via_diameter": 0.6, "solder_mask_to_copper_clearance": 0.0, "use_height_for_length_calcs": true }, "teardrop_options": [ { - "td_allow_use_two_tracks": true, - "td_curve_segcount": 5, - "td_on_pad_in_zone": false, "td_onpadsmd": true, "td_onroundshapesonly": false, "td_ontrackend": false, @@ -158,29 +160,35 @@ ], "teardrop_parameters": [ { + "td_allow_use_two_tracks": true, "td_curve_segcount": 0, "td_height_ratio": 1.0, "td_length_ratio": 0.5, "td_maxheight": 2.0, "td_maxlen": 1.0, + "td_on_pad_in_zone": false, "td_target_name": "td_round_shape", "td_width_to_size_filter_ratio": 0.9 }, { + "td_allow_use_two_tracks": true, "td_curve_segcount": 0, "td_height_ratio": 1.0, "td_length_ratio": 0.5, "td_maxheight": 2.0, "td_maxlen": 1.0, + "td_on_pad_in_zone": false, "td_target_name": "td_rect_shape", "td_width_to_size_filter_ratio": 0.9 }, { + "td_allow_use_two_tracks": true, "td_curve_segcount": 0, "td_height_ratio": 1.0, "td_length_ratio": 0.5, "td_maxheight": 2.0, "td_maxlen": 1.0, + "td_on_pad_in_zone": false, "td_target_name": "td_track_end", "td_width_to_size_filter_ratio": 0.9 } @@ -192,6 +200,32 @@ 0.5, 1.0 ], + "tuning_pattern_settings": { + "diff_pair_defaults": { + "corner_radius_percentage": 80, + "corner_style": 1, + "max_amplitude": 1.0, + "min_amplitude": 0.2, + "single_sided": false, + "spacing": 1.0 + }, + "diff_pair_skew_defaults": { + "corner_radius_percentage": 80, + "corner_style": 1, + "max_amplitude": 1.0, + "min_amplitude": 0.2, + "single_sided": false, + "spacing": 0.6 + }, + "single_track_defaults": { + "corner_radius_percentage": 80, + "corner_style": 1, + "max_amplitude": 1.0, + "min_amplitude": 0.2, + "single_sided": false, + "spacing": 0.6 + } + }, "via_dimensions": [ { "diameter": 0.0, @@ -209,6 +243,13 @@ "zones_allow_external_fillets": false, "zones_use_no_outline": true }, + "ipc2581": { + "dist": "", + "distpn": "", + "internal_id": "", + "mfg": "", + "mpn": "" + }, "layer_presets": [], "viewports": [] }, @@ -290,8 +331,11 @@ "gencad": "", "idf": "", "netlist": "Keyboard.net", + "plot": "", + "pos_files": "", "specctra_dsn": "", "step": "", + "svg": "", "vrml": "" }, "page_layout_descr_file": "" diff --git a/examples/Multimeter/Multimeter.net.ref b/examples/Multimeter/Multimeter.net.ref index 3c2ed3555..367eec4ed 100644 --- a/examples/Multimeter/Multimeter.net.ref +++ b/examples/Multimeter/Multimeter.net.ref @@ -398,7 +398,7 @@ (tstamps "0b5902d0")) (comp (ref "J2") (value "mcu.swd") - (footprint "Connector:Tag-Connect_TC2050-IDC-NL_2x05_P1.27mm_Vertical") + (footprint "Connector:Tag-Connect_TC2030-IDC-NL_2x03_P1.27mm_Vertical") (property (name "Sheetname") (value "mcu")) (property (name "Sheetfile") (value "edg.parts.microcontroller.nRF52840.Mdbt50q_1mv2")) (property (name "edg_path") (value "mcu.swd.conn")) @@ -1315,8 +1315,6 @@ (node (ref U5) (pin 33)) (node (ref U5) (pin 55)) (node (ref C7) (pin 2)) - (node (ref J2) (pin 2)) - (node (ref J2) (pin 3)) (node (ref J2) (pin 5)) (node (ref C8) (pin 2)) (node (ref R9) (pin 2)) @@ -1542,182 +1540,180 @@ (node (ref U18) (pin 6))) (net (code 33) (name "mcu.swd_node.swdio") (node (ref U5) (pin 51)) - (node (ref J2) (pin 10))) + (node (ref J2) (pin 2))) (net (code 34) (name "mcu.swd_node.swclk") (node (ref U5) (pin 53)) - (node (ref J2) (pin 9))) + (node (ref J2) (pin 4))) (net (code 35) (name "mcu.reset_node") (node (ref U5) (pin 40)) - (node (ref J2) (pin 6))) -(net (code 36) (name "mcu.swd.tdi") - (node (ref J2) (pin 7))) -(net (code 37) (name "mcu.swd.swo") + (node (ref J2) (pin 3))) +(net (code 36) (name "mcu.swd.swo") (node (ref U5) (pin 47)) - (node (ref J2) (pin 8))) -(net (code 38) (name "mcu.usb_res.interior.dp") + (node (ref J2) (pin 6))) +(net (code 37) (name "mcu.usb_res.interior.dp") (node (ref U5) (pin 35)) (node (ref R6) (pin 2))) -(net (code 39) (name "mcu.usb_res.interior.dm") +(net (code 38) (name "mcu.usb_res.interior.dm") (node (ref U5) (pin 34)) (node (ref R7) (pin 2))) -(net (code 40) (name "vbatsense.output") +(net (code 39) (name "vbatsense.output") (node (ref U5) (pin 9)) (node (ref R8) (pin 2)) (node (ref R9) (pin 1))) -(net (code 41) (name "rgb.package.k_red") +(net (code 40) (name "rgb.package.k_red") (node (ref D6) (pin 3)) (node (ref R10) (pin 1))) -(net (code 42) (name "rgb.package.k_green") +(net (code 41) (name "rgb.package.k_green") (node (ref D6) (pin 4)) (node (ref R11) (pin 1))) -(net (code 43) (name "rgb.package.k_blue") +(net (code 42) (name "rgb.package.k_blue") (node (ref D6) (pin 1)) (node (ref R12) (pin 1))) -(net (code 44) (name "sw1.out") +(net (code 43) (name "sw1.out") (node (ref U5) (pin 16)) (node (ref SW2) (pin 1))) -(net (code 45) (name "sw2.out") +(net (code 44) (name "sw2.out") (node (ref U5) (pin 3)) (node (ref SW3) (pin 1))) -(net (code 46) (name "lcd.reset") +(net (code 45) (name "lcd.reset") (node (ref U5) (pin 8)) (node (ref J3) (pin 3))) -(net (code 47) (name "lcd.rs") +(net (code 46) (name "lcd.rs") (node (ref U5) (pin 10)) (node (ref J3) (pin 4))) -(net (code 48) (name "lcd.cs") +(net (code 47) (name "lcd.cs") (node (ref U5) (pin 17)) (node (ref J3) (pin 8))) -(net (code 49) (name "lcd.spi.sck") +(net (code 48) (name "lcd.spi.sck") (node (ref U5) (pin 18)) (node (ref J3) (pin 6))) -(net (code 50) (name "lcd.spi.mosi") +(net (code 49) (name "lcd.spi.mosi") (node (ref U5) (pin 19)) (node (ref J3) (pin 5))) -(net (code 51) (name "lcd.device.leda") +(net (code 50) (name "lcd.device.leda") (node (ref J3) (pin 1)) (node (ref R13) (pin 2))) -(net (code 52) (name "spk_drv.ic.inp") +(net (code 51) (name "spk_drv.ic.inp") (node (ref U7) (pin 4)) (node (ref R15) (pin 2))) -(net (code 53) (name "spk_drv.ic.inn") +(net (code 52) (name "spk_drv.ic.inn") (node (ref U7) (pin 3)) (node (ref R16) (pin 2))) -(net (code 54) (name "spk_drv.inp_res.input") +(net (code 53) (name "spk_drv.inp_res.input") (node (ref R15) (pin 1)) (node (ref C13) (pin 1))) -(net (code 55) (name "spk_drv.inn_res.input") +(net (code 54) (name "spk_drv.inn_res.input") (node (ref R16) (pin 1)) (node (ref C14) (pin 1))) -(net (code 56) (name "ref_div.output") +(net (code 55) (name "ref_div.output") (node (ref R17) (pin 2)) (node (ref R18) (pin 1)) (node (ref U8) (pin 3))) -(net (code 57) (name "inn.port") +(net (code 56) (name "inn.port") (node (ref J5) (pin 1)) (node (ref U9) (pin 4)) (node (ref U12) (pin 4)) (node (ref U14) (pin 6))) -(net (code 58) (name "inp.port") +(net (code 57) (name "inp.port") (node (ref J6) (pin 1)) (node (ref R19) (pin 1)) (node (ref D7) (pin 1))) -(net (code 59) (name "measure.range.switch.sw[0_0].com") +(net (code 58) (name "measure.range.switch.sw[0_0].com") (node (ref U10) (pin 4)) (node (ref U12) (pin 3))) -(net (code 60) (name "measure.range.switch.sw[0_1].com") +(net (code 59) (name "measure.range.switch.sw[0_1].com") (node (ref U11) (pin 4)) (node (ref U12) (pin 1))) -(net (code 61) (name "measure.range.res[0].b") +(net (code 60) (name "measure.range.res[0].b") (node (ref U10) (pin 3)) (node (ref R20) (pin 2))) -(net (code 62) (name "measure.range.res[1].b") +(net (code 61) (name "measure.range.res[1].b") (node (ref U10) (pin 1)) (node (ref R21) (pin 2))) -(net (code 63) (name "measure.range.res[2].b") +(net (code 62) (name "measure.range.res[2].b") (node (ref U11) (pin 3)) (node (ref R22) (pin 2))) -(net (code 64) (name "measure.range.dummy.io") +(net (code 63) (name "measure.range.dummy.io") (node (ref U11) (pin 1))) -(net (code 65) (name "adc.mclkin") +(net (code 64) (name "adc.mclkin") (node (ref U14) (pin 18))) -(net (code 66) (name "adc.vins.2") +(net (code 65) (name "adc.vins.2") (node (ref U14) (pin 7))) -(net (code 67) (name "adc.vins.3") +(net (code 66) (name "adc.vins.3") (node (ref U14) (pin 8))) -(net (code 68) (name "adc.vins.4") +(net (code 67) (name "adc.vins.4") (node (ref U14) (pin 9))) -(net (code 69) (name "adc.vins.5") +(net (code 68) (name "adc.vins.5") (node (ref U14) (pin 10))) -(net (code 70) (name "adc.vins.6") +(net (code 69) (name "adc.vins.6") (node (ref U14) (pin 11))) -(net (code 71) (name "adc.vins.7") +(net (code 70) (name "adc.vins.7") (node (ref U14) (pin 12))) -(net (code 72) (name "adc.spi.sck") +(net (code 71) (name "adc.spi.sck") (node (ref U5) (pin 37)) (node (ref U14) (pin 14))) -(net (code 73) (name "adc.spi.mosi") +(net (code 72) (name "adc.spi.mosi") (node (ref U5) (pin 26)) (node (ref U14) (pin 15))) -(net (code 74) (name "adc.spi.miso") +(net (code 73) (name "adc.spi.miso") (node (ref U5) (pin 24)) (node (ref U14) (pin 16))) -(net (code 75) (name "adc.cs") +(net (code 74) (name "adc.cs") (node (ref U5) (pin 39)) (node (ref U14) (pin 13))) -(net (code 76) (name "adc.ic.avdd") +(net (code 75) (name "adc.ic.avdd") (node (ref U14) (pin 1)) (node (ref R23) (pin 2)) (node (ref C21) (pin 1)) (node (ref C22) (pin 1))) -(net (code 77) (name "adc.ic.dvdd") +(net (code 76) (name "adc.ic.dvdd") (node (ref U14) (pin 20)) (node (ref R24) (pin 2)) (node (ref C23) (pin 1)) (node (ref C24) (pin 1))) -(net (code 78) (name "adc.ic.vrefp") +(net (code 77) (name "adc.ic.vrefp") (node (ref U14) (pin 4)) (node (ref C25) (pin 1))) -(net (code 79) (name "driver.control") +(net (code 78) (name "driver.control") (node (ref U15) (pin 3)) (node (ref R29) (pin 2)) (node (ref C31) (pin 1))) -(net (code 80) (name "driver.enable") +(net (code 79) (name "driver.enable") (node (ref U5) (pin 48)) (node (ref U19) (pin 6))) -(net (code 81) (name "driver.fet.source") +(net (code 80) (name "driver.fet.source") (node (ref Q3) (pin 2)) (node (ref U15) (pin 4)) (node (ref U18) (pin 4)) (node (ref U19) (pin 3))) -(net (code 82) (name "driver.fet.drain") +(net (code 81) (name "driver.fet.drain") (node (ref Q3) (pin 3)) (node (ref D7) (pin 2))) -(net (code 83) (name "driver.fet.gate") +(net (code 82) (name "driver.fet.gate") (node (ref Q3) (pin 1)) (node (ref U19) (pin 4))) -(net (code 84) (name "driver.amp.out") +(net (code 83) (name "driver.amp.out") (node (ref U15) (pin 1)) (node (ref U19) (pin 1))) -(net (code 85) (name "driver.range.switch.sw[0_0].com") +(net (code 84) (name "driver.range.switch.sw[0_0].com") (node (ref U16) (pin 4)) (node (ref U18) (pin 3))) -(net (code 86) (name "driver.range.switch.sw[0_1].com") +(net (code 85) (name "driver.range.switch.sw[0_1].com") (node (ref U17) (pin 4)) (node (ref U18) (pin 1))) -(net (code 87) (name "driver.range.res[0].b") +(net (code 86) (name "driver.range.res[0].b") (node (ref U16) (pin 3)) (node (ref R25) (pin 2))) -(net (code 88) (name "driver.range.res[1].b") +(net (code 87) (name "driver.range.res[1].b") (node (ref U16) (pin 1)) (node (ref R26) (pin 2))) -(net (code 89) (name "driver.range.res[2].b") +(net (code 88) (name "driver.range.res[2].b") (node (ref U17) (pin 3)) (node (ref R27) (pin 2))) -(net (code 90) (name "driver.range.res[3].b") +(net (code 89) (name "driver.range.res[3].b") (node (ref U17) (pin 1)) (node (ref R28) (pin 2))) -(net (code 91) (name "driver_dac.input") +(net (code 90) (name "driver_dac.input") (node (ref U5) (pin 45)) (node (ref R29) (pin 1)))) ) \ No newline at end of file diff --git a/examples/Multimeter/Multimeter.svgpcb.js b/examples/Multimeter/Multimeter.svgpcb.js index b0b7ea2fc..0a94f219d 100644 --- a/examples/Multimeter/Multimeter.svgpcb.js +++ b/examples/Multimeter/Multimeter.svgpcb.js @@ -2,157 +2,157 @@ const board = new PCB(); // jlc_th.th1 const H1 = board.add(JlcToolingHole_1_152mm, { - translate: pt(2.913, 2.557), rotate: 0, + translate: pt(2.913, 2.253), rotate: 0, id: 'H1' }) // jlc_th.th2 const H2 = board.add(JlcToolingHole_1_152mm, { - translate: pt(2.952, 2.557), rotate: 0, + translate: pt(2.952, 2.253), rotate: 0, id: 'H2' }) // jlc_th.th3 const H3 = board.add(JlcToolingHole_1_152mm, { - translate: pt(2.913, 2.597), rotate: 0, + translate: pt(2.913, 2.292), rotate: 0, id: 'H3' }) // bat const U1 = board.add(BatteryHolder_Keystone_2460_1xAA, { - translate: pt(1.063, 0.343), rotate: 0, + translate: pt(1.026, 0.343), rotate: 0, id: 'U1' }) // data_usb.conn const J1 = board.add(USB_C_Receptacle_XKB_U262_16XN_4BVC11, { - translate: pt(2.365, 1.237), rotate: 0, + translate: pt(2.365, 0.932), rotate: 0, id: 'J1' }) // data_usb.cc_pull.cc1.res const R1 = board.add(R_0603_1608Metric, { - translate: pt(2.213, 1.492), rotate: 0, + translate: pt(2.213, 1.187), rotate: 0, id: 'R1' }) // data_usb.cc_pull.cc2.res const R2 = board.add(R_0603_1608Metric, { - translate: pt(2.369, 1.492), rotate: 0, + translate: pt(2.369, 1.187), rotate: 0, id: 'R2' }) // gate.pwr_gate.pull_res const R3 = board.add(R_0603_1608Metric, { - translate: pt(3.316, 0.466), rotate: 0, + translate: pt(3.279, 0.466), rotate: 0, id: 'R3' }) // gate.pwr_gate.pwr_fet const Q1 = board.add(SOT_23, { - translate: pt(3.707, 0.067), rotate: 0, + translate: pt(3.670, 0.067), rotate: 0, id: 'Q1' }) // gate.pwr_gate.amp_res const R4 = board.add(R_0603_1608Metric, { - translate: pt(3.472, 0.466), rotate: 0, + translate: pt(3.435, 0.466), rotate: 0, id: 'R4' }) // gate.pwr_gate.amp_fet const Q2 = board.add(SOT_23, { - translate: pt(3.333, 0.331), rotate: 0, + translate: pt(3.296, 0.331), rotate: 0, id: 'Q2' }) // gate.pwr_gate.ctl_diode const D1 = board.add(D_SOD_323, { - translate: pt(3.512, 0.301), rotate: 0, + translate: pt(3.474, 0.301), rotate: 0, id: 'D1' }) // gate.pwr_gate.btn_diode const D2 = board.add(D_SOD_323, { - translate: pt(3.677, 0.301), rotate: 0, + translate: pt(3.640, 0.301), rotate: 0, id: 'D2' }) // gate.btn.package const SW1 = board.add(SW_SPST_SKQG_WithoutStem, { - translate: pt(3.425, 0.112), rotate: 0, + translate: pt(3.388, 0.112), rotate: 0, id: 'SW1' }) // reg_5v.ic const U2 = board.add(SOT_23_5, { - translate: pt(2.770, 1.752), rotate: 0, + translate: pt(2.770, 1.447), rotate: 0, id: 'U2' }) // reg_5v.power_path.inductor const L1 = board.add(L_0603_1608Metric, { - translate: pt(2.920, 1.887), rotate: 0, + translate: pt(2.920, 1.582), rotate: 0, id: 'L1' }) // reg_5v.power_path.in_cap.cap const C1 = board.add(C_0805_2012Metric, { - translate: pt(2.957, 1.724), rotate: 0, + translate: pt(2.957, 1.419), rotate: 0, id: 'C1' }) // reg_5v.power_path.out_cap.cap const C2 = board.add(C_0805_2012Metric, { - translate: pt(2.756, 1.897), rotate: 0, + translate: pt(2.756, 1.592), rotate: 0, id: 'C2' }) // reg_5v.ce_res.res const R5 = board.add(R_0603_1608Metric, { - translate: pt(2.747, 2.004), rotate: 0, + translate: pt(2.747, 1.699), rotate: 0, id: 'R5' }) // tp_5v.tp const TP1 = board.add(TestPoint_Keystone_5015_Micro_Minature, { - translate: pt(0.554, 2.611), rotate: 0, + translate: pt(0.554, 2.306), rotate: 0, id: 'TP1' }) // prot_5v.diode const D3 = board.add(D_MiniMELF, { - translate: pt(2.011, 2.601), rotate: 0, + translate: pt(2.011, 2.296), rotate: 0, id: 'D3' }) // reg_3v3.ic const U3 = board.add(SOT_23_5, { - translate: pt(0.081, 2.276), rotate: 0, + translate: pt(0.081, 1.971), rotate: 0, id: 'U3' }) // reg_3v3.in_cap.cap const C3 = board.add(C_0603_1608Metric, { - translate: pt(0.058, 2.411), rotate: 0, + translate: pt(0.058, 2.106), rotate: 0, id: 'C3' }) // reg_3v3.out_cap.cap const C4 = board.add(C_0603_1608Metric, { - translate: pt(0.214, 2.411), rotate: 0, + translate: pt(0.214, 2.106), rotate: 0, id: 'C4' }) // tp_3v3.tp const TP2 = board.add(TestPoint_Keystone_5015_Micro_Minature, { - translate: pt(0.841, 2.611), rotate: 0, + translate: pt(0.841, 2.306), rotate: 0, id: 'TP2' }) // prot_3v3.diode const D4 = board.add(D_SOD_323, { - translate: pt(2.297, 2.595), rotate: 0, + translate: pt(2.297, 2.290), rotate: 0, id: 'D4' }) // reg_analog.ic const U4 = board.add(SOT_23_5, { - translate: pt(0.471, 2.276), rotate: 0, + translate: pt(0.471, 1.971), rotate: 0, id: 'U4' }) // reg_analog.in_cap.cap const C5 = board.add(C_0603_1608Metric, { - translate: pt(0.449, 2.411), rotate: 0, + translate: pt(0.449, 2.106), rotate: 0, id: 'C5' }) // reg_analog.out_cap.cap const C6 = board.add(C_0603_1608Metric, { - translate: pt(0.605, 2.411), rotate: 0, + translate: pt(0.605, 2.106), rotate: 0, id: 'C6' }) // tp_analog.tp const TP3 = board.add(TestPoint_Keystone_5015_Micro_Minature, { - translate: pt(1.129, 2.611), rotate: 0, + translate: pt(1.129, 2.306), rotate: 0, id: 'TP3' }) // prot_analog.diode const D5 = board.add(D_SOD_323, { - translate: pt(2.541, 2.595), rotate: 0, + translate: pt(2.541, 2.290), rotate: 0, id: 'D5' }) // mcu.ic @@ -162,382 +162,382 @@ const U5 = board.add(Raytac_MDBT50Q, { }) // mcu.vcc_cap.cap const C7 = board.add(C_0805_2012Metric, { - translate: pt(0.596, 0.728), rotate: 0, + translate: pt(0.559, 0.235), rotate: 0, id: 'C7' }) // mcu.swd.conn -const J2 = board.add(Tag_Connect_TC2050_IDC_NL_2x05_P1_27mm_Vertical, { - translate: pt(0.245, 0.822), rotate: 0, +const J2 = board.add(Tag_Connect_TC2030_IDC_NL_2x03_P1_27mm_Vertical, { + translate: pt(0.630, 0.079), rotate: 0, id: 'J2' }) // mcu.vbus_cap.cap const C8 = board.add(C_0805_2012Metric, { - translate: pt(0.770, 0.728), rotate: 0, + translate: pt(0.732, 0.235), rotate: 0, id: 'C8' }) // mcu.usb_res.dp.res const R6 = board.add(R_0603_1608Metric, { - translate: pt(0.588, 0.834), rotate: 0, + translate: pt(0.550, 0.342), rotate: 0, id: 'R6' }) // mcu.usb_res.dm.res const R7 = board.add(R_0603_1608Metric, { - translate: pt(0.744, 0.834), rotate: 0, + translate: pt(0.706, 0.342), rotate: 0, id: 'R7' }) // vbatsense.div.top_res const R8 = board.add(R_0603_1608Metric, { - translate: pt(3.628, 2.237), rotate: 0, + translate: pt(3.628, 1.933), rotate: 0, id: 'R8' }) // vbatsense.div.bottom_res const R9 = board.add(R_0603_1608Metric, { - translate: pt(3.628, 2.334), rotate: 0, + translate: pt(3.628, 2.030), rotate: 0, id: 'R9' }) // usb_esd const U6 = board.add(SOT_23, { - translate: pt(2.798, 2.624), rotate: 0, + translate: pt(2.798, 2.320), rotate: 0, id: 'U6' }) // rgb.package const D6 = board.add(LED_LiteOn_LTST_C19HE1WT, { - translate: pt(2.677, 2.264), rotate: 0, + translate: pt(2.677, 1.959), rotate: 0, id: 'D6' }) // rgb.red_res const R10 = board.add(R_0603_1608Metric, { - translate: pt(2.816, 2.237), rotate: 0, + translate: pt(2.816, 1.933), rotate: 0, id: 'R10' }) // rgb.green_res const R11 = board.add(R_0603_1608Metric, { - translate: pt(2.694, 2.387), rotate: 0, + translate: pt(2.694, 2.082), rotate: 0, id: 'R11' }) // rgb.blue_res const R12 = board.add(R_0603_1608Metric, { - translate: pt(2.850, 2.387), rotate: 0, + translate: pt(2.850, 2.082), rotate: 0, id: 'R12' }) // sw1.package const SW2 = board.add(SW_SPST_SKQG_WithoutStem, { - translate: pt(1.507, 2.321), rotate: 0, + translate: pt(1.507, 2.016), rotate: 0, id: 'SW2' }) // sw2.package const SW3 = board.add(SW_SPST_SKQG_WithoutStem, { - translate: pt(1.960, 2.321), rotate: 0, + translate: pt(1.960, 2.016), rotate: 0, id: 'SW3' }) // lcd.device.conn const J3 = board.add(Hirose_FH12_8S_0_5SH_1x08_1MP_P0_50mm_Horizontal, { - translate: pt(2.891, 1.265), rotate: 0, + translate: pt(2.891, 0.961), rotate: 0, id: 'J3' }) // lcd.led_res const R13 = board.add(R_0603_1608Metric, { - translate: pt(2.750, 1.452), rotate: 0, + translate: pt(2.750, 1.147), rotate: 0, id: 'R13' }) // lcd.vdd_cap.cap const C9 = board.add(C_0603_1608Metric, { - translate: pt(2.906, 1.452), rotate: 0, + translate: pt(2.906, 1.147), rotate: 0, id: 'C9' }) // spk_dac.rc.r const R14 = board.add(R_0603_1608Metric, { - translate: pt(0.058, 2.586), rotate: 0, + translate: pt(0.058, 2.281), rotate: 0, id: 'R14' }) // spk_dac.rc.c const C10 = board.add(C_0603_1608Metric, { - translate: pt(0.058, 2.683), rotate: 0, + translate: pt(0.058, 2.378), rotate: 0, id: 'C10' }) // spk_tp.tp const TP4 = board.add(TestPoint_Keystone_5015_Micro_Minature, { - translate: pt(1.416, 2.611), rotate: 0, + translate: pt(1.416, 2.306), rotate: 0, id: 'TP4' }) // spk_drv.ic const U7 = board.add(MSOP_8_1EP_3x3mm_P0_65mm_EP1_68x1_88mm_ThermalVias, { - translate: pt(3.265, 1.754), rotate: 0, + translate: pt(3.265, 1.449), rotate: 0, id: 'U7' }) // spk_drv.pwr_cap.cap const C11 = board.add(C_0603_1608Metric, { - translate: pt(3.200, 1.891), rotate: 0, + translate: pt(3.200, 1.586), rotate: 0, id: 'C11' }) // spk_drv.bulk_cap.cap const C12 = board.add(C_0805_2012Metric, { - translate: pt(3.494, 1.724), rotate: 0, + translate: pt(3.494, 1.419), rotate: 0, id: 'C12' }) // spk_drv.inp_res.res const R15 = board.add(R_0603_1608Metric, { - translate: pt(3.356, 1.891), rotate: 0, + translate: pt(3.356, 1.586), rotate: 0, id: 'R15' }) // spk_drv.inp_cap.cap const C13 = board.add(C_0603_1608Metric, { - translate: pt(3.512, 1.891), rotate: 0, + translate: pt(3.512, 1.586), rotate: 0, id: 'C13' }) // spk_drv.inn_res.res const R16 = board.add(R_0603_1608Metric, { - translate: pt(3.200, 1.988), rotate: 0, + translate: pt(3.200, 1.683), rotate: 0, id: 'R16' }) // spk_drv.inn_cap.cap const C14 = board.add(C_0603_1608Metric, { - translate: pt(3.356, 1.988), rotate: 0, + translate: pt(3.356, 1.683), rotate: 0, id: 'C14' }) // spk.conn const J4 = board.add(JST_PH_B2B_PH_K_1x02_P2_00mm_Vertical, { - translate: pt(2.342, 2.339), rotate: 0, + translate: pt(2.342, 2.034), rotate: 0, id: 'J4' }) // ref_div.div.top_res const R17 = board.add(R_0603_1608Metric, { - translate: pt(0.293, 2.586), rotate: 0, + translate: pt(0.293, 2.281), rotate: 0, id: 'R17' }) // ref_div.div.bottom_res const R18 = board.add(R_0603_1608Metric, { - translate: pt(0.293, 2.683), rotate: 0, + translate: pt(0.293, 2.378), rotate: 0, id: 'R18' }) // ref_buf.amp.ic const U8 = board.add(SOT_23_6, { - translate: pt(0.862, 2.276), rotate: 0, + translate: pt(0.862, 1.971), rotate: 0, id: 'U8' }) // ref_buf.amp.vdd_cap.cap const C15 = board.add(C_0603_1608Metric, { - translate: pt(0.839, 2.411), rotate: 0, + translate: pt(0.839, 2.106), rotate: 0, id: 'C15' }) // inn const J5 = board.add(CLIFF_FCR7350, { - translate: pt(1.083, 1.927), rotate: 0, + translate: pt(1.083, 1.622), rotate: 0, id: 'J5' }) // inn_mux.device.ic const U9 = board.add(SOT_363_SC_70_6, { - translate: pt(3.089, 2.264), rotate: 0, + translate: pt(3.089, 1.959), rotate: 0, id: 'U9' }) // inn_mux.device.vdd_cap.cap const C16 = board.add(C_0603_1608Metric, { - translate: pt(3.084, 2.387), rotate: 0, + translate: pt(3.084, 2.082), rotate: 0, id: 'C16' }) // inp const J6 = board.add(CLIFF_FCR7350, { - translate: pt(2.427, 1.927), rotate: 0, + translate: pt(2.427, 1.622), rotate: 0, id: 'J6' }) // measure.res const R19 = board.add(R_2512_6332Metric, { - translate: pt(0.150, 1.148), rotate: 0, + translate: pt(0.150, 0.843), rotate: 0, id: 'R19' }) // measure.range.switch.sw[0_0].ic const U10 = board.add(SOT_363_SC_70_6, { - translate: pt(0.403, 1.128), rotate: 0, + translate: pt(0.403, 0.823), rotate: 0, id: 'U10' }) // measure.range.switch.sw[0_0].vdd_cap.cap const C17 = board.add(C_0603_1608Metric, { - translate: pt(0.389, 1.292), rotate: 0, + translate: pt(0.389, 0.987), rotate: 0, id: 'C17' }) // measure.range.switch.sw[0_1].ic const U11 = board.add(SOT_363_SC_70_6, { - translate: pt(0.063, 1.318), rotate: 0, + translate: pt(0.063, 1.013), rotate: 0, id: 'U11' }) // measure.range.switch.sw[0_1].vdd_cap.cap const C18 = board.add(C_0603_1608Metric, { - translate: pt(0.058, 1.441), rotate: 0, + translate: pt(0.058, 1.137), rotate: 0, id: 'C18' }) // measure.range.switch.sw[1_0].ic const U12 = board.add(SOT_363_SC_70_6, { - translate: pt(0.228, 1.318), rotate: 0, + translate: pt(0.228, 1.013), rotate: 0, id: 'U12' }) // measure.range.switch.sw[1_0].vdd_cap.cap const C19 = board.add(C_0603_1608Metric, { - translate: pt(0.214, 1.441), rotate: 0, + translate: pt(0.214, 1.137), rotate: 0, id: 'C19' }) // measure.range.res[0] const R20 = board.add(R_0603_1608Metric, { - translate: pt(0.370, 1.441), rotate: 0, + translate: pt(0.370, 1.137), rotate: 0, id: 'R20' }) // measure.range.res[1] const R21 = board.add(R_0603_1608Metric, { - translate: pt(0.526, 1.441), rotate: 0, + translate: pt(0.526, 1.137), rotate: 0, id: 'R21' }) // measure.range.res[2] const R22 = board.add(R_0603_1608Metric, { - translate: pt(0.058, 1.538), rotate: 0, + translate: pt(0.058, 1.233), rotate: 0, id: 'R22' }) // measure_buffer.amp.ic const U13 = board.add(SOT_23_6, { - translate: pt(1.141, 2.276), rotate: 0, + translate: pt(1.141, 1.971), rotate: 0, id: 'U13' }) // measure_buffer.amp.vdd_cap.cap const C20 = board.add(C_0603_1608Metric, { - translate: pt(1.119, 2.411), rotate: 0, + translate: pt(1.119, 2.106), rotate: 0, id: 'C20' }) // tp_measure.tp const TP5 = board.add(TestPoint_Keystone_5015_Micro_Minature, { - translate: pt(1.704, 2.611), rotate: 0, + translate: pt(1.704, 2.306), rotate: 0, id: 'TP5' }) // adc.ic const U14 = board.add(TSSOP_20_4_4x6_5mm_P0_65mm, { - translate: pt(1.712, 1.210), rotate: 0, + translate: pt(1.712, 0.906), rotate: 0, id: 'U14' }) // adc.avdd_res.res const R23 = board.add(R_0603_1608Metric, { - translate: pt(1.961, 1.218), rotate: 0, + translate: pt(1.961, 0.913), rotate: 0, id: 'R23' }) // adc.dvdd_res.res const R24 = board.add(R_0603_1608Metric, { - translate: pt(1.961, 1.315), rotate: 0, + translate: pt(1.961, 1.010), rotate: 0, id: 'R24' }) // adc.avdd_cap_0.cap const C21 = board.add(C_0603_1608Metric, { - translate: pt(1.619, 1.416), rotate: 0, + translate: pt(1.619, 1.111), rotate: 0, id: 'C21' }) // adc.avdd_cap_1.cap const C22 = board.add(C_0603_1608Metric, { - translate: pt(1.775, 1.416), rotate: 0, + translate: pt(1.775, 1.111), rotate: 0, id: 'C22' }) // adc.dvdd_cap_0.cap const C23 = board.add(C_0603_1608Metric, { - translate: pt(1.931, 1.416), rotate: 0, + translate: pt(1.931, 1.111), rotate: 0, id: 'C23' }) // adc.dvdd_cap_1.cap const C24 = board.add(C_0603_1608Metric, { - translate: pt(1.619, 1.513), rotate: 0, + translate: pt(1.619, 1.208), rotate: 0, id: 'C24' }) // adc.vref_cap.cap const C25 = board.add(C_0805_2012Metric, { - translate: pt(1.970, 1.111), rotate: 0, + translate: pt(1.970, 0.806), rotate: 0, id: 'C25' }) // driver.fet const Q3 = board.add(SOT_23, { - translate: pt(1.093, 1.139), rotate: 0, + translate: pt(1.093, 0.835), rotate: 0, id: 'Q3' }) // driver.amp.ic const U15 = board.add(SOT_23_6, { - translate: pt(1.289, 1.139), rotate: 0, + translate: pt(1.289, 0.835), rotate: 0, id: 'U15' }) // driver.amp.vdd_cap.cap const C26 = board.add(C_0603_1608Metric, { - translate: pt(0.761, 1.428), rotate: 0, + translate: pt(0.761, 1.123), rotate: 0, id: 'C26' }) // driver.range.switch.sw[0_0].ic const U16 = board.add(SOT_363_SC_70_6, { - translate: pt(0.765, 1.305), rotate: 0, + translate: pt(0.765, 1.000), rotate: 0, id: 'U16' }) // driver.range.switch.sw[0_0].vdd_cap.cap const C27 = board.add(C_0603_1608Metric, { - translate: pt(0.917, 1.428), rotate: 0, + translate: pt(0.917, 1.123), rotate: 0, id: 'C27' }) // driver.range.switch.sw[0_1].ic const U17 = board.add(SOT_363_SC_70_6, { - translate: pt(0.931, 1.305), rotate: 0, + translate: pt(0.931, 1.000), rotate: 0, id: 'U17' }) // driver.range.switch.sw[0_1].vdd_cap.cap const C28 = board.add(C_0603_1608Metric, { - translate: pt(1.072, 1.428), rotate: 0, + translate: pt(1.072, 1.123), rotate: 0, id: 'C28' }) // driver.range.switch.sw[1_0].ic const U18 = board.add(SOT_363_SC_70_6, { - translate: pt(1.096, 1.305), rotate: 0, + translate: pt(1.096, 1.000), rotate: 0, id: 'U18' }) // driver.range.switch.sw[1_0].vdd_cap.cap const C29 = board.add(C_0603_1608Metric, { - translate: pt(1.228, 1.428), rotate: 0, + translate: pt(1.228, 1.123), rotate: 0, id: 'C29' }) // driver.range.res[0] const R25 = board.add(R_0603_1608Metric, { - translate: pt(1.384, 1.428), rotate: 0, + translate: pt(1.384, 1.123), rotate: 0, id: 'R25' }) // driver.range.res[1] const R26 = board.add(R_0603_1608Metric, { - translate: pt(0.761, 1.525), rotate: 0, + translate: pt(0.761, 1.220), rotate: 0, id: 'R26' }) // driver.range.res[2] const R27 = board.add(R_0603_1608Metric, { - translate: pt(0.917, 1.525), rotate: 0, + translate: pt(0.917, 1.220), rotate: 0, id: 'R27' }) // driver.range.res[3] const R28 = board.add(R_0603_1608Metric, { - translate: pt(1.072, 1.525), rotate: 0, + translate: pt(1.072, 1.220), rotate: 0, id: 'R28' }) // driver.sw.device.ic const U19 = board.add(SOT_363_SC_70_6, { - translate: pt(1.261, 1.305), rotate: 0, + translate: pt(1.261, 1.000), rotate: 0, id: 'U19' }) // driver.sw.device.vdd_cap.cap const C30 = board.add(C_0603_1608Metric, { - translate: pt(1.228, 1.525), rotate: 0, + translate: pt(1.228, 1.220), rotate: 0, id: 'C30' }) // driver.diode const D7 = board.add(D_SMA, { - translate: pt(0.841, 1.141), rotate: 0, + translate: pt(0.841, 0.837), rotate: 0, id: 'D7' }) // driver_dac.rc.r const R29 = board.add(R_0603_1608Metric, { - translate: pt(3.328, 2.367), rotate: 0, + translate: pt(3.328, 2.063), rotate: 0, id: 'R29' }) // driver_dac.rc.c const C31 = board.add(C_1206_3216Metric, { - translate: pt(3.361, 2.254), rotate: 0, + translate: pt(3.361, 1.949), rotate: 0, id: 'C31' }) board.setNetlist([ - {name: "gnd", pads: [["U1", "2"], ["J1", "A1"], ["J1", "A12"], ["J1", "B1"], ["J1", "B12"], ["J1", "S1"], ["R1", "1"], ["R2", "1"], ["R4", "1"], ["Q2", "2"], ["SW1", "2"], ["U2", "2"], ["C1", "2"], ["C2", "2"], ["D3", "2"], ["U3", "2"], ["C3", "2"], ["C4", "2"], ["D4", "2"], ["U4", "2"], ["C5", "2"], ["C6", "2"], ["D5", "2"], ["U5", "1"], ["U5", "15"], ["U5", "2"], ["U5", "33"], ["U5", "55"], ["C7", "2"], ["J2", "2"], ["J2", "3"], ["J2", "5"], ["C8", "2"], ["R9", "2"], ["U6", "3"], ["SW2", "2"], ["SW3", "2"], ["J3", "2"], ["C9", "2"], ["C10", "2"], ["U7", "7"], ["U7", "9"], ["C11", "2"], ["C12", "2"], ["C14", "2"], ["R18", "2"], ["U8", "2"], ["C15", "2"], ["U9", "2"], ["U9", "3"], ["C16", "2"], ["U10", "2"], ["C17", "2"], ["U11", "2"], ["C18", "2"], ["U12", "2"], ["C19", "2"], ["U13", "2"], ["C20", "2"], ["U14", "19"], ["U14", "2"], ["U14", "3"], ["C21", "2"], ["C22", "2"], ["C23", "2"], ["C24", "2"], ["C25", "2"], ["U15", "2"], ["C26", "2"], ["U16", "2"], ["C27", "2"], ["U17", "2"], ["C28", "2"], ["U18", "2"], ["C29", "2"], ["U19", "2"], ["C30", "2"], ["C31", "2"]]}, + {name: "gnd", pads: [["U1", "2"], ["J1", "A1"], ["J1", "A12"], ["J1", "B1"], ["J1", "B12"], ["J1", "S1"], ["R1", "1"], ["R2", "1"], ["R4", "1"], ["Q2", "2"], ["SW1", "2"], ["U2", "2"], ["C1", "2"], ["C2", "2"], ["D3", "2"], ["U3", "2"], ["C3", "2"], ["C4", "2"], ["D4", "2"], ["U4", "2"], ["C5", "2"], ["C6", "2"], ["D5", "2"], ["U5", "1"], ["U5", "15"], ["U5", "2"], ["U5", "33"], ["U5", "55"], ["C7", "2"], ["J2", "5"], ["C8", "2"], ["R9", "2"], ["U6", "3"], ["SW2", "2"], ["SW3", "2"], ["J3", "2"], ["C9", "2"], ["C10", "2"], ["U7", "7"], ["U7", "9"], ["C11", "2"], ["C12", "2"], ["C14", "2"], ["R18", "2"], ["U8", "2"], ["C15", "2"], ["U9", "2"], ["U9", "3"], ["C16", "2"], ["U10", "2"], ["C17", "2"], ["U11", "2"], ["C18", "2"], ["U12", "2"], ["C19", "2"], ["U13", "2"], ["C20", "2"], ["U14", "19"], ["U14", "2"], ["U14", "3"], ["C21", "2"], ["C22", "2"], ["C23", "2"], ["C24", "2"], ["C25", "2"], ["U15", "2"], ["C26", "2"], ["U16", "2"], ["C27", "2"], ["U17", "2"], ["C28", "2"], ["U18", "2"], ["C29", "2"], ["U19", "2"], ["C30", "2"], ["C31", "2"]]}, {name: "vbat", pads: [["U1", "1"], ["R3", "1"], ["Q1", "2"]]}, {name: "v5v", pads: [["U2", "4"], ["C2", "1"], ["TP1", "1"], ["D3", "1"], ["U3", "1"], ["U3", "3"], ["C3", "1"], ["U4", "1"], ["U4", "3"], ["C5", "1"], ["U7", "1"], ["U7", "6"], ["C11", "1"], ["C12", "1"]]}, {name: "v3v3", pads: [["U3", "5"], ["C4", "1"], ["TP2", "1"], ["D4", "1"], ["U5", "28"], ["U5", "30"], ["C7", "1"], ["J2", "1"], ["D6", "2"], ["J3", "7"], ["R13", "1"], ["C9", "1"], ["R24", "1"]]}, @@ -569,11 +569,10 @@ board.setNetlist([ {name: "mcu.gpio.measure_select_1_0", pads: [["U5", "43"], ["U12", "6"]]}, {name: "mcu.gpio.driver_select_0_0", pads: [["U5", "46"], ["U16", "6"], ["U17", "6"]]}, {name: "mcu.gpio.driver_select_1_0", pads: [["U5", "44"], ["U18", "6"]]}, - {name: "mcu.swd_node.swdio", pads: [["U5", "51"], ["J2", "10"]]}, - {name: "mcu.swd_node.swclk", pads: [["U5", "53"], ["J2", "9"]]}, - {name: "mcu.reset_node", pads: [["U5", "40"], ["J2", "6"]]}, - {name: "mcu.swd.tdi", pads: [["J2", "7"]]}, - {name: "mcu.swd.swo", pads: [["U5", "47"], ["J2", "8"]]}, + {name: "mcu.swd_node.swdio", pads: [["U5", "51"], ["J2", "2"]]}, + {name: "mcu.swd_node.swclk", pads: [["U5", "53"], ["J2", "4"]]}, + {name: "mcu.reset_node", pads: [["U5", "40"], ["J2", "3"]]}, + {name: "mcu.swd.swo", pads: [["U5", "47"], ["J2", "6"]]}, {name: "mcu.usb_res.interior.dp", pads: [["U5", "35"], ["R6", "2"]]}, {name: "mcu.usb_res.interior.dm", pads: [["U5", "34"], ["R7", "2"]]}, {name: "vbatsense.output", pads: [["U5", "9"], ["R8", "2"], ["R9", "1"]]}, @@ -631,7 +630,7 @@ board.setNetlist([ ]) const limit0 = pt(-0.07874015748031496, -0.07874015748031496); -const limit1 = pt(3.9010236220472447, 2.82992125984252); +const limit1 = pt(3.863779527559055, 2.525196850393701); const xMin = Math.min(limit0[0], limit1[0]); const xMax = Math.max(limit0[0], limit1[0]); const yMin = Math.min(limit0[1], limit1[1]); diff --git a/examples/TofArray/TofArray.net.ref b/examples/TofArray/TofArray.net.ref index cb7adfffa..7fdc9e180 100644 --- a/examples/TofArray/TofArray.net.ref +++ b/examples/TofArray/TofArray.net.ref @@ -290,7 +290,7 @@ (tstamps "05e801f6")) (comp (ref "J3") (value "mcu.swd") - (footprint "Connector:Tag-Connect_TC2050-IDC-FP_2x05_P1.27mm_Vertical") + (footprint "Connector:Tag-Connect_TC2030-IDC-FP_2x03_P1.27mm_Vertical") (property (name "Sheetname") (value "mcu")) (property (name "Sheetfile") (value "edg.parts.microcontroller.Stm32f103.Stm32f103_48")) (property (name "edg_path") (value "mcu.swd.conn")) @@ -906,8 +906,6 @@ (node (ref X1) (pin 4)) (node (ref C9) (pin 2)) (node (ref C10) (pin 2)) - (node (ref J3) (pin 2)) - (node (ref J3) (pin 3)) (node (ref J3) (pin 5)) (node (ref SW1) (pin 2)) (node (ref U3) (pin 12)) @@ -1124,62 +1122,60 @@ (node (ref C10) (pin 1))) (net (code 35) (name "mcu.swd_node.swdio") (node (ref U2) (pin 34)) - (node (ref J3) (pin 10))) + (node (ref J3) (pin 2))) (net (code 36) (name "mcu.swd_node.swclk") (node (ref U2) (pin 37)) - (node (ref J3) (pin 9))) + (node (ref J3) (pin 4))) (net (code 37) (name "mcu.reset_node") (node (ref U2) (pin 7)) - (node (ref J3) (pin 6))) -(net (code 38) (name "mcu.swd.tdi") - (node (ref J3) (pin 7))) -(net (code 39) (name "mcu.swd.swo") + (node (ref J3) (pin 3))) +(net (code 38) (name "mcu.swd.swo") (node (ref U2) (pin 39)) - (node (ref J3) (pin 8))) -(net (code 40) (name "tof.elt[0].ic.gpio1") + (node (ref J3) (pin 6))) +(net (code 39) (name "tof.elt[0].ic.gpio1") (node (ref U3) (pin 7))) -(net (code 41) (name "tof.elt[1].ic.gpio1") +(net (code 40) (name "tof.elt[1].ic.gpio1") (node (ref U4) (pin 7))) -(net (code 42) (name "tof.elt[2].ic.gpio1") +(net (code 41) (name "tof.elt[2].ic.gpio1") (node (ref U5) (pin 7))) -(net (code 43) (name "tof.elt[3].ic.gpio1") +(net (code 42) (name "tof.elt[3].ic.gpio1") (node (ref U6) (pin 7))) -(net (code 44) (name "tof.elt[4].ic.gpio1") +(net (code 43) (name "tof.elt[4].ic.gpio1") (node (ref U7) (pin 7))) -(net (code 45) (name "spk_drv.ic.inp") +(net (code 44) (name "spk_drv.ic.inp") (node (ref U11) (pin 4)) (node (ref R7) (pin 2))) -(net (code 46) (name "spk_drv.ic.inn") +(net (code 45) (name "spk_drv.ic.inn") (node (ref U11) (pin 3)) (node (ref R8) (pin 2))) -(net (code 47) (name "spk_drv.inp_res.input") +(net (code 46) (name "spk_drv.inp_res.input") (node (ref R7) (pin 1)) (node (ref C25) (pin 1))) -(net (code 48) (name "spk_drv.inn_res.input") +(net (code 47) (name "spk_drv.inn_res.input") (node (ref R8) (pin 1)) (node (ref C26) (pin 1))) -(net (code 49) (name "res1.a.0") +(net (code 48) (name "res1.a.0") (node (ref D2) (pin 1)) (node (ref RN1) (pin 1))) -(net (code 50) (name "res1.a.1") +(net (code 49) (name "res1.a.1") (node (ref D3) (pin 1)) (node (ref RN1) (pin 2))) -(net (code 51) (name "res1.a.2") +(net (code 50) (name "res1.a.2") (node (ref RN1) (pin 3)) (node (ref D7) (pin 3))) -(net (code 52) (name "res1.a.3") +(net (code 51) (name "res1.a.3") (node (ref RN1) (pin 4)) (node (ref D7) (pin 4))) -(net (code 53) (name "res2.a.0") +(net (code 52) (name "res2.a.0") (node (ref RN2) (pin 1)) (node (ref D7) (pin 1))) -(net (code 54) (name "res2.a.1") +(net (code 53) (name "res2.a.1") (node (ref D4) (pin 1)) (node (ref RN2) (pin 2))) -(net (code 55) (name "res2.a.2") +(net (code 54) (name "res2.a.2") (node (ref D5) (pin 1)) (node (ref RN2) (pin 3))) -(net (code 56) (name "res2.a.3") +(net (code 55) (name "res2.a.3") (node (ref D6) (pin 1)) (node (ref RN2) (pin 4)))) ) \ No newline at end of file diff --git a/examples/TofArray/TofArray.svgpcb.js b/examples/TofArray/TofArray.svgpcb.js index 7c8565b4c..a8355bd35 100644 --- a/examples/TofArray/TofArray.svgpcb.js +++ b/examples/TofArray/TofArray.svgpcb.js @@ -17,17 +17,17 @@ const H3 = board.add(JlcToolingHole_1_152mm, { }) // usb.conn const J1 = board.add(USB_C_Receptacle_XKB_U262_16XN_4BVC11, { - translate: pt(2.034, 0.165), rotate: 0, + translate: pt(1.992, 0.165), rotate: 0, id: 'J1' }) // usb.cc_pull.cc1.res const R1 = board.add(R_0603_1608Metric, { - translate: pt(1.883, 0.420), rotate: 0, + translate: pt(1.841, 0.420), rotate: 0, id: 'R1' }) // usb.cc_pull.cc2.res const R2 = board.add(R_0603_1608Metric, { - translate: pt(2.039, 0.420), rotate: 0, + translate: pt(1.997, 0.420), rotate: 0, id: 'R2' }) // can.conn @@ -121,8 +121,8 @@ const C10 = board.add(C_0603_1608Metric, { id: 'C10' }) // mcu.swd.conn -const J3 = board.add(Tag_Connect_TC2050_IDC_FP_2x05_P1_27mm_Vertical, { - translate: pt(0.661, 0.167), rotate: 0, +const J3 = board.add(Tag_Connect_TC2030_IDC_FP_2x03_P1_27mm_Vertical, { + translate: pt(0.612, 0.167), rotate: 0, id: 'J3' }) // mcu.usb_pull.dp @@ -162,77 +162,77 @@ const D6 = board.add(LED_0603_1608Metric, { }) // tof.elt[0].ic const U3 = board.add(ST_VL53L0X, { - translate: pt(1.063, 0.057), rotate: 0, + translate: pt(1.021, 0.057), rotate: 0, id: 'U3' }) // tof.elt[0].vdd_cap[0].cap const C11 = board.add(C_0603_1608Metric, { - translate: pt(1.025, 0.452), rotate: 0, + translate: pt(0.983, 0.452), rotate: 0, id: 'C11' }) // tof.elt[0].vdd_cap[1].cap const C12 = board.add(C_0805_2012Metric, { - translate: pt(1.498, 0.192), rotate: 0, + translate: pt(1.456, 0.192), rotate: 0, id: 'C12' }) // tof.elt[1].ic const U4 = board.add(ST_VL53L0X, { - translate: pt(1.295, 0.057), rotate: 0, + translate: pt(1.253, 0.057), rotate: 0, id: 'U4' }) // tof.elt[1].vdd_cap[0].cap const C13 = board.add(C_0603_1608Metric, { - translate: pt(1.181, 0.452), rotate: 0, + translate: pt(1.139, 0.452), rotate: 0, id: 'C13' }) // tof.elt[1].vdd_cap[1].cap const C14 = board.add(C_0805_2012Metric, { - translate: pt(1.033, 0.346), rotate: 0, + translate: pt(0.991, 0.346), rotate: 0, id: 'C14' }) // tof.elt[2].ic const U5 = board.add(ST_VL53L0X, { - translate: pt(1.528, 0.057), rotate: 0, + translate: pt(1.485, 0.057), rotate: 0, id: 'U5' }) // tof.elt[2].vdd_cap[0].cap const C15 = board.add(C_0603_1608Metric, { - translate: pt(1.337, 0.452), rotate: 0, + translate: pt(1.294, 0.452), rotate: 0, id: 'C15' }) // tof.elt[2].vdd_cap[1].cap const C16 = board.add(C_0805_2012Metric, { - translate: pt(1.207, 0.346), rotate: 0, + translate: pt(1.165, 0.346), rotate: 0, id: 'C16' }) // tof.elt[3].ic const U6 = board.add(ST_VL53L0X, { - translate: pt(1.063, 0.211), rotate: 0, + translate: pt(1.021, 0.211), rotate: 0, id: 'U6' }) // tof.elt[3].vdd_cap[0].cap const C17 = board.add(C_0603_1608Metric, { - translate: pt(1.493, 0.452), rotate: 0, + translate: pt(1.450, 0.452), rotate: 0, id: 'C17' }) // tof.elt[3].vdd_cap[1].cap const C18 = board.add(C_0805_2012Metric, { - translate: pt(1.380, 0.346), rotate: 0, + translate: pt(1.338, 0.346), rotate: 0, id: 'C18' }) // tof.elt[4].ic const U7 = board.add(ST_VL53L0X, { - translate: pt(1.295, 0.211), rotate: 0, + translate: pt(1.253, 0.211), rotate: 0, id: 'U7' }) // tof.elt[4].vdd_cap[0].cap const C19 = board.add(C_0603_1608Metric, { - translate: pt(1.648, 0.452), rotate: 0, + translate: pt(1.606, 0.452), rotate: 0, id: 'C19' }) // tof.elt[4].vdd_cap[1].cap const C20 = board.add(C_0805_2012Metric, { - translate: pt(1.553, 0.346), rotate: 0, + translate: pt(1.511, 0.346), rotate: 0, id: 'C20' }) // i2c_pull.scl_res.res @@ -363,7 +363,7 @@ const D7 = board.add(LED_LiteOn_LTST_C19HE1WT, { board.setNetlist([ {name: "vusb", pads: [["J1", "A4"], ["J1", "A9"], ["J1", "B4"], ["J1", "B9"], ["TP1", "1"], ["U1", "3"], ["C1", "1"], ["U11", "1"], ["U11", "6"], ["C23", "1"], ["C24", "1"]]}, - {name: "gnd", pads: [["J1", "A1"], ["J1", "A12"], ["J1", "B1"], ["J1", "B12"], ["J1", "S1"], ["R1", "1"], ["R2", "1"], ["J2", "3"], ["TP2", "1"], ["U1", "1"], ["C1", "2"], ["C2", "2"], ["D1", "2"], ["U2", "23"], ["U2", "35"], ["U2", "44"], ["U2", "47"], ["U2", "8"], ["C3", "2"], ["C4", "2"], ["C5", "2"], ["C6", "2"], ["C7", "2"], ["C8", "2"], ["X1", "2"], ["X1", "4"], ["C9", "2"], ["C10", "2"], ["J3", "2"], ["J3", "3"], ["J3", "5"], ["SW1", "2"], ["U3", "12"], ["U3", "2"], ["U3", "3"], ["U3", "4"], ["U3", "6"], ["C11", "2"], ["C12", "2"], ["U4", "12"], ["U4", "2"], ["U4", "3"], ["U4", "4"], ["U4", "6"], ["C13", "2"], ["C14", "2"], ["U5", "12"], ["U5", "2"], ["U5", "3"], ["U5", "4"], ["U5", "6"], ["C15", "2"], ["C16", "2"], ["U6", "12"], ["U6", "2"], ["U6", "3"], ["U6", "4"], ["U6", "6"], ["C17", "2"], ["C18", "2"], ["U7", "12"], ["U7", "2"], ["U7", "3"], ["U7", "4"], ["U7", "6"], ["C19", "2"], ["C20", "2"], ["U8", "3"], ["U9", "2"], ["U9", "8"], ["C21", "2"], ["U10", "3"], ["C22", "2"], ["U11", "7"], ["U11", "9"], ["C23", "2"], ["C24", "2"], ["C26", "2"]]}, + {name: "gnd", pads: [["J1", "A1"], ["J1", "A12"], ["J1", "B1"], ["J1", "B12"], ["J1", "S1"], ["R1", "1"], ["R2", "1"], ["J2", "3"], ["TP2", "1"], ["U1", "1"], ["C1", "2"], ["C2", "2"], ["D1", "2"], ["U2", "23"], ["U2", "35"], ["U2", "44"], ["U2", "47"], ["U2", "8"], ["C3", "2"], ["C4", "2"], ["C5", "2"], ["C6", "2"], ["C7", "2"], ["C8", "2"], ["X1", "2"], ["X1", "4"], ["C9", "2"], ["C10", "2"], ["J3", "5"], ["SW1", "2"], ["U3", "12"], ["U3", "2"], ["U3", "3"], ["U3", "4"], ["U3", "6"], ["C11", "2"], ["C12", "2"], ["U4", "12"], ["U4", "2"], ["U4", "3"], ["U4", "4"], ["U4", "6"], ["C13", "2"], ["C14", "2"], ["U5", "12"], ["U5", "2"], ["U5", "3"], ["U5", "4"], ["U5", "6"], ["C15", "2"], ["C16", "2"], ["U6", "12"], ["U6", "2"], ["U6", "3"], ["U6", "4"], ["U6", "6"], ["C17", "2"], ["C18", "2"], ["U7", "12"], ["U7", "2"], ["U7", "3"], ["U7", "4"], ["U7", "6"], ["C19", "2"], ["C20", "2"], ["U8", "3"], ["U9", "2"], ["U9", "8"], ["C21", "2"], ["U10", "3"], ["C22", "2"], ["U11", "7"], ["U11", "9"], ["C23", "2"], ["C24", "2"], ["C26", "2"]]}, {name: "v3v3", pads: [["U1", "2"], ["C2", "1"], ["TP3", "1"], ["D1", "1"], ["U2", "1"], ["U2", "24"], ["U2", "36"], ["U2", "48"], ["U2", "9"], ["C3", "1"], ["C4", "1"], ["C5", "1"], ["C6", "1"], ["C7", "1"], ["C8", "1"], ["J3", "1"], ["R3", "1"], ["D2", "2"], ["D3", "2"], ["D4", "2"], ["D5", "2"], ["D6", "2"], ["U3", "1"], ["U3", "11"], ["C11", "1"], ["C12", "1"], ["U4", "1"], ["U4", "11"], ["C13", "1"], ["C14", "1"], ["U5", "1"], ["U5", "11"], ["C15", "1"], ["C16", "1"], ["U6", "1"], ["U6", "11"], ["C17", "1"], ["C18", "1"], ["U7", "1"], ["U7", "11"], ["C19", "1"], ["C20", "1"], ["R4", "1"], ["R5", "1"], ["U9", "3"], ["C21", "1"], ["D7", "2"]]}, {name: "sw1_chain_0", pads: [["U2", "19"], ["SW1", "1"]]}, {name: "leds_chain_0.0", pads: [["U2", "20"], ["RN1", "8"]]}, @@ -396,11 +396,10 @@ board.setNetlist([ {name: "mcu.gpio.tof_reset_4", pads: [["U2", "2"], ["U7", "5"]]}, {name: "mcu.xtal_node.xi", pads: [["U2", "5"], ["X1", "1"], ["C9", "1"]]}, {name: "mcu.xtal_node.xo", pads: [["U2", "6"], ["X1", "3"], ["C10", "1"]]}, - {name: "mcu.swd_node.swdio", pads: [["U2", "34"], ["J3", "10"]]}, - {name: "mcu.swd_node.swclk", pads: [["U2", "37"], ["J3", "9"]]}, - {name: "mcu.reset_node", pads: [["U2", "7"], ["J3", "6"]]}, - {name: "mcu.swd.tdi", pads: [["J3", "7"]]}, - {name: "mcu.swd.swo", pads: [["U2", "39"], ["J3", "8"]]}, + {name: "mcu.swd_node.swdio", pads: [["U2", "34"], ["J3", "2"]]}, + {name: "mcu.swd_node.swclk", pads: [["U2", "37"], ["J3", "4"]]}, + {name: "mcu.reset_node", pads: [["U2", "7"], ["J3", "3"]]}, + {name: "mcu.swd.swo", pads: [["U2", "39"], ["J3", "6"]]}, {name: "tof.elt[0].ic.gpio1", pads: [["U3", "7"]]}, {name: "tof.elt[1].ic.gpio1", pads: [["U4", "7"]]}, {name: "tof.elt[2].ic.gpio1", pads: [["U5", "7"]]}, diff --git a/examples/test_ble_joystick.py b/examples/test_ble_joystick.py index 4ec1f8cf5..6e37af169 100644 --- a/examples/test_ble_joystick.py +++ b/examples/test_ble_joystick.py @@ -7,6 +7,8 @@ class JoystickSubboard(SubboardBlock): + """Joystick mounted on a FPC to allow for placement flexibility""" + def __init__(self) -> None: super().__init__() @@ -17,7 +19,7 @@ def __init__(self) -> None: self.ax1 = self.Export(self.stick.ax1) self.ax2 = self.Export(self.stick.ax2) - self.conn = self.Block(Fpc050Pair(6), external=True) + self.conn = self.Block(Fpc050Pair(8), external=True) self.export_tap(self.gnd.net, self.conn.pins.request("1")) self.export_tap(self.pwr.net, self.conn.pins.request("2")) self.export_tap(self.sw.net, self.conn.pins.request("4")) @@ -25,8 +27,68 @@ def __init__(self) -> None: self.export_tap(self.ax2.net, self.conn.pins.request("6")) +class ButtonSubboard(SubboardBlock): + """Button sub-board that sits on top of the main board, providing the D-pad and neopixel rings.""" + + def __init__(self) -> None: + super().__init__() + + self.gnd = self.Port(Ground.empty(), [Common]) + self.pwr = self.Port(VoltageSink.empty()) + + self.vbat = self.Port(VoltageSink.empty()) + self.i2c = self.Port(I2cTarget.empty()) + self.io0 = self.Port(DigitalBidir.empty()) + + self.tp_gnd = self.Block(GroundTestPoint("gnd")).connected(self.gnd) + self.tp_pwr = self.Block(VoltageTestPoint("v3v3")).connected(self.pwr) + self.tp_vbat = self.Block(VoltageTestPoint("vbat")).connected(self.vbat) + self.tp_i2c = self.Block(I2cTestPoint("i2c")).connected(self.i2c) + self.tp_io0 = self.Block(DigitalTestPoint("io0")).connected(self.io0) + + with self.implicit_connect( + ImplicitConnect(self.gnd, [Common]), + ImplicitConnect(self.pwr, [Power]), + ) as imp: + self.ioe = imp.Block(IoController()) + self.connect(self.ioe.with_mixin(IoControllerI2cTarget()).i2c_target.request("i2c"), self.i2c) + self.connect(self.ioe.gpio.request("io0"), self.io0) + + # d-pad buttons + self.sw = ElementDict[DigitalSwitch]() + for i in range(8): + sw = self.sw[i] = imp.Block(DigitalSwitch()) + self.connect(sw.out, self.ioe.gpio.request(f"dpad_{i}")) + + self.bumper_sw = imp.Block(DigitalSwitch()) + self.connect(self.bumper_sw.out, self.ioe.gpio.request(f"bumper")) + + (self.trig,), _ = self.chain(imp.Block(A1304()), self.ioe.adc.request("trig")) + + with self.implicit_connect( + ImplicitConnect(self.gnd, [Common]), + ImplicitConnect(self.vbat, [Power]), + ) as imp: + (self.npx_tp, self.npx_js, self.npx_dpad), _ = self.chain( + self.ioe.gpio.request("npx"), + imp.Block(DigitalTestPoint()), + imp.Block(NeopixelArray(8)), + imp.Block(NeopixelArray(8)), + ) + + self.conn = self.Block(Fpc050Pair(8, cable="opposite"), external=True) + self.export_tap(self.gnd.net, self.conn.pins.request("1")) + self.export_tap(self.pwr.net, self.conn.pins.request("2")) + self.export_tap(self.i2c.scl.net, self.conn.pins.request("3")) + self.export_tap(self.i2c.sda.net, self.conn.pins.request("4")) + self.export_tap(self.io0.net, self.conn.pins.request("5")) + self.export_tap(self.gnd.net, self.conn.pins.request("6")) + self.export_tap(self.vbat.net, self.conn.pins.request("7")) + self.export_tap(self.vbat.net, self.conn.pins.request("8")) + + class BleJoystick(JlcBoardTop): - """BLE joystick with XYAB buttons""" + """BLE joystick with d-pad, trigger, and RGBs.""" @override def contents(self) -> None: @@ -34,7 +96,8 @@ def contents(self) -> None: # really should operate down to ~3.3v, # this forces the model to allow the LDO to go into tracking - self.bat = self.Block(LipoConnector(voltage=(4.0, 4.2) * Volt, actual_voltage=(4.0, 4.2) * Volt)) + # and allows the neopixels to go below their minimum rated voltage which works in practice + self.bat = self.Block(LipoConnector(voltage=(3.8, 4.2) * Volt, actual_voltage=(3.8, 4.2) * Volt)) self.usb = self.Block(UsbCReceptacle(current_limits=(0, 1) * Amp)) self.vbat = self.connect(self.bat.pwr) @@ -49,132 +112,114 @@ def contents(self) -> None: with self.implicit_connect( ImplicitConnect(self.gnd, [Common]), ) as imp: - # (self.gate, self.reg_3v3, self.tp_3v3, self.prot_3v3), _ = self.chain( - # self.vbat, - # imp.Block(SoftPowerGate()), - # imp.Block(VoltageRegulator(output_voltage=3.3*Volt(tol=0.05))), - # self.Block(VoltageTestPoint()), - # imp.Block(ProtectionZenerDiode(voltage=(3.45, 3.9)*Volt)) - # ) - - # self.chg = imp.Block(Mcp73831(charging_current=200*mAmp(tol=0.2))) - # self.connect(self.usb.pwr, self.chg.pwr) - # self.connect(self.chg.pwr_bat, self.bat.chg) + self.vbat_sense = imp.Block(Ina219(100 * mOhm(tol=0.01))) + (self.gate,), _ = self.chain(self.vbat, imp.Block(SoftPowerGate()), self.vbat_sense.sense_pos) - self.mp2722 = imp.Block(Mp2722(output_voltage=(3.7, 4.35) * Volt, charging_current=200 * mAmp(tol=0.2))) - self.connect(self.mp2722.pwr_in, self.usb.pwr) - self.connect(self.mp2722.batt, self.vbat) - self.connect(self.mp2722.cc, self.usb.cc) (self.reg_3v3, self.tp_3v3, self.prot_3v3), _ = self.chain( - self.mp2722.pwr_out, + self.vbat_sense.sense_neg, imp.Block(VoltageRegulator(output_voltage=3.3 * Volt(tol=0.05))), self.Block(VoltageTestPoint()), imp.Block(ProtectionZenerDiode(voltage=(3.45, 3.9) * Volt)), ) - self.v3v3 = self.connect(self.reg_3v3.pwr_out) + self.vbat_gated = self.connect(self.gate.pwr_out) + self.tp_vgate = self.Block(VoltageTestPoint()).connected(self.gate.pwr_out) + self.v3v3 = self.connect(self.reg_3v3.pwr_out, self.vbat_sense.pwr) - self.fake_ntc = imp.Block(VoltageDivider(output_voltage=(1.5, 2) * Volt, impedance=(10, 100) * kOhm)) - self.connect(self.mp2722.vrntc, self.fake_ntc.input) - self.connect(self.fake_ntc.output, self.mp2722.ntc1) # TODO actual NTC - - # self.vbat_sense_gate = imp.Block(HighSideSwitch()) - # self.connect(self.vbat_sense_gate.pwr, self.vbat) + self.chg = imp.Block(Mcp73831(charging_current=100 * mAmp(tol=0.2))) + self.connect(self.usb.pwr, self.chg.pwr) + self.connect(self.chg.pwr_bat, self.bat.pwr) # 3V3 DOMAIN with self.implicit_connect( ImplicitConnect(self.v3v3, [Power]), ImplicitConnect(self.gnd, [Common]), ) as imp: - self.mcu = imp.Block(IoController()) - self.mcu.with_mixin(IoControllerWifi()) + self.mcu = imp.Block(Holyiot_18010()) # nRF52 weirdly requires Vbus, so this can't be abstract + self.connect(self.mcu.pwr_usb, self.vusb) + (self.usb_esd,), self.usb_chain = self.chain(self.usb.usb, imp.Block(UsbEsdDiode()), self.mcu.usb.request()) - self.stick = imp.Block(JoystickSubboard()) - (self.ax1_div,), _ = self.chain( - self.stick.ax1, - imp.Block(SignalDivider(ratio=(0.45, 0.55), impedance=(1, 10) * kOhm)), - self.mcu.adc.request("ax1"), - ) - (self.ax2_div,), _ = self.chain( - self.stick.ax2, - imp.Block(SignalDivider(ratio=(0.45, 0.55), impedance=(1, 10) * kOhm)), - self.mcu.adc.request("ax2"), - ) + # debugging LEDs + (self.ledr,), _ = self.chain(imp.Block(IndicatorSinkLed(Led.Red)), self.mcu.gpio.request("led")) - # self.connect(self.stick.sw, self.gate.btn_in) - # self.connect(self.gate.btn_out, self.mcu.gpio.request('sw')) - # self.connect(self.mcu.gpio.request('gate_ctl'), self.gate.control) - self.connect(self.stick.sw, self.mcu.gpio.request("sw"), self.mp2722.rst) + self.connect(self.gate.btn_out, self.mcu.gpio.request("sw")) + self.connect(self.mcu.gpio.request("gate_ctl"), self.gate.control) - self.trig = imp.Block(A1304()) - (self.trig_div,), _ = self.chain( - self.trig.out, - imp.Block(SignalDivider(ratio=(0.45, 0.55), impedance=(1, 10) * kOhm)), - self.mcu.adc.request("trig"), - ) + mcu_i2c = self.mcu.i2c.request("i2c") + (self.i2c_pull,), _ = self.chain(mcu_i2c, imp.Block(I2cPullup())) + self.tp_i2c = self.Block(I2cTestPoint()).connected(mcu_i2c) - self.sw = ElementDict[DigitalSwitch]() - for i in range(3): - sw = self.sw[i] = imp.Block(DigitalSwitch()) - self.connect(sw.out, self.mcu.gpio.request(f"sw{i}")) + self.connect(mcu_i2c, self.vbat_sense.i2c) + self.imu = imp.Block(Lsm6ds3trc()) + self.connect(mcu_i2c, self.imu.i2c) + self.mag = imp.Block(Qmc5883l()) + self.connect(mcu_i2c, self.mag.i2c) - # debugging LEDs - (self.ledr,), _ = self.chain(imp.Block(IndicatorSinkLed(Led.Red)), self.mcu.gpio.request("led")) + # POWER GATED DOMAIN + with self.implicit_connect( + ImplicitConnect(self.gnd, [Common]), + ) as imp: + self.stick = imp.Block(JoystickSubboard()) + self.connect(self.mcu.gpio.request("stick_pwr_gate").as_voltage_source(), self.stick.pwr) + self.connect(self.stick.ax1, self.mcu.adc.request("ax1")) + self.connect(self.stick.ax2, self.mcu.adc.request("ax2")) + self.connect(self.stick.sw, self.gate.btn_in) - # self.connect(self.vbat_sense_gate.control, self.mcu.gpio.request('vbat_sense_gate')) - (self.vbat_sense,), _ = self.chain( - # self.vbat_sense_gate.output, - self.vbat, - imp.Block(VoltageSenseDivider(full_scale_voltage=2.2 * Volt(tol=0.1), impedance=(1, 10) * kOhm)), - self.mcu.adc.request("vbat_sense"), - ) + # MIXED POWER DOMAINS + with self.implicit_connect( + ImplicitConnect(self.gnd, [Common]), + ) as imp: + # alternative implementation instead of the INA219 + # self.vbat_sense_gate = imp.Block(HighSideSwitch()) + # self.connect(self.vbat_sense_gate.pwr, self.vbat_gated) + # self.connect(self.mcu.gpio.request("vbat_sense_gate"), self.vbat_sense_gate.control) + # (self.vbat_sense,), _ = self.chain( + # self.vbat_sense_gate.output, + # imp.Block(VoltageSenseDivider(full_scale_voltage=2.2 * Volt(tol=0.1), impedance=(1, 10) * kOhm)), + # self.mcu.adc.request("vbat_sense"), + # ) + + self.connect(self.mcu.gpio.request("chg"), self.chg.prog_ctl) # allow custom charge cutoff - (self.i2c_pull,), _ = self.chain(self.mcu.i2c.request("i2c"), imp.Block(I2cPullup()), self.mp2722.i2c) + self.btns = imp.Block(ButtonSubboard()) + self.connect(self.btns.pwr, self.v3v3) + self.connect(self.btns.vbat, self.vbat_gated) + self.connect(self.btns.i2c, mcu_i2c) + self.connect(self.btns.io0, self.mcu.gpio.request("btn_io0")) @override def refinements(self) -> Refinements: return super().refinements() + Refinements( instance_refinements=[ - (["mcu"], Esp32c3_Wroom02), + (["mcu"], Holyiot_18010), + (["btns", "ioe"], Ch32v003), (["reg_3v3"], Ap7215), - (["sw[0]", "package"], SmtSwitch), - (["sw[1]", "package"], SmtSwitch), - (["sw[2]", "package"], SmtSwitch), - (["mcu", "boot", "package"], SmtSwitch), ], instance_values=[ (["refdes_prefix"], "J"), # unique refdes for panelization ( ["mcu", "pin_assigns"], [ - "led=_GPIO9_STRAP", # force using the strapping / boot mode pin - # note, only ADC pins are IO0/1/3/4/5 (pins 18/17/15/3/4) - "ax1=3", - "ax2=15", - "trig=17", - "vbat_sense=18", - # 'vbat_sense_gate=14', - # 'gate_ctl=5', - "i2c.scl=4", - "i2c.sda=14", - "sw=5", # joystick - "sw0=10", # membranes - "sw1=13", - "sw2=6", + # TODO pin this + ], + ), + ( + ["btns", "ioe", "pin_assigns"], + [ + "i2c.scl=12", + "i2c.sda=11", + # TODO pin the rest ], ), - (["mcu", "programming"], "uart-auto-button"), - (["mp2722", "power_path", "dutycycle_limit"], Range(0.1, 1)), # allow tracking - (["mp2722", "power_path", "inductor", "manual_frequency_rating"], Range(0.0, 10e6)), - (["mp2722", "power_path", "inductor", "footprint_spec"], "Inductor_SMD:L_1210_3225Metric"), ], class_refinements=[ - (EspProgrammingHeader, EspProgrammingTc2030), + (SwdCortexTargetConnector, SwdCortexTargetTagConnect), + (Ch32vSdiHeader, Ch32vSdiTc2030), (TestPoint, CompactKeystone5015), (PassiveConnector, JstPhKVertical), + (Neopixel, Ws2812c_2020), ], class_values=[ (CompactKeystone5015, ["lcsc_part"], "C5199798"), - (SmtSwitch, ["fp_footprint"], "project:MembraneSwitch_4mm"), ], ) diff --git a/examples/test_multimeter.py b/examples/test_multimeter.py index be2340366..1b17d2bd6 100644 --- a/examples/test_multimeter.py +++ b/examples/test_multimeter.py @@ -417,7 +417,7 @@ def refinements(self) -> Refinements: (AnalogSwitchTree, ["switch_size"], 2), ], class_refinements=[ - (SwdCortexTargetConnector, SwdCortexTargetTc2050), + (SwdCortexTargetConnector, SwdCortexTargetTagConnect), (TagConnect, TagConnectNonLegged), (Opamp, Tlv9061), # higher precision opamps (BananaSafetyJack, Fcr7350), diff --git a/examples/test_tofarray.py b/examples/test_tofarray.py index 9f9b7417e..eddde7853 100644 --- a/examples/test_tofarray.py +++ b/examples/test_tofarray.py @@ -161,7 +161,7 @@ def refinements(self) -> Refinements: ), ], class_refinements=[ - (SwdCortexTargetConnector, SwdCortexTargetTc2050), + (SwdCortexTargetConnector, SwdCortexTargetTagConnect), (Speaker, ConnectorSpeaker), ], )