Compare commits

...

38 Commits

Author SHA1 Message Date
King Kévin 2c2a0e0082 doc: add v3 changes 2024-04-27 10:38:34 +02:00
King Kévin e9ac311e61 brd: add panelization info 2024-04-27 10:32:10 +02:00
King Kévin e55b31382e make: improve panelization 2024-04-22 03:42:33 +02:00
King Kévin 8fd378b72c sch: fix placement 2024-04-22 03:42:11 +02:00
King Kévin 5217391548 brd: improve for panelization 2024-04-20 18:12:45 +02:00
King Kévin 341fe7a0a0 brd: move button to back side 2024-04-20 10:31:01 +02:00
King Kévin ddae75b28d sch: remove fuse to save space 2024-04-20 10:29:52 +02:00
King Kévin 96ad523ef3 switch to version 3 2024-04-20 05:24:25 +02:00
King Kévin 09f7bccca4 doc: fix pictures 2024-04-19 03:37:20 +02:00
King Kévin ffb6998c1c doc: fix pictures 2024-04-19 03:36:18 +02:00
King Kévin 3b488df3e6 doc: add picture 2024-04-19 03:32:57 +02:00
King Kévin e6b5028133 doc: add mode of operation 2024-04-19 03:29:54 +02:00
King Kévin 8d45bcfa60 lib: update repo 2024-04-18 15:01:59 +02:00
King Kévin 983fb5ddbf sch: add bottloader info 2024-04-18 15:00:20 +02:00
King Kévin f11f551eaf sch: change LED resistor to 10k 2024-04-18 14:57:54 +02:00
King Kévin 3895f9cf93 doc: add USB mirrored issue 2024-04-18 14:56:44 +02:00
King Kévin 27f61fb9b2 sch: fix placement info 2024-04-18 14:56:10 +02:00
King Kévin f137388727 brd: fix USB-A footprint 2024-04-05 05:09:53 +02:00
King Kévin 01a67ae560 make: fix clean 2024-03-29 00:25:01 +01:00
King Kévin 9523be94ea lib: update repo 2024-03-29 00:05:09 +01:00
King Kévin 41db5d5f8e doc: add v2 changes 2024-03-28 23:58:55 +01:00
King Kévin 5717d4f650 brd: pass DRC 2024-03-28 23:57:24 +01:00
King Kévin 1b0def3a36 brd: add hole for string 2024-03-28 11:40:45 +01:00
King Kévin 64a04c3698 brd: improve USB routing 2024-03-28 11:07:39 +01:00
King Kévin 7462e5d59a doc: fix typos and add re-enumeration 2024-03-28 05:58:46 +01:00
King Kévin 1d06f98af3 doc: update dev notes to KiCAD v8 2024-03-28 05:55:56 +01:00
King Kévin de368d73d1 make: add svg render 2024-03-28 05:45:04 +01:00
King Kévin 955c4c22fb make: use ibom from kicad8 2024-03-28 05:44:41 +01:00
King Kévin 211b42907e brd: fix corner 2024-03-28 05:43:55 +01:00
King Kévin f6bf295ab0 brd: improve ground 2024-03-27 13:16:32 +01:00
King Kévin e3e93629c3 brd: fix board thickness 2024-03-27 06:03:37 +01:00
King Kévin b5e49b4dec sch: fix BoM 2024-03-27 06:02:07 +01:00
King Kévin db2b809066 sch/brd: add fuse 2024-03-27 06:00:33 +01:00
King Kévin 43bc02aa17 lib: add fuse 2024-03-27 06:00:04 +01:00
King Kévin c71f7b127f brd: round corners 2024-03-27 04:54:21 +01:00
King Kévin 3fea2334eb sch/brd: replace MCU to STM32F042 2024-03-27 04:48:52 +01:00
King Kévin c39b2e034e lib: add STM32F042 2024-03-27 04:48:15 +01:00
King Kévin e6baae83de switch to v2 2024-03-27 03:19:10 +01:00
21 changed files with 13814 additions and 6161 deletions

View File

@ -22,3 +22,6 @@ library:
- connector/usb-a-plug
- mechanical/smd-button_hyp_1ts003b
- diode/led0603
- mcu/st_stm32f042@gxu
- mcu/st_stm32f042@fxp
- vreg/fuse_1206sfh

View File

@ -1,13 +1,41 @@
v3
==
mainly a manufacturing update.
all parts are on one side.
the schematic remains fully compatible with v2.
changes:
- remove fuse as the designed has been proved, and the glues should prevent shorts
- put buttons on back side
- use button mounting holes as test points
v2
==
same USB type-A plug form factor.
change MCU to STM32F042 since it provides read out protection, can recover 48 MHz clock from USB, and is easy to solder.
v1
==
smaller form factor.
fits in USB A port.
fits in USB type-A port.
uses CH32V203 as it is smaller, cheaper, and requires less external parts (DP pull-up, crystal).
issues:
- USB pins are mirrored
v0
==
this is a large development board.
it accepts the classical STM32F103 (which I'm more familiar with), and CH32V203 (cheaper).
it has a proper debug port and buttons.
issues:
- USB pins are mirrored

View File

@ -6,7 +6,7 @@ requirements
to be able to generate the outputs, you need following software:
- [QEDA](http://qeda.org/): to generate footprints for the parts
- [KiCad v7](https://www.kicad.org/): EDA software used for schematic capture and board layout
- [KiCad v8](https://www.kicad.org/): EDA software used for schematic capture and board layout
- [PcbDraw](https://github.com/yaqwsx/PcbDraw): to generate board layout rendering
- [KiKit](https://github.com/yaqwsx/KiKit): to generate fabrications files (Gerber, Excellon)
- [KiBoM](https://github.com/SchrodingersGat/KiBoM): to generate Bill of Material (CSV)

View File

@ -8,7 +8,7 @@ QEDA := qeda
# path to KiBOM
KIBOM := kibom
# path to InteractiveHtmlBom
IBOMGEN := ~/.local/share/kicad/7.0/3rdparty/plugins/org_openscopeproject_InteractiveHtmlBom/generate_interactive_bom.py
IBOMGEN := ~/.local/share/kicad/8.0/3rdparty/plugins/org_openscopeproject_InteractiveHtmlBom/generate_interactive_bom.py
# read project version
VERSION := $(shell cat version)
@ -33,10 +33,12 @@ VERSIONED_SHEET = $(foreach SHEET,$(NAME) $(SUBSHEET),$(SHEET).versioned.kicad_s
FABRICATION_DIR := fabrication
IBOM := ${FABRICATION_DIR}/ibom.html
all: $(VERSIONED_SHEET) ${NAME}.sch.pdf ${NAME}.brd-top.png ${NAME}.brd-bot.png ${NAME}.bom.csv ${NAME}.3d.step fab
all: $(VERSIONED_SHEET) ${NAME}.sch.pdf ${NAME}.bom.csv render fab
fab: ${FABRICATION_DIR} ${IBOM}
render: ${NAME}.brd-top.png ${NAME}.brd-bot.png ${NAME}.brd-top.svg ${NAME}.brd-bot.svg ${NAME}.3d.step
# generate fabrication files (gerbers/drill/BoM/PnP)
${FABRICATION_DIR}: ${NAME}.versioned.kicad_sch ${NAME}.versioned.kicad_pcb
kikit fab jlcpcb --no-drc --assembly --field JLCPCB,LCSC --schematic $^ $@
@ -68,6 +70,14 @@ lib:
%.brd-bot.png: %.versioned.kicad_pcb
pcbdraw plot --silent --no-components --dpi 600 --side back $< $@
# generate render from layout (top side)
%.brd-top.svg: %.versioned.kicad_pcb
$(KICAD) pcb export svg --layers F.Cu,F.Paste,F.Silkscreen,Edge.Cuts --page-size-mode 2 --exclude-drawing-sheet --output $@ $<
# generate render from layout (bottom side)
%.brd-bot.svg: %.versioned.kicad_pcb
$(KICAD) pcb export svg --layers B.Cu,B.Paste,B.Silkscreen,Edge.Cuts --mirror --page-size-mode 2 --exclude-drawing-sheet --output $@ $<
# export Bill of Material (as CSV)
%.bom.xml: %.versioned.kicad_sch %.versioned.kicad_pro
$(KICAD) sch export python-bom --output $@ $<
@ -81,20 +91,22 @@ lib:
$(KIBOM) $< $@
# generate panel
PANEL_DIR := panel
panel: panel.kicad_pcb
panel.kicad_pcb: ${NAME}.versioned.kicad_pcb ${NAME}.versioned.kicad_pro ${NAME}.versioned.kicad_sch ${NAME}.versioned.json
kikit panelize -p ${NAME}.versioned.json ${NAME}.versioned.kicad_pcb $@
PANEL_DIR := panel_fab
panel: panel.kicad_pcb panel.brd-top.svg panel.brd-bot.svg panel.brd-top.png panel.brd-bot.png ${PANEL_DIR}
panel.kicad_pcb: ${NAME}.versioned.kicad_pcb ${NAME}.versioned.kicad_pro ${NAME}.versioned.kicad_sch panel.versioned.json
kikit panelize -p panel.versioned.json ${NAME}.versioned.kicad_pcb $@
sed --in-place 's/\"missing_courtyard\": \"warning\"/\"missing_courtyard\": \"ignore\"/g' $(patsubst %.kicad_pcb,%.kicad_pro,$@) # the mouse bites don't have a courtyard
kikit fab jlcpcb --assembly --missingError --field JLCPCB,LCSC --schematic ${NAME}.versioned.kicad_sch $@ ${PANEL_DIR}
pcbdraw --silent $@ --dpi 600 panel.brd-top.png
pcbdraw --silent $@ --dpi 600 --back panel.brd-bot.png
${PANEL_DIR}: ${NAME}.versioned.kicad_sch panel.kicad_pcb
kikit fab jlcpcb --assembly --missingError --field JLCPCB,LCSC --schematic $^ $@
clean:
rm -f $(foreach EXT,$(VERSIONED_EXT),${NAME}.versioned.$(EXT))
rm -f ${NAME}.sch.pdf ${NAME}.brd-top.png ${NAME}.brd-bot.png ${NAME}.versioned.xml ${NAME}.bom.csv
rm -f ${NAME}.sch.pdf ${NAME}.brd-top.png ${NAME}.brd-bot.png ${NAME}.brd-top.svg ${NAME}.brd-bot.svg ${NAME}.versioned.xml ${NAME}.bom.csv
rm -f ${NAME}.versioned.kicad_prl ${NAME}.versioned.kicad_pro-bak ${NAME}.versioned.xml ${NAME}.versioned.csv
rm -f ${IBOM}
rm -rf ${FABRICATION_DIR}
rm -f panel.kicad_pcb panel.kicad_pro
rm -f panel.versioned.json panel.kicad_pcb panel.kicad_pro panel.brd-top.svg panel.brd-bot.svg panel.brd-top.png panel.brd-bot.png
rm -rf ${PANEL_DIR}

View File

@ -1,27 +1,64 @@
passkey type your credentials for you.
passkey types your credentials upon button press.
<img src="picture/v2_front.jpg" title="front" width="750"/>
.
<img src="picture/v2_back.jpg" title="back" width="750"/>
purpose
=======
This USB dongle will help you out if you have to enter your credentials frequently.
This USB dongle will help out if you have to enter your credentials frequently.
Temporarily store the credential on it, and press a button for passkey to enter it for you.
usage
=====
- passkey will appear as USB serial port and keyboard
- connect to it using a serial terminal (baud rate it not important)
- connect to it using a serial terminal (baud rate is not important)
- enter the credentials you often have to input
- press on one button for passkey to input the username and password
- press on the other button for passkey to input password
- press on the other button for passkey to input password
The credentials are saved in RAM and will clear as soon a power is removed.
You can also clear the credentials by pressing on both buttons.
The passkey will blink until credentials are saved.
More details are provided in the [firmware](https://git.cuvoodoo.info/kingkevin/passkey_fw/src/branch/passkey).
Configuration available in the terminal:
hardware
========
- which button is for which action
- the keyboard layout used
- global timeout to clear the credentials
- last usage timeout to clear the credentials
The passkey is a USB dongle that fits within a USB type-A port.
Only the two buttons stick out to you can press on them.
An LED indicates if credentials are stored in the dongle.
Cover the back of the PCB assembly with hot glue so it fits well the USB port and does not create shorts.
mode of operation
=================
The core of the device is a micro-controller that supports native USB.
I will act as serial port, to input the credentials, and HID keyboard, to paste back the credentials.
After several trials, I chose the STM32F042F6P for the following reasons:
- small enough to fit in USB port
- TSSOP package easy to hand solder
- does not need an external crystal, as it can recover the 48 MHz clock from the USB communication, saving board space
- has embedded balancing and pull-up USB resistors, saving board space
- is readily available and cheap, hoping the next chip shortage will affect it less
- has little embedded flash (32 kB), but enough to run tinyUSB (not libopencm3 though)
- provides readout protection, to lock the flash and disable the debug interface
- requires little power, to use a small LDO, saving board space
The board has test points on the back for SWD (labeled C for SWCLK and D for SWDIO), and UART debug (labeled G for ground and T for RX).
A fuse is added to the board, just to prevent shorts when the dongle is plugged in but the glue is not applied correctly on the back of the board.
Physical tactile switches are used instead of capacitive touch to avoid accidental credential pasting.
A hole between the two buttons allows to put it on a string.
This makes removing the dongle from the port more easy.
This way you can also put it on your key-ring, so it is less likely you forget the dongle when leaving the computer unattended.
The MCU and readout protection have no security certification.
They could probably by bypassed using fault injection.
This could allow an attacker to install malicious firmware, saving the credentials in non-volatile memory for later retrieval.
Thus, it you notice any tampering of the device such as different glue pattern, just toss the device away.
The under $2 cost for this device makes it not worth the risk.
If you don't trust the source where you got the device from, since the hardware and firmware are open-source, just build the device yourself.

View File

@ -0,0 +1,199 @@
ISO-10303-21;
HEADER;
FILE_DESCRIPTION(('Simplified model for FUSC3215X117N'),'2;1');
FILE_NAME('FUSC3215X117N','1970-01-01T00:00:00.00',(''),(''),
'QEDA','QEDA','Unknown');
FILE_SCHEMA(('AUTOMOTIVE_DESIGN { 1 0 10303 214 1 1 1 1 }'));
ENDSEC;
DATA;
#1 = APPLICATION_PROTOCOL_DEFINITION('international standard',
'automotive_design',2000,#2);
#2 = APPLICATION_CONTEXT(
'core data for automotive mechanical design processes');
#3 = SHAPE_DEFINITION_REPRESENTATION(#4,#10);
#4 = PRODUCT_DEFINITION_SHAPE('','',#5);
#5 = PRODUCT_DEFINITION('design','',#6,#9);
#6 = PRODUCT_DEFINITION_FORMATION('','',#7);
#7 = PRODUCT('FUSC3215X117N','FUSC3215X117N','',(#8));
#8 = PRODUCT_CONTEXT('',#2,'mechanical');
#9 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design');
#10 = ADVANCED_BREP_SHAPE_REPRESENTATION('',(#11,#15),#165);
#11 = AXIS2_PLACEMENT_3D('',#12,#13,#14);
#12 = CARTESIAN_POINT('',(0.,0.,0.));
#13 = DIRECTION('',(0.,0.,1.));
#14 = DIRECTION('',(1.,0.,-0.));
#15 = MANIFOLD_SOLID_BREP('',#16);
#16 = CLOSED_SHELL('',(#17,#57,#97,#119,#141,#153));
#17 = ADVANCED_FACE('',(#18),#52,.F.);
#18 = FACE_BOUND('',#19,.F.);
#19 = EDGE_LOOP('',(#20,#30,#38,#46));
#20 = ORIENTED_EDGE('',*,*,#21,.F.);
#21 = EDGE_CURVE('',#22,#24,#26,.T.);
#22 = VERTEX_POINT('',#23);
#23 = CARTESIAN_POINT('',(0.,0.,0.));
#24 = VERTEX_POINT('',#25);
#25 = CARTESIAN_POINT('',(0.,0.,1.17));
#26 = LINE('',#27,#28);
#27 = CARTESIAN_POINT('',(0.,0.,0.));
#28 = VECTOR('',#29,1.);
#29 = DIRECTION('',(0.,0.,1.));
#30 = ORIENTED_EDGE('',*,*,#31,.T.);
#31 = EDGE_CURVE('',#22,#32,#34,.T.);
#32 = VERTEX_POINT('',#33);
#33 = CARTESIAN_POINT('',(0.,3.2,0.));
#34 = LINE('',#35,#36);
#35 = CARTESIAN_POINT('',(0.,0.,0.));
#36 = VECTOR('',#37,1.);
#37 = DIRECTION('',(-0.,1.,0.));
#38 = ORIENTED_EDGE('',*,*,#39,.T.);
#39 = EDGE_CURVE('',#32,#40,#42,.T.);
#40 = VERTEX_POINT('',#41);
#41 = CARTESIAN_POINT('',(0.,3.2,1.17));
#42 = LINE('',#43,#44);
#43 = CARTESIAN_POINT('',(0.,3.2,0.));
#44 = VECTOR('',#45,1.);
#45 = DIRECTION('',(0.,0.,1.));
#46 = ORIENTED_EDGE('',*,*,#47,.F.);
#47 = EDGE_CURVE('',#24,#40,#48,.T.);
#48 = LINE('',#49,#50);
#49 = CARTESIAN_POINT('',(0.,0.,1.17));
#50 = VECTOR('',#51,1.);
#51 = DIRECTION('',(-0.,1.,0.));
#52 = PLANE('',#53);
#53 = AXIS2_PLACEMENT_3D('',#54,#55,#56);
#54 = CARTESIAN_POINT('',(0.,0.,0.));
#55 = DIRECTION('',(1.,0.,-0.));
#56 = DIRECTION('',(0.,0.,1.));
#57 = ADVANCED_FACE('',(#58),#92,.T.);
#58 = FACE_BOUND('',#59,.T.);
#59 = EDGE_LOOP('',(#60,#70,#78,#86));
#60 = ORIENTED_EDGE('',*,*,#61,.F.);
#61 = EDGE_CURVE('',#62,#64,#66,.T.);
#62 = VERTEX_POINT('',#63);
#63 = CARTESIAN_POINT('',(1.5,0.,0.));
#64 = VERTEX_POINT('',#65);
#65 = CARTESIAN_POINT('',(1.5,0.,1.17));
#66 = LINE('',#67,#68);
#67 = CARTESIAN_POINT('',(1.5,0.,0.));
#68 = VECTOR('',#69,1.);
#69 = DIRECTION('',(0.,0.,1.));
#70 = ORIENTED_EDGE('',*,*,#71,.T.);
#71 = EDGE_CURVE('',#62,#72,#74,.T.);
#72 = VERTEX_POINT('',#73);
#73 = CARTESIAN_POINT('',(1.5,3.2,0.));
#74 = LINE('',#75,#76);
#75 = CARTESIAN_POINT('',(1.5,0.,0.));
#76 = VECTOR('',#77,1.);
#77 = DIRECTION('',(-0.,1.,0.));
#78 = ORIENTED_EDGE('',*,*,#79,.T.);
#79 = EDGE_CURVE('',#72,#80,#82,.T.);
#80 = VERTEX_POINT('',#81);
#81 = CARTESIAN_POINT('',(1.5,3.2,1.17));
#82 = LINE('',#83,#84);
#83 = CARTESIAN_POINT('',(1.5,3.2,0.));
#84 = VECTOR('',#85,1.);
#85 = DIRECTION('',(0.,0.,1.));
#86 = ORIENTED_EDGE('',*,*,#87,.F.);
#87 = EDGE_CURVE('',#64,#80,#88,.T.);
#88 = LINE('',#89,#90);
#89 = CARTESIAN_POINT('',(1.5,0.,1.17));
#90 = VECTOR('',#91,1.);
#91 = DIRECTION('',(-0.,1.,0.));
#92 = PLANE('',#93);
#93 = AXIS2_PLACEMENT_3D('',#94,#95,#96);
#94 = CARTESIAN_POINT('',(1.5,0.,0.));
#95 = DIRECTION('',(1.,0.,-0.));
#96 = DIRECTION('',(0.,0.,1.));
#97 = ADVANCED_FACE('',(#98),#114,.F.);
#98 = FACE_BOUND('',#99,.F.);
#99 = EDGE_LOOP('',(#100,#106,#107,#113));
#100 = ORIENTED_EDGE('',*,*,#101,.F.);
#101 = EDGE_CURVE('',#22,#62,#102,.T.);
#102 = LINE('',#103,#104);
#103 = CARTESIAN_POINT('',(0.,0.,0.));
#104 = VECTOR('',#105,1.);
#105 = DIRECTION('',(1.,0.,-0.));
#106 = ORIENTED_EDGE('',*,*,#21,.T.);
#107 = ORIENTED_EDGE('',*,*,#108,.T.);
#108 = EDGE_CURVE('',#24,#64,#109,.T.);
#109 = LINE('',#110,#111);
#110 = CARTESIAN_POINT('',(0.,0.,1.17));
#111 = VECTOR('',#112,1.);
#112 = DIRECTION('',(1.,0.,-0.));
#113 = ORIENTED_EDGE('',*,*,#61,.F.);
#114 = PLANE('',#115);
#115 = AXIS2_PLACEMENT_3D('',#116,#117,#118);
#116 = CARTESIAN_POINT('',(0.,0.,0.));
#117 = DIRECTION('',(-0.,1.,0.));
#118 = DIRECTION('',(0.,0.,1.));
#119 = ADVANCED_FACE('',(#120),#136,.T.);
#120 = FACE_BOUND('',#121,.T.);
#121 = EDGE_LOOP('',(#122,#128,#129,#135));
#122 = ORIENTED_EDGE('',*,*,#123,.F.);
#123 = EDGE_CURVE('',#32,#72,#124,.T.);
#124 = LINE('',#125,#126);
#125 = CARTESIAN_POINT('',(0.,3.2,0.));
#126 = VECTOR('',#127,1.);
#127 = DIRECTION('',(1.,0.,-0.));
#128 = ORIENTED_EDGE('',*,*,#39,.T.);
#129 = ORIENTED_EDGE('',*,*,#130,.T.);
#130 = EDGE_CURVE('',#40,#80,#131,.T.);
#131 = LINE('',#132,#133);
#132 = CARTESIAN_POINT('',(0.,3.2,1.17));
#133 = VECTOR('',#134,1.);
#134 = DIRECTION('',(1.,0.,-0.));
#135 = ORIENTED_EDGE('',*,*,#79,.F.);
#136 = PLANE('',#137);
#137 = AXIS2_PLACEMENT_3D('',#138,#139,#140);
#138 = CARTESIAN_POINT('',(0.,3.2,0.));
#139 = DIRECTION('',(-0.,1.,0.));
#140 = DIRECTION('',(0.,0.,1.));
#141 = ADVANCED_FACE('',(#142),#148,.F.);
#142 = FACE_BOUND('',#143,.F.);
#143 = EDGE_LOOP('',(#144,#145,#146,#147));
#144 = ORIENTED_EDGE('',*,*,#31,.F.);
#145 = ORIENTED_EDGE('',*,*,#101,.T.);
#146 = ORIENTED_EDGE('',*,*,#71,.T.);
#147 = ORIENTED_EDGE('',*,*,#123,.F.);
#148 = PLANE('',#149);
#149 = AXIS2_PLACEMENT_3D('',#150,#151,#152);
#150 = CARTESIAN_POINT('',(0.,0.,0.));
#151 = DIRECTION('',(0.,0.,1.));
#152 = DIRECTION('',(1.,0.,-0.));
#153 = ADVANCED_FACE('',(#154),#160,.T.);
#154 = FACE_BOUND('',#155,.T.);
#155 = EDGE_LOOP('',(#156,#157,#158,#159));
#156 = ORIENTED_EDGE('',*,*,#47,.F.);
#157 = ORIENTED_EDGE('',*,*,#108,.T.);
#158 = ORIENTED_EDGE('',*,*,#87,.T.);
#159 = ORIENTED_EDGE('',*,*,#130,.F.);
#160 = PLANE('',#161);
#161 = AXIS2_PLACEMENT_3D('',#162,#163,#164);
#162 = CARTESIAN_POINT('',(0.,0.,1.17));
#163 = DIRECTION('',(0.,0.,1.));
#164 = DIRECTION('',(1.,0.,-0.));
#165 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3)
GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#169)) GLOBAL_UNIT_ASSIGNED_CONTEXT
((#166,#167,#168)) REPRESENTATION_CONTEXT('Context #1',
'3D Context with UNIT and UNCERTAINTY') );
#166 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) );
#167 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) );
#168 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() );
#169 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#166,
'distance_accuracy_value','confusion accuracy');
#170 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#7));
#171 = MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',(#172)
,#165);
#172 = STYLED_ITEM('color',(#173),#15);
#173 = PRESENTATION_STYLE_ASSIGNMENT((#174,#180));
#174 = SURFACE_STYLE_USAGE(.BOTH.,#175);
#175 = SURFACE_SIDE_STYLE('',(#176));
#176 = SURFACE_STYLE_FILL_AREA(#177);
#177 = FILL_AREA_STYLE('',(#178));
#178 = FILL_AREA_STYLE_COLOUR('',#179);
#179 = COLOUR_RGB('',0.23,0.23,0.23);
#180 = CURVE_STYLE('',#181,POSITIVE_LENGTH_MEASURE(0.1),#182);
#181 = DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous');
#182 = DRAUGHTING_PRE_DEFINED_COLOUR('black');
ENDSEC;
END-ISO-10303-21;

View File

@ -0,0 +1,199 @@
ISO-10303-21;
HEADER;
FILE_DESCRIPTION(('Simplified model for QFN50P400X400X60-28N'),'2;1');
FILE_NAME('QFN50P400X400X60-28N','1970-01-01T00:00:00.00',(''),(''),
'QEDA','QEDA','Unknown');
FILE_SCHEMA(('AUTOMOTIVE_DESIGN { 1 0 10303 214 1 1 1 1 }'));
ENDSEC;
DATA;
#1 = APPLICATION_PROTOCOL_DEFINITION('international standard',
'automotive_design',2000,#2);
#2 = APPLICATION_CONTEXT(
'core data for automotive mechanical design processes');
#3 = SHAPE_DEFINITION_REPRESENTATION(#4,#10);
#4 = PRODUCT_DEFINITION_SHAPE('','',#5);
#5 = PRODUCT_DEFINITION('design','',#6,#9);
#6 = PRODUCT_DEFINITION_FORMATION('','',#7);
#7 = PRODUCT('QFN50P400X400X60-28N','QFN50P400X400X60-28N','',(#8));
#8 = PRODUCT_CONTEXT('',#2,'mechanical');
#9 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design');
#10 = ADVANCED_BREP_SHAPE_REPRESENTATION('',(#11,#15),#165);
#11 = AXIS2_PLACEMENT_3D('',#12,#13,#14);
#12 = CARTESIAN_POINT('',(0.,0.,0.));
#13 = DIRECTION('',(0.,0.,1.));
#14 = DIRECTION('',(1.,0.,-0.));
#15 = MANIFOLD_SOLID_BREP('',#16);
#16 = CLOSED_SHELL('',(#17,#57,#97,#119,#141,#153));
#17 = ADVANCED_FACE('',(#18),#52,.F.);
#18 = FACE_BOUND('',#19,.F.);
#19 = EDGE_LOOP('',(#20,#30,#38,#46));
#20 = ORIENTED_EDGE('',*,*,#21,.F.);
#21 = EDGE_CURVE('',#22,#24,#26,.T.);
#22 = VERTEX_POINT('',#23);
#23 = CARTESIAN_POINT('',(0.,0.,0.));
#24 = VERTEX_POINT('',#25);
#25 = CARTESIAN_POINT('',(0.,0.,0.6));
#26 = LINE('',#27,#28);
#27 = CARTESIAN_POINT('',(0.,0.,0.));
#28 = VECTOR('',#29,1.);
#29 = DIRECTION('',(0.,0.,1.));
#30 = ORIENTED_EDGE('',*,*,#31,.T.);
#31 = EDGE_CURVE('',#22,#32,#34,.T.);
#32 = VERTEX_POINT('',#33);
#33 = CARTESIAN_POINT('',(0.,4.,0.));
#34 = LINE('',#35,#36);
#35 = CARTESIAN_POINT('',(0.,0.,0.));
#36 = VECTOR('',#37,1.);
#37 = DIRECTION('',(-0.,1.,0.));
#38 = ORIENTED_EDGE('',*,*,#39,.T.);
#39 = EDGE_CURVE('',#32,#40,#42,.T.);
#40 = VERTEX_POINT('',#41);
#41 = CARTESIAN_POINT('',(0.,4.,0.6));
#42 = LINE('',#43,#44);
#43 = CARTESIAN_POINT('',(0.,4.,0.));
#44 = VECTOR('',#45,1.);
#45 = DIRECTION('',(0.,0.,1.));
#46 = ORIENTED_EDGE('',*,*,#47,.F.);
#47 = EDGE_CURVE('',#24,#40,#48,.T.);
#48 = LINE('',#49,#50);
#49 = CARTESIAN_POINT('',(0.,0.,0.6));
#50 = VECTOR('',#51,1.);
#51 = DIRECTION('',(-0.,1.,0.));
#52 = PLANE('',#53);
#53 = AXIS2_PLACEMENT_3D('',#54,#55,#56);
#54 = CARTESIAN_POINT('',(0.,0.,0.));
#55 = DIRECTION('',(1.,0.,-0.));
#56 = DIRECTION('',(0.,0.,1.));
#57 = ADVANCED_FACE('',(#58),#92,.T.);
#58 = FACE_BOUND('',#59,.T.);
#59 = EDGE_LOOP('',(#60,#70,#78,#86));
#60 = ORIENTED_EDGE('',*,*,#61,.F.);
#61 = EDGE_CURVE('',#62,#64,#66,.T.);
#62 = VERTEX_POINT('',#63);
#63 = CARTESIAN_POINT('',(4.,0.,0.));
#64 = VERTEX_POINT('',#65);
#65 = CARTESIAN_POINT('',(4.,0.,0.6));
#66 = LINE('',#67,#68);
#67 = CARTESIAN_POINT('',(4.,0.,0.));
#68 = VECTOR('',#69,1.);
#69 = DIRECTION('',(0.,0.,1.));
#70 = ORIENTED_EDGE('',*,*,#71,.T.);
#71 = EDGE_CURVE('',#62,#72,#74,.T.);
#72 = VERTEX_POINT('',#73);
#73 = CARTESIAN_POINT('',(4.,4.,0.));
#74 = LINE('',#75,#76);
#75 = CARTESIAN_POINT('',(4.,0.,0.));
#76 = VECTOR('',#77,1.);
#77 = DIRECTION('',(-0.,1.,0.));
#78 = ORIENTED_EDGE('',*,*,#79,.T.);
#79 = EDGE_CURVE('',#72,#80,#82,.T.);
#80 = VERTEX_POINT('',#81);
#81 = CARTESIAN_POINT('',(4.,4.,0.6));
#82 = LINE('',#83,#84);
#83 = CARTESIAN_POINT('',(4.,4.,0.));
#84 = VECTOR('',#85,1.);
#85 = DIRECTION('',(0.,0.,1.));
#86 = ORIENTED_EDGE('',*,*,#87,.F.);
#87 = EDGE_CURVE('',#64,#80,#88,.T.);
#88 = LINE('',#89,#90);
#89 = CARTESIAN_POINT('',(4.,0.,0.6));
#90 = VECTOR('',#91,1.);
#91 = DIRECTION('',(-0.,1.,0.));
#92 = PLANE('',#93);
#93 = AXIS2_PLACEMENT_3D('',#94,#95,#96);
#94 = CARTESIAN_POINT('',(4.,0.,0.));
#95 = DIRECTION('',(1.,0.,-0.));
#96 = DIRECTION('',(0.,0.,1.));
#97 = ADVANCED_FACE('',(#98),#114,.F.);
#98 = FACE_BOUND('',#99,.F.);
#99 = EDGE_LOOP('',(#100,#106,#107,#113));
#100 = ORIENTED_EDGE('',*,*,#101,.F.);
#101 = EDGE_CURVE('',#22,#62,#102,.T.);
#102 = LINE('',#103,#104);
#103 = CARTESIAN_POINT('',(0.,0.,0.));
#104 = VECTOR('',#105,1.);
#105 = DIRECTION('',(1.,0.,-0.));
#106 = ORIENTED_EDGE('',*,*,#21,.T.);
#107 = ORIENTED_EDGE('',*,*,#108,.T.);
#108 = EDGE_CURVE('',#24,#64,#109,.T.);
#109 = LINE('',#110,#111);
#110 = CARTESIAN_POINT('',(0.,0.,0.6));
#111 = VECTOR('',#112,1.);
#112 = DIRECTION('',(1.,0.,-0.));
#113 = ORIENTED_EDGE('',*,*,#61,.F.);
#114 = PLANE('',#115);
#115 = AXIS2_PLACEMENT_3D('',#116,#117,#118);
#116 = CARTESIAN_POINT('',(0.,0.,0.));
#117 = DIRECTION('',(-0.,1.,0.));
#118 = DIRECTION('',(0.,0.,1.));
#119 = ADVANCED_FACE('',(#120),#136,.T.);
#120 = FACE_BOUND('',#121,.T.);
#121 = EDGE_LOOP('',(#122,#128,#129,#135));
#122 = ORIENTED_EDGE('',*,*,#123,.F.);
#123 = EDGE_CURVE('',#32,#72,#124,.T.);
#124 = LINE('',#125,#126);
#125 = CARTESIAN_POINT('',(0.,4.,0.));
#126 = VECTOR('',#127,1.);
#127 = DIRECTION('',(1.,0.,-0.));
#128 = ORIENTED_EDGE('',*,*,#39,.T.);
#129 = ORIENTED_EDGE('',*,*,#130,.T.);
#130 = EDGE_CURVE('',#40,#80,#131,.T.);
#131 = LINE('',#132,#133);
#132 = CARTESIAN_POINT('',(0.,4.,0.6));
#133 = VECTOR('',#134,1.);
#134 = DIRECTION('',(1.,0.,-0.));
#135 = ORIENTED_EDGE('',*,*,#79,.F.);
#136 = PLANE('',#137);
#137 = AXIS2_PLACEMENT_3D('',#138,#139,#140);
#138 = CARTESIAN_POINT('',(0.,4.,0.));
#139 = DIRECTION('',(-0.,1.,0.));
#140 = DIRECTION('',(0.,0.,1.));
#141 = ADVANCED_FACE('',(#142),#148,.F.);
#142 = FACE_BOUND('',#143,.F.);
#143 = EDGE_LOOP('',(#144,#145,#146,#147));
#144 = ORIENTED_EDGE('',*,*,#31,.F.);
#145 = ORIENTED_EDGE('',*,*,#101,.T.);
#146 = ORIENTED_EDGE('',*,*,#71,.T.);
#147 = ORIENTED_EDGE('',*,*,#123,.F.);
#148 = PLANE('',#149);
#149 = AXIS2_PLACEMENT_3D('',#150,#151,#152);
#150 = CARTESIAN_POINT('',(0.,0.,0.));
#151 = DIRECTION('',(0.,0.,1.));
#152 = DIRECTION('',(1.,0.,-0.));
#153 = ADVANCED_FACE('',(#154),#160,.T.);
#154 = FACE_BOUND('',#155,.T.);
#155 = EDGE_LOOP('',(#156,#157,#158,#159));
#156 = ORIENTED_EDGE('',*,*,#47,.F.);
#157 = ORIENTED_EDGE('',*,*,#108,.T.);
#158 = ORIENTED_EDGE('',*,*,#87,.T.);
#159 = ORIENTED_EDGE('',*,*,#130,.F.);
#160 = PLANE('',#161);
#161 = AXIS2_PLACEMENT_3D('',#162,#163,#164);
#162 = CARTESIAN_POINT('',(0.,0.,0.6));
#163 = DIRECTION('',(0.,0.,1.));
#164 = DIRECTION('',(1.,0.,-0.));
#165 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3)
GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#169)) GLOBAL_UNIT_ASSIGNED_CONTEXT
((#166,#167,#168)) REPRESENTATION_CONTEXT('Context #1',
'3D Context with UNIT and UNCERTAINTY') );
#166 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) );
#167 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) );
#168 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() );
#169 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#166,
'distance_accuracy_value','confusion accuracy');
#170 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#7));
#171 = MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',(#172)
,#165);
#172 = STYLED_ITEM('color',(#173),#15);
#173 = PRESENTATION_STYLE_ASSIGNMENT((#174,#180));
#174 = SURFACE_STYLE_USAGE(.BOTH.,#175);
#175 = SURFACE_SIDE_STYLE('',(#176));
#176 = SURFACE_STYLE_FILL_AREA(#177);
#177 = FILL_AREA_STYLE('',(#178));
#178 = FILL_AREA_STYLE_COLOUR('',#179);
#179 = COLOUR_RGB('',0.23,0.23,0.23);
#180 = CURVE_STYLE('',#181,POSITIVE_LENGTH_MEASURE(0.1),#182);
#181 = DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous');
#182 = DRAUGHTING_PRE_DEFINED_COLOUR('black');
ENDSEC;
END-ISO-10303-21;

View File

@ -0,0 +1,199 @@
ISO-10303-21;
HEADER;
FILE_DESCRIPTION(('Simplified model for SOP65P640X120-20N'),'2;1');
FILE_NAME('SOP65P640X120-20N','1970-01-01T00:00:00.00',(''),(''),
'QEDA','QEDA','Unknown');
FILE_SCHEMA(('AUTOMOTIVE_DESIGN { 1 0 10303 214 1 1 1 1 }'));
ENDSEC;
DATA;
#1 = APPLICATION_PROTOCOL_DEFINITION('international standard',
'automotive_design',2000,#2);
#2 = APPLICATION_CONTEXT(
'core data for automotive mechanical design processes');
#3 = SHAPE_DEFINITION_REPRESENTATION(#4,#10);
#4 = PRODUCT_DEFINITION_SHAPE('','',#5);
#5 = PRODUCT_DEFINITION('design','',#6,#9);
#6 = PRODUCT_DEFINITION_FORMATION('','',#7);
#7 = PRODUCT('SOP65P640X120-20N','SOP65P640X120-20N','',(#8));
#8 = PRODUCT_CONTEXT('',#2,'mechanical');
#9 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design');
#10 = ADVANCED_BREP_SHAPE_REPRESENTATION('',(#11,#15),#165);
#11 = AXIS2_PLACEMENT_3D('',#12,#13,#14);
#12 = CARTESIAN_POINT('',(0.,0.,0.));
#13 = DIRECTION('',(0.,0.,1.));
#14 = DIRECTION('',(1.,0.,-0.));
#15 = MANIFOLD_SOLID_BREP('',#16);
#16 = CLOSED_SHELL('',(#17,#57,#97,#119,#141,#153));
#17 = ADVANCED_FACE('',(#18),#52,.F.);
#18 = FACE_BOUND('',#19,.F.);
#19 = EDGE_LOOP('',(#20,#30,#38,#46));
#20 = ORIENTED_EDGE('',*,*,#21,.F.);
#21 = EDGE_CURVE('',#22,#24,#26,.T.);
#22 = VERTEX_POINT('',#23);
#23 = CARTESIAN_POINT('',(0.,0.,0.));
#24 = VERTEX_POINT('',#25);
#25 = CARTESIAN_POINT('',(0.,0.,1.2));
#26 = LINE('',#27,#28);
#27 = CARTESIAN_POINT('',(0.,0.,0.));
#28 = VECTOR('',#29,1.);
#29 = DIRECTION('',(0.,0.,1.));
#30 = ORIENTED_EDGE('',*,*,#31,.T.);
#31 = EDGE_CURVE('',#22,#32,#34,.T.);
#32 = VERTEX_POINT('',#33);
#33 = CARTESIAN_POINT('',(0.,6.5,0.));
#34 = LINE('',#35,#36);
#35 = CARTESIAN_POINT('',(0.,0.,0.));
#36 = VECTOR('',#37,1.);
#37 = DIRECTION('',(-0.,1.,0.));
#38 = ORIENTED_EDGE('',*,*,#39,.T.);
#39 = EDGE_CURVE('',#32,#40,#42,.T.);
#40 = VERTEX_POINT('',#41);
#41 = CARTESIAN_POINT('',(0.,6.5,1.2));
#42 = LINE('',#43,#44);
#43 = CARTESIAN_POINT('',(0.,6.5,0.));
#44 = VECTOR('',#45,1.);
#45 = DIRECTION('',(0.,0.,1.));
#46 = ORIENTED_EDGE('',*,*,#47,.F.);
#47 = EDGE_CURVE('',#24,#40,#48,.T.);
#48 = LINE('',#49,#50);
#49 = CARTESIAN_POINT('',(0.,0.,1.2));
#50 = VECTOR('',#51,1.);
#51 = DIRECTION('',(-0.,1.,0.));
#52 = PLANE('',#53);
#53 = AXIS2_PLACEMENT_3D('',#54,#55,#56);
#54 = CARTESIAN_POINT('',(0.,0.,0.));
#55 = DIRECTION('',(1.,0.,-0.));
#56 = DIRECTION('',(0.,0.,1.));
#57 = ADVANCED_FACE('',(#58),#92,.T.);
#58 = FACE_BOUND('',#59,.T.);
#59 = EDGE_LOOP('',(#60,#70,#78,#86));
#60 = ORIENTED_EDGE('',*,*,#61,.F.);
#61 = EDGE_CURVE('',#62,#64,#66,.T.);
#62 = VERTEX_POINT('',#63);
#63 = CARTESIAN_POINT('',(4.4,0.,0.));
#64 = VERTEX_POINT('',#65);
#65 = CARTESIAN_POINT('',(4.4,0.,1.2));
#66 = LINE('',#67,#68);
#67 = CARTESIAN_POINT('',(4.4,0.,0.));
#68 = VECTOR('',#69,1.);
#69 = DIRECTION('',(0.,0.,1.));
#70 = ORIENTED_EDGE('',*,*,#71,.T.);
#71 = EDGE_CURVE('',#62,#72,#74,.T.);
#72 = VERTEX_POINT('',#73);
#73 = CARTESIAN_POINT('',(4.4,6.5,0.));
#74 = LINE('',#75,#76);
#75 = CARTESIAN_POINT('',(4.4,0.,0.));
#76 = VECTOR('',#77,1.);
#77 = DIRECTION('',(-0.,1.,0.));
#78 = ORIENTED_EDGE('',*,*,#79,.T.);
#79 = EDGE_CURVE('',#72,#80,#82,.T.);
#80 = VERTEX_POINT('',#81);
#81 = CARTESIAN_POINT('',(4.4,6.5,1.2));
#82 = LINE('',#83,#84);
#83 = CARTESIAN_POINT('',(4.4,6.5,0.));
#84 = VECTOR('',#85,1.);
#85 = DIRECTION('',(0.,0.,1.));
#86 = ORIENTED_EDGE('',*,*,#87,.F.);
#87 = EDGE_CURVE('',#64,#80,#88,.T.);
#88 = LINE('',#89,#90);
#89 = CARTESIAN_POINT('',(4.4,0.,1.2));
#90 = VECTOR('',#91,1.);
#91 = DIRECTION('',(-0.,1.,0.));
#92 = PLANE('',#93);
#93 = AXIS2_PLACEMENT_3D('',#94,#95,#96);
#94 = CARTESIAN_POINT('',(4.4,0.,0.));
#95 = DIRECTION('',(1.,0.,-0.));
#96 = DIRECTION('',(0.,0.,1.));
#97 = ADVANCED_FACE('',(#98),#114,.F.);
#98 = FACE_BOUND('',#99,.F.);
#99 = EDGE_LOOP('',(#100,#106,#107,#113));
#100 = ORIENTED_EDGE('',*,*,#101,.F.);
#101 = EDGE_CURVE('',#22,#62,#102,.T.);
#102 = LINE('',#103,#104);
#103 = CARTESIAN_POINT('',(0.,0.,0.));
#104 = VECTOR('',#105,1.);
#105 = DIRECTION('',(1.,0.,-0.));
#106 = ORIENTED_EDGE('',*,*,#21,.T.);
#107 = ORIENTED_EDGE('',*,*,#108,.T.);
#108 = EDGE_CURVE('',#24,#64,#109,.T.);
#109 = LINE('',#110,#111);
#110 = CARTESIAN_POINT('',(0.,0.,1.2));
#111 = VECTOR('',#112,1.);
#112 = DIRECTION('',(1.,0.,-0.));
#113 = ORIENTED_EDGE('',*,*,#61,.F.);
#114 = PLANE('',#115);
#115 = AXIS2_PLACEMENT_3D('',#116,#117,#118);
#116 = CARTESIAN_POINT('',(0.,0.,0.));
#117 = DIRECTION('',(-0.,1.,0.));
#118 = DIRECTION('',(0.,0.,1.));
#119 = ADVANCED_FACE('',(#120),#136,.T.);
#120 = FACE_BOUND('',#121,.T.);
#121 = EDGE_LOOP('',(#122,#128,#129,#135));
#122 = ORIENTED_EDGE('',*,*,#123,.F.);
#123 = EDGE_CURVE('',#32,#72,#124,.T.);
#124 = LINE('',#125,#126);
#125 = CARTESIAN_POINT('',(0.,6.5,0.));
#126 = VECTOR('',#127,1.);
#127 = DIRECTION('',(1.,0.,-0.));
#128 = ORIENTED_EDGE('',*,*,#39,.T.);
#129 = ORIENTED_EDGE('',*,*,#130,.T.);
#130 = EDGE_CURVE('',#40,#80,#131,.T.);
#131 = LINE('',#132,#133);
#132 = CARTESIAN_POINT('',(0.,6.5,1.2));
#133 = VECTOR('',#134,1.);
#134 = DIRECTION('',(1.,0.,-0.));
#135 = ORIENTED_EDGE('',*,*,#79,.F.);
#136 = PLANE('',#137);
#137 = AXIS2_PLACEMENT_3D('',#138,#139,#140);
#138 = CARTESIAN_POINT('',(0.,6.5,0.));
#139 = DIRECTION('',(-0.,1.,0.));
#140 = DIRECTION('',(0.,0.,1.));
#141 = ADVANCED_FACE('',(#142),#148,.F.);
#142 = FACE_BOUND('',#143,.F.);
#143 = EDGE_LOOP('',(#144,#145,#146,#147));
#144 = ORIENTED_EDGE('',*,*,#31,.F.);
#145 = ORIENTED_EDGE('',*,*,#101,.T.);
#146 = ORIENTED_EDGE('',*,*,#71,.T.);
#147 = ORIENTED_EDGE('',*,*,#123,.F.);
#148 = PLANE('',#149);
#149 = AXIS2_PLACEMENT_3D('',#150,#151,#152);
#150 = CARTESIAN_POINT('',(0.,0.,0.));
#151 = DIRECTION('',(0.,0.,1.));
#152 = DIRECTION('',(1.,0.,-0.));
#153 = ADVANCED_FACE('',(#154),#160,.T.);
#154 = FACE_BOUND('',#155,.T.);
#155 = EDGE_LOOP('',(#156,#157,#158,#159));
#156 = ORIENTED_EDGE('',*,*,#47,.F.);
#157 = ORIENTED_EDGE('',*,*,#108,.T.);
#158 = ORIENTED_EDGE('',*,*,#87,.T.);
#159 = ORIENTED_EDGE('',*,*,#130,.F.);
#160 = PLANE('',#161);
#161 = AXIS2_PLACEMENT_3D('',#162,#163,#164);
#162 = CARTESIAN_POINT('',(0.,0.,1.2));
#163 = DIRECTION('',(0.,0.,1.));
#164 = DIRECTION('',(1.,0.,-0.));
#165 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3)
GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#169)) GLOBAL_UNIT_ASSIGNED_CONTEXT
((#166,#167,#168)) REPRESENTATION_CONTEXT('Context #1',
'3D Context with UNIT and UNCERTAINTY') );
#166 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) );
#167 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) );
#168 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() );
#169 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#166,
'distance_accuracy_value','confusion accuracy');
#170 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#7));
#171 = MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',(#172)
,#165);
#172 = STYLED_ITEM('color',(#173),#15);
#173 = PRESENTATION_STYLE_ASSIGNMENT((#174,#180));
#174 = SURFACE_STYLE_USAGE(.BOTH.,#175);
#175 = SURFACE_SIDE_STYLE('',(#176));
#176 = SURFACE_STYLE_FILL_AREA(#177);
#177 = FILL_AREA_STYLE('',(#178));
#178 = FILL_AREA_STYLE_COLOUR('',#179);
#179 = COLOUR_RGB('',0.23,0.23,0.23);
#180 = CURVE_STYLE('',#181,POSITIVE_LENGTH_MEASURE(0.1),#182);
#181 = DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous');
#182 = DRAUGHTING_PRE_DEFINED_COLOUR('black');
ENDSEC;
END-ISO-10303-21;

View File

@ -762,4 +762,290 @@
)
)
)
(symbol "STM32F042GxU" (in_bom yes) (on_board yes)
(property "Reference" "U" (at 0.000 0.762 0)
(effects (font (size 1.27 1.27)) (justify left bottom))
)
(property "Value" "STM32F042GxU" (at 18.542 -43.942 0)
(effects (font (size 1.27 1.27)) (justify left top))
)
(property "Footprint" "qeda:QFN50P400X400X60-28N" (at 0 0 0)
(effects (font (size 1.27 1.27)) hide)
)
(property "Datasheet" "https://www.st.com/resource/en/datasheet/stm32f042g6.pdf" (at 0 0 0)
(effects (font (size 1.27 1.27)) hide)
)
(property "ki_description" "Cortex-M0 USB line MCU" (at 0 0 0)
(effects (font (size 1.27 1.27)) hide)
)
(property "ki_keywords" "MCU, micro-controller" (at 0 0 0)
(effects (font (size 1.27 1.27)) hide)
)
(symbol "STM32F042GxU_1_1"
(rectangle (start 0.000 0.000) (end 31.750 -43.180)
(stroke (width 0.305) (type default))
(fill (type background))
)
(pin bidirectional line (at -5.080 -2.540 0) (length 5.080)
(name "PA0" (effects (font (size 1.27 1.27))))
(number "6" (effects (font (size 1.27 1.27))))
)
(pin bidirectional line (at -5.080 -5.080 0) (length 5.080)
(name "PA1" (effects (font (size 1.27 1.27))))
(number "7" (effects (font (size 1.27 1.27))))
)
(pin bidirectional line (at -5.080 -7.620 0) (length 5.080)
(name "PA2" (effects (font (size 1.27 1.27))))
(number "8" (effects (font (size 1.27 1.27))))
)
(pin bidirectional line (at -5.080 -10.160 0) (length 5.080)
(name "PA3" (effects (font (size 1.27 1.27))))
(number "9" (effects (font (size 1.27 1.27))))
)
(pin bidirectional line (at -5.080 -12.700 0) (length 5.080)
(name "PA4" (effects (font (size 1.27 1.27))))
(number "10" (effects (font (size 1.27 1.27))))
)
(pin bidirectional line (at -5.080 -15.240 0) (length 5.080)
(name "PA5" (effects (font (size 1.27 1.27))))
(number "11" (effects (font (size 1.27 1.27))))
)
(pin bidirectional line (at -5.080 -17.780 0) (length 5.080)
(name "PA6" (effects (font (size 1.27 1.27))))
(number "12" (effects (font (size 1.27 1.27))))
)
(pin bidirectional line (at -5.080 -20.320 0) (length 5.080)
(name "PA7" (effects (font (size 1.27 1.27))))
(number "13" (effects (font (size 1.27 1.27))))
)
(pin bidirectional line (at -5.080 -22.860 0) (length 5.080)
(name "PA9-PA11" (effects (font (size 1.27 1.27))))
(number "19" (effects (font (size 1.27 1.27))))
)
(pin bidirectional line (at -5.080 -25.400 0) (length 5.080)
(name "PA10-PA12" (effects (font (size 1.27 1.27))))
(number "20" (effects (font (size 1.27 1.27))))
)
(pin bidirectional line (at -5.080 -27.940 0) (length 5.080)
(name "PA13-SWDIO" (effects (font (size 1.27 1.27))))
(number "21" (effects (font (size 1.27 1.27))))
)
(pin bidirectional line (at -5.080 -30.480 0) (length 5.080)
(name "PA14-SWCLK" (effects (font (size 1.27 1.27))))
(number "22" (effects (font (size 1.27 1.27))))
)
(pin bidirectional line (at -5.080 -33.020 0) (length 5.080)
(name "PA15" (effects (font (size 1.27 1.27))))
(number "23" (effects (font (size 1.27 1.27))))
)
(pin bidirectional line (at -5.080 -38.100 0) (length 5.080)
(name "PF0-OSC_IN" (effects (font (size 1.27 1.27))))
(number "2" (effects (font (size 1.27 1.27))))
)
(pin bidirectional line (at -5.080 -40.640 0) (length 5.080)
(name "PF1-OSC_OUT" (effects (font (size 1.27 1.27))))
(number "3" (effects (font (size 1.27 1.27))))
)
(pin bidirectional line (at 36.830 -10.160 180) (length 5.080)
(name "PB0" (effects (font (size 1.27 1.27))))
(number "14" (effects (font (size 1.27 1.27))))
)
(pin bidirectional line (at 36.830 -12.700 180) (length 5.080)
(name "PB1" (effects (font (size 1.27 1.27))))
(number "15" (effects (font (size 1.27 1.27))))
)
(pin bidirectional line (at 36.830 -15.240 180) (length 5.080)
(name "PB3" (effects (font (size 1.27 1.27))))
(number "24" (effects (font (size 1.27 1.27))))
)
(pin bidirectional line (at 36.830 -17.780 180) (length 5.080)
(name "PB4" (effects (font (size 1.27 1.27))))
(number "25" (effects (font (size 1.27 1.27))))
)
(pin bidirectional line (at 36.830 -20.320 180) (length 5.080)
(name "PB5" (effects (font (size 1.27 1.27))))
(number "26" (effects (font (size 1.27 1.27))))
)
(pin bidirectional line (at 36.830 -22.860 180) (length 5.080)
(name "PB6" (effects (font (size 1.27 1.27))))
(number "27" (effects (font (size 1.27 1.27))))
)
(pin bidirectional line (at 36.830 -25.400 180) (length 5.080)
(name "PB7" (effects (font (size 1.27 1.27))))
(number "28" (effects (font (size 1.27 1.27))))
)
(pin bidirectional line (at 36.830 -27.940 180) (length 5.080)
(name "PB8-BOOT0" (effects (font (size 1.27 1.27))))
(number "1" (effects (font (size 1.27 1.27))))
)
(pin input inverted (at 36.830 -33.020 180) (length 5.080)
(name "NRST" (effects (font (size 1.27 1.27))))
(number "4" (effects (font (size 1.27 1.27))))
)
(pin power_in line (at 15.240 5.080 270) (length 5.080)
(name "VDD" (effects (font (size 1.27 1.27))))
(number "17" (effects (font (size 1.27 1.27))))
)
(pin power_in line (at 17.780 5.080 270) (length 5.080)
(name "VDDIO2" (effects (font (size 1.27 1.27))))
(number "18" (effects (font (size 1.27 1.27))))
)
(pin power_in line (at 20.320 5.080 270) (length 5.080)
(name "VDDA" (effects (font (size 1.27 1.27))))
(number "5" (effects (font (size 1.27 1.27))))
)
(pin power_in line (at 17.780 -48.260 90) (length 5.080)
(name "VSS" (effects (font (size 1.27 1.27))))
(number "16" (effects (font (size 1.27 1.27))))
)
)
)
(symbol "STM32F042FxP" (in_bom yes) (on_board yes)
(property "Reference" "U" (at 0.000 0.762 0)
(effects (font (size 1.27 1.27)) (justify left bottom))
)
(property "Value" "STM32F042FxP" (at 18.542 -41.402 0)
(effects (font (size 1.27 1.27)) (justify left top))
)
(property "Footprint" "qeda:SOP65P640X120-20N" (at 0 0 0)
(effects (font (size 1.27 1.27)) hide)
)
(property "Datasheet" "https://www.st.com/resource/en/datasheet/stm32f042g6.pdf" (at 0 0 0)
(effects (font (size 1.27 1.27)) hide)
)
(property "ki_description" "Cortex-M0 USB line MCU" (at 0 0 0)
(effects (font (size 1.27 1.27)) hide)
)
(property "ki_keywords" "MCU, micro-controller" (at 0 0 0)
(effects (font (size 1.27 1.27)) hide)
)
(symbol "STM32F042FxP_1_1"
(rectangle (start 0.000 0.000) (end 31.750 -40.640)
(stroke (width 0.305) (type default))
(fill (type background))
)
(pin bidirectional line (at -5.080 -2.540 0) (length 5.080)
(name "PA0" (effects (font (size 1.27 1.27))))
(number "6" (effects (font (size 1.27 1.27))))
)
(pin bidirectional line (at -5.080 -5.080 0) (length 5.080)
(name "PA1" (effects (font (size 1.27 1.27))))
(number "7" (effects (font (size 1.27 1.27))))
)
(pin bidirectional line (at -5.080 -7.620 0) (length 5.080)
(name "PA2" (effects (font (size 1.27 1.27))))
(number "8" (effects (font (size 1.27 1.27))))
)
(pin bidirectional line (at -5.080 -10.160 0) (length 5.080)
(name "PA3" (effects (font (size 1.27 1.27))))
(number "9" (effects (font (size 1.27 1.27))))
)
(pin bidirectional line (at -5.080 -12.700 0) (length 5.080)
(name "PA4" (effects (font (size 1.27 1.27))))
(number "10" (effects (font (size 1.27 1.27))))
)
(pin bidirectional line (at -5.080 -15.240 0) (length 5.080)
(name "PA5" (effects (font (size 1.27 1.27))))
(number "11" (effects (font (size 1.27 1.27))))
)
(pin bidirectional line (at -5.080 -17.780 0) (length 5.080)
(name "PA6" (effects (font (size 1.27 1.27))))
(number "12" (effects (font (size 1.27 1.27))))
)
(pin bidirectional line (at -5.080 -20.320 0) (length 5.080)
(name "PA7" (effects (font (size 1.27 1.27))))
(number "13" (effects (font (size 1.27 1.27))))
)
(pin bidirectional line (at -5.080 -22.860 0) (length 5.080)
(name "PA9-PA11" (effects (font (size 1.27 1.27))))
(number "17" (effects (font (size 1.27 1.27))))
)
(pin bidirectional line (at -5.080 -25.400 0) (length 5.080)
(name "PA10-PA12" (effects (font (size 1.27 1.27))))
(number "18" (effects (font (size 1.27 1.27))))
)
(pin bidirectional line (at -5.080 -27.940 0) (length 5.080)
(name "PA13-SWDIO" (effects (font (size 1.27 1.27))))
(number "19" (effects (font (size 1.27 1.27))))
)
(pin bidirectional line (at -5.080 -30.480 0) (length 5.080)
(name "PA14-SWCLK" (effects (font (size 1.27 1.27))))
(number "20" (effects (font (size 1.27 1.27))))
)
(pin bidirectional line (at -5.080 -35.560 0) (length 5.080)
(name "PF0-OSC_IN" (effects (font (size 1.27 1.27))))
(number "2" (effects (font (size 1.27 1.27))))
)
(pin bidirectional line (at -5.080 -38.100 0) (length 5.080)
(name "PF1-OSC_OUT" (effects (font (size 1.27 1.27))))
(number "3" (effects (font (size 1.27 1.27))))
)
(pin bidirectional line (at 36.830 -16.510 180) (length 5.080)
(name "PB1" (effects (font (size 1.27 1.27))))
(number "14" (effects (font (size 1.27 1.27))))
)
(pin bidirectional line (at 36.830 -19.050 180) (length 5.080)
(name "PB8-BOOT0" (effects (font (size 1.27 1.27))))
(number "1" (effects (font (size 1.27 1.27))))
)
(pin input inverted (at 36.830 -24.130 180) (length 5.080)
(name "NRST" (effects (font (size 1.27 1.27))))
(number "4" (effects (font (size 1.27 1.27))))
)
(pin unspecified line (at 16.510 5.080 270) (length 5.080)
(name "VDD-VDDIO2" (effects (font (size 1.27 1.27))))
(number "16" (effects (font (size 1.27 1.27))))
)
(pin power_in line (at 19.050 5.080 270) (length 5.080)
(name "VDDA" (effects (font (size 1.27 1.27))))
(number "5" (effects (font (size 1.27 1.27))))
)
(pin power_in line (at 17.780 -45.720 90) (length 5.080)
(name "VSS" (effects (font (size 1.27 1.27))))
(number "15" (effects (font (size 1.27 1.27))))
)
)
)
(symbol "1206SFH" (pin_numbers hide) (pin_names hide) (in_bom yes) (on_board yes)
(property "Reference" "F" (at 0.000 1.778 0)
(effects (font (size 1.27 1.27)) (justify bottom))
)
(property "Value" "1206SFH" (at 0.000 -1.778 0)
(effects (font (size 1.27 1.27)) (justify top))
)
(property "Footprint" "qeda:FUSC3215X117N" (at 0 0 0)
(effects (font (size 1.27 1.27)) hide)
)
(property "Datasheet" "~" (at 0 0 0)
(effects (font (size 1.27 1.27)) hide)
)
(property "ki_description" "1206 (3216mm) High-Current-Rated Chip Fuse" (at 0 0 0)
(effects (font (size 1.27 1.27)) hide)
)
(property "ki_keywords" "Fuse" (at 0 0 0)
(effects (font (size 1.27 1.27)) hide)
)
(symbol "1206SFH_1_1"
(rectangle (start -2.540 1.016) (end 2.540 -1.016)
(stroke (width 0.305) (type default))
(fill (type background))
)
(polyline
(pts
(xy -2.540 0.000)
(xy 2.540 0.000)
)
(stroke (width 0.305) (type default))
(fill (type none))
)
(pin passive line (at -3.810 0.000 0) (length 1.270)
(name "L" (effects (font (size 1.27 1.27))))
(number "1" (effects (font (size 1.27 1.27))))
)
(pin passive line (at 3.810 0.000 180) (length 1.270)
(name "R" (effects (font (size 1.27 1.27))))
(number "2" (effects (font (size 1.27 1.27))))
)
)
)
)

View File

@ -1,12 +1,12 @@
(module CONNECTOR_USB-A-PLUG (layer F.Cu)
(attr smd)
(pad 1 smd rect (at -3.500 0.930) (size 1.000 7.410) (layers F.Cu F.Mask F.Paste)
(pad 1 smd rect (at -3.500 -0.930) (size 1.400 7.410) (layers F.Cu F.Mask F.Paste)
(solder_mask_margin 0.050))
(pad 4 smd rect (at 3.500 0.930) (size 1.000 7.410) (layers F.Cu F.Mask F.Paste)
(pad 4 smd rect (at 3.500 -0.930) (size 1.400 7.410) (layers F.Cu F.Mask F.Paste)
(solder_mask_margin 0.050))
(pad 2 smd rect (at -1.000 0.430) (size 1.000 6.410) (layers F.Cu F.Mask F.Paste)
(pad 2 smd rect (at -1.000 -0.430) (size 1.200 6.410) (layers F.Cu F.Mask F.Paste)
(solder_mask_margin 0.050))
(pad 3 smd rect (at 1.000 0.430) (size 1.000 6.410) (layers F.Cu F.Mask F.Paste)
(pad 3 smd rect (at 1.000 -0.430) (size 1.200 6.410) (layers F.Cu F.Mask F.Paste)
(solder_mask_margin 0.050))
(fp_text reference REF** (at 0.000 0.000) (layer F.SilkS)
(effects (font (size 1.200 1.200) (thickness 0.200)))

View File

@ -0,0 +1,35 @@
(module FUSC3215X117N (layer F.Cu)
(attr smd)
(pad 1 smd rect (at 0.000 -1.500) (size 1.950 1.400) (layers F.Cu F.Mask F.Paste)
(solder_mask_margin 0.050))
(pad 2 smd rect (at 0.000 1.500) (size 1.950 1.400) (layers F.Cu F.Mask F.Paste)
(solder_mask_margin 0.050))
(fp_text reference REF** (at 0.000 0.000) (layer F.SilkS)
(effects (font (size 1.200 1.200) (thickness 0.200)))
)
(fp_line (start -1.275 -1.700) (end -1.275 1.700) (layer F.SilkS) (width 0.200))
(fp_line (start 1.275 -1.700) (end 1.275 1.700) (layer F.SilkS) (width 0.200))
(fp_circle (center 0.000 0.000) (end 0.000 0.500) (layer F.Fab) (width 0.100))
(fp_line (start -0.700 0.000) (end 0.700 0.000) (layer F.Fab) (width 0.100))
(fp_line (start 0.000 -0.700) (end 0.000 0.700) (layer F.Fab) (width 0.100))
(fp_text value FUSC3215X117N (at 0.000 0.000 90) (layer F.Fab)
(effects (font (size 0.990 0.990) (thickness 0.100)))
)
(fp_text user REF** (at 0.000 0.000 90) hide (layer F.Fab)
(effects (font (size 0.990 0.990) (thickness 0.100)))
)
(fp_rect (start -0.750 -1.600) (end 0.750 1.600) (layer F.Fab) (width 0.100))
(fp_line (start -1.225 -2.450) (end -1.225 -1.850) (layer F.CrtYd) (width 0.050))
(fp_line (start -1.225 -1.850) (end -1.225 1.850) (layer F.CrtYd) (width 0.050))
(fp_line (start -1.225 1.850) (end -1.225 2.450) (layer F.CrtYd) (width 0.050))
(fp_line (start -1.225 2.450) (end 1.225 2.450) (layer F.CrtYd) (width 0.050))
(fp_line (start 1.225 2.450) (end 1.225 1.850) (layer F.CrtYd) (width 0.050))
(fp_line (start 1.225 1.850) (end 1.225 -1.850) (layer F.CrtYd) (width 0.050))
(fp_line (start 1.225 -1.850) (end 1.225 -2.450) (layer F.CrtYd) (width 0.050))
(fp_line (start 1.225 -2.450) (end -1.225 -2.450) (layer F.CrtYd) (width 0.050))
(model ../qeda.3dshapes/FUSC3215X117N.stp
(at (xyz -0.029527559055118113 -0.06299212598425198 0))
(scale (xyz 1 1 1))
(rotate (xyz 0 0 0 ))
)
)

View File

@ -0,0 +1,103 @@
(module QFN50P400X400X60-28N (layer F.Cu)
(attr smd)
(pad 1 smd rect (at -1.950 -1.500) (size 0.850 0.300) (layers F.Cu F.Mask F.Paste)
(solder_mask_margin 0.001))
(pad 2 smd rect (at -1.950 -1.000) (size 0.850 0.300) (layers F.Cu F.Mask F.Paste)
(solder_mask_margin 0.001))
(pad 3 smd rect (at -1.950 -0.500) (size 0.850 0.300) (layers F.Cu F.Mask F.Paste)
(solder_mask_margin 0.001))
(pad 4 smd rect (at -1.950 0.000) (size 0.850 0.300) (layers F.Cu F.Mask F.Paste)
(solder_mask_margin 0.001))
(pad 5 smd rect (at -1.950 0.500) (size 0.850 0.300) (layers F.Cu F.Mask F.Paste)
(solder_mask_margin 0.001))
(pad 6 smd rect (at -1.950 1.000) (size 0.850 0.300) (layers F.Cu F.Mask F.Paste)
(solder_mask_margin 0.001))
(pad 7 smd rect (at -1.950 1.500) (size 0.850 0.300) (layers F.Cu F.Mask F.Paste)
(solder_mask_margin 0.001))
(pad 8 smd rect (at -1.500 1.950) (size 0.300 0.850) (layers F.Cu F.Mask F.Paste)
(solder_mask_margin 0.001))
(pad 9 smd rect (at -1.000 1.950) (size 0.300 0.850) (layers F.Cu F.Mask F.Paste)
(solder_mask_margin 0.001))
(pad 10 smd rect (at -0.500 1.950) (size 0.300 0.850) (layers F.Cu F.Mask F.Paste)
(solder_mask_margin 0.001))
(pad 11 smd rect (at 0.000 1.950) (size 0.300 0.850) (layers F.Cu F.Mask F.Paste)
(solder_mask_margin 0.001))
(pad 12 smd rect (at 0.500 1.950) (size 0.300 0.850) (layers F.Cu F.Mask F.Paste)
(solder_mask_margin 0.001))
(pad 13 smd rect (at 1.000 1.950) (size 0.300 0.850) (layers F.Cu F.Mask F.Paste)
(solder_mask_margin 0.001))
(pad 14 smd rect (at 1.500 1.950) (size 0.300 0.850) (layers F.Cu F.Mask F.Paste)
(solder_mask_margin 0.001))
(pad 15 smd rect (at 1.950 1.500) (size 0.850 0.300) (layers F.Cu F.Mask F.Paste)
(solder_mask_margin 0.001))
(pad 16 smd rect (at 1.950 1.000) (size 0.850 0.300) (layers F.Cu F.Mask F.Paste)
(solder_mask_margin 0.001))
(pad 17 smd rect (at 1.950 0.500) (size 0.850 0.300) (layers F.Cu F.Mask F.Paste)
(solder_mask_margin 0.001))
(pad 18 smd rect (at 1.950 0.000) (size 0.850 0.300) (layers F.Cu F.Mask F.Paste)
(solder_mask_margin 0.001))
(pad 19 smd rect (at 1.950 -0.500) (size 0.850 0.300) (layers F.Cu F.Mask F.Paste)
(solder_mask_margin 0.001))
(pad 20 smd rect (at 1.950 -1.000) (size 0.850 0.300) (layers F.Cu F.Mask F.Paste)
(solder_mask_margin 0.001))
(pad 21 smd rect (at 1.950 -1.500) (size 0.850 0.300) (layers F.Cu F.Mask F.Paste)
(solder_mask_margin 0.001))
(pad 22 smd rect (at 1.500 -1.950) (size 0.300 0.850) (layers F.Cu F.Mask F.Paste)
(solder_mask_margin 0.001))
(pad 23 smd rect (at 1.000 -1.950) (size 0.300 0.850) (layers F.Cu F.Mask F.Paste)
(solder_mask_margin 0.001))
(pad 24 smd rect (at 0.500 -1.950) (size 0.300 0.850) (layers F.Cu F.Mask F.Paste)
(solder_mask_margin 0.001))
(pad 25 smd rect (at 0.000 -1.950) (size 0.300 0.850) (layers F.Cu F.Mask F.Paste)
(solder_mask_margin 0.001))
(pad 26 smd rect (at -0.500 -1.950) (size 0.300 0.850) (layers F.Cu F.Mask F.Paste)
(solder_mask_margin 0.001))
(pad 27 smd rect (at -1.000 -1.950) (size 0.300 0.850) (layers F.Cu F.Mask F.Paste)
(solder_mask_margin 0.001))
(pad 28 smd rect (at -1.500 -1.950) (size 0.300 0.850) (layers F.Cu F.Mask F.Paste)
(solder_mask_margin 0.001))
(fp_text reference REF** (at 0.000 0.000) (layer F.SilkS)
(effects (font (size 1.200 1.200) (thickness 0.200)))
)
(fp_line (start -2.100 -1.950) (end -2.675 -1.950) (layer F.SilkS) (width 0.200))
(fp_line (start -2.675 -1.950) (end -2.675 -1.350) (layer F.SilkS) (width 0.200))
(fp_circle (center 0.000 0.000) (end 0.000 0.500) (layer F.Fab) (width 0.100))
(fp_line (start -0.700 0.000) (end 0.700 0.000) (layer F.Fab) (width 0.100))
(fp_line (start 0.000 -0.700) (end 0.000 0.700) (layer F.Fab) (width 0.100))
(fp_text value QFN50P400X400X60-28N (at 0.000 0.000 0) (layer F.Fab)
(effects (font (size 1.000 1.000) (thickness 0.100)))
)
(fp_text user REF** (at 0.000 0.000 0) hide (layer F.Fab)
(effects (font (size 1.000 1.000) (thickness 0.100)))
)
(fp_line (start -1.000 -2.000) (end 2.000 -2.000) (layer F.Fab) (width 0.100))
(fp_line (start 2.000 -2.000) (end 2.000 2.000) (layer F.Fab) (width 0.100))
(fp_line (start 2.000 2.000) (end -2.000 2.000) (layer F.Fab) (width 0.100))
(fp_line (start -2.000 2.000) (end -2.000 -1.000) (layer F.Fab) (width 0.100))
(fp_line (start -2.000 -1.000) (end -1.000 -2.000) (layer F.Fab) (width 0.100))
(fp_line (start -2.625 -1.900) (end -2.250 -1.900) (layer F.CrtYd) (width 0.050))
(fp_line (start -2.250 -1.900) (end -2.250 -2.250) (layer F.CrtYd) (width 0.050))
(fp_line (start -2.250 -2.250) (end -1.900 -2.250) (layer F.CrtYd) (width 0.050))
(fp_line (start -1.900 -2.250) (end -1.900 -2.625) (layer F.CrtYd) (width 0.050))
(fp_line (start -1.900 -2.625) (end 1.900 -2.625) (layer F.CrtYd) (width 0.050))
(fp_line (start 1.900 -2.625) (end 1.900 -2.250) (layer F.CrtYd) (width 0.050))
(fp_line (start 1.900 -2.250) (end 2.250 -2.250) (layer F.CrtYd) (width 0.050))
(fp_line (start 2.250 -2.250) (end 2.250 -1.900) (layer F.CrtYd) (width 0.050))
(fp_line (start 2.250 -1.900) (end 2.625 -1.900) (layer F.CrtYd) (width 0.050))
(fp_line (start 2.625 -1.900) (end 2.625 1.900) (layer F.CrtYd) (width 0.050))
(fp_line (start 2.625 1.900) (end 2.250 1.900) (layer F.CrtYd) (width 0.050))
(fp_line (start 2.250 1.900) (end 2.250 2.250) (layer F.CrtYd) (width 0.050))
(fp_line (start 2.250 2.250) (end 1.900 2.250) (layer F.CrtYd) (width 0.050))
(fp_line (start 1.900 2.250) (end 1.900 2.625) (layer F.CrtYd) (width 0.050))
(fp_line (start 1.900 2.625) (end -1.900 2.625) (layer F.CrtYd) (width 0.050))
(fp_line (start -1.900 2.625) (end -1.900 2.250) (layer F.CrtYd) (width 0.050))
(fp_line (start -1.900 2.250) (end -2.250 2.250) (layer F.CrtYd) (width 0.050))
(fp_line (start -2.250 2.250) (end -2.250 1.900) (layer F.CrtYd) (width 0.050))
(fp_line (start -2.250 1.900) (end -2.625 1.900) (layer F.CrtYd) (width 0.050))
(fp_line (start -2.625 1.900) (end -2.625 -1.900) (layer F.CrtYd) (width 0.050))
(model ../qeda.3dshapes/QFN50P400X400X60-28N.stp
(at (xyz -0.07874015748031496 -0.07874015748031496 0))
(scale (xyz 1 1 1))
(rotate (xyz 0 0 0 ))
)
)

View File

@ -0,0 +1,81 @@
(module SOP65P640X120-20N (layer F.Cu)
(attr smd)
(pad 1 smd rect (at -2.950 -2.925) (size 1.525 0.450) (layers F.Cu F.Mask F.Paste)
(solder_mask_margin 0.001))
(pad 2 smd rect (at -2.950 -2.275) (size 1.525 0.450) (layers F.Cu F.Mask F.Paste)
(solder_mask_margin 0.001))
(pad 3 smd rect (at -2.950 -1.625) (size 1.525 0.450) (layers F.Cu F.Mask F.Paste)
(solder_mask_margin 0.001))
(pad 4 smd rect (at -2.950 -0.975) (size 1.525 0.450) (layers F.Cu F.Mask F.Paste)
(solder_mask_margin 0.001))
(pad 5 smd rect (at -2.950 -0.325) (size 1.525 0.450) (layers F.Cu F.Mask F.Paste)
(solder_mask_margin 0.001))
(pad 6 smd rect (at -2.950 0.325) (size 1.525 0.450) (layers F.Cu F.Mask F.Paste)
(solder_mask_margin 0.001))
(pad 7 smd rect (at -2.950 0.975) (size 1.525 0.450) (layers F.Cu F.Mask F.Paste)
(solder_mask_margin 0.001))
(pad 8 smd rect (at -2.950 1.625) (size 1.525 0.450) (layers F.Cu F.Mask F.Paste)
(solder_mask_margin 0.001))
(pad 9 smd rect (at -2.950 2.275) (size 1.525 0.450) (layers F.Cu F.Mask F.Paste)
(solder_mask_margin 0.001))
(pad 10 smd rect (at -2.950 2.925) (size 1.525 0.450) (layers F.Cu F.Mask F.Paste)
(solder_mask_margin 0.001))
(pad 20 smd rect (at 2.950 -2.925) (size 1.525 0.450) (layers F.Cu F.Mask F.Paste)
(solder_mask_margin 0.001))
(pad 19 smd rect (at 2.950 -2.275) (size 1.525 0.450) (layers F.Cu F.Mask F.Paste)
(solder_mask_margin 0.001))
(pad 18 smd rect (at 2.950 -1.625) (size 1.525 0.450) (layers F.Cu F.Mask F.Paste)
(solder_mask_margin 0.001))
(pad 17 smd rect (at 2.950 -0.975) (size 1.525 0.450) (layers F.Cu F.Mask F.Paste)
(solder_mask_margin 0.001))
(pad 16 smd rect (at 2.950 -0.325) (size 1.525 0.450) (layers F.Cu F.Mask F.Paste)
(solder_mask_margin 0.001))
(pad 15 smd rect (at 2.950 0.325) (size 1.525 0.450) (layers F.Cu F.Mask F.Paste)
(solder_mask_margin 0.001))
(pad 14 smd rect (at 2.950 0.975) (size 1.525 0.450) (layers F.Cu F.Mask F.Paste)
(solder_mask_margin 0.001))
(pad 13 smd rect (at 2.950 1.625) (size 1.525 0.450) (layers F.Cu F.Mask F.Paste)
(solder_mask_margin 0.001))
(pad 12 smd rect (at 2.950 2.275) (size 1.525 0.450) (layers F.Cu F.Mask F.Paste)
(solder_mask_margin 0.001))
(pad 11 smd rect (at 2.950 2.925) (size 1.525 0.450) (layers F.Cu F.Mask F.Paste)
(solder_mask_margin 0.001))
(fp_text reference REF** (at 0.000 0.000) (layer F.SilkS)
(effects (font (size 1.200 1.200) (thickness 0.200)))
)
(fp_line (start -2.300 -3.450) (end 2.300 -3.450) (layer F.SilkS) (width 0.200))
(fp_line (start 2.300 3.450) (end -2.300 3.450) (layer F.SilkS) (width 0.200))
(fp_line (start -2.300 -3.450) (end -4.013 -3.450) (layer F.SilkS) (width 0.200))
(fp_line (start -4.013 -3.450) (end -4.013 -2.700) (layer F.SilkS) (width 0.200))
(fp_circle (center 0.000 0.000) (end 0.000 0.500) (layer F.Fab) (width 0.100))
(fp_line (start -0.700 0.000) (end 0.700 0.000) (layer F.Fab) (width 0.100))
(fp_line (start 0.000 -0.700) (end 0.000 0.700) (layer F.Fab) (width 0.100))
(fp_text value SOP65P640X120-20N (at 0.000 0.000 90) (layer F.Fab)
(effects (font (size 1.000 1.000) (thickness 0.100)))
)
(fp_text user REF** (at 0.000 0.000 90) hide (layer F.Fab)
(effects (font (size 1.000 1.000) (thickness 0.100)))
)
(fp_line (start -1.200 -3.250) (end 2.200 -3.250) (layer F.Fab) (width 0.100))
(fp_line (start 2.200 -3.250) (end 2.200 3.250) (layer F.Fab) (width 0.100))
(fp_line (start 2.200 3.250) (end -2.200 3.250) (layer F.Fab) (width 0.100))
(fp_line (start -2.200 3.250) (end -2.200 -2.250) (layer F.Fab) (width 0.100))
(fp_line (start -2.200 -2.250) (end -1.200 -3.250) (layer F.Fab) (width 0.100))
(fp_line (start -3.963 -3.400) (end -2.450 -3.400) (layer F.CrtYd) (width 0.050))
(fp_line (start -2.450 -3.400) (end -2.450 -3.500) (layer F.CrtYd) (width 0.050))
(fp_line (start -2.450 -3.500) (end 2.450 -3.500) (layer F.CrtYd) (width 0.050))
(fp_line (start 2.450 -3.500) (end 2.450 -3.400) (layer F.CrtYd) (width 0.050))
(fp_line (start 2.450 -3.400) (end 3.963 -3.400) (layer F.CrtYd) (width 0.050))
(fp_line (start 3.963 -3.400) (end 3.963 3.400) (layer F.CrtYd) (width 0.050))
(fp_line (start 3.963 3.400) (end 2.450 3.400) (layer F.CrtYd) (width 0.050))
(fp_line (start 2.450 3.400) (end 2.450 3.500) (layer F.CrtYd) (width 0.050))
(fp_line (start 2.450 3.500) (end -2.450 3.500) (layer F.CrtYd) (width 0.050))
(fp_line (start -2.450 3.500) (end -2.450 3.400) (layer F.CrtYd) (width 0.050))
(fp_line (start -2.450 3.400) (end -3.963 3.400) (layer F.CrtYd) (width 0.050))
(fp_line (start -3.963 3.400) (end -3.963 -3.400) (layer F.CrtYd) (width 0.050))
(model ../qeda.3dshapes/SOP65P640X120-20N.stp
(at (xyz -0.08661417322834647 -0.1279527559055118 0))
(scale (xyz 1 1 1))
(rotate (xyz 0 0 0 ))
)
)

@ -1 +1 @@
Subproject commit e5b0ca3a0f7bb2f5766f3702089849c8915a0f99
Subproject commit 3f3f15e7c3aacf85d86bfeb31cfcd14abf2f66e1

61
panel.json Normal file
View File

@ -0,0 +1,61 @@
{
"layout": {
"type": "grid",
"rows": 6,
"cols": 5,
"hspace": "2mm",
"vspace": "2mm",
"hbackbone": "3mm",
"hboneskip": 2,
"vbonecut": false,
"hbonecut": false
},
"source": {
"type": "auto",
"tolerance": "15mm"
},
"tabs": {
"type": "annotation",
"width": "2mm"
},
"cuts": {
"type": "mousebites",
"drill": "0.5mm",
"spacing": "1mm",
"offset": "0.2mm",
"prolong": "0.5mm"
},
"framing": {
"type": "frame",
"width": "3mm",
"space": "2mm"
},
"tooling": {
"type": "3hole",
"hoffset": "1.5mm",
"voffset": "1.5mm",
"size": "1.152mm"
},
"fiducials": {
"type": "3fid",
"hoffset": "7mm",
"voffset": "1.5mm",
"coppersize": "1mm",
"opening": "2mm"
},
"text": {
"type": "simple",
"text": "passkey v$version$.$revision$ $date$ JLCJLCJLCJLC",
"anchor": "mt",
"voffset": "1.5mm",
"hoffset": "1.5mm",
"hjustify": "center",
"vjustify": "center"
},
"post": {
"type": "auto",
"millradius": "1mm",
"copperfill": true,
"refillzones": true
}
}

File diff suppressed because it is too large Load Diff

View File

@ -3,14 +3,17 @@
"3dviewports": [],
"design_settings": {
"defaults": {
"board_outline_line_width": 0.049999999999999996,
"copper_line_width": 0.19999999999999998,
"apply_defaults_to_fp_fields": false,
"apply_defaults_to_fp_shapes": false,
"apply_defaults_to_fp_text": false,
"board_outline_line_width": 0.05,
"copper_line_width": 0.2,
"copper_text_italic": false,
"copper_text_size_h": 1.5,
"copper_text_size_v": 1.5,
"copper_text_thickness": 0.3,
"copper_text_upright": false,
"courtyard_line_width": 0.049999999999999996,
"courtyard_line_width": 0.05,
"dimension_precision": 4,
"dimension_units": 3,
"dimensions": {
@ -21,7 +24,7 @@
"text_position": 0,
"units_format": 1
},
"fab_line_width": 0.09999999999999999,
"fab_line_width": 0.1,
"fab_text_italic": false,
"fab_text_size_h": 1.0,
"fab_text_size_v": 1.0,
@ -34,9 +37,9 @@
"other_text_thickness": 0.15,
"other_text_upright": false,
"pads": {
"drill": 0.0,
"height": 1.2,
"width": 0.6
"drill": 1.6,
"height": 1.5,
"width": 1.9
},
"silk_line_width": 0.15,
"silk_text_italic": false,
@ -46,7 +49,7 @@
"silk_text_upright": false,
"zones": {
"45_degree_only": false,
"min_clearance": 0.19999999999999998
"min_clearance": 0.2
}
},
"diff_pair_dimensions": [
@ -54,6 +57,11 @@
"gap": 0.0,
"via_gap": 0.0,
"width": 0.0
},
{
"gap": 0.15,
"via_gap": 0.0,
"width": 0.15
}
],
"drc_exclusions": [],
@ -73,6 +81,7 @@
"duplicate_footprints": "warning",
"extra_footprint": "warning",
"footprint": "error",
"footprint_symbol_mismatch": "warning",
"footprint_type_mismatch": "error",
"hole_clearance": "error",
"hole_near_hole": "error",
@ -116,14 +125,14 @@
"max_error": 0.005,
"min_clearance": 0.127,
"min_connection": 0.0,
"min_copper_edge_clearance": 0.19999999999999998,
"min_copper_edge_clearance": 0.1995,
"min_hole_clearance": 0.254,
"min_hole_to_hole": 0.254,
"min_microvia_diameter": 0.19999999999999998,
"min_microvia_drill": 0.09999999999999999,
"min_microvia_diameter": 0.2,
"min_microvia_drill": 0.1,
"min_resolved_spokes": 2,
"min_silk_clearance": 0.0,
"min_text_height": 0.7999999999999999,
"min_text_height": 0.8,
"min_text_thickness": 0.08,
"min_through_hole_diameter": 0.3,
"min_track_width": 0.127,
@ -136,9 +145,6 @@
},
"teardrop_options": [
{
"td_allow_use_two_tracks": true,
"td_curve_segcount": 5,
"td_on_pad_in_zone": false,
"td_onpadsmd": true,
"td_onroundshapesonly": false,
"td_ontrackend": false,
@ -147,39 +153,72 @@
],
"teardrop_parameters": [
{
"td_allow_use_two_tracks": true,
"td_curve_segcount": 0,
"td_height_ratio": 1.0,
"td_length_ratio": 0.5,
"td_maxheight": 2.0,
"td_maxlen": 1.0,
"td_on_pad_in_zone": false,
"td_target_name": "td_round_shape",
"td_width_to_size_filter_ratio": 0.9
},
{
"td_allow_use_two_tracks": true,
"td_curve_segcount": 0,
"td_height_ratio": 1.0,
"td_length_ratio": 0.5,
"td_maxheight": 2.0,
"td_maxlen": 1.0,
"td_on_pad_in_zone": false,
"td_target_name": "td_rect_shape",
"td_width_to_size_filter_ratio": 0.9