Compare commits
No commits in common. "8fe9ade210711f1d7b3bf0b74934cf4d902cff51" and "c625a8aaa2237d2052b2b54b61fe6b5c20d10035" have entirely different histories.
8fe9ade210
...
c625a8aaa2
33 changed files with 1129 additions and 35 deletions
8
hardware/kicad/.gitignore
vendored
8
hardware/kicad/.gitignore
vendored
|
|
@ -1,12 +1,10 @@
|
||||||
# KiCad + SKiDL generated/derived outputs (keep source: *.kicad_sch/_pro/_pcb)
|
# KiCad generated/derived outputs
|
||||||
*.net
|
|
||||||
*.pdf
|
*.pdf
|
||||||
|
*.net
|
||||||
*.svg
|
*.svg
|
||||||
*.rpt
|
*.rpt
|
||||||
*.erc
|
|
||||||
*.log
|
|
||||||
*_sklib.py
|
|
||||||
*-bak
|
*-bak
|
||||||
*.kicad_prl
|
*.kicad_prl
|
||||||
fp-info-cache
|
fp-info-cache
|
||||||
~*.lck
|
~*.lck
|
||||||
|
*.net
|
||||||
|
|
|
||||||
40
hardware/kicad/audio_chain.erc
Normal file
40
hardware/kicad/audio_chain.erc
Normal file
|
|
@ -0,0 +1,40 @@
|
||||||
|
ERC WARNING: Only one pin (INPUT pin 3/3B of ULN2003A/U6) attached to net GNDLIFT_EN.
|
||||||
|
ERC WARNING: No drivers for net GNDLIFT_EN.
|
||||||
|
ERC WARNING: Insufficient drive current on net GNDLIFT_EN for pin INPUT pin 3/3B of ULN2003A/U6.
|
||||||
|
ERC WARNING: Only one pin (INPUT pin 15/LRCK of PCM5102A/U3) attached to net I2S_LRCK.
|
||||||
|
ERC WARNING: No drivers for net I2S_LRCK.
|
||||||
|
ERC WARNING: Insufficient drive current on net I2S_LRCK for pin INPUT pin 15/LRCK of PCM5102A/U3.
|
||||||
|
ERC WARNING: Only one pin (INPUT pin 2/2B of ULN2003A/U6) attached to net MUTE_EN.
|
||||||
|
ERC WARNING: No drivers for net MUTE_EN.
|
||||||
|
ERC WARNING: Insufficient drive current on net MUTE_EN for pin INPUT pin 2/2B of ULN2003A/U6.
|
||||||
|
ERC WARNING: Only one pin (INPUT pin 1/1B of ULN2003A/U6) attached to net SEL_LINST.
|
||||||
|
ERC WARNING: No drivers for net SEL_LINST.
|
||||||
|
ERC WARNING: Insufficient drive current on net SEL_LINST for pin INPUT pin 1/1B of ULN2003A/U6.
|
||||||
|
ERC WARNING: Only one pin (PASSIVE pin 1/~ of C/C2) attached to net AIN_COLD.
|
||||||
|
ERC WARNING: Only one pin (INPUT pin 14/DIN of PCM5102A/U3) attached to net I2S_DIN.
|
||||||
|
ERC WARNING: No drivers for net I2S_DIN.
|
||||||
|
ERC WARNING: Insufficient drive current on net I2S_DIN for pin INPUT pin 14/DIN of PCM5102A/U3.
|
||||||
|
ERC WARNING: Only one pin (INPUT pin 12/SCK of PCM5102A/U3) attached to net MCLK.
|
||||||
|
ERC WARNING: No drivers for net MCLK.
|
||||||
|
ERC WARNING: Insufficient drive current on net MCLK for pin INPUT pin 12/SCK of PCM5102A/U3.
|
||||||
|
ERC WARNING: Only one pin (INPUT pin 13/BCK of PCM5102A/U3) attached to net I2S_BCK.
|
||||||
|
ERC WARNING: No drivers for net I2S_BCK.
|
||||||
|
ERC WARNING: Insufficient drive current on net I2S_BCK for pin INPUT pin 13/BCK of PCM5102A/U3.
|
||||||
|
ERC WARNING: Only one pin (PASSIVE pin 3/P1_COM of TQ2SA-5V/K1) attached to net AIN_HOT.
|
||||||
|
ERC WARNING: Unconnected pin: INPUT pin 4/4B of ULN2003A/U6.
|
||||||
|
ERC WARNING: Unconnected pin: INPUT pin 5/5B of ULN2003A/U6.
|
||||||
|
ERC WARNING: Unconnected pin: INPUT pin 6/6B of ULN2003A/U6.
|
||||||
|
ERC WARNING: Unconnected pin: INPUT pin 7/7B of ULN2003A/U6.
|
||||||
|
ERC WARNING: Unconnected pin: OPEN-COLLECTOR pin 10/7C of ULN2003A/U6.
|
||||||
|
ERC WARNING: Unconnected pin: OPEN-COLLECTOR pin 11/6C of ULN2003A/U6.
|
||||||
|
ERC WARNING: Unconnected pin: OPEN-COLLECTOR pin 12/5C of ULN2003A/U6.
|
||||||
|
ERC WARNING: Unconnected pin: OPEN-COLLECTOR pin 13/4C of ULN2003A/U6.
|
||||||
|
ERC WARNING: Unconnected pin: PASSIVE pin 2/P1_NO of TQ2SA-5V/K2.
|
||||||
|
ERC WARNING: Unconnected pin: PASSIVE pin 9/P2_NO of TQ2SA-5V/K2.
|
||||||
|
ERC WARNING: Unconnected pin: PASSIVE pin 2/P1_NO of TQ2SA-5V/K3.
|
||||||
|
ERC WARNING: Unconnected pin: PASSIVE pin 8/P2_COM of TQ2SA-5V/K3.
|
||||||
|
ERC WARNING: Unconnected pin: PASSIVE pin 7/P2_NC of TQ2SA-5V/K3.
|
||||||
|
ERC WARNING: Unconnected pin: PASSIVE pin 9/P2_NO of TQ2SA-5V/K3.
|
||||||
|
ERC INFO: 37 warnings found while running ERC.
|
||||||
|
ERC INFO: 0 errors found while running ERC.
|
||||||
|
|
||||||
119
hardware/kicad/audio_chain.log
Normal file
119
hardware/kicad/audio_chain.log
Normal file
|
|
@ -0,0 +1,119 @@
|
||||||
|
WARNING: KICAD8_SYMBOL_DIR environment variable is missing, so the default KiCad symbol libraries won't be searched. @ [/work/hardware/kicad/<frozen importlib._bootstrap_external>:995=>/work/hardware/kicad/<frozen importlib._bootstrap>:488]
|
||||||
|
WARNING: KICAD6_SYMBOL_DIR environment variable is missing, so the default KiCad symbol libraries won't be searched. @ [/work/hardware/kicad/<frozen importlib._bootstrap_external>:995=>/work/hardware/kicad/<frozen importlib._bootstrap>:488]
|
||||||
|
WARNING: KICAD7_SYMBOL_DIR environment variable is missing, so the default KiCad symbol libraries won't be searched. @ [/work/hardware/kicad/<frozen importlib._bootstrap_external>:995=>/work/hardware/kicad/<frozen importlib._bootstrap>:488]
|
||||||
|
WARNING: fp-lib-table file was not found. Component footprints are not available.
|
||||||
|
WARNING: fp-lib-table file was not found. Component footprints are not available.
|
||||||
|
WARNING: fp-lib-table file was not found. Component footprints are not available.
|
||||||
|
WARNING: fp-lib-table file was not found. Component footprints are not available.
|
||||||
|
WARNING: Missing tag on THAT1240 instantiated at /work/hardware/eda/circuits/audio_chain.py:88.
|
||||||
|
WARNING: Random tag NaoCkmuv6F generated for THAT1240.
|
||||||
|
WARNING: Missing tag on OPA1641 instantiated at /work/hardware/eda/circuits/audio_chain.py:89.
|
||||||
|
WARNING: Random tag bhZEXwD6Ma generated for OPA1641.
|
||||||
|
WARNING: Missing tag on PCM5102A instantiated at /work/hardware/eda/circuits/audio_chain.py:90.
|
||||||
|
WARNING: Random tag GKJv8Mk9db generated for PCM5102A.
|
||||||
|
WARNING: Missing tag on OPA1612 instantiated at /work/hardware/eda/circuits/audio_chain.py:91.
|
||||||
|
WARNING: Random tag ZiUYdGNUpf generated for OPA1612.
|
||||||
|
WARNING: Missing tag on THAT1646 instantiated at /work/hardware/eda/circuits/audio_chain.py:92.
|
||||||
|
WARNING: Random tag PA94RBoDz5 generated for THAT1646.
|
||||||
|
WARNING: Missing tag on ULN2003A instantiated at /work/hardware/eda/circuits/audio_chain.py:93.
|
||||||
|
WARNING: Random tag 7az6rCV1b8 generated for ULN2003A.
|
||||||
|
WARNING: Missing tag on TQ2SA-5V instantiated at /work/hardware/eda/circuits/audio_chain.py:94.
|
||||||
|
WARNING: Random tag a5p3EKoZSh generated for TQ2SA-5V.
|
||||||
|
WARNING: Missing tag on TQ2SA-5V instantiated at /work/hardware/eda/circuits/audio_chain.py:94.
|
||||||
|
WARNING: Random tag nzmU2EFKQ5 generated for TQ2SA-5V.
|
||||||
|
WARNING: Missing tag on TQ2SA-5V instantiated at /work/hardware/eda/circuits/audio_chain.py:94.
|
||||||
|
WARNING: Random tag PvvXwCojLV generated for TQ2SA-5V.
|
||||||
|
WARNING: Missing tag on C instantiated at /work/hardware/eda/circuits/audio_chain.py:101.
|
||||||
|
WARNING: Random tag 1BQDYOk7Jk generated for C.
|
||||||
|
WARNING: Missing tag on R instantiated at /work/hardware/eda/circuits/audio_chain.py:102.
|
||||||
|
WARNING: Random tag VJCWjFmo15 generated for R.
|
||||||
|
WARNING: Missing tag on R instantiated at /work/hardware/eda/circuits/audio_chain.py:102.
|
||||||
|
WARNING: Random tag F3pmXe3Ukl generated for R.
|
||||||
|
WARNING: Missing tag on D instantiated at /work/hardware/eda/circuits/audio_chain.py:103.
|
||||||
|
WARNING: Random tag GcBAEBfRsm generated for D.
|
||||||
|
WARNING: Missing tag on D instantiated at /work/hardware/eda/circuits/audio_chain.py:103.
|
||||||
|
WARNING: Random tag DxTLvXTPXw generated for D.
|
||||||
|
WARNING: Missing tag on C instantiated at /work/hardware/eda/circuits/audio_chain.py:101.
|
||||||
|
WARNING: Random tag TbYYz7sRwg generated for C.
|
||||||
|
WARNING: Missing tag on R instantiated at /work/hardware/eda/circuits/audio_chain.py:102.
|
||||||
|
WARNING: Random tag q4ANsoJP6d generated for R.
|
||||||
|
WARNING: Missing tag on R instantiated at /work/hardware/eda/circuits/audio_chain.py:102.
|
||||||
|
WARNING: Random tag XafPhdShAz generated for R.
|
||||||
|
WARNING: Missing tag on D instantiated at /work/hardware/eda/circuits/audio_chain.py:103.
|
||||||
|
WARNING: Random tag 3Dy7kKhUuS generated for D.
|
||||||
|
WARNING: Missing tag on D instantiated at /work/hardware/eda/circuits/audio_chain.py:103.
|
||||||
|
WARNING: Random tag srbPiv0wDA generated for D.
|
||||||
|
WARNING: Missing tag on C instantiated at /work/hardware/eda/circuits/audio_chain.py:97.
|
||||||
|
WARNING: Random tag cywPzV0BP5 generated for C.
|
||||||
|
WARNING: Missing tag on C instantiated at /work/hardware/eda/circuits/audio_chain.py:97.
|
||||||
|
WARNING: Random tag ys82MNo87q generated for C.
|
||||||
|
WARNING: Missing tag on C instantiated at /work/hardware/eda/circuits/audio_chain.py:116.
|
||||||
|
WARNING: Random tag GjB9TiUkLV generated for C.
|
||||||
|
WARNING: Missing tag on R instantiated at /work/hardware/eda/circuits/audio_chain.py:117.
|
||||||
|
WARNING: Random tag 5d0DxRmiVK generated for R.
|
||||||
|
WARNING: Missing tag on D instantiated at /work/hardware/eda/circuits/audio_chain.py:117.
|
||||||
|
WARNING: Random tag UiNgHe5ZoI generated for D.
|
||||||
|
WARNING: Missing tag on D instantiated at /work/hardware/eda/circuits/audio_chain.py:117.
|
||||||
|
WARNING: Random tag dREXHB06LQ generated for D.
|
||||||
|
WARNING: Missing tag on R instantiated at /work/hardware/eda/circuits/audio_chain.py:124.
|
||||||
|
WARNING: Random tag IzL4dTk5KE generated for R.
|
||||||
|
WARNING: Missing tag on R instantiated at /work/hardware/eda/circuits/audio_chain.py:124.
|
||||||
|
WARNING: Random tag aecw3XjGu8 generated for R.
|
||||||
|
WARNING: Missing tag on C instantiated at /work/hardware/eda/circuits/audio_chain.py:97.
|
||||||
|
WARNING: Random tag ZkkukzL1dw generated for C.
|
||||||
|
WARNING: Missing tag on C instantiated at /work/hardware/eda/circuits/audio_chain.py:97.
|
||||||
|
WARNING: Random tag SiWPcikSTD generated for C.
|
||||||
|
WARNING: Missing tag on C instantiated at /work/hardware/eda/circuits/audio_chain.py:139.
|
||||||
|
WARNING: Random tag XkEyeGCXrV generated for C.
|
||||||
|
WARNING: Missing tag on C instantiated at /work/hardware/eda/circuits/audio_chain.py:139.
|
||||||
|
WARNING: Random tag KtTaLAKE12 generated for C.
|
||||||
|
WARNING: Missing tag on C instantiated at /work/hardware/eda/circuits/audio_chain.py:139.
|
||||||
|
WARNING: Random tag kxLUIeU4MG generated for C.
|
||||||
|
WARNING: Missing tag on C instantiated at /work/hardware/eda/circuits/audio_chain.py:140.
|
||||||
|
WARNING: Random tag G0gy3YpApr generated for C.
|
||||||
|
WARNING: Missing tag on C instantiated at /work/hardware/eda/circuits/audio_chain.py:141.
|
||||||
|
WARNING: Random tag 54BIrx4GwW generated for C.
|
||||||
|
WARNING: Missing tag on C instantiated at /work/hardware/eda/circuits/audio_chain.py:142.
|
||||||
|
WARNING: Random tag D2ift49ZDj generated for C.
|
||||||
|
WARNING: Missing tag on C instantiated at /work/hardware/eda/circuits/audio_chain.py:143.
|
||||||
|
WARNING: Random tag 2xrRFHfzVn generated for C.
|
||||||
|
WARNING: Missing tag on R instantiated at /work/hardware/eda/circuits/audio_chain.py:145.
|
||||||
|
WARNING: Random tag ciywLsI1BV generated for R.
|
||||||
|
WARNING: Missing tag on R instantiated at /work/hardware/eda/circuits/audio_chain.py:147.
|
||||||
|
WARNING: Random tag iHP45ECBTV generated for R.
|
||||||
|
WARNING: Missing tag on R instantiated at /work/hardware/eda/circuits/audio_chain.py:150.
|
||||||
|
WARNING: Random tag SpTEBfUSZQ generated for R.
|
||||||
|
WARNING: Missing tag on R instantiated at /work/hardware/eda/circuits/audio_chain.py:150.
|
||||||
|
WARNING: Random tag GANJXVVJhX generated for R.
|
||||||
|
WARNING: Missing tag on C instantiated at /work/hardware/eda/circuits/audio_chain.py:150.
|
||||||
|
WARNING: Random tag cTcBdxazGj generated for C.
|
||||||
|
WARNING: Missing tag on C instantiated at /work/hardware/eda/circuits/audio_chain.py:150.
|
||||||
|
WARNING: Random tag WltiwW7vNV generated for C.
|
||||||
|
WARNING: Missing tag on C instantiated at /work/hardware/eda/circuits/audio_chain.py:97.
|
||||||
|
WARNING: Random tag K76qTGXZDl generated for C.
|
||||||
|
WARNING: Missing tag on C instantiated at /work/hardware/eda/circuits/audio_chain.py:97.
|
||||||
|
WARNING: Random tag qNcbyMvj04 generated for C.
|
||||||
|
WARNING: Missing tag on R instantiated at /work/hardware/eda/circuits/audio_chain.py:160.
|
||||||
|
WARNING: Random tag 8Z8qBauuqJ generated for R.
|
||||||
|
WARNING: Missing tag on R instantiated at /work/hardware/eda/circuits/audio_chain.py:160.
|
||||||
|
WARNING: Random tag ZvbhQbNpVf generated for R.
|
||||||
|
WARNING: Missing tag on R instantiated at /work/hardware/eda/circuits/audio_chain.py:160.
|
||||||
|
WARNING: Random tag XI22X1n2tP generated for R.
|
||||||
|
WARNING: Missing tag on R_Potentiometer instantiated at /work/hardware/eda/circuits/audio_chain.py:169.
|
||||||
|
WARNING: Random tag joe6s3brR6 generated for R_Potentiometer.
|
||||||
|
WARNING: Missing tag on C instantiated at /work/hardware/eda/circuits/audio_chain.py:97.
|
||||||
|
WARNING: Random tag MjG60k1gb_ generated for C.
|
||||||
|
WARNING: Missing tag on C instantiated at /work/hardware/eda/circuits/audio_chain.py:97.
|
||||||
|
WARNING: Random tag JNrbq6C1BQ generated for C.
|
||||||
|
WARNING: Missing tag on R instantiated at /work/hardware/eda/circuits/audio_chain.py:173.
|
||||||
|
WARNING: Random tag IwhpZyA9LO generated for R.
|
||||||
|
WARNING: Missing tag on R instantiated at /work/hardware/eda/circuits/audio_chain.py:173.
|
||||||
|
WARNING: Random tag cWxhi7FDib generated for R.
|
||||||
|
WARNING: Missing tag on R instantiated at /work/hardware/eda/circuits/audio_chain.py:182.
|
||||||
|
WARNING: Random tag GS23xEE7xZ generated for R.
|
||||||
|
WARNING: Missing tag on C instantiated at /work/hardware/eda/circuits/audio_chain.py:182.
|
||||||
|
WARNING: Random tag fJUwwIBJ1g generated for C.
|
||||||
|
WARNING: Missing tag on instantiated at /work/hardware/kicad/<frozen importlib._bootstrap>:488.
|
||||||
|
INFO: 113 warnings found while generating netlist.
|
||||||
|
INFO: 0 errors found while generating netlist.
|
||||||
|
|
||||||
106
hardware/kicad/audio_chain_sklib.py
Normal file
106
hardware/kicad/audio_chain_sklib.py
Normal file
|
|
@ -0,0 +1,106 @@
|
||||||
|
from collections import defaultdict
|
||||||
|
from skidl import Pin, Part, Alias, SchLib, SKIDL, TEMPLATE
|
||||||
|
|
||||||
|
from skidl.pin import pin_types
|
||||||
|
|
||||||
|
SKIDL_lib_version = '0.0.1'
|
||||||
|
|
||||||
|
audio_chain = SchLib(tool=SKIDL).add_parts(*[
|
||||||
|
Part(**{ 'name':'THAT1240', 'dest':TEMPLATE, 'tool':SKIDL, 'aliases':Alias({'THAT1240'}), 'ref_prefix':'U', 'fplist':None, 'footprint':'Package_SO:SOIC-8_3.9x4.9mm_P1.27mm', 'keywords':None, 'description':'', 'datasheet':None, 'pins':[
|
||||||
|
Pin(num='1',name='REF',func=pin_types.INPUT),
|
||||||
|
Pin(num='2',name='IN-',func=pin_types.INPUT),
|
||||||
|
Pin(num='3',name='IN+',func=pin_types.INPUT),
|
||||||
|
Pin(num='4',name='V-',func=pin_types.PWRIN),
|
||||||
|
Pin(num='5',name='SENSE',func=pin_types.PASSIVE),
|
||||||
|
Pin(num='6',name='OUT',func=pin_types.OUTPUT),
|
||||||
|
Pin(num='7',name='V+',func=pin_types.PWRIN),
|
||||||
|
Pin(num='8',name='NC',func=pin_types.NOCONNECT)] }),
|
||||||
|
Part(**{ 'name':'OPA1641', 'dest':TEMPLATE, 'tool':SKIDL, 'aliases':Alias({'OPA1641'}), 'ref_prefix':'U', 'fplist':None, 'footprint':'Package_SO:SOIC-8_3.9x4.9mm_P1.27mm', 'keywords':None, 'description':'', 'datasheet':None, 'pins':[
|
||||||
|
Pin(num='1',name='NC1',func=pin_types.NOCONNECT),
|
||||||
|
Pin(num='2',name='-IN',func=pin_types.INPUT),
|
||||||
|
Pin(num='3',name='+IN',func=pin_types.INPUT),
|
||||||
|
Pin(num='4',name='V-',func=pin_types.PWRIN),
|
||||||
|
Pin(num='5',name='NC5',func=pin_types.NOCONNECT),
|
||||||
|
Pin(num='6',name='OUT',func=pin_types.OUTPUT),
|
||||||
|
Pin(num='7',name='V+',func=pin_types.PWRIN),
|
||||||
|
Pin(num='8',name='NC8',func=pin_types.NOCONNECT)] }),
|
||||||
|
Part(**{ 'name':'PCM5102A', 'dest':TEMPLATE, 'tool':SKIDL, 'aliases':Alias({'PCM5102A'}), 'ref_prefix':'U', 'fplist':None, 'footprint':'Package_SO:TSSOP-20_4.4x6.5mm_P0.65mm', 'keywords':None, 'description':'', 'datasheet':None, 'pins':[
|
||||||
|
Pin(num='1',name='CPVDD',func=pin_types.PWRIN),
|
||||||
|
Pin(num='2',name='CAPP',func=pin_types.PASSIVE),
|
||||||
|
Pin(num='3',name='CPGND',func=pin_types.PWRIN),
|
||||||
|
Pin(num='4',name='CAPM',func=pin_types.PASSIVE),
|
||||||
|
Pin(num='5',name='VNEG',func=pin_types.PASSIVE),
|
||||||
|
Pin(num='6',name='OUTL',func=pin_types.OUTPUT),
|
||||||
|
Pin(num='7',name='OUTR',func=pin_types.OUTPUT),
|
||||||
|
Pin(num='8',name='AVDD',func=pin_types.PWRIN),
|
||||||
|
Pin(num='9',name='AGND',func=pin_types.PWRIN),
|
||||||
|
Pin(num='10',name='DEMP',func=pin_types.INPUT),
|
||||||
|
Pin(num='11',name='FLT',func=pin_types.INPUT),
|
||||||
|
Pin(num='12',name='SCK',func=pin_types.INPUT),
|
||||||
|
Pin(num='13',name='BCK',func=pin_types.INPUT),
|
||||||
|
Pin(num='14',name='DIN',func=pin_types.INPUT),
|
||||||
|
Pin(num='15',name='LRCK',func=pin_types.INPUT),
|
||||||
|
Pin(num='16',name='FMT',func=pin_types.INPUT),
|
||||||
|
Pin(num='17',name='XSMT',func=pin_types.INPUT),
|
||||||
|
Pin(num='18',name='LDOO',func=pin_types.PWROUT),
|
||||||
|
Pin(num='19',name='DGND',func=pin_types.PWRIN),
|
||||||
|
Pin(num='20',name='DVDD',func=pin_types.PWRIN)] }),
|
||||||
|
Part(**{ 'name':'OPA1612', 'dest':TEMPLATE, 'tool':SKIDL, 'aliases':Alias({'OPA1612'}), 'ref_prefix':'U', 'fplist':None, 'footprint':'Package_SO:SOIC-8_3.9x4.9mm_P1.27mm', 'keywords':None, 'description':'', 'datasheet':None, 'pins':[
|
||||||
|
Pin(num='1',name='OUTA',func=pin_types.OUTPUT),
|
||||||
|
Pin(num='2',name='-INA',func=pin_types.INPUT),
|
||||||
|
Pin(num='3',name='+INA',func=pin_types.INPUT),
|
||||||
|
Pin(num='4',name='V-',func=pin_types.PWRIN),
|
||||||
|
Pin(num='5',name='+INB',func=pin_types.INPUT),
|
||||||
|
Pin(num='6',name='-INB',func=pin_types.INPUT),
|
||||||
|
Pin(num='7',name='OUTB',func=pin_types.OUTPUT),
|
||||||
|
Pin(num='8',name='V+',func=pin_types.PWRIN)] }),
|
||||||
|
Part(**{ 'name':'THAT1646', 'dest':TEMPLATE, 'tool':SKIDL, 'aliases':Alias({'THAT1646'}), 'ref_prefix':'U', 'fplist':None, 'footprint':'Package_SO:SOIC-8_3.9x4.9mm_P1.27mm', 'keywords':None, 'description':'', 'datasheet':None, 'pins':[
|
||||||
|
Pin(num='1',name='OUT-',func=pin_types.OUTPUT),
|
||||||
|
Pin(num='2',name='SNS-',func=pin_types.INPUT),
|
||||||
|
Pin(num='3',name='GND',func=pin_types.PWRIN),
|
||||||
|
Pin(num='4',name='IN',func=pin_types.INPUT),
|
||||||
|
Pin(num='5',name='V-',func=pin_types.PWRIN),
|
||||||
|
Pin(num='6',name='V+',func=pin_types.PWRIN),
|
||||||
|
Pin(num='7',name='SNS+',func=pin_types.INPUT),
|
||||||
|
Pin(num='8',name='OUT+',func=pin_types.OUTPUT)] }),
|
||||||
|
Part(**{ 'name':'ULN2003A', 'dest':TEMPLATE, 'tool':SKIDL, 'aliases':Alias({'ULN2003A'}), 'ref_prefix':'U', 'fplist':None, 'footprint':'Package_SO:SOIC-16_3.9x9.9mm_P1.27mm', 'keywords':None, 'description':'', 'datasheet':None, 'pins':[
|
||||||
|
Pin(num='1',name='1B',func=pin_types.INPUT),
|
||||||
|
Pin(num='2',name='2B',func=pin_types.INPUT),
|
||||||
|
Pin(num='3',name='3B',func=pin_types.INPUT),
|
||||||
|
Pin(num='4',name='4B',func=pin_types.INPUT),
|
||||||
|
Pin(num='5',name='5B',func=pin_types.INPUT),
|
||||||
|
Pin(num='6',name='6B',func=pin_types.INPUT),
|
||||||
|
Pin(num='7',name='7B',func=pin_types.INPUT),
|
||||||
|
Pin(num='8',name='GND',func=pin_types.PWRIN),
|
||||||
|
Pin(num='9',name='COM',func=pin_types.PWRIN),
|
||||||
|
Pin(num='10',name='7C',func=pin_types.OPENCOLL),
|
||||||
|
Pin(num='11',name='6C',func=pin_types.OPENCOLL),
|
||||||
|
Pin(num='12',name='5C',func=pin_types.OPENCOLL),
|
||||||
|
Pin(num='13',name='4C',func=pin_types.OPENCOLL),
|
||||||
|
Pin(num='14',name='3C',func=pin_types.OPENCOLL),
|
||||||
|
Pin(num='15',name='2C',func=pin_types.OPENCOLL),
|
||||||
|
Pin(num='16',name='1C',func=pin_types.OPENCOLL)] }),
|
||||||
|
Part(**{ 'name':'TQ2SA-5V', 'dest':TEMPLATE, 'tool':SKIDL, 'aliases':Alias({'TQ2SA-5V'}), 'ref_prefix':'K', 'fplist':None, 'footprint':'Relay_SMD:Relay_DPDT_Panasonic_TQ2-SA', 'keywords':None, 'description':'', 'datasheet':None, 'pins':[
|
||||||
|
Pin(num='1',name='COIL_A',func=pin_types.PASSIVE),
|
||||||
|
Pin(num='10',name='COIL_B',func=pin_types.PASSIVE),
|
||||||
|
Pin(num='3',name='P1_COM',func=pin_types.PASSIVE),
|
||||||
|
Pin(num='4',name='P1_NC',func=pin_types.PASSIVE),
|
||||||
|
Pin(num='2',name='P1_NO',func=pin_types.PASSIVE),
|
||||||
|
Pin(num='8',name='P2_COM',func=pin_types.PASSIVE),
|
||||||
|
Pin(num='7',name='P2_NC',func=pin_types.PASSIVE),
|
||||||
|
Pin(num='9',name='P2_NO',func=pin_types.PASSIVE),
|
||||||
|
Pin(num='5',name='NC5',func=pin_types.NOCONNECT),
|
||||||
|
Pin(num='6',name='NC6',func=pin_types.NOCONNECT)] }),
|
||||||
|
Part(**{ 'name':'C', 'dest':TEMPLATE, 'tool':SKIDL, 'aliases':Alias({'C'}), 'ref_prefix':'C', 'fplist':[''], 'footprint':'Capacitor_SMD:C_1206_3216Metric', 'keywords':'cap capacitor', 'description':'Unpolarized capacitor', 'datasheet':'~', 'pins':[
|
||||||
|
Pin(num='1',name='~',func=pin_types.PASSIVE,unit=1),
|
||||||
|
Pin(num='2',name='~',func=pin_types.PASSIVE,unit=1)], 'unit_defs':[] }),
|
||||||
|
Part(**{ 'name':'R', 'dest':TEMPLATE, 'tool':SKIDL, 'aliases':Alias({'R'}), 'ref_prefix':'R', 'fplist':[''], 'footprint':'Resistor_SMD:R_0805_2012Metric', 'keywords':'R res resistor', 'description':'Resistor', 'datasheet':'~', 'pins':[
|
||||||
|
Pin(num='1',name='~',func=pin_types.PASSIVE,unit=1),
|
||||||
|
Pin(num='2',name='~',func=pin_types.PASSIVE,unit=1)], 'unit_defs':[] }),
|
||||||
|
Part(**{ 'name':'D', 'dest':TEMPLATE, 'tool':SKIDL, 'aliases':Alias({'D'}), 'ref_prefix':'D', 'fplist':[''], 'footprint':'Diode_SMD:D_SOD-323', 'keywords':'diode', 'description':'Diode', 'datasheet':'~', 'pins':[
|
||||||
|
Pin(num='1',name='K',func=pin_types.PASSIVE,unit=1),
|
||||||
|
Pin(num='2',name='A',func=pin_types.PASSIVE,unit=1)], 'unit_defs':[] }),
|
||||||
|
Part(**{ 'name':'R_Potentiometer', 'dest':TEMPLATE, 'tool':SKIDL, 'aliases':Alias({'R_Potentiometer'}), 'ref_prefix':'RV', 'fplist':[''], 'footprint':'Potentiometer_THT:Potentiometer_Bourns_3296W_Vertical', 'keywords':'resistor variable', 'description':'Potentiometer', 'datasheet':'~', 'pins':[
|
||||||
|
Pin(num='1',name='1',func=pin_types.PASSIVE,unit=1),
|
||||||
|
Pin(num='3',name='3',func=pin_types.PASSIVE,unit=1),
|
||||||
|
Pin(num='2',name='2',func=pin_types.PASSIVE,unit=1)], 'unit_defs':[] })])
|
||||||
38
hardware/kicad/mcu_core.erc
Normal file
38
hardware/kicad/mcu_core.erc
Normal file
|
|
@ -0,0 +1,38 @@
|
||||||
|
ERC WARNING: Only one pin (PASSIVE pin 2/~ of R/R5) attached to net USB_DP_CONN.
|
||||||
|
ERC WARNING: Only one pin (BIDIRECTIONAL pin 17/GPIO13 of RP2350A/U1) attached to net I2S_DIN.
|
||||||
|
ERC WARNING: Only one pin (BIDIRECTIONAL pin 12/GPIO8 of RP2350A/U1) attached to net I2C_SDA.
|
||||||
|
ERC WARNING: Only one pin (BIDIRECTIONAL pin 13/GPIO9 of RP2350A/U1) attached to net I2C_SCL.
|
||||||
|
ERC WARNING: Only one pin (PASSIVE pin 2/~ of R/R6) attached to net USB_DM_CONN.
|
||||||
|
ERC WARNING: Only one pin (BIDIRECTIONAL pin 28/GPIO17 of RP2350A/U1) attached to net GNDLIFT_EN.
|
||||||
|
ERC WARNING: Only one pin (BIDIRECTIONAL pin 34/GPIO22 of RP2350A/U1) attached to net LINEINST_SW.
|
||||||
|
ERC WARNING: Only one pin (BIDIRECTIONAL pin 31/GPIO19 of RP2350A/U1) attached to net SIG_LED.
|
||||||
|
ERC WARNING: Only one pin (BIDIRECTIONAL pin 32/GPIO20 of RP2350A/U1) attached to net CLIP_LED.
|
||||||
|
ERC WARNING: Only one pin (BIDIRECTIONAL pin 10/GPIO7 of RP2350A/U1) attached to net LCD_RST.
|
||||||
|
ERC WARNING: Insufficient drive current on net N$3 for pin POWER-IN pin 44/ADC_AVDD of RP2350A/U1.
|
||||||
|
ERC WARNING: Only one pin (BIDIRECTIONAL pin 27/GPIO16 of RP2350A/U1) attached to net SEL_LINST.
|
||||||
|
ERC WARNING: No pins attached to net VBUS_5V.
|
||||||
|
ERC WARNING: Only one pin (BIDIRECTIONAL pin 29/GPIO18 of RP2350A/U1) attached to net MUTE_EN.
|
||||||
|
ERC WARNING: Only one pin (BIDIRECTIONAL pin 40/GPIO26/ADC0 of RP2350A/U1) attached to net JOY_X.
|
||||||
|
ERC WARNING: Only one pin (BIDIRECTIONAL pin 8/GPIO5 of RP2350A/U1) attached to net LCD_CS.
|
||||||
|
ERC WARNING: Only one pin (BIDIRECTIONAL pin 33/GPIO21 of RP2350A/U1) attached to net GNDLIFT_SW.
|
||||||
|
ERC WARNING: Only one pin (BIDIRECTIONAL pin 15/GPIO11 of RP2350A/U1) attached to net I2S_LRCK.
|
||||||
|
ERC WARNING: Insufficient drive current on net N$2 for pin POWER-IN pin 46/VREG_AVDD of RP2350A/U1.
|
||||||
|
ERC WARNING: Only one pin (BIDIRECTIONAL pin 4/GPIO2 of RP2350A/U1) attached to net SPI_SCK.
|
||||||
|
ERC WARNING: Only one pin (BIDIRECTIONAL pin 5/GPIO3 of RP2350A/U1) attached to net SPI_MOSI.
|
||||||
|
ERC WARNING: Only one pin (BIDIRECTIONAL pin 14/GPIO10 of RP2350A/U1) attached to net I2S_BCK.
|
||||||
|
ERC WARNING: Only one pin (BIDIRECTIONAL pin 9/GPIO6 of RP2350A/U1) attached to net LCD_DC.
|
||||||
|
ERC WARNING: Only one pin (BIDIRECTIONAL pin 2/GPIO0 of RP2350A/U1) attached to net DAC_XSMT.
|
||||||
|
ERC WARNING: Only one pin (BIDIRECTIONAL pin 16/GPIO12 of RP2350A/U1) attached to net WS2812.
|
||||||
|
ERC WARNING: Only one pin (BIDIRECTIONAL pin 19/GPIO15 of RP2350A/U1) attached to net BTN_A.
|
||||||
|
ERC WARNING: Only one pin (BIDIRECTIONAL pin 41/GPIO27/ADC1 of RP2350A/U1) attached to net JOY_Y.
|
||||||
|
ERC WARNING: Only one pin (BIDIRECTIONAL pin 18/GPIO14 of RP2350A/U1) attached to net BTN_B.
|
||||||
|
ERC WARNING: Unconnected pin: BIDIRECTIONAL pin 3/GPIO1 of RP2350A/U1.
|
||||||
|
ERC WARNING: Unconnected pin: BIDIRECTIONAL pin 7/GPIO4 of RP2350A/U1.
|
||||||
|
ERC WARNING: Unconnected pin: BIDIRECTIONAL pin 35/GPIO23 of RP2350A/U1.
|
||||||
|
ERC WARNING: Unconnected pin: BIDIRECTIONAL pin 36/GPIO24 of RP2350A/U1.
|
||||||
|
ERC WARNING: Unconnected pin: BIDIRECTIONAL pin 37/GPIO25 of RP2350A/U1.
|
||||||
|
ERC WARNING: Unconnected pin: BIDIRECTIONAL pin 42/GPIO28/ADC2 of RP2350A/U1.
|
||||||
|
ERC WARNING: Unconnected pin: BIDIRECTIONAL pin 43/GPIO29/ADC3 of RP2350A/U1.
|
||||||
|
ERC INFO: 35 warnings found while running ERC.
|
||||||
|
ERC INFO: 0 errors found while running ERC.
|
||||||
|
|
||||||
69
hardware/kicad/mcu_core.log
Normal file
69
hardware/kicad/mcu_core.log
Normal file
|
|
@ -0,0 +1,69 @@
|
||||||
|
WARNING: KICAD8_SYMBOL_DIR environment variable is missing, so the default KiCad symbol libraries won't be searched. @ [/work/hardware/kicad/<frozen importlib._bootstrap_external>:995=>/work/hardware/kicad/<frozen importlib._bootstrap>:488]
|
||||||
|
WARNING: KICAD6_SYMBOL_DIR environment variable is missing, so the default KiCad symbol libraries won't be searched. @ [/work/hardware/kicad/<frozen importlib._bootstrap_external>:995=>/work/hardware/kicad/<frozen importlib._bootstrap>:488]
|
||||||
|
WARNING: KICAD7_SYMBOL_DIR environment variable is missing, so the default KiCad symbol libraries won't be searched. @ [/work/hardware/kicad/<frozen importlib._bootstrap_external>:995=>/work/hardware/kicad/<frozen importlib._bootstrap>:488]
|
||||||
|
WARNING: fp-lib-table file was not found. Component footprints are not available.
|
||||||
|
WARNING: fp-lib-table file was not found. Component footprints are not available.
|
||||||
|
WARNING: fp-lib-table file was not found. Component footprints are not available.
|
||||||
|
WARNING: fp-lib-table file was not found. Component footprints are not available.
|
||||||
|
WARNING: Missing tag on RP2350A instantiated at /work/hardware/eda/circuits/mcu_core.py:48.
|
||||||
|
WARNING: Random tag WzkzU3SrPH generated for RP2350A.
|
||||||
|
WARNING: Missing tag on L instantiated at /work/hardware/eda/circuits/mcu_core.py:56.
|
||||||
|
WARNING: Random tag ZRF82xZcoV generated for L.
|
||||||
|
WARNING: Missing tag on C instantiated at /work/hardware/eda/circuits/mcu_core.py:30.
|
||||||
|
WARNING: Random tag y6cgXk8uKQ generated for C.
|
||||||
|
WARNING: Missing tag on C instantiated at /work/hardware/eda/circuits/mcu_core.py:30.
|
||||||
|
WARNING: Random tag myk1bo3xqO generated for C.
|
||||||
|
WARNING: Missing tag on R instantiated at /work/hardware/eda/circuits/mcu_core.py:61.
|
||||||
|
WARNING: Random tag l1IYdMggul generated for R.
|
||||||
|
WARNING: Missing tag on C instantiated at /work/hardware/eda/circuits/mcu_core.py:30.
|
||||||
|
WARNING: Random tag 51Uwwvxchb generated for C.
|
||||||
|
WARNING: Missing tag on R instantiated at /work/hardware/eda/circuits/mcu_core.py:64.
|
||||||
|
WARNING: Random tag l1G4vf47Hi generated for R.
|
||||||
|
WARNING: Missing tag on C instantiated at /work/hardware/eda/circuits/mcu_core.py:30.
|
||||||
|
WARNING: Random tag KWtcaRm6Xq generated for C.
|
||||||
|
WARNING: Missing tag on C instantiated at /work/hardware/eda/circuits/mcu_core.py:30.
|
||||||
|
WARNING: Random tag 7VoeSh3hGN generated for C.
|
||||||
|
WARNING: Missing tag on C instantiated at /work/hardware/eda/circuits/mcu_core.py:30.
|
||||||
|
WARNING: Random tag 2ciDIhniri generated for C.
|
||||||
|
WARNING: Missing tag on C instantiated at /work/hardware/eda/circuits/mcu_core.py:30.
|
||||||
|
WARNING: Random tag 4PPDFu79oz generated for C.
|
||||||
|
WARNING: Missing tag on C instantiated at /work/hardware/eda/circuits/mcu_core.py:30.
|
||||||
|
WARNING: Random tag f4Eje6UFPr generated for C.
|
||||||
|
WARNING: Missing tag on C instantiated at /work/hardware/eda/circuits/mcu_core.py:30.
|
||||||
|
WARNING: Random tag 4C9PIztwCh generated for C.
|
||||||
|
WARNING: Missing tag on C instantiated at /work/hardware/eda/circuits/mcu_core.py:30.
|
||||||
|
WARNING: Random tag VKOFV8i4bx generated for C.
|
||||||
|
WARNING: Missing tag on C instantiated at /work/hardware/eda/circuits/mcu_core.py:30.
|
||||||
|
WARNING: Random tag gt1NfAUSEV generated for C.
|
||||||
|
WARNING: Missing tag on C instantiated at /work/hardware/eda/circuits/mcu_core.py:30.
|
||||||
|
WARNING: Random tag 2U3fv0W96u generated for C.
|
||||||
|
WARNING: Missing tag on Crystal instantiated at /work/hardware/eda/circuits/mcu_core.py:73.
|
||||||
|
WARNING: Random tag wKboyEtRnz generated for Crystal.
|
||||||
|
WARNING: Missing tag on C instantiated at /work/hardware/eda/circuits/mcu_core.py:30.
|
||||||
|
WARNING: Random tag NktCUxamGs generated for C.
|
||||||
|
WARNING: Missing tag on C instantiated at /work/hardware/eda/circuits/mcu_core.py:30.
|
||||||
|
WARNING: Random tag MMUmST9xVa generated for C.
|
||||||
|
WARNING: Missing tag on W25Q128JVS instantiated at /work/hardware/eda/circuits/mcu_core.py:83.
|
||||||
|
WARNING: Random tag 66K8gfMnsY generated for W25Q128JVS.
|
||||||
|
WARNING: Missing tag on C instantiated at /work/hardware/eda/circuits/mcu_core.py:30.
|
||||||
|
WARNING: Random tag A7dCYMYInU generated for C.
|
||||||
|
WARNING: Missing tag on R instantiated at /work/hardware/eda/circuits/mcu_core.py:90.
|
||||||
|
WARNING: Random tag skKkUguwnY generated for R.
|
||||||
|
WARNING: Missing tag on SW_Push instantiated at /work/hardware/eda/circuits/mcu_core.py:90.
|
||||||
|
WARNING: Random tag DHq3deG8GM generated for SW_Push.
|
||||||
|
WARNING: Missing tag on R instantiated at /work/hardware/eda/circuits/mcu_core.py:94.
|
||||||
|
WARNING: Random tag NBGCx2LQUp generated for R.
|
||||||
|
WARNING: Missing tag on SW_Push instantiated at /work/hardware/eda/circuits/mcu_core.py:94.
|
||||||
|
WARNING: Random tag hGusGg3C_u generated for SW_Push.
|
||||||
|
WARNING: Missing tag on C instantiated at /work/hardware/eda/circuits/mcu_core.py:30.
|
||||||
|
WARNING: Random tag JDduO1ET0q generated for C.
|
||||||
|
WARNING: Missing tag on Conn_01x04 instantiated at /work/hardware/eda/circuits/mcu_core.py:99.
|
||||||
|
WARNING: Random tag PHheIKNZd7 generated for Conn_01x04.
|
||||||
|
WARNING: Missing tag on R instantiated at /work/hardware/eda/circuits/mcu_core.py:103.
|
||||||
|
WARNING: Random tag Ce0pu2O9PZ generated for R.
|
||||||
|
WARNING: Missing tag on R instantiated at /work/hardware/eda/circuits/mcu_core.py:103.
|
||||||
|
WARNING: Random tag ofeoP7ISIn generated for R.
|
||||||
|
WARNING: Missing tag on instantiated at /work/hardware/kicad/<frozen importlib._bootstrap>:488.
|
||||||
|
INFO: 63 warnings found while generating netlist.
|
||||||
|
INFO: 0 errors found while generating netlist.
|
||||||
|
|
||||||
99
hardware/kicad/mcu_core_sklib.py
Normal file
99
hardware/kicad/mcu_core_sklib.py
Normal file
|
|
@ -0,0 +1,99 @@
|
||||||
|
from collections import defaultdict
|
||||||
|
from skidl import Pin, Part, Alias, SchLib, SKIDL, TEMPLATE
|
||||||
|
|
||||||
|
from skidl.pin import pin_types
|
||||||
|
|
||||||
|
SKIDL_lib_version = '0.0.1'
|
||||||
|
|
||||||
|
mcu_core = SchLib(tool=SKIDL).add_parts(*[
|
||||||
|
Part(**{ 'name':'RP2350A', 'dest':TEMPLATE, 'tool':SKIDL, 'aliases':Alias({'RP2350A'}), 'ref_prefix':'U', 'fplist':['Package_DFN_QFN:QFN-60-1EP_7x7mm_P0.4mm_EP3.4x3.4mm'], 'footprint':'Package_DFN_QFN:QFN-60-1EP_7x7mm_P0.4mm_EP3.6x3.6mm', 'keywords':'RPi Pico USB QSPI I2C UART ADC SC1509', 'description':'A microcontroller by Raspberry Pi, dual CPU architecture (ARM Cortex-M33 / RISC-V Hazard3), 150MHz, no flash, 520KB SRAM, 12 PIO state machines, VQFN-60', 'datasheet':'https://datasheets.raspberrypi.com/rp2350/rp2350-datasheet.pdf', 'pins':[
|
||||||
|
Pin(num='46',name='VREG_AVDD',func=pin_types.PWRIN,unit=1),
|
||||||
|
Pin(num='53',name='USB_OTP_VDD',func=pin_types.PWRIN,unit=1),
|
||||||
|
Pin(num='54',name='QSPI_IOVDD',func=pin_types.PWRIN,unit=1),
|
||||||
|
Pin(num='47',name='VREG_PGND',func=pin_types.PWRIN,unit=1),
|
||||||
|
Pin(num='39',name='DVDD',func=pin_types.PASSIVE,unit=1),
|
||||||
|
Pin(num='6',name='DVDD',func=pin_types.PWRIN,unit=1),
|
||||||
|
Pin(num='26',name='RUN',func=pin_types.INPUT,unit=1),
|
||||||
|
Pin(num='51',name='USB_DM',func=pin_types.BIDIR,unit=1),
|
||||||
|
Pin(num='52',name='USB_DP',func=pin_types.BIDIR,unit=1),
|
||||||
|
Pin(num='60',name='~{QSPI_SS}',func=pin_types.OUTPUT,unit=1),
|
||||||
|
Pin(num='56',name='QSPI_SCLK',func=pin_types.OUTPUT,unit=1),
|
||||||
|
Pin(num='57',name='QSPI_SD0',func=pin_types.BIDIR,unit=1),
|
||||||
|
Pin(num='59',name='QSPI_SD1',func=pin_types.BIDIR,unit=1),
|
||||||
|
Pin(num='58',name='QSPI_SD2',func=pin_types.BIDIR,unit=1),
|
||||||
|
Pin(num='55',name='QSPI_SD3',func=pin_types.BIDIR,unit=1),
|
||||||
|
Pin(num='21',name='XIN',func=pin_types.INPUT,unit=1),
|
||||||
|
Pin(num='22',name='XOUT',func=pin_types.OUTPUT,unit=1),
|
||||||
|
Pin(num='24',name='SWCLK',func=pin_types.INPUT,unit=1),
|
||||||
|
Pin(num='25',name='SWDIO',func=pin_types.BIDIR,unit=1),
|
||||||
|
Pin(num='44',name='ADC_AVDD',func=pin_types.PWRIN,unit=1),
|
||||||
|
Pin(num='1',name='IOVDD',func=pin_types.PWRIN,unit=1),
|
||||||
|
Pin(num='11',name='IOVDD',func=pin_types.PASSIVE,unit=1),
|
||||||
|
Pin(num='20',name='IOVDD',func=pin_types.PASSIVE,unit=1),
|
||||||
|
Pin(num='30',name='IOVDD',func=pin_types.PASSIVE,unit=1),
|
||||||
|
Pin(num='38',name='IOVDD',func=pin_types.PASSIVE,unit=1),
|
||||||
|
Pin(num='45',name='IOVDD',func=pin_types.PASSIVE,unit=1),
|
||||||
|
Pin(num='61',name='GND',func=pin_types.PWRIN,unit=1),
|
||||||
|
Pin(num='49',name='VREG_VIN',func=pin_types.PWRIN,unit=1),
|
||||||
|
Pin(num='48',name='VREG_LX',func=pin_types.PWROUT,unit=1),
|
||||||
|
Pin(num='50',name='VREG_FB',func=pin_types.PASSIVE,unit=1),
|
||||||
|
Pin(num='23',name='DVDD',func=pin_types.PASSIVE,unit=1),
|
||||||
|
Pin(num='2',name='GPIO0',func=pin_types.BIDIR,unit=1),
|
||||||
|
Pin(num='3',name='GPIO1',func=pin_types.BIDIR,unit=1),
|
||||||
|
Pin(num='4',name='GPIO2',func=pin_types.BIDIR,unit=1),
|
||||||
|
Pin(num='5',name='GPIO3',func=pin_types.BIDIR,unit=1),
|
||||||
|
Pin(num='7',name='GPIO4',func=pin_types.BIDIR,unit=1),
|
||||||
|
Pin(num='8',name='GPIO5',func=pin_types.BIDIR,unit=1),
|
||||||
|
Pin(num='9',name='GPIO6',func=pin_types.BIDIR,unit=1),
|
||||||
|
Pin(num='10',name='GPIO7',func=pin_types.BIDIR,unit=1),
|
||||||
|
Pin(num='12',name='GPIO8',func=pin_types.BIDIR,unit=1),
|
||||||
|
Pin(num='13',name='GPIO9',func=pin_types.BIDIR,unit=1),
|
||||||
|
Pin(num='14',name='GPIO10',func=pin_types.BIDIR,unit=1),
|
||||||
|
Pin(num='15',name='GPIO11',func=pin_types.BIDIR,unit=1),
|
||||||
|
Pin(num='16',name='GPIO12',func=pin_types.BIDIR,unit=1),
|
||||||
|
Pin(num='17',name='GPIO13',func=pin_types.BIDIR,unit=1),
|
||||||
|
Pin(num='18',name='GPIO14',func=pin_types.BIDIR,unit=1),
|
||||||
|
Pin(num='19',name='GPIO15',func=pin_types.BIDIR,unit=1),
|
||||||
|
Pin(num='27',name='GPIO16',func=pin_types.BIDIR,unit=1),
|
||||||
|
Pin(num='28',name='GPIO17',func=pin_types.BIDIR,unit=1),
|
||||||
|
Pin(num='29',name='GPIO18',func=pin_types.BIDIR,unit=1),
|
||||||
|
Pin(num='31',name='GPIO19',func=pin_types.BIDIR,unit=1),
|
||||||
|
Pin(num='32',name='GPIO20',func=pin_types.BIDIR,unit=1),
|
||||||
|
Pin(num='33',name='GPIO21',func=pin_types.BIDIR,unit=1),
|
||||||
|
Pin(num='34',name='GPIO22',func=pin_types.BIDIR,unit=1),
|
||||||
|
Pin(num='35',name='GPIO23',func=pin_types.BIDIR,unit=1),
|
||||||
|
Pin(num='36',name='GPIO24',func=pin_types.BIDIR,unit=1),
|
||||||
|
Pin(num='37',name='GPIO25',func=pin_types.BIDIR,unit=1),
|
||||||
|
Pin(num='40',name='GPIO26/ADC0',func=pin_types.BIDIR,unit=1),
|
||||||
|
Pin(num='41',name='GPIO27/ADC1',func=pin_types.BIDIR,unit=1),
|
||||||
|
Pin(num='42',name='GPIO28/ADC2',func=pin_types.BIDIR,unit=1),
|
||||||
|
Pin(num='43',name='GPIO29/ADC3',func=pin_types.BIDIR,unit=1)], 'unit_defs':[] }),
|
||||||
|
Part(**{ 'name':'L', 'dest':TEMPLATE, 'tool':SKIDL, 'aliases':Alias({'L'}), 'ref_prefix':'L', 'fplist':[''], 'footprint':'Inductor_SMD:L_0806_2016Metric', 'keywords':'inductor choke coil reactor magnetic', 'description':'Inductor', 'datasheet':'~', 'pins':[
|
||||||
|
Pin(num='1',name='1',func=pin_types.PASSIVE,unit=1),
|
||||||
|
Pin(num='2',name='2',func=pin_types.PASSIVE,unit=1)], 'unit_defs':[] }),
|
||||||
|
Part(**{ 'name':'C', 'dest':TEMPLATE, 'tool':SKIDL, 'aliases':Alias({'C'}), 'ref_prefix':'C', 'fplist':[''], 'footprint':'Capacitor_SMD:C_0402_1005Metric', 'keywords':'cap capacitor', 'description':'Unpolarized capacitor', 'datasheet':'~', 'pins':[
|
||||||
|
Pin(num='1',name='~',func=pin_types.PASSIVE,unit=1),
|
||||||
|
Pin(num='2',name='~',func=pin_types.PASSIVE,unit=1)], 'unit_defs':[] }),
|
||||||
|
Part(**{ 'name':'R', 'dest':TEMPLATE, 'tool':SKIDL, 'aliases':Alias({'R'}), 'ref_prefix':'R', 'fplist':[''], 'footprint':'Resistor_SMD:R_0402_1005Metric', 'keywords':'R res resistor', 'description':'Resistor', 'datasheet':'~', 'pins':[
|
||||||
|
Pin(num='1',name='~',func=pin_types.PASSIVE,unit=1),
|
||||||
|
Pin(num='2',name='~',func=pin_types.PASSIVE,unit=1)], 'unit_defs':[] }),
|
||||||
|
Part(**{ 'name':'Crystal', 'dest':TEMPLATE, 'tool':SKIDL, 'aliases':Alias({'Crystal'}), 'ref_prefix':'Y', 'fplist':[''], 'footprint':'Crystal:Crystal_SMD_3225-4Pin_3.2x2.5mm', 'keywords':'quartz ceramic resonator oscillator', 'description':'Two pin crystal', 'datasheet':'~', 'pins':[
|
||||||
|
Pin(num='1',name='1',func=pin_types.PASSIVE,unit=1),
|
||||||
|
Pin(num='2',name='2',func=pin_types.PASSIVE,unit=1)], 'unit_defs':[] }),
|
||||||
|
Part(**{ 'name':'W25Q128JVS', 'dest':TEMPLATE, 'tool':SKIDL, 'aliases':Alias({'W25Q128JVS'}), 'ref_prefix':'U', 'fplist':None, 'footprint':'Package_SO:SOIC-8_5.23x5.23mm_P1.27mm', 'keywords':None, 'description':'', 'datasheet':None, 'pins':[
|
||||||
|
Pin(num='1',name='CS',func=pin_types.INPUT),
|
||||||
|
Pin(num='2',name='IO1',func=pin_types.BIDIR),
|
||||||
|
Pin(num='3',name='IO2',func=pin_types.BIDIR),
|
||||||
|
Pin(num='4',name='GND',func=pin_types.PWRIN),
|
||||||
|
Pin(num='5',name='IO0',func=pin_types.BIDIR),
|
||||||
|
Pin(num='6',name='CLK',func=pin_types.INPUT),
|
||||||
|
Pin(num='7',name='IO3',func=pin_types.BIDIR),
|
||||||
|
Pin(num='8',name='VCC',func=pin_types.PWRIN)] }),
|
||||||
|
Part(**{ 'name':'SW_Push', 'dest':TEMPLATE, 'tool':SKIDL, 'aliases':Alias({'SW_Push'}), 'ref_prefix':'SW', 'fplist':[''], 'footprint':'Button_Switch_SMD:SW_SPST_SKQG_WithStem', 'keywords':'switch normally-open pushbutton push-button', 'description':'Push button switch, generic, two pins', 'datasheet':'~', 'pins':[
|
||||||
|
Pin(num='1',name='1',func=pin_types.PASSIVE),
|
||||||
|
Pin(num='2',name='2',func=pin_types.PASSIVE)], 'unit_defs':[] }),
|
||||||
|
Part(**{ 'name':'Conn_01x04', 'dest':TEMPLATE, 'tool':SKIDL, 'aliases':Alias({'Conn_01x04'}), 'ref_prefix':'J', 'fplist':[''], 'footprint':'Connector_PinHeader_1.27mm:PinHeader_1x04_P1.27mm_Vertical', 'keywords':'connector', 'description':'Generic connector, single row, 01x04, script generated (kicad-library-utils/schlib/autogen/connector/)', 'datasheet':'~', 'pins':[
|
||||||
|
Pin(num='1',name='Pin_1',func=pin_types.PASSIVE,unit=1),
|
||||||
|
Pin(num='2',name='Pin_2',func=pin_types.PASSIVE,unit=1),
|
||||||
|
Pin(num='3',name='Pin_3',func=pin_types.PASSIVE,unit=1),
|
||||||
|
Pin(num='4',name='Pin_4',func=pin_types.PASSIVE,unit=1)], 'unit_defs':[] })])
|
||||||
5
hardware/kicad/power_tree.erc
Normal file
5
hardware/kicad/power_tree.erc
Normal file
|
|
@ -0,0 +1,5 @@
|
||||||
|
ERC WARNING: Only one pin (PASSIVE pin 1/1 of L/L3) attached to net VBUS_5V.
|
||||||
|
ERC WARNING: Unconnected pin: OUTPUT pin 7/BSW of TPS65131/U7.
|
||||||
|
ERC INFO: 2 warnings found while running ERC.
|
||||||
|
ERC INFO: 0 errors found while running ERC.
|
||||||
|
|
||||||
85
hardware/kicad/power_tree.log
Normal file
85
hardware/kicad/power_tree.log
Normal file
|
|
@ -0,0 +1,85 @@
|
||||||
|
WARNING: KICAD8_SYMBOL_DIR environment variable is missing, so the default KiCad symbol libraries won't be searched. @ [/work/hardware/kicad/<frozen importlib._bootstrap_external>:995=>/work/hardware/kicad/<frozen importlib._bootstrap>:488]
|
||||||
|
WARNING: KICAD6_SYMBOL_DIR environment variable is missing, so the default KiCad symbol libraries won't be searched. @ [/work/hardware/kicad/<frozen importlib._bootstrap_external>:995=>/work/hardware/kicad/<frozen importlib._bootstrap>:488]
|
||||||
|
WARNING: KICAD7_SYMBOL_DIR environment variable is missing, so the default KiCad symbol libraries won't be searched. @ [/work/hardware/kicad/<frozen importlib._bootstrap_external>:995=>/work/hardware/kicad/<frozen importlib._bootstrap>:488]
|
||||||
|
WARNING: fp-lib-table file was not found. Component footprints are not available.
|
||||||
|
WARNING: fp-lib-table file was not found. Component footprints are not available.
|
||||||
|
WARNING: fp-lib-table file was not found. Component footprints are not available.
|
||||||
|
WARNING: fp-lib-table file was not found. Component footprints are not available.
|
||||||
|
WARNING: Missing tag on TPS65131 instantiated at /work/hardware/eda/circuits/power_tree.py:78.
|
||||||
|
WARNING: Random tag t1lc_t3f27 generated for TPS65131.
|
||||||
|
WARNING: Missing tag on TPS7A4901 instantiated at /work/hardware/eda/circuits/power_tree.py:78.
|
||||||
|
WARNING: Random tag _F9fKhFdb4 generated for TPS7A4901.
|
||||||
|
WARNING: Missing tag on TPS7A3001 instantiated at /work/hardware/eda/circuits/power_tree.py:78.
|
||||||
|
WARNING: Random tag bOPQEnHMPE generated for TPS7A3001.
|
||||||
|
WARNING: Missing tag on AP2112K-3.3 instantiated at /work/hardware/eda/circuits/power_tree.py:78.
|
||||||
|
WARNING: Random tag 7zaNe3SmR6 generated for AP2112K-3.3.
|
||||||
|
WARNING: Missing tag on L instantiated at /work/hardware/eda/circuits/power_tree.py:79.
|
||||||
|
WARNING: Random tag PHETofdCdy generated for L.
|
||||||
|
WARNING: Missing tag on L instantiated at /work/hardware/eda/circuits/power_tree.py:79.
|
||||||
|
WARNING: Random tag VLz6BdeRjR generated for L.
|
||||||
|
WARNING: Missing tag on D_Schottky instantiated at /work/hardware/eda/circuits/power_tree.py:80.
|
||||||
|
WARNING: Random tag 5l222NbdCl generated for D_Schottky.
|
||||||
|
WARNING: Missing tag on D_Schottky instantiated at /work/hardware/eda/circuits/power_tree.py:80.
|
||||||
|
WARNING: Random tag VfUHMWYwrr generated for D_Schottky.
|
||||||
|
WARNING: Missing tag on L instantiated at /work/hardware/eda/circuits/power_tree.py:83.
|
||||||
|
WARNING: Random tag 8XkETdYyd1 generated for L.
|
||||||
|
WARNING: Missing tag on C instantiated at /work/hardware/eda/circuits/power_tree.py:38.
|
||||||
|
WARNING: Random tag kdZZscrEaM generated for C.
|
||||||
|
WARNING: Missing tag on C instantiated at /work/hardware/eda/circuits/power_tree.py:38.
|
||||||
|
WARNING: Random tag BCsDMaf69p generated for C.
|
||||||
|
WARNING: Missing tag on C instantiated at /work/hardware/eda/circuits/power_tree.py:38.
|
||||||
|
WARNING: Random tag Y_Q1QqsLAW generated for C.
|
||||||
|
WARNING: Missing tag on C instantiated at /work/hardware/eda/circuits/power_tree.py:38.
|
||||||
|
WARNING: Random tag Q0WZTfJB2F generated for C.
|
||||||
|
WARNING: Missing tag on R instantiated at /work/hardware/eda/circuits/power_tree.py:99.
|
||||||
|
WARNING: Random tag 6Keokgw_Mf generated for R.
|
||||||
|
WARNING: Missing tag on R instantiated at /work/hardware/eda/circuits/power_tree.py:99.
|
||||||
|
WARNING: Random tag eXrrEmgZS2 generated for R.
|
||||||
|
WARNING: Missing tag on C instantiated at /work/hardware/eda/circuits/power_tree.py:38.
|
||||||
|
WARNING: Random tag xXnkcE28b3 generated for C.
|
||||||
|
WARNING: Missing tag on R instantiated at /work/hardware/eda/circuits/power_tree.py:103.
|
||||||
|
WARNING: Random tag 71fp6zgOCs generated for R.
|
||||||
|
WARNING: Missing tag on C instantiated at /work/hardware/eda/circuits/power_tree.py:38.
|
||||||
|
WARNING: Random tag putM5Ti_HW generated for C.
|
||||||
|
WARNING: Missing tag on C instantiated at /work/hardware/eda/circuits/power_tree.py:38.
|
||||||
|
WARNING: Random tag oljnEjjwPl generated for C.
|
||||||
|
WARNING: Missing tag on R instantiated at /work/hardware/eda/circuits/power_tree.py:111.
|
||||||
|
WARNING: Random tag kGZVZN0ybr generated for R.
|
||||||
|
WARNING: Missing tag on R instantiated at /work/hardware/eda/circuits/power_tree.py:111.
|
||||||
|
WARNING: Random tag MtS4y5fm0b generated for R.
|
||||||
|
WARNING: Missing tag on C instantiated at /work/hardware/eda/circuits/power_tree.py:38.
|
||||||
|
WARNING: Random tag BqTyOscObN generated for C.
|
||||||
|
WARNING: Missing tag on C instantiated at /work/hardware/eda/circuits/power_tree.py:38.
|
||||||
|
WARNING: Random tag kxjlLGdHS1 generated for C.
|
||||||
|
WARNING: Missing tag on C instantiated at /work/hardware/eda/circuits/power_tree.py:38.
|
||||||
|
WARNING: Random tag ACrRZDytJN generated for C.
|
||||||
|
WARNING: Missing tag on C instantiated at /work/hardware/eda/circuits/power_tree.py:38.
|
||||||
|
WARNING: Random tag hDO8pzdyZL generated for C.
|
||||||
|
WARNING: Missing tag on C instantiated at /work/hardware/eda/circuits/power_tree.py:38.
|
||||||
|
WARNING: Random tag KeCZzYSyEA generated for C.
|
||||||
|
WARNING: Missing tag on C instantiated at /work/hardware/eda/circuits/power_tree.py:38.
|
||||||
|
WARNING: Random tag rDtkgYITBw generated for C.
|
||||||
|
WARNING: Missing tag on R instantiated at /work/hardware/eda/circuits/power_tree.py:123.
|
||||||
|
WARNING: Random tag kuDzksgOjV generated for R.
|
||||||
|
WARNING: Missing tag on R instantiated at /work/hardware/eda/circuits/power_tree.py:123.
|
||||||
|
WARNING: Random tag cCGQfdk067 generated for R.
|
||||||
|
WARNING: Missing tag on C instantiated at /work/hardware/eda/circuits/power_tree.py:38.
|
||||||
|
WARNING: Random tag dXyIckRkyY generated for C.
|
||||||
|
WARNING: Missing tag on C instantiated at /work/hardware/eda/circuits/power_tree.py:38.
|
||||||
|
WARNING: Random tag 4YxQcPij_v generated for C.
|
||||||
|
WARNING: Missing tag on C instantiated at /work/hardware/eda/circuits/power_tree.py:38.
|
||||||
|
WARNING: Random tag aOlUn2sbkL generated for C.
|
||||||
|
WARNING: Missing tag on R instantiated at /work/hardware/eda/circuits/power_tree.py:130.
|
||||||
|
WARNING: Random tag boe1kCGhJI generated for R.
|
||||||
|
WARNING: Missing tag on R instantiated at /work/hardware/eda/circuits/power_tree.py:130.
|
||||||
|
WARNING: Random tag kf8HTzBAWP generated for R.
|
||||||
|
WARNING: Missing tag on C instantiated at /work/hardware/eda/circuits/power_tree.py:38.
|
||||||
|
WARNING: Random tag EMg7Ffu0Ou generated for C.
|
||||||
|
WARNING: Missing tag on C instantiated at /work/hardware/eda/circuits/power_tree.py:38.
|
||||||
|
WARNING: Random tag LpwWDsy7sz generated for C.
|
||||||
|
WARNING: Missing tag on C instantiated at /work/hardware/eda/circuits/power_tree.py:38.
|
||||||
|
WARNING: Random tag ZlDaRGjYdE generated for C.
|
||||||
|
WARNING: Missing tag on instantiated at /work/hardware/kicad/<frozen importlib._bootstrap>:488.
|
||||||
|
INFO: 79 warnings found while generating netlist.
|
||||||
|
INFO: 0 errors found while generating netlist.
|
||||||
|
|
||||||
72
hardware/kicad/power_tree_sklib.py
Normal file
72
hardware/kicad/power_tree_sklib.py
Normal file
|
|
@ -0,0 +1,72 @@
|
||||||
|
from collections import defaultdict
|
||||||
|
from skidl import Pin, Part, Alias, SchLib, SKIDL, TEMPLATE
|
||||||
|
|
||||||
|
from skidl.pin import pin_types
|
||||||
|
|
||||||
|
SKIDL_lib_version = '0.0.1'
|
||||||
|
|
||||||
|
power_tree = SchLib(tool=SKIDL).add_parts(*[
|
||||||
|
Part(**{ 'name':'TPS65131', 'dest':TEMPLATE, 'tool':SKIDL, 'aliases':Alias({'TPS65131'}), 'ref_prefix':'U', 'fplist':None, 'footprint':'Package_DFN_QFN:QFN-24-1EP_4x4mm_P0.5mm', 'keywords':None, 'description':'', 'datasheet':None, 'pins':[
|
||||||
|
Pin(num='1',name='INP',func=pin_types.PASSIVE),
|
||||||
|
Pin(num='24',name='INP2',func=pin_types.PASSIVE),
|
||||||
|
Pin(num='2',name='PGND',func=pin_types.PWRIN),
|
||||||
|
Pin(num='3',name='PGND2',func=pin_types.PWRIN),
|
||||||
|
Pin(num='4',name='VIN',func=pin_types.PWRIN),
|
||||||
|
Pin(num='5',name='INN',func=pin_types.PASSIVE),
|
||||||
|
Pin(num='6',name='INN2',func=pin_types.PASSIVE),
|
||||||
|
Pin(num='7',name='BSW',func=pin_types.OUTPUT),
|
||||||
|
Pin(num='8',name='ENP',func=pin_types.INPUT),
|
||||||
|
Pin(num='9',name='PSP',func=pin_types.INPUT),
|
||||||
|
Pin(num='10',name='ENN',func=pin_types.INPUT),
|
||||||
|
Pin(num='11',name='PSN',func=pin_types.INPUT),
|
||||||
|
Pin(num='12',name='NC12',func=pin_types.NOCONNECT),
|
||||||
|
Pin(num='20',name='NC20',func=pin_types.NOCONNECT),
|
||||||
|
Pin(num='13',name='OUTN',func=pin_types.PASSIVE),
|
||||||
|
Pin(num='14',name='OUTN2',func=pin_types.PASSIVE),
|
||||||
|
Pin(num='15',name='VNEG',func=pin_types.INPUT),
|
||||||
|
Pin(num='16',name='FBN',func=pin_types.INPUT),
|
||||||
|
Pin(num='17',name='VREF',func=pin_types.PWROUT),
|
||||||
|
Pin(num='18',name='CN',func=pin_types.PASSIVE),
|
||||||
|
Pin(num='19',name='AGND',func=pin_types.PWRIN),
|
||||||
|
Pin(num='21',name='CP',func=pin_types.PASSIVE),
|
||||||
|
Pin(num='22',name='FBP',func=pin_types.INPUT),
|
||||||
|
Pin(num='23',name='VPOS',func=pin_types.INPUT),
|
||||||
|
Pin(num='25',name='EP',func=pin_types.PWRIN)] }),
|
||||||
|
Part(**{ 'name':'TPS7A4901', 'dest':TEMPLATE, 'tool':SKIDL, 'aliases':Alias({'TPS7A4901'}), 'ref_prefix':'U', 'fplist':None, 'footprint':'Package_SO:HVSSOP-8-1EP_3x3mm_P0.65mm', 'keywords':None, 'description':'', 'datasheet':None, 'pins':[
|
||||||
|
Pin(num='1',name='OUT',func=pin_types.PWROUT),
|
||||||
|
Pin(num='2',name='FB',func=pin_types.INPUT),
|
||||||
|
Pin(num='3',name='NC',func=pin_types.NOCONNECT),
|
||||||
|
Pin(num='4',name='GND',func=pin_types.PWRIN),
|
||||||
|
Pin(num='5',name='EN',func=pin_types.INPUT),
|
||||||
|
Pin(num='6',name='NR',func=pin_types.PASSIVE),
|
||||||
|
Pin(num='7',name='DNC',func=pin_types.NOCONNECT),
|
||||||
|
Pin(num='8',name='IN',func=pin_types.PWRIN),
|
||||||
|
Pin(num='9',name='EP',func=pin_types.PWRIN)] }),
|
||||||
|
Part(**{ 'name':'TPS7A3001', 'dest':TEMPLATE, 'tool':SKIDL, 'aliases':Alias({'TPS7A3001'}), 'ref_prefix':'U', 'fplist':None, 'footprint':'Package_SO:HVSSOP-8-1EP_3x3mm_P0.65mm', 'keywords':None, 'description':'', 'datasheet':None, 'pins':[
|
||||||
|
Pin(num='1',name='OUT',func=pin_types.PWROUT),
|
||||||
|
Pin(num='2',name='FB',func=pin_types.INPUT),
|
||||||
|
Pin(num='3',name='NC',func=pin_types.NOCONNECT),
|
||||||
|
Pin(num='4',name='GND',func=pin_types.PWRIN),
|
||||||
|
Pin(num='5',name='EN',func=pin_types.INPUT),
|
||||||
|
Pin(num='6',name='NR',func=pin_types.PASSIVE),
|
||||||
|
Pin(num='7',name='DNC',func=pin_types.NOCONNECT),
|
||||||
|
Pin(num='8',name='IN',func=pin_types.PWRIN),
|
||||||
|
Pin(num='9',name='EP',func=pin_types.PWRIN)] }),
|
||||||
|
Part(**{ 'name':'AP2112K-3.3', 'dest':TEMPLATE, 'tool':SKIDL, 'aliases':Alias({'AP2112K-3.3'}), 'ref_prefix':'U', 'fplist':None, 'footprint':'Package_TO_SOT_SMD:SOT-23-5', 'keywords':None, 'description':'', 'datasheet':None, 'pins':[
|
||||||
|
Pin(num='1',name='VIN',func=pin_types.PWRIN),
|
||||||
|
Pin(num='2',name='GND',func=pin_types.PWRIN),
|
||||||
|
Pin(num='3',name='EN',func=pin_types.INPUT),
|
||||||
|
Pin(num='4',name='NC',func=pin_types.NOCONNECT),
|
||||||
|
Pin(num='5',name='VOUT',func=pin_types.PWROUT)] }),
|
||||||
|
Part(**{ 'name':'L', 'dest':TEMPLATE, 'tool':SKIDL, 'aliases':Alias({'L'}), 'ref_prefix':'L', 'fplist':[''], 'footprint':'Inductor_SMD:L_Wuerth_WE-PD_Typ4_M', 'keywords':'inductor choke coil reactor magnetic', 'description':'Inductor', 'datasheet':'~', 'pins':[
|
||||||
|
Pin(num='1',name='1',func=pin_types.PASSIVE,unit=1),
|
||||||
|
Pin(num='2',name='2',func=pin_types.PASSIVE,unit=1)], 'unit_defs':[] }),
|
||||||
|
Part(**{ 'name':'D_Schottky', 'dest':TEMPLATE, 'tool':SKIDL, 'aliases':Alias({'D_Schottky'}), 'ref_prefix':'D', 'fplist':[''], 'footprint':'Diode_SMD:D_SMA', 'keywords':'diode Schottky', 'description':'Schottky diode', 'datasheet':'~', 'pins':[
|
||||||
|
Pin(num='1',name='K',func=pin_types.PASSIVE,unit=1),
|
||||||
|
Pin(num='2',name='A',func=pin_types.PASSIVE,unit=1)], 'unit_defs':[] }),
|
||||||
|
Part(**{ 'name':'C', 'dest':TEMPLATE, 'tool':SKIDL, 'aliases':Alias({'C'}), 'ref_prefix':'C', 'fplist':[''], 'footprint':'Capacitor_SMD:C_1206_3216Metric', 'keywords':'cap capacitor', 'description':'Unpolarized capacitor', 'datasheet':'~', 'pins':[
|
||||||
|
Pin(num='1',name='~',func=pin_types.PASSIVE,unit=1),
|
||||||
|
Pin(num='2',name='~',func=pin_types.PASSIVE,unit=1)], 'unit_defs':[] }),
|
||||||
|
Part(**{ 'name':'R', 'dest':TEMPLATE, 'tool':SKIDL, 'aliases':Alias({'R'}), 'ref_prefix':'R', 'fplist':[''], 'footprint':'Resistor_SMD:R_0805_2012Metric', 'keywords':'R res resistor', 'description':'Resistor', 'datasheet':'~', 'pins':[
|
||||||
|
Pin(num='1',name='~',func=pin_types.PASSIVE,unit=1),
|
||||||
|
Pin(num='2',name='~',func=pin_types.PASSIVE,unit=1)], 'unit_defs':[] })])
|
||||||
5
hardware/kicad/rtc.erc
Normal file
5
hardware/kicad/rtc.erc
Normal file
|
|
@ -0,0 +1,5 @@
|
||||||
|
ERC WARNING: Insufficient drive current on net VDD_RTC for pin POWER-IN pin 3/VDD of RV-8803-C7/U7.
|
||||||
|
ERC WARNING: Unconnected pin: OUTPUT pin 2/CLKOUT of RV-8803-C7/U7.
|
||||||
|
ERC INFO: 2 warnings found while running ERC.
|
||||||
|
ERC INFO: 0 errors found while running ERC.
|
||||||
|
|
||||||
27
hardware/kicad/rtc.log
Normal file
27
hardware/kicad/rtc.log
Normal file
|
|
@ -0,0 +1,27 @@
|
||||||
|
WARNING: KICAD8_SYMBOL_DIR environment variable is missing, so the default KiCad symbol libraries won't be searched. @ [/work/hardware/kicad/<frozen importlib._bootstrap_external>:995=>/work/hardware/kicad/<frozen importlib._bootstrap>:488]
|
||||||
|
WARNING: KICAD6_SYMBOL_DIR environment variable is missing, so the default KiCad symbol libraries won't be searched. @ [/work/hardware/kicad/<frozen importlib._bootstrap_external>:995=>/work/hardware/kicad/<frozen importlib._bootstrap>:488]
|
||||||
|
WARNING: KICAD7_SYMBOL_DIR environment variable is missing, so the default KiCad symbol libraries won't be searched. @ [/work/hardware/kicad/<frozen importlib._bootstrap_external>:995=>/work/hardware/kicad/<frozen importlib._bootstrap>:488]
|
||||||
|
WARNING: fp-lib-table file was not found. Component footprints are not available.
|
||||||
|
WARNING: fp-lib-table file was not found. Component footprints are not available.
|
||||||
|
WARNING: fp-lib-table file was not found. Component footprints are not available.
|
||||||
|
WARNING: fp-lib-table file was not found. Component footprints are not available.
|
||||||
|
WARNING: Missing tag on RV-8803-C7 instantiated at /work/hardware/eda/circuits/rtc.py:41.
|
||||||
|
WARNING: Random tag vvCZlacOIl generated for RV-8803-C7.
|
||||||
|
WARNING: Missing tag on D_Schottky instantiated at /work/hardware/eda/circuits/rtc.py:51.
|
||||||
|
WARNING: Random tag _zzfn3XmHQ generated for D_Schottky.
|
||||||
|
WARNING: Missing tag on D_Schottky instantiated at /work/hardware/eda/circuits/rtc.py:51.
|
||||||
|
WARNING: Random tag c6BuDsK_A2 generated for D_Schottky.
|
||||||
|
WARNING: Missing tag on Battery_Cell instantiated at /work/hardware/eda/circuits/rtc.py:53.
|
||||||
|
WARNING: Random tag n7hVbpl_7H generated for Battery_Cell.
|
||||||
|
WARNING: Missing tag on C instantiated at /work/hardware/eda/circuits/rtc.py:27.
|
||||||
|
WARNING: Random tag 0kNu6jvDLR generated for C.
|
||||||
|
WARNING: Missing tag on R instantiated at /work/hardware/eda/circuits/rtc.py:60.
|
||||||
|
WARNING: Random tag _uIfBEh0dY generated for R.
|
||||||
|
WARNING: Missing tag on R instantiated at /work/hardware/eda/circuits/rtc.py:60.
|
||||||
|
WARNING: Random tag 4HsfrE7DU9 generated for R.
|
||||||
|
WARNING: Missing tag on R instantiated at /work/hardware/eda/circuits/rtc.py:61.
|
||||||
|
WARNING: Random tag S0w81WPsYC generated for R.
|
||||||
|
WARNING: Missing tag on instantiated at /work/hardware/kicad/<frozen importlib._bootstrap>:488.
|
||||||
|
INFO: 21 warnings found while generating netlist.
|
||||||
|
INFO: 0 errors found while generating netlist.
|
||||||
|
|
||||||
29
hardware/kicad/rtc_sklib.py
Normal file
29
hardware/kicad/rtc_sklib.py
Normal file
|
|
@ -0,0 +1,29 @@
|
||||||
|
from collections import defaultdict
|
||||||
|
from skidl import Pin, Part, Alias, SchLib, SKIDL, TEMPLATE
|
||||||
|
|
||||||
|
from skidl.pin import pin_types
|
||||||
|
|
||||||
|
SKIDL_lib_version = '0.0.1'
|
||||||
|
|
||||||
|
rtc = SchLib(tool=SKIDL).add_parts(*[
|
||||||
|
Part(**{ 'name':'RV-8803-C7', 'dest':TEMPLATE, 'tool':SKIDL, 'aliases':Alias({'RV-8803-C7'}), 'ref_prefix':'U', 'fplist':None, 'footprint':'RTC_MicroCrystal:RV-8803-C7', 'keywords':None, 'description':'', 'datasheet':None, 'pins':[
|
||||||
|
Pin(num='1',name='SDA',func=pin_types.BIDIR),
|
||||||
|
Pin(num='2',name='CLKOUT',func=pin_types.OUTPUT),
|
||||||
|
Pin(num='3',name='VDD',func=pin_types.PWRIN),
|
||||||
|
Pin(num='4',name='CLKOE',func=pin_types.INPUT),
|
||||||
|
Pin(num='5',name='VSS',func=pin_types.PWRIN),
|
||||||
|
Pin(num='6',name='INT',func=pin_types.OPENCOLL),
|
||||||
|
Pin(num='7',name='EVI',func=pin_types.INPUT),
|
||||||
|
Pin(num='8',name='SCL',func=pin_types.INPUT)] }),
|
||||||
|
Part(**{ 'name':'D_Schottky', 'dest':TEMPLATE, 'tool':SKIDL, 'aliases':Alias({'D_Schottky'}), 'ref_prefix':'D', 'fplist':[''], 'footprint':'Diode_SMD:D_SOD-323', 'keywords':'diode Schottky', 'description':'Schottky diode', 'datasheet':'~', 'pins':[
|
||||||
|
Pin(num='1',name='K',func=pin_types.PASSIVE,unit=1),
|
||||||
|
Pin(num='2',name='A',func=pin_types.PASSIVE,unit=1)], 'unit_defs':[] }),
|
||||||
|
Part(**{ 'name':'Battery_Cell', 'dest':TEMPLATE, 'tool':SKIDL, 'aliases':Alias({'Battery_Cell'}), 'ref_prefix':'BT', 'fplist':[''], 'footprint':'Battery:BatteryHolder_Keystone_1066_1x2032', 'keywords':'battery cell', 'description':'Single-cell battery', 'datasheet':'~', 'pins':[
|
||||||
|
Pin(num='1',name='+',func=pin_types.PASSIVE,unit=1),
|
||||||
|
Pin(num='2',name='-',func=pin_types.PASSIVE,unit=1)], 'unit_defs':[] }),
|
||||||
|
Part(**{ 'name':'C', 'dest':TEMPLATE, 'tool':SKIDL, 'aliases':Alias({'C'}), 'ref_prefix':'C', 'fplist':[''], 'footprint':'Capacitor_SMD:C_0402_1005Metric', 'keywords':'cap capacitor', 'description':'Unpolarized capacitor', 'datasheet':'~', 'pins':[
|
||||||
|
Pin(num='1',name='~',func=pin_types.PASSIVE,unit=1),
|
||||||
|
Pin(num='2',name='~',func=pin_types.PASSIVE,unit=1)], 'unit_defs':[] }),
|
||||||
|
Part(**{ 'name':'R', 'dest':TEMPLATE, 'tool':SKIDL, 'aliases':Alias({'R'}), 'ref_prefix':'R', 'fplist':[''], 'footprint':'Resistor_SMD:R_0402_1005Metric', 'keywords':'R res resistor', 'description':'Resistor', 'datasheet':'~', 'pins':[
|
||||||
|
Pin(num='1',name='~',func=pin_types.PASSIVE,unit=1),
|
||||||
|
Pin(num='2',name='~',func=pin_types.PASSIVE,unit=1)], 'unit_defs':[] })])
|
||||||
0
hardware/kicad/skidl.erc
Normal file
0
hardware/kicad/skidl.erc
Normal file
9
hardware/kicad/skidl.log
Normal file
9
hardware/kicad/skidl.log
Normal file
|
|
@ -0,0 +1,9 @@
|
||||||
|
WARNING: KICAD8_SYMBOL_DIR environment variable is missing, so the default KiCad symbol libraries won't be searched. @ [/work/hardware/kicad/<frozen importlib._bootstrap_external>:995=>/work/hardware/kicad/<frozen importlib._bootstrap>:488]
|
||||||
|
WARNING: KICAD6_SYMBOL_DIR environment variable is missing, so the default KiCad symbol libraries won't be searched. @ [/work/hardware/kicad/<frozen importlib._bootstrap_external>:995=>/work/hardware/kicad/<frozen importlib._bootstrap>:488]
|
||||||
|
WARNING: KICAD9_SYMBOL_DIR environment variable is missing, so the default KiCad symbol libraries won't be searched. @ [/work/hardware/kicad/<frozen importlib._bootstrap_external>:995=>/work/hardware/kicad/<frozen importlib._bootstrap>:488]
|
||||||
|
WARNING: KICAD_SYMBOL_DIR environment variable is missing, so the default KiCad symbol libraries won't be searched. @ [/work/hardware/kicad/<frozen importlib._bootstrap_external>:995=>/work/hardware/kicad/<frozen importlib._bootstrap>:488]
|
||||||
|
WARNING: KICAD7_SYMBOL_DIR environment variable is missing, so the default KiCad symbol libraries won't be searched. @ [/work/hardware/kicad/<frozen importlib._bootstrap_external>:995=>/work/hardware/kicad/<frozen importlib._bootstrap>:488]
|
||||||
|
WARNING: fp-lib-table file was not found. Component footprints are not available.
|
||||||
|
WARNING: fp-lib-table file was not found. Component footprints are not available.
|
||||||
|
WARNING: fp-lib-table file was not found. Component footprints are not available.
|
||||||
|
WARNING: fp-lib-table file was not found. Component footprints are not available.
|
||||||
0
hardware/kicad/skidl_REPL.erc
Normal file
0
hardware/kicad/skidl_REPL.erc
Normal file
9
hardware/kicad/skidl_REPL.log
Normal file
9
hardware/kicad/skidl_REPL.log
Normal file
|
|
@ -0,0 +1,9 @@
|
||||||
|
WARNING: KICAD8_SYMBOL_DIR environment variable is missing, so the default KiCad symbol libraries won't be searched. @ [/work/hardware/kicad/<frozen importlib._bootstrap_external>:995=>/work/hardware/kicad/<frozen importlib._bootstrap>:488]
|
||||||
|
WARNING: KICAD6_SYMBOL_DIR environment variable is missing, so the default KiCad symbol libraries won't be searched. @ [/work/hardware/kicad/<frozen importlib._bootstrap_external>:995=>/work/hardware/kicad/<frozen importlib._bootstrap>:488]
|
||||||
|
WARNING: KICAD9_SYMBOL_DIR environment variable is missing, so the default KiCad symbol libraries won't be searched. @ [/work/hardware/kicad/<frozen importlib._bootstrap_external>:995=>/work/hardware/kicad/<frozen importlib._bootstrap>:488]
|
||||||
|
WARNING: KICAD_SYMBOL_DIR environment variable is missing, so the default KiCad symbol libraries won't be searched. @ [/work/hardware/kicad/<frozen importlib._bootstrap_external>:995=>/work/hardware/kicad/<frozen importlib._bootstrap>:488]
|
||||||
|
WARNING: KICAD7_SYMBOL_DIR environment variable is missing, so the default KiCad symbol libraries won't be searched. @ [/work/hardware/kicad/<frozen importlib._bootstrap_external>:995=>/work/hardware/kicad/<frozen importlib._bootstrap>:488]
|
||||||
|
WARNING: fp-lib-table file was not found. Component footprints are not available.
|
||||||
|
WARNING: fp-lib-table file was not found. Component footprints are not available.
|
||||||
|
WARNING: fp-lib-table file was not found. Component footprints are not available.
|
||||||
|
WARNING: fp-lib-table file was not found. Component footprints are not available.
|
||||||
5
hardware/kicad/stage1_input.erc
Normal file
5
hardware/kicad/stage1_input.erc
Normal file
|
|
@ -0,0 +1,5 @@
|
||||||
|
ERC WARNING: Only one pin (PASSIVE pin 1/~ of C/C1) attached to net AIN_HOT.
|
||||||
|
ERC WARNING: Only one pin (PASSIVE pin 1/~ of C/C2) attached to net AIN_COLD.
|
||||||
|
ERC INFO: 2 warnings found while running ERC.
|
||||||
|
ERC INFO: 0 errors found while running ERC.
|
||||||
|
|
||||||
37
hardware/kicad/stage1_input.log
Normal file
37
hardware/kicad/stage1_input.log
Normal file
|
|
@ -0,0 +1,37 @@
|
||||||
|
WARNING: KICAD8_SYMBOL_DIR environment variable is missing, so the default KiCad symbol libraries won't be searched. @ [/work/hardware/kicad/<frozen importlib._bootstrap_external>:995=>/work/hardware/kicad/<frozen importlib._bootstrap>:488]
|
||||||
|
WARNING: KICAD6_SYMBOL_DIR environment variable is missing, so the default KiCad symbol libraries won't be searched. @ [/work/hardware/kicad/<frozen importlib._bootstrap_external>:995=>/work/hardware/kicad/<frozen importlib._bootstrap>:488]
|
||||||
|
WARNING: KICAD7_SYMBOL_DIR environment variable is missing, so the default KiCad symbol libraries won't be searched. @ [/work/hardware/kicad/<frozen importlib._bootstrap_external>:995=>/work/hardware/kicad/<frozen importlib._bootstrap>:488]
|
||||||
|
WARNING: fp-lib-table file was not found. Component footprints are not available.
|
||||||
|
WARNING: fp-lib-table file was not found. Component footprints are not available.
|
||||||
|
WARNING: fp-lib-table file was not found. Component footprints are not available.
|
||||||
|
WARNING: fp-lib-table file was not found. Component footprints are not available.
|
||||||
|
WARNING: Missing tag on THAT1240 instantiated at /work/hardware/eda/circuits/stage1_input.py:47.
|
||||||
|
WARNING: Random tag QgKieWmNoe generated for THAT1240.
|
||||||
|
WARNING: Missing tag on C instantiated at /work/hardware/eda/circuits/stage1_input.py:55.
|
||||||
|
WARNING: Random tag iOc5_iqozn generated for C.
|
||||||
|
WARNING: Missing tag on R instantiated at /work/hardware/eda/circuits/stage1_input.py:56.
|
||||||
|
WARNING: Random tag pZqcRwtR8R generated for R.
|
||||||
|
WARNING: Missing tag on R instantiated at /work/hardware/eda/circuits/stage1_input.py:56.
|
||||||
|
WARNING: Random tag YRKF1YkzBd generated for R.
|
||||||
|
WARNING: Missing tag on D instantiated at /work/hardware/eda/circuits/stage1_input.py:57.
|
||||||
|
WARNING: Random tag 9_z9ZD6kzY generated for D.
|
||||||
|
WARNING: Missing tag on D instantiated at /work/hardware/eda/circuits/stage1_input.py:57.
|
||||||
|
WARNING: Random tag BmXsrS9O5J generated for D.
|
||||||
|
WARNING: Missing tag on C instantiated at /work/hardware/eda/circuits/stage1_input.py:55.
|
||||||
|
WARNING: Random tag AA57mtziiu generated for C.
|
||||||
|
WARNING: Missing tag on R instantiated at /work/hardware/eda/circuits/stage1_input.py:56.
|
||||||
|
WARNING: Random tag OlgSnmTOjl generated for R.
|
||||||
|
WARNING: Missing tag on R instantiated at /work/hardware/eda/circuits/stage1_input.py:56.
|
||||||
|
WARNING: Random tag cs8OUXPRRM generated for R.
|
||||||
|
WARNING: Missing tag on D instantiated at /work/hardware/eda/circuits/stage1_input.py:57.
|
||||||
|
WARNING: Random tag i9mJhNwc3K generated for D.
|
||||||
|
WARNING: Missing tag on D instantiated at /work/hardware/eda/circuits/stage1_input.py:57.
|
||||||
|
WARNING: Random tag UUQtRJt6zT generated for D.
|
||||||
|
WARNING: Missing tag on C instantiated at /work/hardware/eda/circuits/stage1_input.py:76.
|
||||||
|
WARNING: Random tag MU_6d6hLHv generated for C.
|
||||||
|
WARNING: Missing tag on C instantiated at /work/hardware/eda/circuits/stage1_input.py:76.
|
||||||
|
WARNING: Random tag jSRPH3NSVb generated for C.
|
||||||
|
WARNING: Missing tag on instantiated at /work/hardware/kicad/<frozen importlib._bootstrap>:488.
|
||||||
|
INFO: 31 warnings found while generating netlist.
|
||||||
|
INFO: 0 errors found while generating netlist.
|
||||||
|
|
||||||
26
hardware/kicad/stage1_input_sklib.py
Normal file
26
hardware/kicad/stage1_input_sklib.py
Normal file
|
|
@ -0,0 +1,26 @@
|
||||||
|
from collections import defaultdict
|
||||||
|
from skidl import Pin, Part, Alias, SchLib, SKIDL, TEMPLATE
|
||||||
|
|
||||||
|
from skidl.pin import pin_types
|
||||||
|
|
||||||
|
SKIDL_lib_version = '0.0.1'
|
||||||
|
|
||||||
|
stage1_input = SchLib(tool=SKIDL).add_parts(*[
|
||||||
|
Part(**{ 'name':'THAT1240', 'dest':TEMPLATE, 'tool':SKIDL, 'aliases':Alias({'THAT1240'}), 'ref_prefix':'U', 'fplist':None, 'footprint':'Package_SO:SOIC-8_3.9x4.9mm_P1.27mm', 'keywords':None, 'description':'', 'datasheet':None, 'pins':[
|
||||||
|
Pin(num='1',name='REF',func=pin_types.INPUT),
|
||||||
|
Pin(num='2',name='IN-',func=pin_types.INPUT),
|
||||||
|
Pin(num='3',name='IN+',func=pin_types.INPUT),
|
||||||
|
Pin(num='4',name='V-',func=pin_types.PWRIN),
|
||||||
|
Pin(num='5',name='SENSE',func=pin_types.PASSIVE),
|
||||||
|
Pin(num='6',name='OUT',func=pin_types.OUTPUT),
|
||||||
|
Pin(num='7',name='V+',func=pin_types.PWRIN),
|
||||||
|
Pin(num='8',name='NC',func=pin_types.NOCONNECT)] }),
|
||||||
|
Part(**{ 'name':'C', 'dest':TEMPLATE, 'tool':SKIDL, 'aliases':Alias({'C'}), 'ref_prefix':'C', 'fplist':[''], 'footprint':'Capacitor_SMD:C_1206_3216Metric', 'keywords':'cap capacitor', 'description':'Unpolarized capacitor', 'datasheet':'~', 'pins':[
|
||||||
|
Pin(num='1',name='~',func=pin_types.PASSIVE,unit=1),
|
||||||
|
Pin(num='2',name='~',func=pin_types.PASSIVE,unit=1)], 'unit_defs':[] }),
|
||||||
|
Part(**{ 'name':'R', 'dest':TEMPLATE, 'tool':SKIDL, 'aliases':Alias({'R'}), 'ref_prefix':'R', 'fplist':[''], 'footprint':'Resistor_SMD:R_0805_2012Metric', 'keywords':'R res resistor', 'description':'Resistor', 'datasheet':'~', 'pins':[
|
||||||
|
Pin(num='1',name='~',func=pin_types.PASSIVE,unit=1),
|
||||||
|
Pin(num='2',name='~',func=pin_types.PASSIVE,unit=1)], 'unit_defs':[] }),
|
||||||
|
Part(**{ 'name':'D', 'dest':TEMPLATE, 'tool':SKIDL, 'aliases':Alias({'D'}), 'ref_prefix':'D', 'fplist':[''], 'footprint':'Diode_SMD:D_SOD-323', 'keywords':'diode', 'description':'Diode', 'datasheet':'~', 'pins':[
|
||||||
|
Pin(num='1',name='K',func=pin_types.PASSIVE,unit=1),
|
||||||
|
Pin(num='2',name='A',func=pin_types.PASSIVE,unit=1)], 'unit_defs':[] })])
|
||||||
11
hardware/kicad/stage1b_select.erc
Normal file
11
hardware/kicad/stage1b_select.erc
Normal file
|
|
@ -0,0 +1,11 @@
|
||||||
|
ERC WARNING: Only one pin (PASSIVE pin 10/COIL_B of TQ2SA-5V/K1) attached to net K1_DRV.
|
||||||
|
ERC WARNING: Only one pin (PASSIVE pin 3/P1_COM of TQ2SA-5V/K1) attached to net AIN_HOT.
|
||||||
|
ERC WARNING: Only one pin (PASSIVE pin 1/COIL_A of TQ2SA-5V/K1) attached to net +5V.
|
||||||
|
ERC WARNING: Only one pin (PASSIVE pin 4/P1_NC of TQ2SA-5V/K1) attached to net RX_HOT_IN.
|
||||||
|
ERC WARNING: Only one pin (PASSIVE pin 7/P2_NC of TQ2SA-5V/K1) attached to net RX_OUT.
|
||||||
|
ERC WARNING: No pins attached to net SEL_LINST.
|
||||||
|
ERC WARNING: No drivers for net SEL_LINST.
|
||||||
|
ERC WARNING: Only one pin (PASSIVE pin 8/P2_COM of TQ2SA-5V/K1) attached to net STAGE1_OUT.
|
||||||
|
ERC INFO: 8 warnings found while running ERC.
|
||||||
|
ERC INFO: 0 errors found while running ERC.
|
||||||
|
|
||||||
31
hardware/kicad/stage1b_select.log
Normal file
31
hardware/kicad/stage1b_select.log
Normal file
|
|
@ -0,0 +1,31 @@
|
||||||
|
WARNING: KICAD8_SYMBOL_DIR environment variable is missing, so the default KiCad symbol libraries won't be searched. @ [/work/hardware/kicad/<frozen importlib._bootstrap_external>:995=>/work/hardware/kicad/<frozen importlib._bootstrap>:488]
|
||||||
|
WARNING: KICAD6_SYMBOL_DIR environment variable is missing, so the default KiCad symbol libraries won't be searched. @ [/work/hardware/kicad/<frozen importlib._bootstrap_external>:995=>/work/hardware/kicad/<frozen importlib._bootstrap>:488]
|
||||||
|
WARNING: KICAD7_SYMBOL_DIR environment variable is missing, so the default KiCad symbol libraries won't be searched. @ [/work/hardware/kicad/<frozen importlib._bootstrap_external>:995=>/work/hardware/kicad/<frozen importlib._bootstrap>:488]
|
||||||
|
WARNING: fp-lib-table file was not found. Component footprints are not available.
|
||||||
|
WARNING: fp-lib-table file was not found. Component footprints are not available.
|
||||||
|
WARNING: fp-lib-table file was not found. Component footprints are not available.
|
||||||
|
WARNING: fp-lib-table file was not found. Component footprints are not available.
|
||||||
|
WARNING: Missing tag on OPA1641 instantiated at /work/hardware/eda/circuits/stage1b_select.py:55.
|
||||||
|
WARNING: Random tag JMxNatPRjd generated for OPA1641.
|
||||||
|
WARNING: Missing tag on TQ2SA-5V instantiated at /work/hardware/eda/circuits/stage1b_select.py:72.
|
||||||
|
WARNING: Random tag CfzYAxfHjh generated for TQ2SA-5V.
|
||||||
|
WARNING: Missing tag on C instantiated at /work/hardware/eda/circuits/stage1b_select.py:97.
|
||||||
|
WARNING: Random tag Sd0rgwy5pV generated for C.
|
||||||
|
WARNING: Missing tag on R instantiated at /work/hardware/eda/circuits/stage1b_select.py:98.
|
||||||
|
WARNING: Random tag OoRZG4Rm3b generated for R.
|
||||||
|
WARNING: Missing tag on D instantiated at /work/hardware/eda/circuits/stage1b_select.py:99.
|
||||||
|
WARNING: Random tag RSLeGReAd9 generated for D.
|
||||||
|
WARNING: Missing tag on D instantiated at /work/hardware/eda/circuits/stage1b_select.py:99.
|
||||||
|
WARNING: Random tag UOfVnOhhVN generated for D.
|
||||||
|
WARNING: Missing tag on R instantiated at /work/hardware/eda/circuits/stage1b_select.py:108.
|
||||||
|
WARNING: Random tag 3vZeT_Vysx generated for R.
|
||||||
|
WARNING: Missing tag on R instantiated at /work/hardware/eda/circuits/stage1b_select.py:108.
|
||||||
|
WARNING: Random tag u1DrTpQXsB generated for R.
|
||||||
|
WARNING: Missing tag on C instantiated at /work/hardware/eda/circuits/stage1b_select.py:116.
|
||||||
|
WARNING: Random tag UbVM1UVNF7 generated for C.
|
||||||
|
WARNING: Missing tag on C instantiated at /work/hardware/eda/circuits/stage1b_select.py:116.
|
||||||
|
WARNING: Random tag 073687vTIh generated for C.
|
||||||
|
WARNING: Missing tag on instantiated at /work/hardware/kicad/<frozen importlib._bootstrap>:488.
|
||||||
|
INFO: 25 warnings found while generating netlist.
|
||||||
|
INFO: 0 errors found while generating netlist.
|
||||||
|
|
||||||
37
hardware/kicad/stage1b_select_sklib.py
Normal file
37
hardware/kicad/stage1b_select_sklib.py
Normal file
|
|
@ -0,0 +1,37 @@
|
||||||
|
from collections import defaultdict
|
||||||
|
from skidl import Pin, Part, Alias, SchLib, SKIDL, TEMPLATE
|
||||||
|
|
||||||
|
from skidl.pin import pin_types
|
||||||
|
|
||||||
|
SKIDL_lib_version = '0.0.1'
|
||||||
|
|
||||||
|
stage1b_select = SchLib(tool=SKIDL).add_parts(*[
|
||||||
|
Part(**{ 'name':'OPA1641', 'dest':TEMPLATE, 'tool':SKIDL, 'aliases':Alias({'OPA1641'}), 'ref_prefix':'U', 'fplist':None, 'footprint':'Package_SO:SOIC-8_3.9x4.9mm_P1.27mm', 'keywords':None, 'description':'', 'datasheet':None, 'pins':[
|
||||||
|
Pin(num='1',name='NC1',func=pin_types.NOCONNECT),
|
||||||
|
Pin(num='2',name='-IN',func=pin_types.INPUT),
|
||||||
|
Pin(num='3',name='+IN',func=pin_types.INPUT),
|
||||||
|
Pin(num='4',name='V-',func=pin_types.PWRIN),
|
||||||
|
Pin(num='5',name='NC5',func=pin_types.NOCONNECT),
|
||||||
|
Pin(num='6',name='OUT',func=pin_types.OUTPUT),
|
||||||
|
Pin(num='7',name='V+',func=pin_types.PWRIN),
|
||||||
|
Pin(num='8',name='NC8',func=pin_types.NOCONNECT)] }),
|
||||||
|
Part(**{ 'name':'TQ2SA-5V', 'dest':TEMPLATE, 'tool':SKIDL, 'aliases':Alias({'TQ2SA-5V'}), 'ref_prefix':'K', 'fplist':None, 'footprint':'Relay_SMD:Relay_DPDT_Panasonic_TQ2-SA', 'keywords':None, 'description':'', 'datasheet':None, 'pins':[
|
||||||
|
Pin(num='1',name='COIL_A',func=pin_types.PASSIVE),
|
||||||
|
Pin(num='10',name='COIL_B',func=pin_types.PASSIVE),
|
||||||
|
Pin(num='3',name='P1_COM',func=pin_types.PASSIVE),
|
||||||
|
Pin(num='4',name='P1_NC',func=pin_types.PASSIVE),
|
||||||
|
Pin(num='2',name='P1_NO',func=pin_types.PASSIVE),
|
||||||
|
Pin(num='8',name='P2_COM',func=pin_types.PASSIVE),
|
||||||
|
Pin(num='7',name='P2_NC',func=pin_types.PASSIVE),
|
||||||
|
Pin(num='9',name='P2_NO',func=pin_types.PASSIVE),
|
||||||
|
Pin(num='5',name='NC5',func=pin_types.NOCONNECT),
|
||||||
|
Pin(num='6',name='NC6',func=pin_types.NOCONNECT)] }),
|
||||||
|
Part(**{ 'name':'C', 'dest':TEMPLATE, 'tool':SKIDL, 'aliases':Alias({'C'}), 'ref_prefix':'C', 'fplist':[''], 'footprint':'Capacitor_SMD:C_1206_3216Metric', 'keywords':'cap capacitor', 'description':'Unpolarized capacitor', 'datasheet':'~', 'pins':[
|
||||||
|
Pin(num='1',name='~',func=pin_types.PASSIVE,unit=1),
|
||||||
|
Pin(num='2',name='~',func=pin_types.PASSIVE,unit=1)], 'unit_defs':[] }),
|
||||||
|
Part(**{ 'name':'R', 'dest':TEMPLATE, 'tool':SKIDL, 'aliases':Alias({'R'}), 'ref_prefix':'R', 'fplist':[''], 'footprint':'Resistor_SMD:R_0805_2012Metric', 'keywords':'R res resistor', 'description':'Resistor', 'datasheet':'~', 'pins':[
|
||||||
|
Pin(num='1',name='~',func=pin_types.PASSIVE,unit=1),
|
||||||
|
Pin(num='2',name='~',func=pin_types.PASSIVE,unit=1)], 'unit_defs':[] }),
|
||||||
|
Part(**{ 'name':'D', 'dest':TEMPLATE, 'tool':SKIDL, 'aliases':Alias({'D'}), 'ref_prefix':'D', 'fplist':[''], 'footprint':'Diode_SMD:D_SOD-323', 'keywords':'diode', 'description':'Diode', 'datasheet':'~', 'pins':[
|
||||||
|
Pin(num='1',name='K',func=pin_types.PASSIVE,unit=1),
|
||||||
|
Pin(num='2',name='A',func=pin_types.PASSIVE,unit=1)], 'unit_defs':[] })])
|
||||||
15
hardware/kicad/stage2_dac.erc
Normal file
15
hardware/kicad/stage2_dac.erc
Normal file
|
|
@ -0,0 +1,15 @@
|
||||||
|
ERC WARNING: Only one pin (INPUT pin 15/LRCK of PCM5102A/U3) attached to net I2S_LRCK.
|
||||||
|
ERC WARNING: No drivers for net I2S_LRCK.
|
||||||
|
ERC WARNING: Insufficient drive current on net I2S_LRCK for pin INPUT pin 15/LRCK of PCM5102A/U3.
|
||||||
|
ERC WARNING: Only one pin (INPUT pin 13/BCK of PCM5102A/U3) attached to net I2S_BCK.
|
||||||
|
ERC WARNING: No drivers for net I2S_BCK.
|
||||||
|
ERC WARNING: Insufficient drive current on net I2S_BCK for pin INPUT pin 13/BCK of PCM5102A/U3.
|
||||||
|
ERC WARNING: Only one pin (INPUT pin 12/SCK of PCM5102A/U3) attached to net MCLK.
|
||||||
|
ERC WARNING: No drivers for net MCLK.
|
||||||
|
ERC WARNING: Insufficient drive current on net MCLK for pin INPUT pin 12/SCK of PCM5102A/U3.
|
||||||
|
ERC WARNING: Only one pin (INPUT pin 14/DIN of PCM5102A/U3) attached to net I2S_DIN.
|
||||||
|
ERC WARNING: No drivers for net I2S_DIN.
|
||||||
|
ERC WARNING: Insufficient drive current on net I2S_DIN for pin INPUT pin 14/DIN of PCM5102A/U3.
|
||||||
|
ERC INFO: 12 warnings found while running ERC.
|
||||||
|
ERC INFO: 0 errors found while running ERC.
|
||||||
|
|
||||||
45
hardware/kicad/stage2_dac.log
Normal file
45
hardware/kicad/stage2_dac.log
Normal file
|
|
@ -0,0 +1,45 @@
|
||||||
|
WARNING: KICAD8_SYMBOL_DIR environment variable is missing, so the default KiCad symbol libraries won't be searched. @ [/work/hardware/kicad/<frozen importlib._bootstrap_external>:995=>/work/hardware/kicad/<frozen importlib._bootstrap>:488]
|
||||||
|
WARNING: KICAD6_SYMBOL_DIR environment variable is missing, so the default KiCad symbol libraries won't be searched. @ [/work/hardware/kicad/<frozen importlib._bootstrap_external>:995=>/work/hardware/kicad/<frozen importlib._bootstrap>:488]
|
||||||
|
WARNING: KICAD7_SYMBOL_DIR environment variable is missing, so the default KiCad symbol libraries won't be searched. @ [/work/hardware/kicad/<frozen importlib._bootstrap_external>:995=>/work/hardware/kicad/<frozen importlib._bootstrap>:488]
|
||||||
|
WARNING: fp-lib-table file was not found. Component footprints are not available.
|
||||||
|
WARNING: fp-lib-table file was not found. Component footprints are not available.
|
||||||
|
WARNING: fp-lib-table file was not found. Component footprints are not available.
|
||||||
|
WARNING: fp-lib-table file was not found. Component footprints are not available.
|
||||||
|
WARNING: Missing tag on PCM5102A instantiated at /work/hardware/eda/circuits/stage2_dac.py:65.
|
||||||
|
WARNING: Random tag SnNljvRqpw generated for PCM5102A.
|
||||||
|
WARNING: Missing tag on OPA1612 instantiated at /work/hardware/eda/circuits/stage2_dac.py:80.
|
||||||
|
WARNING: Random tag xlt7MeMuUW generated for OPA1612.
|
||||||
|
WARNING: Missing tag on C instantiated at /work/hardware/eda/circuits/stage2_dac.py:90.
|
||||||
|
WARNING: Random tag APxc1ZswyC generated for C.
|
||||||
|
WARNING: Missing tag on C instantiated at /work/hardware/eda/circuits/stage2_dac.py:90.
|
||||||
|
WARNING: Random tag 2Lpho8vvNO generated for C.
|
||||||
|
WARNING: Missing tag on C instantiated at /work/hardware/eda/circuits/stage2_dac.py:90.
|
||||||
|
WARNING: Random tag ckOnqrtEN_ generated for C.
|
||||||
|
WARNING: Missing tag on C instantiated at /work/hardware/eda/circuits/stage2_dac.py:91.
|
||||||
|
WARNING: Random tag u0XfWM3NJZ generated for C.
|
||||||
|
WARNING: Missing tag on C instantiated at /work/hardware/eda/circuits/stage2_dac.py:95.
|
||||||
|
WARNING: Random tag 0nDWAElKnx generated for C.
|
||||||
|
WARNING: Missing tag on C instantiated at /work/hardware/eda/circuits/stage2_dac.py:97.
|
||||||
|
WARNING: Random tag enBI6FilVb generated for C.
|
||||||
|
WARNING: Missing tag on C instantiated at /work/hardware/eda/circuits/stage2_dac.py:98.
|
||||||
|
WARNING: Random tag BsHVUTUgsl generated for C.
|
||||||
|
WARNING: Missing tag on R instantiated at /work/hardware/eda/circuits/stage2_dac.py:106.
|
||||||
|
WARNING: Random tag MwfOtBOy0H generated for R.
|
||||||
|
WARNING: Missing tag on R instantiated at /work/hardware/eda/circuits/stage2_dac.py:115.
|
||||||
|
WARNING: Random tag T191zb3J0X generated for R.
|
||||||
|
WARNING: Missing tag on R instantiated at /work/hardware/eda/circuits/stage2_dac.py:118.
|
||||||
|
WARNING: Random tag PbFpsp3Kl4 generated for R.
|
||||||
|
WARNING: Missing tag on R instantiated at /work/hardware/eda/circuits/stage2_dac.py:118.
|
||||||
|
WARNING: Random tag uQ27wvkIQL generated for R.
|
||||||
|
WARNING: Missing tag on C instantiated at /work/hardware/eda/circuits/stage2_dac.py:119.
|
||||||
|
WARNING: Random tag xSn6HarfSW generated for C.
|
||||||
|
WARNING: Missing tag on C instantiated at /work/hardware/eda/circuits/stage2_dac.py:119.
|
||||||
|
WARNING: Random tag mU_gTQB1ji generated for C.
|
||||||
|
WARNING: Missing tag on C instantiated at /work/hardware/eda/circuits/stage2_dac.py:131.
|
||||||
|
WARNING: Random tag u20v3iP1Ti generated for C.
|
||||||
|
WARNING: Missing tag on C instantiated at /work/hardware/eda/circuits/stage2_dac.py:131.
|
||||||
|
WARNING: Random tag ZBz2Y2o1hX generated for C.
|
||||||
|
WARNING: Missing tag on instantiated at /work/hardware/kicad/<frozen importlib._bootstrap>:488.
|
||||||
|
INFO: 39 warnings found while generating netlist.
|
||||||
|
INFO: 0 errors found while generating netlist.
|
||||||
|
|
||||||
44
hardware/kicad/stage2_dac_sklib.py
Normal file
44
hardware/kicad/stage2_dac_sklib.py
Normal file
|
|
@ -0,0 +1,44 @@
|
||||||
|
from collections import defaultdict
|
||||||
|
from skidl import Pin, Part, Alias, SchLib, SKIDL, TEMPLATE
|
||||||
|
|
||||||
|
from skidl.pin import pin_types
|
||||||
|
|
||||||
|
SKIDL_lib_version = '0.0.1'
|
||||||
|
|
||||||
|
stage2_dac = SchLib(tool=SKIDL).add_parts(*[
|
||||||
|
Part(**{ 'name':'PCM5102A', 'dest':TEMPLATE, 'tool':SKIDL, 'aliases':Alias({'PCM5102A'}), 'ref_prefix':'U', 'fplist':None, 'footprint':'Package_SO:TSSOP-20_4.4x6.5mm_P0.65mm', 'keywords':None, 'description':'', 'datasheet':None, 'pins':[
|
||||||
|
Pin(num='1',name='CPVDD',func=pin_types.PWRIN),
|
||||||
|
Pin(num='2',name='CAPP',func=pin_types.PASSIVE),
|
||||||
|
Pin(num='3',name='CPGND',func=pin_types.PWRIN),
|
||||||
|
Pin(num='4',name='CAPM',func=pin_types.PASSIVE),
|
||||||
|
Pin(num='5',name='VNEG',func=pin_types.PASSIVE),
|
||||||
|
Pin(num='6',name='OUTL',func=pin_types.OUTPUT),
|
||||||
|
Pin(num='7',name='OUTR',func=pin_types.OUTPUT),
|
||||||
|
Pin(num='8',name='AVDD',func=pin_types.PWRIN),
|
||||||
|
Pin(num='9',name='AGND',func=pin_types.PWRIN),
|
||||||
|
Pin(num='10',name='DEMP',func=pin_types.INPUT),
|
||||||
|
Pin(num='11',name='FLT',func=pin_types.INPUT),
|
||||||
|
Pin(num='12',name='SCK',func=pin_types.INPUT),
|
||||||
|
Pin(num='13',name='BCK',func=pin_types.INPUT),
|
||||||
|
Pin(num='14',name='DIN',func=pin_types.INPUT),
|
||||||
|
Pin(num='15',name='LRCK',func=pin_types.INPUT),
|
||||||
|
Pin(num='16',name='FMT',func=pin_types.INPUT),
|
||||||
|
Pin(num='17',name='XSMT',func=pin_types.INPUT),
|
||||||
|
Pin(num='18',name='LDOO',func=pin_types.PWROUT),
|
||||||
|
Pin(num='19',name='DGND',func=pin_types.PWRIN),
|
||||||
|
Pin(num='20',name='DVDD',func=pin_types.PWRIN)] }),
|
||||||
|
Part(**{ 'name':'OPA1612', 'dest':TEMPLATE, 'tool':SKIDL, 'aliases':Alias({'OPA1612'}), 'ref_prefix':'U', 'fplist':None, 'footprint':'Package_SO:SOIC-8_3.9x4.9mm_P1.27mm', 'keywords':None, 'description':'', 'datasheet':None, 'pins':[
|
||||||
|
Pin(num='1',name='OUTA',func=pin_types.OUTPUT),
|
||||||
|
Pin(num='2',name='-INA',func=pin_types.INPUT),
|
||||||
|
Pin(num='3',name='+INA',func=pin_types.INPUT),
|
||||||
|
Pin(num='4',name='V-',func=pin_types.PWRIN),
|
||||||
|
Pin(num='5',name='+INB',func=pin_types.INPUT),
|
||||||
|
Pin(num='6',name='-INB',func=pin_types.INPUT),
|
||||||
|
Pin(num='7',name='OUTB',func=pin_types.OUTPUT),
|
||||||
|
Pin(num='8',name='V+',func=pin_types.PWRIN)] }),
|
||||||
|
Part(**{ 'name':'C', 'dest':TEMPLATE, 'tool':SKIDL, 'aliases':Alias({'C'}), 'ref_prefix':'C', 'fplist':[''], 'footprint':'Capacitor_SMD:C_0805_2012Metric', 'keywords':'cap capacitor', 'description':'Unpolarized capacitor', 'datasheet':'~', 'pins':[
|
||||||
|
Pin(num='1',name='~',func=pin_types.PASSIVE,unit=1),
|
||||||
|
Pin(num='2',name='~',func=pin_types.PASSIVE,unit=1)], 'unit_defs':[] }),
|
||||||
|
Part(**{ 'name':'R', 'dest':TEMPLATE, 'tool':SKIDL, 'aliases':Alias({'R'}), 'ref_prefix':'R', 'fplist':[''], 'footprint':'Resistor_SMD:R_0805_2012Metric', 'keywords':'R res resistor', 'description':'Resistor', 'datasheet':'~', 'pins':[
|
||||||
|
Pin(num='1',name='~',func=pin_types.PASSIVE,unit=1),
|
||||||
|
Pin(num='2',name='~',func=pin_types.PASSIVE,unit=1)], 'unit_defs':[] })])
|
||||||
5
hardware/kicad/stage3_sum.erc
Normal file
5
hardware/kicad/stage3_sum.erc
Normal file
|
|
@ -0,0 +1,5 @@
|
||||||
|
ERC WARNING: Only one pin (PASSIVE pin 1/~ of R/R1) attached to net STAGE1_OUT.
|
||||||
|
ERC WARNING: Only one pin (PASSIVE pin 1/~ of R/R2) attached to net CLICK_OUT.
|
||||||
|
ERC INFO: 2 warnings found while running ERC.
|
||||||
|
ERC INFO: 0 errors found while running ERC.
|
||||||
|
|
||||||
23
hardware/kicad/stage3_sum.log
Normal file
23
hardware/kicad/stage3_sum.log
Normal file
|
|
@ -0,0 +1,23 @@
|
||||||
|
WARNING: KICAD8_SYMBOL_DIR environment variable is missing, so the default KiCad symbol libraries won't be searched. @ [/work/hardware/kicad/<frozen importlib._bootstrap_external>:995=>/work/hardware/kicad/<frozen importlib._bootstrap>:488]
|
||||||
|
WARNING: KICAD6_SYMBOL_DIR environment variable is missing, so the default KiCad symbol libraries won't be searched. @ [/work/hardware/kicad/<frozen importlib._bootstrap_external>:995=>/work/hardware/kicad/<frozen importlib._bootstrap>:488]
|
||||||
|
WARNING: KICAD7_SYMBOL_DIR environment variable is missing, so the default KiCad symbol libraries won't be searched. @ [/work/hardware/kicad/<frozen importlib._bootstrap_external>:995=>/work/hardware/kicad/<frozen importlib._bootstrap>:488]
|
||||||
|
WARNING: fp-lib-table file was not found. Component footprints are not available.
|
||||||
|
WARNING: fp-lib-table file was not found. Component footprints are not available.
|
||||||
|
WARNING: fp-lib-table file was not found. Component footprints are not available.
|
||||||
|
WARNING: fp-lib-table file was not found. Component footprints are not available.
|
||||||
|
WARNING: Missing tag on OPA1612 instantiated at /work/hardware/eda/circuits/stage3_sum.py:50.
|
||||||
|
WARNING: Random tag 5n2wh6xRRe generated for OPA1612.
|
||||||
|
WARNING: Missing tag on R instantiated at /work/hardware/eda/circuits/stage3_sum.py:53.
|
||||||
|
WARNING: Random tag PsTgUzSm6S generated for R.
|
||||||
|
WARNING: Missing tag on R instantiated at /work/hardware/eda/circuits/stage3_sum.py:53.
|
||||||
|
WARNING: Random tag MJ5MDnj_yt generated for R.
|
||||||
|
WARNING: Missing tag on R instantiated at /work/hardware/eda/circuits/stage3_sum.py:53.
|
||||||
|
WARNING: Random tag RyhIEBAL2O generated for R.
|
||||||
|
WARNING: Missing tag on C instantiated at /work/hardware/eda/circuits/stage3_sum.py:63.
|
||||||
|
WARNING: Random tag oOB0ftP80i generated for C.
|
||||||
|
WARNING: Missing tag on C instantiated at /work/hardware/eda/circuits/stage3_sum.py:63.
|
||||||
|
WARNING: Random tag NmK6U68Pr1 generated for C.
|
||||||
|
WARNING: Missing tag on instantiated at /work/hardware/kicad/<frozen importlib._bootstrap>:488.
|
||||||
|
INFO: 17 warnings found while generating netlist.
|
||||||
|
INFO: 0 errors found while generating netlist.
|
||||||
|
|
||||||
23
hardware/kicad/stage3_sum_sklib.py
Normal file
23
hardware/kicad/stage3_sum_sklib.py
Normal file
|
|
@ -0,0 +1,23 @@
|
||||||
|
from collections import defaultdict
|
||||||
|
from skidl import Pin, Part, Alias, SchLib, SKIDL, TEMPLATE
|
||||||
|
|
||||||
|
from skidl.pin import pin_types
|
||||||
|
|
||||||
|
SKIDL_lib_version = '0.0.1'
|
||||||
|
|
||||||
|
stage3_sum = SchLib(tool=SKIDL).add_parts(*[
|
||||||
|
Part(**{ 'name':'OPA1612', 'dest':TEMPLATE, 'tool':SKIDL, 'aliases':Alias({'OPA1612'}), 'ref_prefix':'U', 'fplist':None, 'footprint':'Package_SO:SOIC-8_3.9x4.9mm_P1.27mm', 'keywords':None, 'description':'', 'datasheet':None, 'pins':[
|
||||||
|
Pin(num='1',name='OUTA',func=pin_types.OUTPUT),
|
||||||
|
Pin(num='2',name='-INA',func=pin_types.INPUT),
|
||||||
|
Pin(num='3',name='+INA',func=pin_types.INPUT),
|
||||||
|
Pin(num='4',name='V-',func=pin_types.PWRIN),
|
||||||
|
Pin(num='5',name='+INB',func=pin_types.INPUT),
|
||||||
|
Pin(num='6',name='-INB',func=pin_types.INPUT),
|
||||||
|
Pin(num='7',name='OUTB',func=pin_types.OUTPUT),
|
||||||
|
Pin(num='8',name='V+',func=pin_types.PWRIN)] }),
|
||||||
|
Part(**{ 'name':'R', 'dest':TEMPLATE, 'tool':SKIDL, 'aliases':Alias({'R'}), 'ref_prefix':'R', 'fplist':[''], 'footprint':'Resistor_SMD:R_0805_2012Metric', 'keywords':'R res resistor', 'description':'Resistor', 'datasheet':'~', 'pins':[
|
||||||
|
Pin(num='1',name='~',func=pin_types.PASSIVE,unit=1),
|
||||||
|
Pin(num='2',name='~',func=pin_types.PASSIVE,unit=1)], 'unit_defs':[] }),
|
||||||
|
Part(**{ 'name':'C', 'dest':TEMPLATE, 'tool':SKIDL, 'aliases':Alias({'C'}), 'ref_prefix':'C', 'fplist':[''], 'footprint':'Capacitor_SMD:C_0805_2012Metric', 'keywords':'cap capacitor', 'description':'Unpolarized capacitor', 'datasheet':'~', 'pins':[
|
||||||
|
Pin(num='1',name='~',func=pin_types.PASSIVE,unit=1),
|
||||||
|
Pin(num='2',name='~',func=pin_types.PASSIVE,unit=1)], 'unit_defs':[] })])
|
||||||
12
hardware/kicad/stage4_driver.erc
Normal file
12
hardware/kicad/stage4_driver.erc
Normal file
|
|
@ -0,0 +1,12 @@
|
||||||
|
ERC WARNING: Only one pin (PASSIVE pin 10/COIL_B of TQ2SA-5V/K2) attached to net K2_DRV.
|
||||||
|
ERC WARNING: Only one pin (PASSIVE pin 1/1 of R_Potentiometer/RV1) attached to net MIX_OUT.
|
||||||
|
ERC WARNING: Only one pin (PASSIVE pin 10/COIL_B of TQ2SA-5V/K3) attached to net K3_DRV.
|
||||||
|
ERC WARNING: Unconnected pin: PASSIVE pin 2/P1_NO of TQ2SA-5V/K2.
|
||||||
|
ERC WARNING: Unconnected pin: PASSIVE pin 9/P2_NO of TQ2SA-5V/K2.
|
||||||
|
ERC WARNING: Unconnected pin: PASSIVE pin 2/P1_NO of TQ2SA-5V/K3.
|
||||||
|
ERC WARNING: Unconnected pin: PASSIVE pin 8/P2_COM of TQ2SA-5V/K3.
|
||||||
|
ERC WARNING: Unconnected pin: PASSIVE pin 7/P2_NC of TQ2SA-5V/K3.
|
||||||
|
ERC WARNING: Unconnected pin: PASSIVE pin 9/P2_NO of TQ2SA-5V/K3.
|
||||||
|
ERC INFO: 9 warnings found while running ERC.
|
||||||
|
ERC INFO: 0 errors found while running ERC.
|
||||||
|
|
||||||
31
hardware/kicad/stage4_driver.log
Normal file
31
hardware/kicad/stage4_driver.log
Normal file
|
|
@ -0,0 +1,31 @@
|
||||||
|
WARNING: KICAD8_SYMBOL_DIR environment variable is missing, so the default KiCad symbol libraries won't be searched. @ [/work/hardware/kicad/<frozen importlib._bootstrap_external>:995=>/work/hardware/kicad/<frozen importlib._bootstrap>:488]
|
||||||
|
WARNING: KICAD6_SYMBOL_DIR environment variable is missing, so the default KiCad symbol libraries won't be searched. @ [/work/hardware/kicad/<frozen importlib._bootstrap_external>:995=>/work/hardware/kicad/<frozen importlib._bootstrap>:488]
|
||||||
|
WARNING: KICAD7_SYMBOL_DIR environment variable is missing, so the default KiCad symbol libraries won't be searched. @ [/work/hardware/kicad/<frozen importlib._bootstrap_external>:995=>/work/hardware/kicad/<frozen importlib._bootstrap>:488]
|
||||||
|
WARNING: fp-lib-table file was not found. Component footprints are not available.
|
||||||
|
WARNING: fp-lib-table file was not found. Component footprints are not available.
|
||||||
|
WARNING: fp-lib-table file was not found. Component footprints are not available.
|
||||||
|
WARNING: fp-lib-table file was not found. Component footprints are not available.
|
||||||
|
WARNING: Missing tag on THAT1646 instantiated at /work/hardware/eda/circuits/stage4_driver.py:57.
|
||||||
|
WARNING: Random tag jOycpJtysP generated for THAT1646.
|
||||||
|
WARNING: Missing tag on TQ2SA-5V instantiated at /work/hardware/eda/circuits/stage4_driver.py:75.
|
||||||
|
WARNING: Random tag 8YvHjEQvvL generated for TQ2SA-5V.
|
||||||
|
WARNING: Missing tag on TQ2SA-5V instantiated at /work/hardware/eda/circuits/stage4_driver.py:75.
|
||||||
|
WARNING: Random tag gbZbaJRgHN generated for TQ2SA-5V.
|
||||||
|
WARNING: Missing tag on R_Potentiometer instantiated at /work/hardware/eda/circuits/stage4_driver.py:82.
|
||||||
|
WARNING: Random tag TtWL0siwIj generated for R_Potentiometer.
|
||||||
|
WARNING: Missing tag on C instantiated at /work/hardware/eda/circuits/stage4_driver.py:91.
|
||||||
|
WARNING: Random tag Il2xsDxaas generated for C.
|
||||||
|
WARNING: Missing tag on C instantiated at /work/hardware/eda/circuits/stage4_driver.py:91.
|
||||||
|
WARNING: Random tag h4JnvQCBxp generated for C.
|
||||||
|
WARNING: Missing tag on R instantiated at /work/hardware/eda/circuits/stage4_driver.py:94.
|
||||||
|
WARNING: Random tag 49MKQ_ERoo generated for R.
|
||||||
|
WARNING: Missing tag on R instantiated at /work/hardware/eda/circuits/stage4_driver.py:94.
|
||||||
|
WARNING: Random tag L4esGcufU5 generated for R.
|
||||||
|
WARNING: Missing tag on R instantiated at /work/hardware/eda/circuits/stage4_driver.py:105.
|
||||||
|
WARNING: Random tag xtw8oitG50 generated for R.
|
||||||
|
WARNING: Missing tag on C instantiated at /work/hardware/eda/circuits/stage4_driver.py:105.
|
||||||
|
WARNING: Random tag 5KGv1Z40Bi generated for C.
|
||||||
|
WARNING: Missing tag on instantiated at /work/hardware/kicad/<frozen importlib._bootstrap>:488.
|
||||||
|
INFO: 25 warnings found while generating netlist.
|
||||||
|
INFO: 0 errors found while generating netlist.
|
||||||
|
|
||||||
38
hardware/kicad/stage4_driver_sklib.py
Normal file
38
hardware/kicad/stage4_driver_sklib.py
Normal file
|
|
@ -0,0 +1,38 @@
|
||||||
|
from collections import defaultdict
|
||||||
|
from skidl import Pin, Part, Alias, SchLib, SKIDL, TEMPLATE
|
||||||
|
|
||||||
|
from skidl.pin import pin_types
|
||||||
|
|
||||||
|
SKIDL_lib_version = '0.0.1'
|
||||||
|
|
||||||
|
stage4_driver = SchLib(tool=SKIDL).add_parts(*[
|
||||||
|
Part(**{ 'name':'THAT1646', 'dest':TEMPLATE, 'tool':SKIDL, 'aliases':Alias({'THAT1646'}), 'ref_prefix':'U', 'fplist':None, 'footprint':'Package_SO:SOIC-8_3.9x4.9mm_P1.27mm', 'keywords':None, 'description':'', 'datasheet':None, 'pins':[
|
||||||
|
Pin(num='1',name='OUT-',func=pin_types.OUTPUT),
|
||||||
|
Pin(num='2',name='SNS-',func=pin_types.INPUT),
|
||||||
|
Pin(num='3',name='GND',func=pin_types.PWRIN),
|
||||||
|
Pin(num='4',name='IN',func=pin_types.INPUT),
|
||||||
|
Pin(num='5',name='V-',func=pin_types.PWRIN),
|
||||||
|
Pin(num='6',name='V+',func=pin_types.PWRIN),
|
||||||
|
Pin(num='7',name='SNS+',func=pin_types.INPUT),
|
||||||
|
Pin(num='8',name='OUT+',func=pin_types.OUTPUT)] }),
|
||||||
|
Part(**{ 'name':'TQ2SA-5V', 'dest':TEMPLATE, 'tool':SKIDL, 'aliases':Alias({'TQ2SA-5V'}), 'ref_prefix':'K', 'fplist':None, 'footprint':'Relay_SMD:Relay_DPDT_Panasonic_TQ2-SA', 'keywords':None, 'description':'', 'datasheet':None, 'pins':[
|
||||||
|
Pin(num='1',name='COIL_A',func=pin_types.PASSIVE),
|
||||||
|
Pin(num='10',name='COIL_B',func=pin_types.PASSIVE),
|
||||||
|
Pin(num='3',name='P1_COM',func=pin_types.PASSIVE),
|
||||||
|
Pin(num='4',name='P1_NC',func=pin_types.PASSIVE),
|
||||||
|
Pin(num='2',name='P1_NO',func=pin_types.PASSIVE),
|
||||||
|
Pin(num='8',name='P2_COM',func=pin_types.PASSIVE),
|
||||||
|
Pin(num='7',name='P2_NC',func=pin_types.PASSIVE),
|
||||||
|
Pin(num='9',name='P2_NO',func=pin_types.PASSIVE),
|
||||||
|
Pin(num='5',name='NC5',func=pin_types.NOCONNECT),
|
||||||
|
Pin(num='6',name='NC6',func=pin_types.NOCONNECT)] }),
|
||||||
|
Part(**{ 'name':'R_Potentiometer', 'dest':TEMPLATE, 'tool':SKIDL, 'aliases':Alias({'R_Potentiometer'}), 'ref_prefix':'RV', 'fplist':[''], 'footprint':'Potentiometer_THT:Potentiometer_Bourns_3296W_Vertical', 'keywords':'resistor variable', 'description':'Potentiometer', 'datasheet':'~', 'pins':[
|
||||||
|
Pin(num='1',name='1',func=pin_types.PASSIVE,unit=1),
|
||||||
|
Pin(num='3',name='3',func=pin_types.PASSIVE,unit=1),
|
||||||
|
Pin(num='2',name='2',func=pin_types.PASSIVE,unit=1)], 'unit_defs':[] }),
|
||||||
|
Part(**{ 'name':'C', 'dest':TEMPLATE, 'tool':SKIDL, 'aliases':Alias({'C'}), 'ref_prefix':'C', 'fplist':[''], 'footprint':'Capacitor_SMD:C_0805_2012Metric', 'keywords':'cap capacitor', 'description':'Unpolarized capacitor', 'datasheet':'~', 'pins':[
|
||||||
|
Pin(num='1',name='~',func=pin_types.PASSIVE,unit=1),
|
||||||
|
Pin(num='2',name='~',func=pin_types.PASSIVE,unit=1)], 'unit_defs':[] }),
|
||||||
|
Part(**{ 'name':'R', 'dest':TEMPLATE, 'tool':SKIDL, 'aliases':Alias({'R'}), 'ref_prefix':'R', 'fplist':[''], 'footprint':'Resistor_SMD:R_0805_2012Metric', 'keywords':'R res resistor', 'description':'Resistor', 'datasheet':'~', 'pins':[
|
||||||
|
Pin(num='1',name='~',func=pin_types.PASSIVE,unit=1),
|
||||||
|
Pin(num='2',name='~',func=pin_types.PASSIVE,unit=1)], 'unit_defs':[] })])
|
||||||
|
|
@ -13,7 +13,7 @@
|
||||||
|
|
||||||
import board, busio, digitalio, pwmio, displayio, vectorio, time, json, gc, os, supervisor
|
import board, busio, digitalio, pwmio, displayio, vectorio, time, json, gc, os, supervisor
|
||||||
supervisor.runtime.autoreload = False # we write our own files (log + pushed programs); never self-restart
|
supervisor.runtime.autoreload = False # we write our own files (log + pushed programs); never self-restart
|
||||||
APP_VERSION = "0.0.5" # firmware version (the A/B updater pushes/compares this)
|
APP_VERSION = "0.0.4" # firmware version (the A/B updater pushes/compares this)
|
||||||
DEVICE_ID = "X" # 'X' = Explorer, 'K' = 52Pi kit (per docs/livesync-protocol.md and the version reply)
|
DEVICE_ID = "X" # 'X' = Explorer, 'K' = 52Pi kit (per docs/livesync-protocol.md and the version reply)
|
||||||
try:
|
try:
|
||||||
import rtc # set from the editor's clock SysEx so the log has real timestamps
|
import rtc # set from the editor's clock SysEx so the log has real timestamps
|
||||||
|
|
@ -39,9 +39,8 @@ MUTE_SPEAKER = False # always silence the on-board piezo
|
||||||
SPEAKER_AUTO_MUTE = False # auto-mute the piezo when a MIDI host is listening. DEFAULT OFF on Explorer:
|
SPEAKER_AUTO_MUTE = False # auto-mute the piezo when a MIDI host is listening. DEFAULT OFF on Explorer:
|
||||||
# Live sync sends a FULL heartbeat every 5s which would silence the piezo otherwise.
|
# Live sync sends a FULL heartbeat every 5s which would silence the piezo otherwise.
|
||||||
# Toggle to Auto in Settings if you ARE using "Device audio" in the editor.
|
# Toggle to Auto in Settings if you ARE using "Device audio" in the editor.
|
||||||
AMP_EN_ON_VALUE = True # digital value that ENABLES the piezo amp. The firmware just holds the pin at this
|
AMP_EN_ACTIVE_HIGH = True # piezo amp enable polarity. If you HEAR sound from the piezo only when click()
|
||||||
# value the whole time (no per-click toggling - too fiddly). If you HEAR NOTHING from
|
# has just timed out (~22ms after a beat), flip this to False - your amp is active-low.
|
||||||
# the piezo, flip this to False - your board's amp is active-low.
|
|
||||||
DISPLAY_ROTATION = 270 # 0=native landscape; 90/270 = portrait. Hold the device with A/B/C
|
DISPLAY_ROTATION = 270 # 0=native landscape; 90/270 = portrait. Hold the device with A/B/C
|
||||||
# on top: try 270 first; if upside-down try 90; 180 = flipped landscape.
|
# on top: try 270 first; if upside-down try 90; 180 = flipped landscape.
|
||||||
|
|
||||||
|
|
@ -56,9 +55,9 @@ P_SDA, P_SCL = board.GP20, board.GP21 # QwSTEMMA (unuse
|
||||||
# call display.rotation = DISPLAY_ROTATION (above) to turn it portrait so the layout has the same
|
# call display.rotation = DISPLAY_ROTATION (above) to turn it portrait so the layout has the same
|
||||||
# shape as the PM_K-1 Kit's portrait UI but in 240x320 instead of 320x480.
|
# shape as the PM_K-1 Kit's portrait UI but in 240x320 instead of 320x480.
|
||||||
WIDTH, HEIGHT = 240, 320
|
WIDTH, HEIGHT = 240, 320
|
||||||
GRID_TOP = 116 # top of the pad grid (header is 29-px-tall logo + clear gap = ~34 px)
|
GRID_TOP = 110 # top of the pad grid (compact header + meters + title fit above)
|
||||||
MAXLANES = 4 # lanes visible on the pad grid (parser still accepts more; they just play silent)
|
MAXLANES = 4 # lanes visible on the pad grid (parser still accepts more; they just play silent)
|
||||||
LOG_TOP, LOG_ROWH, LOG_ROWS = 224, 14, 5 # footer practice log: rows below the grid like the Kit
|
LOG_TOP, LOG_ROWH, LOG_ROWS = 218, 14, 6 # footer practice log: rows below the grid like the Kit
|
||||||
MIN_LOG_SEC = 5 # don't log plays shorter than this
|
MIN_LOG_SEC = 5 # don't log plays shorter than this
|
||||||
LOG_MENU_ROWS = 8 # log entries shown in the Practice-log menu screen (longer history view)
|
LOG_MENU_ROWS = 8 # log entries shown in the Practice-log menu screen (longer history view)
|
||||||
|
|
||||||
|
|
@ -343,7 +342,7 @@ class App:
|
||||||
self._fw = None; self._fw_n = 0; self._fw_pushing = False # chunked firmware transfer state + bus-quiet flag
|
self._fw = None; self._fw_n = 0; self._fw_pushing = False # chunked firmware transfer state + bus-quiet flag
|
||||||
self.spk = pwmio.PWMOut(P_AUDIO, frequency=1600, variable_frequency=True, duty_cycle=0)
|
self.spk = pwmio.PWMOut(P_AUDIO, frequency=1600, variable_frequency=True, duty_cycle=0)
|
||||||
self.amp_en = digitalio.DigitalInOut(P_AMPEN); self.amp_en.direction = digitalio.Direction.OUTPUT
|
self.amp_en = digitalio.DigitalInOut(P_AMPEN); self.amp_en.direction = digitalio.Direction.OUTPUT
|
||||||
self.amp_en.value = AMP_EN_ON_VALUE # hold the amp enabled the whole time; flip AMP_EN_ON_VALUE if no sound
|
self._amp(False) # amp off when no audio playing (saves power, kills hum)
|
||||||
self.spk_off = 0
|
self.spk_off = 0
|
||||||
# buttons - all active-low with internal pull-ups
|
# buttons - all active-low with internal pull-ups
|
||||||
self.btnA = self._btn(P_BTNA); self.btnB = self._btn(P_BTNB); self.btnC = self._btn(P_BTNC)
|
self.btnA = self._btn(P_BTNA); self.btnB = self._btn(P_BTNB); self.btnC = self._btn(P_BTNC)
|
||||||
|
|
@ -404,25 +403,24 @@ class App:
|
||||||
def _build_scene(self):
|
def _build_scene(self):
|
||||||
root = displayio.Group(); self.display.root_group = root
|
root = displayio.Group(); self.display.root_group = root
|
||||||
root.append(rect(0, 0, WIDTH, HEIGHT, C_BG))
|
root.append(rect(0, 0, WIDTH, HEIGHT, C_BG))
|
||||||
# Header (y 0..33): VARASYS logo is 29 px tall - position the logo with a 4 px top margin and put the
|
# Header (y 0..28): VARASYS logo + version + (right edge) MIDI/USB badges + run dot
|
||||||
# divider at y=34 so it clears the V (the previous y=28 sat ~halfway through the V).
|
|
||||||
if LOGO:
|
if LOGO:
|
||||||
tg, _p, lw, lh = make_glyph(LOGO, C_CYAN, C_BG); tg.x = 8; tg.y = 4; root.append(tg)
|
tg, _p, lw, lh = make_glyph(LOGO, C_CYAN, C_BG); tg.x = 8; tg.y = 8; root.append(tg)
|
||||||
lx = 8 + lw
|
lx = 8 + lw
|
||||||
else:
|
else:
|
||||||
tg, w, h = make_text("VARASYS", FONT_M, C_CYAN, C_BG); tg.x = 8; tg.y = 8; root.append(tg)
|
tg, w, h = make_text("VARASYS", FONT_M, C_CYAN, C_BG); tg.x = 8; tg.y = 8; root.append(tg)
|
||||||
lx = 8 + w
|
lx = 8 + w
|
||||||
vtg, vw, vh = make_text("v" + APP_VERSION, FONT_S, C_DIM, C_BG); vtg.x = lx + 4; vtg.y = 20; root.append(vtg)
|
vtg, vw, vh = make_text("v" + APP_VERSION, FONT_S, C_DIM, C_BG); vtg.x = lx + 4; vtg.y = 10; root.append(vtg)
|
||||||
# Run dot + MIDI/USB icons packed at the right edge (replaces the Kit's hamburger; C button opens the menu)
|
# Run dot + MIDI/USB icons packed at the right edge (replaces the Kit's hamburger; C button opens the menu)
|
||||||
self.run_dot_pal = displayio.Palette(1); self.run_dot_pal[0] = C_RUN_IDLE
|
self.run_dot_pal = displayio.Palette(1); self.run_dot_pal[0] = C_RUN_IDLE
|
||||||
self.run_dot = vectorio.Circle(pixel_shader=self.run_dot_pal, radius=4, x=WIDTH - 12, y=18)
|
self.run_dot = vectorio.Circle(pixel_shader=self.run_dot_pal, radius=4, x=WIDTH - 12, y=14)
|
||||||
root.append(self.run_dot)
|
root.append(self.run_dot)
|
||||||
x = WIDTH - 22 # icons live to the LEFT of the run dot
|
x = WIDTH - 22 # icons live to the LEFT of the run dot
|
||||||
for asset, attr in ((ICON_USB, "ic_usb_pal"), (ICON_MIDI, "ic_midi_pal")):
|
for asset, attr in ((ICON_USB, "ic_usb_pal"), (ICON_MIDI, "ic_midi_pal")):
|
||||||
if asset:
|
if asset:
|
||||||
tg, pal, w, h = make_glyph(asset, C_DIM, C_BG); x -= w; tg.x = x; tg.y = 6; x -= 6
|
tg, pal, w, h = make_glyph(asset, C_DIM, C_BG); x -= w; tg.x = x; tg.y = 8; x -= 6
|
||||||
root.append(tg); setattr(self, attr, pal)
|
root.append(tg); setattr(self, attr, pal)
|
||||||
root.append(rect(0, 34, WIDTH, 1, C_PANEL)) # header divider clears the 29-px logo
|
root.append(rect(0, 28, WIDTH, 1, C_PANEL)) # header divider
|
||||||
# Dynamic groups - layout order matches the Kit (BPM big at top-right + meters left;
|
# Dynamic groups - layout order matches the Kit (BPM big at top-right + meters left;
|
||||||
# then ramp/trainer indicators; then setlist tab + CONT; then track title; then pad grid).
|
# then ramp/trainer indicators; then setlist tab + CONT; then track title; then pad grid).
|
||||||
self.g_bpm = displayio.Group(); root.append(self.g_bpm) # big BPM (right, y ~44)
|
self.g_bpm = displayio.Group(); root.append(self.g_bpm) # big BPM (right, y ~44)
|
||||||
|
|
@ -566,7 +564,7 @@ class App:
|
||||||
cur = "off" if MUTE_SPEAKER else ("auto" if SPEAKER_AUTO_MUTE else "always")
|
cur = "off" if MUTE_SPEAKER else ("auto" if SPEAKER_AUTO_MUTE else "always")
|
||||||
i = (modes.index(cur) + d) % 3
|
i = (modes.index(cur) + d) % 3
|
||||||
MUTE_SPEAKER = (modes[i] == "off"); SPEAKER_AUTO_MUTE = (modes[i] == "auto")
|
MUTE_SPEAKER = (modes[i] == "off"); SPEAKER_AUTO_MUTE = (modes[i] == "auto")
|
||||||
if MUTE_SPEAKER: self.spk.duty_cycle = 0
|
if MUTE_SPEAKER: self.spk.duty_cycle = 0; self._amp(False)
|
||||||
self._save_settings(); self._draw_settings()
|
self._save_settings(); self._draw_settings()
|
||||||
def _adj_midi_out(self, d):
|
def _adj_midi_out(self, d):
|
||||||
global MIDI_ENABLED
|
global MIDI_ENABLED
|
||||||
|
|
@ -715,10 +713,13 @@ class App:
|
||||||
self._seg_start = time.monotonic()
|
self._seg_start = time.monotonic()
|
||||||
|
|
||||||
# ---------- audio + run-state indicator ----------
|
# ---------- audio + run-state indicator ----------
|
||||||
def click(self, level): # amp is held enabled at boot; click just drives PWM
|
def _amp(self, on): # respect AMP_EN_ACTIVE_HIGH (flip in CONFIG if your amp is active-low)
|
||||||
|
self.amp_en.value = on if AMP_EN_ACTIVE_HIGH else not on
|
||||||
|
def click(self, level):
|
||||||
|
self._amp(True) # enable the amp briefly while we drive the piezo
|
||||||
self.spk.frequency = {2: 2300, 1: 1600, 3: 1050}.get(level, 1600)
|
self.spk.frequency = {2: 2300, 1: 1600, 3: 1050}.get(level, 1600)
|
||||||
self.spk.duty_cycle = {2: 42000, 1: 30000, 3: 14000}.get(level, 30000)
|
self.spk.duty_cycle = {2: 42000, 1: 30000, 3: 14000}.get(level, 30000)
|
||||||
self.spk_off = time.monotonic_ns() + 22_000_000 # PWM is silenced after 22ms by tick()
|
self.spk_off = time.monotonic_ns() + 22_000_000 # silence + amp off scheduled in tick()
|
||||||
def _set_run_dot(self):
|
def _set_run_dot(self):
|
||||||
self.run_dot_pal[0] = C_RUN_GO if self.running else C_RUN_IDLE
|
self.run_dot_pal[0] = C_RUN_GO if self.running else C_RUN_IDLE
|
||||||
self.dirty = True
|
self.dirty = True
|
||||||
|
|
@ -861,7 +862,7 @@ class App:
|
||||||
try: self.midi.write(self._start_byte)
|
try: self.midi.write(self._start_byte)
|
||||||
except Exception: pass
|
except Exception: pass
|
||||||
else:
|
else:
|
||||||
self.spk.duty_cycle = 0; self.reset_playheads(); self._log_play()
|
self.spk.duty_cycle = 0; self._amp(False); self.reset_playheads(); self._log_play()
|
||||||
if MIDI_CLOCK_OUT and MIDI_CLOCK_OUT_TRANSPORT and self.midi is not None:
|
if MIDI_CLOCK_OUT and MIDI_CLOCK_OUT_TRANSPORT and self.midi is not None:
|
||||||
try: self.midi.write(self._stop_byte)
|
try: self.midi.write(self._stop_byte)
|
||||||
except Exception: pass
|
except Exception: pass
|
||||||
|
|
@ -893,7 +894,7 @@ class App:
|
||||||
def tick(self):
|
def tick(self):
|
||||||
now = time.monotonic_ns()
|
now = time.monotonic_ns()
|
||||||
if self.spk_off and now >= self.spk_off:
|
if self.spk_off and now >= self.spk_off:
|
||||||
self.spk.duty_cycle = 0; self.spk_off = 0
|
self.spk.duty_cycle = 0; self.spk_off = 0; self._amp(False)
|
||||||
if self._slaved and (now - self._clock_in_last_t) > 1_000_000_000: self._slaved = False
|
if self._slaved and (now - self._clock_in_last_t) > 1_000_000_000: self._slaved = False
|
||||||
if self.running:
|
if self.running:
|
||||||
fired_best = 0; fired_prio = -1
|
fired_best = 0; fired_prio = -1
|
||||||
|
|
@ -1126,7 +1127,7 @@ class App:
|
||||||
if host != self.midi_host:
|
if host != self.midi_host:
|
||||||
self.midi_host = host
|
self.midi_host = host
|
||||||
if host and SPEAKER_AUTO_MUTE:
|
if host and SPEAKER_AUTO_MUTE:
|
||||||
self.spk.duty_cycle = 0
|
self.spk.duty_cycle = 0; self._amp(False)
|
||||||
self._set_run_dot(); self.draw_icons()
|
self._set_run_dot(); self.draw_icons()
|
||||||
uc = bool(getattr(supervisor.runtime, "usb_connected", True))
|
uc = bool(getattr(supervisor.runtime, "usb_connected", True))
|
||||||
if uc != self.usb_conn:
|
if uc != self.usb_conn:
|
||||||
|
|
@ -1136,19 +1137,19 @@ class App:
|
||||||
def draw_bpm(self):
|
def draw_bpm(self):
|
||||||
if self.bpm == self._displayed_bpm: return
|
if self.bpm == self._displayed_bpm: return
|
||||||
self._displayed_bpm = self.bpm
|
self._displayed_bpm = self.bpm
|
||||||
self._place(self.g_bpm, str(self.bpm), 0, 44, C_TXT, C_BG, FONT_M, right_edge=WIDTH-8)
|
self._place(self.g_bpm, str(self.bpm), 0, 38, C_TXT, C_BG, FONT_M, right_edge=WIDTH-8)
|
||||||
def draw_status(self):
|
def draw_status(self):
|
||||||
sl = self.setlists[self.sl]
|
sl = self.setlists[self.sl]
|
||||||
# setlist tab line at y=78; muted = built-in, cyan = your own
|
# setlist tab line at y=72; muted = built-in, cyan = your own
|
||||||
self._place(self.g_idx, "%s %d/%d" % (sl['title'][:13], self.idx + 1, len(sl['items'])),
|
self._place(self.g_idx, "%s %d/%d" % (sl['title'][:13], self.idx + 1, len(sl['items'])),
|
||||||
6, 78, C_MUTE if sl['builtin'] else C_CYAN, C_BG, FONT_S)
|
6, 72, C_MUTE if sl['builtin'] else C_CYAN, C_BG, FONT_S)
|
||||||
self._place(self.g_cont, "CONT", 0, 78, C_GREEN if self.continue_on else C_DIM, C_BG, FONT_S, right_edge=WIDTH-6)
|
self._place(self.g_cont, "CONT", 0, 72, C_GREEN if self.continue_on else C_DIM, C_BG, FONT_S, right_edge=WIDTH-6)
|
||||||
# track title at y=94 (FONT_M; ~16 px tall, fits above GRID_TOP=116)
|
# track title at y=88 (FONT_M; ~16 px tall, fits above GRID_TOP=110)
|
||||||
self._place(self.g_name, self.name[:22], 6, 94, C_TXT, C_BG, FONT_M)
|
self._place(self.g_name, self.name[:22], 6, 88, C_TXT, C_BG, FONT_M)
|
||||||
def draw_train(self):
|
def draw_train(self):
|
||||||
g = self.g_train
|
g = self.g_train
|
||||||
while len(g): g.pop()
|
while len(g): g.pop()
|
||||||
x = 6; y = 64 # ramp / gap-trainer indicators below the meters row, above the setlist tab
|
x = 6; y = 58 # ramp / gap-trainer indicators below the meters row, above the setlist tab
|
||||||
if self.ramp:
|
if self.ramp:
|
||||||
up = self.ramp['amt'] >= 0
|
up = self.ramp['amt'] >= 0
|
||||||
pts = [(0, 9), (12, 9), (12, 0)] if up else [(0, 0), (0, 9), (12, 9)]
|
pts = [(0, 9), (12, 9), (12, 0)] if up else [(0, 0), (0, 9), (12, 9)]
|
||||||
|
|
@ -1183,9 +1184,9 @@ class App:
|
||||||
else:
|
else:
|
||||||
ts = self._fmt_t(el); bs = "bar %s" % cur
|
ts = self._fmt_t(el); bs = "bar %s" % cur
|
||||||
if ts != self._lastTs:
|
if ts != self._lastTs:
|
||||||
self._place(self.g_time, ts, 6, 44, C_TXT, C_BG, FONT_S); self._lastTs = ts
|
self._place(self.g_time, ts, 6, 38, C_TXT, C_BG, FONT_S); self._lastTs = ts
|
||||||
if bs != self._lastBs:
|
if bs != self._lastBs:
|
||||||
self._place(self.g_bar, bs, 6, 56, C_MUTE, C_BG, FONT_S); self._lastBs = bs
|
self._place(self.g_bar, bs, 6, 50, C_MUTE, C_BG, FONT_S); self._lastBs = bs
|
||||||
|
|
||||||
# ---------- pad grid (chunked rebuild; per-pad chunks so audio interleaves) ----------
|
# ---------- pad grid (chunked rebuild; per-pad chunks so audio interleaves) ----------
|
||||||
def _padbase(self, L, s):
|
def _padbase(self, L, s):
|
||||||
|
|
@ -1345,7 +1346,7 @@ class App:
|
||||||
def _slave_stop(self):
|
def _slave_stop(self):
|
||||||
if self.running:
|
if self.running:
|
||||||
self.running = False
|
self.running = False
|
||||||
self.spk.duty_cycle = 0
|
self.spk.duty_cycle = 0; self._amp(False)
|
||||||
self.reset_playheads(); self._log_play()
|
self.reset_playheads(); self._log_play()
|
||||||
self._set_run_dot(); self.draw_meters()
|
self._set_run_dot(); self.draw_meters()
|
||||||
self._clock_in_last_t = 0; self._clock_in_avg = 0; self._slaved = False
|
self._clock_in_last_t = 0; self._clock_in_avg = 0; self._slaved = False
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue