add readme and USB proto

This commit is contained in:
Edward Emelianov 2023-11-28 22:47:21 +03:00
parent 3100cb5226
commit 091f87d218
66 changed files with 150746 additions and 0 deletions

View File

@ -0,0 +1 @@
New device that we intend to use instead of BTA PEP controllers.

Binary file not shown.

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 112 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 154 KiB

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,36 @@
8279029184160
my_footprints
B0x0xS
0
4
4
my_footprints
B0505S-2W
0
4
4
my_footprints
Hole_3mm
0
1
1
my_footprints
VRB2405
0
5
5
my_footprints
VRB_DCDC
0
5
5

View File

@ -0,0 +1,4 @@
(fp_lib_table
(lib (name "my_footprints")(type "KiCad")(uri "${KIPRJMOD}/my_footprints.pretty")(options "")(descr ""))
(lib (name "kicad")(type "KiCad")(uri "/home/eddy/Docs/SAO/ELECTRONICS/STM32/F0-srcs/CANbus4BTA/kicad.pretty")(options "")(descr ""))
)

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,548 @@
%TF.GenerationSoftware,KiCad,Pcbnew,6.0.5*%
%TF.CreationDate,2022-11-11T14:10:47+03:00*%
%TF.ProjectId,stm32,73746d33-322e-46b6-9963-61645f706362,rev?*%
%TF.SameCoordinates,Original*%
%TF.FileFunction,Soldermask,Bot*%
%TF.FilePolarity,Negative*%
%FSLAX46Y46*%
G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)*
G04 Created by KiCad (PCBNEW 6.0.5) date 2022-11-11 14:10:47*
%MOMM*%
%LPD*%
G01*
G04 APERTURE LIST*
G04 Aperture macros list*
%AMRoundRect*
0 Rectangle with rounded corners*
0 $1 Rounding radius*
0 $2 $3 $4 $5 $6 $7 $8 $9 X,Y pos of 4 corners*
0 Add a 4 corners polygon primitive as box body*
4,1,4,$2,$3,$4,$5,$6,$7,$8,$9,$2,$3,0*
0 Add four circle primitives for the rounded corners*
1,1,$1+$1,$2,$3*
1,1,$1+$1,$4,$5*
1,1,$1+$1,$6,$7*
1,1,$1+$1,$8,$9*
0 Add four rect primitives between the rounded corners*
20,1,$1+$1,$2,$3,$4,$5,0*
20,1,$1+$1,$4,$5,$6,$7,0*
20,1,$1+$1,$6,$7,$8,$9,0*
20,1,$1+$1,$8,$9,$2,$3,0*%
G04 Aperture macros list end*
%ADD10R,1.600000X1.600000*%
%ADD11O,1.600000X1.600000*%
%ADD12R,2.600000X2.600000*%
%ADD13C,2.600000*%
%ADD14C,1.600000*%
%ADD15R,1.700000X1.700000*%
%ADD16O,1.700000X1.700000*%
%ADD17C,5.000000*%
%ADD18C,2.400000*%
%ADD19R,2.000000X2.000000*%
%ADD20C,2.000000*%
%ADD21RoundRect,0.250000X-1.550000X0.650000X-1.550000X-0.650000X1.550000X-0.650000X1.550000X0.650000X0*%
%ADD22O,3.600000X1.800000*%
%ADD23C,4.000000*%
%ADD24C,2.540000*%
%ADD25C,1.500000*%
%ADD26C,1.440000*%
%ADD27RoundRect,0.250000X-0.350000X-0.625000X0.350000X-0.625000X0.350000X0.625000X-0.350000X0.625000X0*%
%ADD28O,1.200000X1.750000*%
%ADD29C,1.700000*%
%ADD30C,3.500000*%
%ADD31C,3.000000*%
%ADD32R,3.000000X3.000000*%
%ADD33O,2.600000X2.600000*%
%ADD34R,1.000000X1.000000*%
%ADD35O,1.000000X1.000000*%
%ADD36RoundRect,0.250000X0.625000X-0.350000X0.625000X0.350000X-0.625000X0.350000X-0.625000X-0.350000X0*%
%ADD37O,1.750000X1.200000*%
%ADD38RoundRect,0.381000X-0.381000X0.619000X-0.381000X-0.619000X0.381000X-0.619000X0.381000X0.619000X0*%
%ADD39RoundRect,0.381000X-0.381000X0.762000X-0.381000X-0.762000X0.381000X-0.762000X0.381000X0.762000X0*%
%ADD40R,1.800000X1.800000*%
%ADD41O,1.800000X1.800000*%
%ADD42RoundRect,0.237500X-0.237500X0.250000X-0.237500X-0.250000X0.237500X-0.250000X0.237500X0.250000X0*%
%ADD43RoundRect,0.250000X-0.337500X-0.475000X0.337500X-0.475000X0.337500X0.475000X-0.337500X0.475000X0*%
G04 APERTURE END LIST*
D10*
%TO.C,U17*%
X26000000Y-113511428D03*
D11*
X26000000Y-116051428D03*
X33620000Y-116051428D03*
X33620000Y-113511428D03*
%TD*%
D12*
%TO.C,J27*%
X130047000Y-39183500D03*
D13*
X130047000Y-34183500D03*
%TD*%
D10*
%TO.C,C19*%
X95298349Y-32412500D03*
D14*
X98798349Y-32412500D03*
%TD*%
D10*
%TO.C,C28*%
X118541000Y-34444500D03*
D14*
X118541000Y-37944500D03*
%TD*%
D15*
%TO.C,JP4*%
X121583400Y-148695700D03*
D16*
X121583400Y-151235700D03*
X121583400Y-153775700D03*
%TD*%
D15*
%TO.C,J16*%
X75590400Y-94691200D03*
%TD*%
%TO.C,TP4*%
X130000000Y-57500000D03*
%TD*%
D17*
%TO.C,P3*%
X18500000Y-151000000D03*
%TD*%
D10*
%TO.C,SW4*%
X69814600Y-36804600D03*
D11*
X62194600Y-36804600D03*
%TD*%
D18*
%TO.C,C22*%
X108000000Y-66500000D03*
X108000000Y-51500000D03*
%TD*%
D15*
%TO.C,JP2*%
X91420000Y-113000000D03*
D16*
X93960000Y-113000000D03*
X96500000Y-113000000D03*
%TD*%
D10*
%TO.C,U15*%
X26000000Y-101985714D03*
D11*
X26000000Y-104525714D03*
X33620000Y-104525714D03*
X33620000Y-101985714D03*
%TD*%
D12*
%TO.C,J20*%
X24749600Y-150787800D03*
D13*
X29749600Y-150787800D03*
X34749600Y-150787800D03*
X39749600Y-150787800D03*
X44749600Y-150787800D03*
X49749600Y-150787800D03*
%TD*%
D15*
%TO.C,TP2*%
X130000000Y-61500000D03*
%TD*%
D19*
%TO.C,BZ1*%
X38700000Y-60000000D03*
D20*
X46300000Y-60000000D03*
%TD*%
D17*
%TO.C,P5*%
X130000000Y-49500000D03*
%TD*%
D15*
%TO.C,J15*%
X75590400Y-90982800D03*
%TD*%
D21*
%TO.C,J30*%
X18683400Y-80398958D03*
D22*
X18683400Y-85478958D03*
X18683400Y-90558958D03*
X18683400Y-95638958D03*
X18683400Y-100718958D03*
X18683400Y-105798958D03*
X18683400Y-110878958D03*
X18683400Y-115958958D03*
X18683400Y-121038958D03*
X18683400Y-126118958D03*
%TD*%
D23*
%TO.C,J28*%
X47111000Y-26116000D03*
X72111000Y-26116000D03*
D10*
X54071000Y-26416000D03*
D14*
X56841000Y-26416000D03*
X59611000Y-26416000D03*
X62381000Y-26416000D03*
X65151000Y-26416000D03*
X55456000Y-23576000D03*
X58226000Y-23576000D03*
X60996000Y-23576000D03*
X63766000Y-23576000D03*
%TD*%
D24*
%TO.C,Q2*%
X106781600Y-121970800D03*
X101701600Y-121970800D03*
X94081600Y-142290800D03*
X104241600Y-142290800D03*
X114401600Y-142290800D03*
%TD*%
D25*
%TO.C,Y1*%
X57678600Y-72276200D03*
X57678600Y-77156200D03*
%TD*%
%TO.C,Q8*%
X49384800Y-45143469D03*
X49384800Y-42603469D03*
X49384800Y-40063469D03*
X49384800Y-37523469D03*
%TD*%
D17*
%TO.C,P6*%
X74500000Y-49500000D03*
%TD*%
D12*
%TO.C,J25*%
X129805000Y-101000000D03*
D13*
X129805000Y-96000000D03*
X129805000Y-91000000D03*
%TD*%
D15*
%TO.C,J3*%
X41914200Y-106994800D03*
%TD*%
%TO.C,TP3*%
X91000000Y-45000000D03*
%TD*%
D26*
%TO.C,RV1*%
X38079800Y-24514600D03*
X35539800Y-24514600D03*
X32999800Y-24514600D03*
%TD*%
D27*
%TO.C,J19*%
X70500000Y-108099400D03*
D28*
X72500000Y-108099400D03*
X74500000Y-108099400D03*
X76500000Y-108099400D03*
%TD*%
D15*
%TO.C,J1*%
X61472200Y-114081400D03*
%TD*%
%TO.C,J2*%
X61472200Y-110525400D03*
%TD*%
%TO.C,J29*%
X127290000Y-76429200D03*
D29*
X127290000Y-78929200D03*
X129290000Y-78929200D03*
X129290000Y-76429200D03*
D30*
X132000000Y-71659200D03*
X132000000Y-83699200D03*
%TD*%
D31*
%TO.C,K1*%
X120707500Y-112292500D03*
X120707500Y-107292500D03*
X120707500Y-117292500D03*
X113207500Y-112292500D03*
X113207500Y-107292500D03*
X113207500Y-117292500D03*
D32*
X120707500Y-92292500D03*
D31*
X113207500Y-92292500D03*
%TD*%
D15*
%TO.C,J5*%
X41914200Y-110500000D03*
%TD*%
%TO.C,JP3*%
X82289600Y-148695700D03*
D16*
X82289600Y-151235700D03*
X82289600Y-153775700D03*
%TD*%
D10*
%TO.C,U14*%
X26000000Y-96222857D03*
D11*
X26000000Y-98762857D03*
X33620000Y-98762857D03*
X33620000Y-96222857D03*
%TD*%
D12*
%TO.C,D10*%
X103027000Y-40413500D03*
D33*
X99217000Y-40413500D03*
%TD*%
D23*
%TO.C,J18*%
X114205200Y-148658169D03*
X89205200Y-148658169D03*
D10*
X107245200Y-148358169D03*
D14*
X104475200Y-148358169D03*
X101705200Y-148358169D03*
X98935200Y-148358169D03*
X96165200Y-148358169D03*
X105860200Y-151198169D03*
X103090200Y-151198169D03*
X100320200Y-151198169D03*
X97550200Y-151198169D03*
%TD*%
D26*
%TO.C,RV2*%
X38029000Y-35843000D03*
X35489000Y-35843000D03*
X32949000Y-35843000D03*
%TD*%
D15*
%TO.C,J8*%
X61472200Y-117637400D03*
%TD*%
%TO.C,J17*%
X74879200Y-63093600D03*
%TD*%
D12*
%TO.C,J21*%
X18526000Y-25500000D03*
D13*
X18526000Y-30500000D03*
X18526000Y-35500000D03*
%TD*%
D34*
%TO.C,J9*%
X28525000Y-55825000D03*
D35*
X28525000Y-57095000D03*
X28525000Y-58365000D03*
X28525000Y-59635000D03*
X28525000Y-60905000D03*
X28525000Y-62175000D03*
%TD*%
D10*
%TO.C,U16*%
X26000000Y-107748571D03*
D11*
X26000000Y-110288571D03*
X33620000Y-110288571D03*
X33620000Y-107748571D03*
%TD*%
D10*
%TO.C,C18*%
X116890000Y-23012849D03*
D14*
X116890000Y-26512849D03*
%TD*%
D25*
%TO.C,Q1*%
X33645400Y-70780886D03*
X31105400Y-70780886D03*
X28565400Y-70780886D03*
X26025400Y-70780886D03*
%TD*%
D10*
%TO.C,U13*%
X26000000Y-84697143D03*
D11*
X26000000Y-87237143D03*
X33620000Y-87237143D03*
X33620000Y-84697143D03*
%TD*%
D27*
%TO.C,J22*%
X63338600Y-141059000D03*
D28*
X65338600Y-141059000D03*
X67338600Y-141059000D03*
%TD*%
D10*
%TO.C,SW2*%
X55274600Y-120717900D03*
D11*
X52734600Y-120717900D03*
X50194600Y-120717900D03*
X47654600Y-120717900D03*
X47654600Y-128337900D03*
X50194600Y-128337900D03*
X52734600Y-128337900D03*
X55274600Y-128337900D03*
%TD*%
D10*
%TO.C,U11*%
X26000000Y-90460000D03*
D11*
X26000000Y-93000000D03*
X33620000Y-93000000D03*
X33620000Y-90460000D03*
%TD*%
D15*
%TO.C,TP1*%
X101396000Y-52650000D03*
%TD*%
D17*
%TO.C,P1*%
X74500000Y-151000000D03*
%TD*%
D36*
%TO.C,J24*%
X79764000Y-61492000D03*
D37*
X79764000Y-59492000D03*
X79764000Y-57492000D03*
X79764000Y-55492000D03*
%TD*%
D17*
%TO.C,P4*%
X18500000Y-49500000D03*
%TD*%
D10*
%TO.C,U18*%
X26000000Y-119274286D03*
D11*
X26000000Y-121814286D03*
X33620000Y-121814286D03*
X33620000Y-119274286D03*
%TD*%
D15*
%TO.C,TP5*%
X87000000Y-45000000D03*
%TD*%
D20*
%TO.C,L1*%
X113000000Y-33809500D03*
X103000000Y-33809500D03*
%TD*%
D15*
%TO.C,JP1*%
X91475000Y-106000000D03*
D16*
X94015000Y-106000000D03*
X96555000Y-106000000D03*
%TD*%
D12*
%TO.C,J26*%
X130098000Y-27713500D03*
D13*
X130098000Y-22713500D03*
%TD*%
D15*
%TO.C,J4*%
X41914200Y-117612000D03*
%TD*%
%TO.C,J6*%
X41914200Y-114056000D03*
%TD*%
D38*
%TO.C,Q3*%
X32105600Y-127480400D03*
X32105600Y-130020400D03*
D39*
X32105600Y-135100400D03*
X32105600Y-140180400D03*
%TD*%
D40*
%TO.C,U9*%
X101298000Y-24488500D03*
D41*
X102998000Y-28188500D03*
X104698000Y-24488500D03*
X106398000Y-28188500D03*
X108098000Y-24488500D03*
%TD*%
D15*
%TO.C,J7*%
X61472200Y-106969400D03*
%TD*%
D10*
%TO.C,U12*%
X26000000Y-78934286D03*
D11*
X26000000Y-81474286D03*
X33620000Y-81474286D03*
X33620000Y-78934286D03*
%TD*%
D17*
%TO.C,P2*%
X130000000Y-151000000D03*
%TD*%
D12*
%TO.C,J23*%
X84291000Y-25351500D03*
D13*
X89291000Y-25351500D03*
%TD*%
D12*
%TO.C,J10*%
X129805000Y-117000000D03*
D13*
X129805000Y-112000000D03*
X129805000Y-107000000D03*
%TD*%
D15*
%TO.C,J38*%
X90170000Y-75946000D03*
%TD*%
D42*
%TO.C,R36*%
X28057400Y-105936386D03*
X28057400Y-107761386D03*
%TD*%
%TO.C,R32*%
X28057400Y-77130886D03*
X28057400Y-78955886D03*
%TD*%
D43*
%TO.C,C1*%
X31486400Y-73447886D03*
X33561400Y-73447886D03*
%TD*%
D42*
%TO.C,R35*%
X28057400Y-100197886D03*
X28057400Y-102022886D03*
%TD*%
%TO.C,R37*%
X28057400Y-111627886D03*
X28057400Y-113452886D03*
%TD*%
%TO.C,R38*%
X28057400Y-117493386D03*
X28057400Y-119318386D03*
%TD*%
%TO.C,R33*%
X28057400Y-82925886D03*
X28057400Y-84750886D03*
%TD*%
%TO.C,R34*%
X28057400Y-94482886D03*
X28057400Y-96307886D03*
%TD*%
%TO.C,R31*%
X28057400Y-88640886D03*
X28057400Y-90465886D03*
%TD*%
M02*

View File

@ -0,0 +1,74 @@
%TF.GenerationSoftware,KiCad,Pcbnew,6.0.5*%
%TF.CreationDate,2022-11-11T14:10:47+03:00*%
%TF.ProjectId,stm32,73746d33-322e-46b6-9963-61645f706362,rev?*%
%TF.SameCoordinates,Original*%
%TF.FileFunction,Paste,Bot*%
%TF.FilePolarity,Positive*%
%FSLAX46Y46*%
G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)*
G04 Created by KiCad (PCBNEW 6.0.5) date 2022-11-11 14:10:47*
%MOMM*%
%LPD*%
G01*
G04 APERTURE LIST*
G04 Aperture macros list*
%AMRoundRect*
0 Rectangle with rounded corners*
0 $1 Rounding radius*
0 $2 $3 $4 $5 $6 $7 $8 $9 X,Y pos of 4 corners*
0 Add a 4 corners polygon primitive as box body*
4,1,4,$2,$3,$4,$5,$6,$7,$8,$9,$2,$3,0*
0 Add four circle primitives for the rounded corners*
1,1,$1+$1,$2,$3*
1,1,$1+$1,$4,$5*
1,1,$1+$1,$6,$7*
1,1,$1+$1,$8,$9*
0 Add four rect primitives between the rounded corners*
20,1,$1+$1,$2,$3,$4,$5,0*
20,1,$1+$1,$4,$5,$6,$7,0*
20,1,$1+$1,$6,$7,$8,$9,0*
20,1,$1+$1,$8,$9,$2,$3,0*%
G04 Aperture macros list end*
%ADD10RoundRect,0.237500X-0.237500X0.250000X-0.237500X-0.250000X0.237500X-0.250000X0.237500X0.250000X0*%
%ADD11RoundRect,0.250000X-0.337500X-0.475000X0.337500X-0.475000X0.337500X0.475000X-0.337500X0.475000X0*%
G04 APERTURE END LIST*
D10*
%TO.C,R36*%
X28057400Y-105936386D03*
X28057400Y-107761386D03*
%TD*%
%TO.C,R32*%
X28057400Y-77130886D03*
X28057400Y-78955886D03*
%TD*%
D11*
%TO.C,C1*%
X31486400Y-73447886D03*
X33561400Y-73447886D03*
%TD*%
D10*
%TO.C,R35*%
X28057400Y-100197886D03*
X28057400Y-102022886D03*
%TD*%
%TO.C,R37*%
X28057400Y-111627886D03*
X28057400Y-113452886D03*
%TD*%
%TO.C,R38*%
X28057400Y-117493386D03*
X28057400Y-119318386D03*
%TD*%
%TO.C,R33*%
X28057400Y-82925886D03*
X28057400Y-84750886D03*
%TD*%
%TO.C,R34*%
X28057400Y-94482886D03*
X28057400Y-96307886D03*
%TD*%
%TO.C,R31*%
X28057400Y-88640886D03*
X28057400Y-90465886D03*
%TD*%
M02*

View File

@ -0,0 +1,423 @@
%TF.GenerationSoftware,KiCad,Pcbnew,6.0.5*%
%TF.CreationDate,2022-11-11T14:10:47+03:00*%
%TF.ProjectId,stm32,73746d33-322e-46b6-9963-61645f706362,rev?*%
%TF.SameCoordinates,Original*%
%TF.FileFunction,Legend,Bot*%
%TF.FilePolarity,Positive*%
%FSLAX46Y46*%
G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)*
G04 Created by KiCad (PCBNEW 6.0.5) date 2022-11-11 14:10:47*
%MOMM*%
%LPD*%
G01*
G04 APERTURE LIST*
%ADD10C,0.150000*%
%ADD11C,0.120000*%
G04 APERTURE END LIST*
D10*
%TO.C,R36*%
X26541257Y-106666266D02*
X26874590Y-106190076D01*
X27112685Y-106666266D02*
X27112685Y-105666266D01*
X26731733Y-105666266D01*
X26636495Y-105713886D01*
X26588876Y-105761505D01*
X26541257Y-105856743D01*
X26541257Y-105999600D01*
X26588876Y-106094838D01*
X26636495Y-106142457D01*
X26731733Y-106190076D01*
X27112685Y-106190076D01*
X26207923Y-105666266D02*
X25588876Y-105666266D01*
X25922209Y-106047219D01*
X25779352Y-106047219D01*
X25684114Y-106094838D01*
X25636495Y-106142457D01*
X25588876Y-106237695D01*
X25588876Y-106475790D01*
X25636495Y-106571028D01*
X25684114Y-106618647D01*
X25779352Y-106666266D01*
X26065066Y-106666266D01*
X26160304Y-106618647D01*
X26207923Y-106571028D01*
X24731733Y-105666266D02*
X24922209Y-105666266D01*
X25017447Y-105713886D01*
X25065066Y-105761505D01*
X25160304Y-105904362D01*
X25207923Y-106094838D01*
X25207923Y-106475790D01*
X25160304Y-106571028D01*
X25112685Y-106618647D01*
X25017447Y-106666266D01*
X24826971Y-106666266D01*
X24731733Y-106618647D01*
X24684114Y-106571028D01*
X24636495Y-106475790D01*
X24636495Y-106237695D01*
X24684114Y-106142457D01*
X24731733Y-106094838D01*
X24826971Y-106047219D01*
X25017447Y-106047219D01*
X25112685Y-106094838D01*
X25160304Y-106142457D01*
X25207923Y-106237695D01*
%TO.C,R32*%
X26414257Y-77202266D02*
X26747590Y-76726076D01*
X26985685Y-77202266D02*
X26985685Y-76202266D01*
X26604733Y-76202266D01*
X26509495Y-76249886D01*
X26461876Y-76297505D01*
X26414257Y-76392743D01*
X26414257Y-76535600D01*
X26461876Y-76630838D01*
X26509495Y-76678457D01*
X26604733Y-76726076D01*
X26985685Y-76726076D01*
X26080923Y-76202266D02*
X25461876Y-76202266D01*
X25795209Y-76583219D01*
X25652352Y-76583219D01*
X25557114Y-76630838D01*
X25509495Y-76678457D01*
X25461876Y-76773695D01*
X25461876Y-77011790D01*
X25509495Y-77107028D01*
X25557114Y-77154647D01*
X25652352Y-77202266D01*
X25938066Y-77202266D01*
X26033304Y-77154647D01*
X26080923Y-77107028D01*
X25080923Y-76297505D02*
X25033304Y-76249886D01*
X24938066Y-76202266D01*
X24699971Y-76202266D01*
X24604733Y-76249886D01*
X24557114Y-76297505D01*
X24509495Y-76392743D01*
X24509495Y-76487981D01*
X24557114Y-76630838D01*
X25128542Y-77202266D01*
X24509495Y-77202266D01*
%TO.C,C1*%
X35717066Y-73932028D02*
X35764685Y-73979647D01*
X35907542Y-74027266D01*
X36002780Y-74027266D01*
X36145638Y-73979647D01*
X36240876Y-73884409D01*
X36288495Y-73789171D01*
X36336114Y-73598695D01*
X36336114Y-73455838D01*
X36288495Y-73265362D01*
X36240876Y-73170124D01*
X36145638Y-73074886D01*
X36002780Y-73027266D01*
X35907542Y-73027266D01*
X35764685Y-73074886D01*
X35717066Y-73122505D01*
X34764685Y-74027266D02*
X35336114Y-74027266D01*
X35050400Y-74027266D02*
X35050400Y-73027266D01*
X35145638Y-73170124D01*
X35240876Y-73265362D01*
X35336114Y-73312981D01*
%TO.C,R35*%
X26439657Y-100875066D02*
X26772990Y-100398876D01*
X27011085Y-100875066D02*
X27011085Y-99875066D01*
X26630133Y-99875066D01*
X26534895Y-99922686D01*
X26487276Y-99970305D01*
X26439657Y-100065543D01*
X26439657Y-100208400D01*
X26487276Y-100303638D01*
X26534895Y-100351257D01*
X26630133Y-100398876D01*
X27011085Y-100398876D01*
X26106323Y-99875066D02*
X25487276Y-99875066D01*
X25820609Y-100256019D01*
X25677752Y-100256019D01*
X25582514Y-100303638D01*
X25534895Y-100351257D01*
X25487276Y-100446495D01*
X25487276Y-100684590D01*
X25534895Y-100779828D01*
X25582514Y-100827447D01*
X25677752Y-100875066D01*
X25963466Y-100875066D01*
X26058704Y-100827447D01*
X26106323Y-100779828D01*
X24582514Y-99875066D02*
X25058704Y-99875066D01*
X25106323Y-100351257D01*
X25058704Y-100303638D01*
X24963466Y-100256019D01*
X24725371Y-100256019D01*
X24630133Y-100303638D01*
X24582514Y-100351257D01*
X24534895Y-100446495D01*
X24534895Y-100684590D01*
X24582514Y-100779828D01*
X24630133Y-100827447D01*
X24725371Y-100875066D01*
X24963466Y-100875066D01*
X25058704Y-100827447D01*
X25106323Y-100779828D01*
%TO.C,R37*%
X26490457Y-112406666D02*
X26823790Y-111930476D01*
X27061885Y-112406666D02*
X27061885Y-111406666D01*
X26680933Y-111406666D01*
X26585695Y-111454286D01*
X26538076Y-111501905D01*
X26490457Y-111597143D01*
X26490457Y-111740000D01*
X26538076Y-111835238D01*
X26585695Y-111882857D01*
X26680933Y-111930476D01*
X27061885Y-111930476D01*
X26157123Y-111406666D02*
X25538076Y-111406666D01*
X25871409Y-111787619D01*
X25728552Y-111787619D01*
X25633314Y-111835238D01*
X25585695Y-111882857D01*
X25538076Y-111978095D01*
X25538076Y-112216190D01*
X25585695Y-112311428D01*
X25633314Y-112359047D01*
X25728552Y-112406666D01*
X26014266Y-112406666D01*
X26109504Y-112359047D01*
X26157123Y-112311428D01*
X25204742Y-111406666D02*
X24538076Y-111406666D01*
X24966647Y-112406666D01*
%TO.C,R38*%
X26388857Y-118147066D02*
X26722190Y-117670876D01*
X26960285Y-118147066D02*
X26960285Y-117147066D01*
X26579333Y-117147066D01*
X26484095Y-117194686D01*
X26436476Y-117242305D01*
X26388857Y-117337543D01*
X26388857Y-117480400D01*
X26436476Y-117575638D01*
X26484095Y-117623257D01*
X26579333Y-117670876D01*
X26960285Y-117670876D01*
X26055523Y-117147066D02*
X25436476Y-117147066D01*
X25769809Y-117528019D01*
X25626952Y-117528019D01*
X25531714Y-117575638D01*
X25484095Y-117623257D01*
X25436476Y-117718495D01*
X25436476Y-117956590D01*
X25484095Y-118051828D01*
X25531714Y-118099447D01*
X25626952Y-118147066D01*
X25912666Y-118147066D01*
X26007904Y-118099447D01*
X26055523Y-118051828D01*
X24865047Y-117575638D02*
X24960285Y-117528019D01*
X25007904Y-117480400D01*
X25055523Y-117385162D01*
X25055523Y-117337543D01*
X25007904Y-117242305D01*
X24960285Y-117194686D01*
X24865047Y-117147066D01*
X24674571Y-117147066D01*
X24579333Y-117194686D01*
X24531714Y-117242305D01*
X24484095Y-117337543D01*
X24484095Y-117385162D01*
X24531714Y-117480400D01*
X24579333Y-117528019D01*
X24674571Y-117575638D01*
X24865047Y-117575638D01*
X24960285Y-117623257D01*
X25007904Y-117670876D01*
X25055523Y-117766114D01*
X25055523Y-117956590D01*
X25007904Y-118051828D01*
X24960285Y-118099447D01*
X24865047Y-118147066D01*
X24674571Y-118147066D01*
X24579333Y-118099447D01*
X24531714Y-118051828D01*
X24484095Y-117956590D01*
X24484095Y-117766114D01*
X24531714Y-117670876D01*
X24579333Y-117623257D01*
X24674571Y-117575638D01*
%TO.C,R33*%
X26541257Y-83603066D02*
X26874590Y-83126876D01*
X27112685Y-83603066D02*
X27112685Y-82603066D01*
X26731733Y-82603066D01*
X26636495Y-82650686D01*
X26588876Y-82698305D01*
X26541257Y-82793543D01*
X26541257Y-82936400D01*
X26588876Y-83031638D01*
X26636495Y-83079257D01*
X26731733Y-83126876D01*
X27112685Y-83126876D01*
X26207923Y-82603066D02*
X25588876Y-82603066D01*
X25922209Y-82984019D01*
X25779352Y-82984019D01*
X25684114Y-83031638D01*
X25636495Y-83079257D01*
X25588876Y-83174495D01*
X25588876Y-83412590D01*
X25636495Y-83507828D01*
X25684114Y-83555447D01*
X25779352Y-83603066D01*
X26065066Y-83603066D01*
X26160304Y-83555447D01*
X26207923Y-83507828D01*
X25255542Y-82603066D02*
X24636495Y-82603066D01*
X24969828Y-82984019D01*
X24826971Y-82984019D01*
X24731733Y-83031638D01*
X24684114Y-83079257D01*
X24636495Y-83174495D01*
X24636495Y-83412590D01*
X24684114Y-83507828D01*
X24731733Y-83555447D01*
X24826971Y-83603066D01*
X25112685Y-83603066D01*
X25207923Y-83555447D01*
X25255542Y-83507828D01*
%TO.C,R34*%
X26439657Y-95134666D02*
X26772990Y-94658476D01*
X27011085Y-95134666D02*
X27011085Y-94134666D01*
X26630133Y-94134666D01*
X26534895Y-94182286D01*
X26487276Y-94229905D01*
X26439657Y-94325143D01*
X26439657Y-94468000D01*
X26487276Y-94563238D01*
X26534895Y-94610857D01*
X26630133Y-94658476D01*
X27011085Y-94658476D01*
X26106323Y-94134666D02*
X25487276Y-94134666D01*
X25820609Y-94515619D01*
X25677752Y-94515619D01*
X25582514Y-94563238D01*
X25534895Y-94610857D01*
X25487276Y-94706095D01*
X25487276Y-94944190D01*
X25534895Y-95039428D01*
X25582514Y-95087047D01*
X25677752Y-95134666D01*
X25963466Y-95134666D01*
X26058704Y-95087047D01*
X26106323Y-95039428D01*
X24630133Y-94468000D02*
X24630133Y-95134666D01*
X24868228Y-94087047D02*
X25106323Y-94801333D01*
X24487276Y-94801333D01*
%TO.C,R31*%
X26541257Y-89343466D02*
X26874590Y-88867276D01*
X27112685Y-89343466D02*
X27112685Y-88343466D01*
X26731733Y-88343466D01*
X26636495Y-88391086D01*
X26588876Y-88438705D01*
X26541257Y-88533943D01*
X26541257Y-88676800D01*
X26588876Y-88772038D01*
X26636495Y-88819657D01*
X26731733Y-88867276D01*
X27112685Y-88867276D01*
X26207923Y-88343466D02*
X25588876Y-88343466D01*
X25922209Y-88724419D01*
X25779352Y-88724419D01*
X25684114Y-88772038D01*
X25636495Y-88819657D01*
X25588876Y-88914895D01*
X25588876Y-89152990D01*
X25636495Y-89248228D01*
X25684114Y-89295847D01*
X25779352Y-89343466D01*
X26065066Y-89343466D01*
X26160304Y-89295847D01*
X26207923Y-89248228D01*
X24636495Y-89343466D02*
X25207923Y-89343466D01*
X24922209Y-89343466D02*
X24922209Y-88343466D01*
X25017447Y-88486324D01*
X25112685Y-88581562D01*
X25207923Y-88629181D01*
D11*
%TO.C,R36*%
X27534900Y-106594162D02*
X27534900Y-107103610D01*
X28579900Y-106594162D02*
X28579900Y-107103610D01*
%TO.C,R32*%
X28579900Y-77788662D02*
X28579900Y-78298110D01*
X27534900Y-77788662D02*
X27534900Y-78298110D01*
%TO.C,C1*%
X32262648Y-74182886D02*
X32785152Y-74182886D01*
X32262648Y-72712886D02*
X32785152Y-72712886D01*
%TO.C,R35*%
X28579900Y-100855662D02*
X28579900Y-101365110D01*
X27534900Y-100855662D02*
X27534900Y-101365110D01*
%TO.C,R37*%
X28579900Y-112285662D02*
X28579900Y-112795110D01*
X27534900Y-112285662D02*
X27534900Y-112795110D01*
%TO.C,R38*%
X28579900Y-118151162D02*
X28579900Y-118660610D01*
X27534900Y-118151162D02*
X27534900Y-118660610D01*
%TO.C,R33*%
X28579900Y-83583662D02*
X28579900Y-84093110D01*
X27534900Y-83583662D02*
X27534900Y-84093110D01*
%TO.C,R34*%
X27534900Y-95140662D02*
X27534900Y-95650110D01*
X28579900Y-95140662D02*
X28579900Y-95650110D01*
%TO.C,R31*%
X28579900Y-89298662D02*
X28579900Y-89808110D01*
X27534900Y-89298662D02*
X27534900Y-89808110D01*
%TD*%
M02*

View File

@ -0,0 +1,138 @@
%TF.GenerationSoftware,KiCad,Pcbnew,6.0.5*%
%TF.CreationDate,2022-11-11T14:10:47+03:00*%
%TF.ProjectId,stm32,73746d33-322e-46b6-9963-61645f706362,rev?*%
%TF.SameCoordinates,Original*%
%TF.FileFunction,Profile,NP*%
%FSLAX46Y46*%
G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)*
G04 Created by KiCad (PCBNEW 6.0.5) date 2022-11-11 14:10:47*
%MOMM*%
%LPD*%
G01*
G04 APERTURE LIST*
%TA.AperFunction,Profile*%
%ADD10C,0.150000*%
%TD*%
G04 APERTURE END LIST*
D10*
X29581400Y-69714086D02*
X29581400Y-124501886D01*
X92456000Y-137160000D02*
G75*
G03*
X92456000Y-136144000I0J508000D01*
G01*
X30089400Y-69714086D02*
X30089400Y-124501886D01*
X123952000Y-98552000D02*
G75*
G03*
X124968000Y-98552000I508000J0D01*
G01*
X44355600Y-41079531D02*
G75*
G03*
X44355600Y-41587469I0J-253969D01*
G01*
X26918800Y-132347400D02*
G75*
G03*
X26918800Y-132855400I0J-254000D01*
G01*
X61627600Y-41587531D02*
G75*
G03*
X61627600Y-41079469I0J254031D01*
G01*
X105650000Y-75106200D02*
G75*
G03*
X105142000Y-75106200I-254000J0D01*
G01*
X13500000Y-19500000D02*
X13500000Y-156000000D01*
X109220000Y-129032000D02*
G75*
G03*
X110236000Y-129032000I508000J0D01*
G01*
X133096000Y-88392000D02*
X125476000Y-88392000D01*
X13500000Y-156000000D02*
X135000000Y-156000000D01*
X105650000Y-87044200D02*
X105650000Y-75106200D01*
X133096000Y-88392000D02*
G75*
G03*
X133096000Y-87376000I0J508000D01*
G01*
X123952000Y-88900000D02*
X123952000Y-98552000D01*
X26918800Y-132855400D02*
X44749600Y-132855400D01*
X125476000Y-88392000D02*
G75*
G03*
X124968000Y-88900000I0J-508000D01*
G01*
X78740000Y-136144000D02*
G75*
G03*
X78740000Y-137160000I0J-508000D01*
G01*
X92456000Y-137160000D02*
X78740000Y-137160000D01*
X109220000Y-100076000D02*
X109220000Y-129032000D01*
X29581400Y-124501886D02*
G75*
G03*
X30089400Y-124501886I254000J0D01*
G01*
X44749600Y-132347400D02*
X26918800Y-132347400D01*
X133096000Y-87376000D02*
X125476000Y-87376000D01*
X44749600Y-132855400D02*
G75*
G03*
X44749600Y-132347400I0J254000D01*
G01*
X44355600Y-41079469D02*
X61627600Y-41079469D01*
X78740000Y-136144000D02*
X92456000Y-136144000D01*
X105142000Y-75106200D02*
X105142000Y-87044200D01*
X125476000Y-87376000D02*
G75*
G03*
X123952000Y-88900000I0J-1524000D01*
G01*
X110236000Y-129032000D02*
X110236000Y-100076000D01*
X30089400Y-69714086D02*
G75*
G03*
X29581400Y-69714086I-254000J0D01*
G01*
X105142000Y-87044200D02*
G75*
G03*
X105650000Y-87044200I254000J0D01*
G01*
X135000000Y-19500000D02*
X135000000Y-156000000D01*
X13500000Y-19500000D02*
X135000000Y-19500000D01*
X124968000Y-88900000D02*
X124968000Y-98552000D01*
X110236000Y-100076000D02*
G75*
G03*
X109220000Y-100076000I-508000J0D01*
G01*
X44355600Y-41587469D02*
X61627600Y-41587469D01*
M02*

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,613 @@
%TF.GenerationSoftware,KiCad,Pcbnew,6.0.5*%
%TF.CreationDate,2022-11-11T14:10:47+03:00*%
%TF.ProjectId,stm32,73746d33-322e-46b6-9963-61645f706362,rev?*%
%TF.SameCoordinates,Original*%
%TF.FileFunction,Paste,Top*%
%TF.FilePolarity,Positive*%
%FSLAX46Y46*%
G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)*
G04 Created by KiCad (PCBNEW 6.0.5) date 2022-11-11 14:10:47*
%MOMM*%
%LPD*%
G01*
G04 APERTURE LIST*
G04 Aperture macros list*
%AMRoundRect*
0 Rectangle with rounded corners*
0 $1 Rounding radius*
0 $2 $3 $4 $5 $6 $7 $8 $9 X,Y pos of 4 corners*
0 Add a 4 corners polygon primitive as box body*
4,1,4,$2,$3,$4,$5,$6,$7,$8,$9,$2,$3,0*
0 Add four circle primitives for the rounded corners*
1,1,$1+$1,$2,$3*
1,1,$1+$1,$4,$5*
1,1,$1+$1,$6,$7*
1,1,$1+$1,$8,$9*
0 Add four rect primitives between the rounded corners*
20,1,$1+$1,$2,$3,$4,$5,0*
20,1,$1+$1,$4,$5,$6,$7,0*
20,1,$1+$1,$6,$7,$8,$9,0*
20,1,$1+$1,$8,$9,$2,$3,0*%
%AMOutline4P*
0 Free polygon, 4 corners , with rotation*
0 The origin of the aperture is its center*
0 number of corners: always 4*
0 $1 to $8 corner X, Y*
0 $9 Rotation angle, in degrees counterclockwise*
0 create outline with 4 corners*
4,1,4,$1,$2,$3,$4,$5,$6,$7,$8,$1,$2,$9*%
G04 Aperture macros list end*
%ADD10RoundRect,0.237500X0.300000X0.237500X-0.300000X0.237500X-0.300000X-0.237500X0.300000X-0.237500X0*%
%ADD11R,1.900000X0.800000*%
%ADD12RoundRect,0.237500X0.237500X-0.300000X0.237500X0.300000X-0.237500X0.300000X-0.237500X-0.300000X0*%
%ADD13R,2.000000X1.500000*%
%ADD14R,2.000000X3.800000*%
%ADD15RoundRect,0.237500X0.237500X-0.250000X0.237500X0.250000X-0.237500X0.250000X-0.237500X-0.250000X0*%
%ADD16RoundRect,0.249999X-0.450001X-1.075001X0.450001X-1.075001X0.450001X1.075001X-0.450001X1.075001X0*%
%ADD17RoundRect,0.250000X-0.400000X-1.075000X0.400000X-1.075000X0.400000X1.075000X-0.400000X1.075000X0*%
%ADD18RoundRect,0.250000X-0.475000X0.337500X-0.475000X-0.337500X0.475000X-0.337500X0.475000X0.337500X0*%
%ADD19R,1.600000X2.180000*%
%ADD20RoundRect,0.250000X-0.325000X-0.450000X0.325000X-0.450000X0.325000X0.450000X-0.325000X0.450000X0*%
%ADD21RoundRect,0.237500X-0.237500X0.300000X-0.237500X-0.300000X0.237500X-0.300000X0.237500X0.300000X0*%
%ADD22RoundRect,0.237500X-0.237500X0.250000X-0.237500X-0.250000X0.237500X-0.250000X0.237500X0.250000X0*%
%ADD23RoundRect,0.237500X0.250000X0.237500X-0.250000X0.237500X-0.250000X-0.237500X0.250000X-0.237500X0*%
%ADD24RoundRect,0.237500X-0.250000X-0.237500X0.250000X-0.237500X0.250000X0.237500X-0.250000X0.237500X0*%
%ADD25RoundRect,0.150000X0.150000X-0.825000X0.150000X0.825000X-0.150000X0.825000X-0.150000X-0.825000X0*%
%ADD26RoundRect,0.250000X-0.450000X0.325000X-0.450000X-0.325000X0.450000X-0.325000X0.450000X0.325000X0*%
%ADD27RoundRect,0.150000X0.875000X0.150000X-0.875000X0.150000X-0.875000X-0.150000X0.875000X-0.150000X0*%
%ADD28RoundRect,0.162500X0.162500X-1.012500X0.162500X1.012500X-0.162500X1.012500X-0.162500X-1.012500X0*%
%ADD29RoundRect,0.250000X0.337500X0.475000X-0.337500X0.475000X-0.337500X-0.475000X0.337500X-0.475000X0*%
%ADD30RoundRect,0.150000X-0.825000X-0.150000X0.825000X-0.150000X0.825000X0.150000X-0.825000X0.150000X0*%
%ADD31RoundRect,0.150000X0.825000X0.150000X-0.825000X0.150000X-0.825000X-0.150000X0.825000X-0.150000X0*%
%ADD32RoundRect,0.150000X-0.150000X0.875000X-0.150000X-0.875000X0.150000X-0.875000X0.150000X0.875000X0*%
%ADD33RoundRect,0.150000X0.150000X-0.587500X0.150000X0.587500X-0.150000X0.587500X-0.150000X-0.587500X0*%
%ADD34Outline4P,-1.800000X-1.150000X1.800000X-0.550000X1.800000X0.550000X-1.800000X1.150000X270.000000*%
%ADD35Outline4P,-1.800000X-1.150000X1.800000X-0.550000X1.800000X0.550000X-1.800000X1.150000X90.000000*%
%ADD36RoundRect,0.237500X-0.300000X-0.237500X0.300000X-0.237500X0.300000X0.237500X-0.300000X0.237500X0*%
%ADD37R,0.800000X1.900000*%
%ADD38R,3.500000X2.300000*%
%ADD39RoundRect,0.250000X0.875000X0.925000X-0.875000X0.925000X-0.875000X-0.925000X0.875000X-0.925000X0*%
%ADD40RoundRect,0.250000X0.537500X0.425000X-0.537500X0.425000X-0.537500X-0.425000X0.537500X-0.425000X0*%
%ADD41RoundRect,0.075000X-0.662500X-0.075000X0.662500X-0.075000X0.662500X0.075000X-0.662500X0.075000X0*%
%ADD42RoundRect,0.075000X-0.075000X-0.662500X0.075000X-0.662500X0.075000X0.662500X-0.075000X0.662500X0*%
%ADD43RoundRect,0.150000X0.150000X-0.512500X0.150000X0.512500X-0.150000X0.512500X-0.150000X-0.512500X0*%
%ADD44RoundRect,0.150000X0.150000X-0.725000X0.150000X0.725000X-0.150000X0.725000X-0.150000X-0.725000X0*%
%ADD45R,2.300000X3.500000*%
G04 APERTURE END LIST*
D10*
%TO.C,C17*%
X98295000Y-24538500D03*
X96570000Y-24538500D03*
%TD*%
D11*
%TO.C,Q6*%
X98803200Y-98364000D03*
X98803200Y-100264000D03*
X101803200Y-99314000D03*
%TD*%
D12*
%TO.C,C14*%
X121666000Y-43331300D03*
X121666000Y-41606300D03*
%TD*%
D13*
%TO.C,U10*%
X114883000Y-51493000D03*
D14*
X121183000Y-53793000D03*
D13*
X114883000Y-53793000D03*
X114883000Y-56093000D03*
%TD*%
D15*
%TO.C,R7*%
X68294000Y-128193200D03*
X68294000Y-126368200D03*
%TD*%
%TO.C,R1*%
X18491200Y-64613800D03*
X18491200Y-62788800D03*
%TD*%
D16*
%TO.C,R23*%
X90500000Y-62048000D03*
X95300000Y-62048000D03*
%TD*%
D17*
%TO.C,R28*%
X62204600Y-31521400D03*
X65304600Y-31521400D03*
%TD*%
D18*
%TO.C,C3*%
X22606000Y-70793700D03*
X22606000Y-72868700D03*
%TD*%
D19*
%TO.C,SW3*%
X15458000Y-55430400D03*
X15458000Y-64610400D03*
%TD*%
D20*
%TO.C,D3*%
X65338600Y-137540400D03*
X67388600Y-137540400D03*
%TD*%
D21*
%TO.C,C12*%
X29078200Y-22787400D03*
X29078200Y-24512400D03*
%TD*%
%TO.C,C24*%
X114858000Y-58772500D03*
X114858000Y-60497500D03*
%TD*%
D10*
%TO.C,C20*%
X114540000Y-75868200D03*
X112815000Y-75868200D03*
%TD*%
D15*
%TO.C,R16*%
X55882400Y-60910600D03*
X55882400Y-59085600D03*
%TD*%
D22*
%TO.C,R10*%
X66414400Y-126368200D03*
X66414400Y-128193200D03*
%TD*%
D16*
%TO.C,R22*%
X90500000Y-57467000D03*
X95300000Y-57467000D03*
%TD*%
D22*
%TO.C,R12*%
X117043200Y-41555500D03*
X117043200Y-43380500D03*
%TD*%
D23*
%TO.C,R15*%
X26970000Y-35843000D03*
X25145000Y-35843000D03*
%TD*%
D21*
%TO.C,C6*%
X53741600Y-72111100D03*
X53741600Y-73836100D03*
%TD*%
D23*
%TO.C,R18*%
X96670500Y-98348800D03*
X94845500Y-98348800D03*
%TD*%
D11*
%TO.C,Q5*%
X53521600Y-60950000D03*
X53521600Y-59050000D03*
X50521600Y-60000000D03*
%TD*%
D23*
%TO.C,R19*%
X98004600Y-77747800D03*
X96179600Y-77747800D03*
%TD*%
D12*
%TO.C,C10*%
X76500000Y-81862500D03*
X76500000Y-80137500D03*
%TD*%
D23*
%TO.C,R17*%
X96672400Y-100253800D03*
X94847400Y-100253800D03*
%TD*%
D24*
%TO.C,R4*%
X74559400Y-99795000D03*
X76384400Y-99795000D03*
%TD*%
D15*
%TO.C,R5*%
X72472800Y-104972800D03*
X72472800Y-103147800D03*
%TD*%
D16*
%TO.C,R24*%
X90500000Y-66620000D03*
X95300000Y-66620000D03*
%TD*%
D23*
%TO.C,R29*%
X123988800Y-80694200D03*
X122163800Y-80694200D03*
%TD*%
D25*
%TO.C,U2*%
X40808200Y-100916486D03*
X42078200Y-100916486D03*
X43348200Y-100916486D03*
X44618200Y-100916486D03*
X45888200Y-100916486D03*
X47158200Y-100916486D03*
X48428200Y-100916486D03*
X49698200Y-100916486D03*
X49698200Y-95966486D03*
X48428200Y-95966486D03*
X47158200Y-95966486D03*
X45888200Y-95966486D03*
X44618200Y-95966486D03*
X43348200Y-95966486D03*
X42078200Y-95966486D03*
X40808200Y-95966486D03*
%TD*%
D26*
%TO.C,D2*%
X77248000Y-102843000D03*
X77248000Y-104893000D03*
%TD*%
D27*
%TO.C,U7*%
X110046000Y-85494800D03*
X110046000Y-84224800D03*
X110046000Y-82954800D03*
X110046000Y-81684800D03*
X110046000Y-80414800D03*
X110046000Y-79144800D03*
X110046000Y-77874800D03*
X110046000Y-76604800D03*
X100746000Y-76604800D03*
X100746000Y-77874800D03*
X100746000Y-79144800D03*
X100746000Y-80414800D03*
X100746000Y-81684800D03*
X100746000Y-82954800D03*
X100746000Y-84224800D03*
X100746000Y-85494800D03*
%TD*%
D28*
%TO.C,U8*%
X52229600Y-45858469D03*
X54769600Y-45858469D03*
X57309600Y-45858469D03*
X59849600Y-45858469D03*
X59849600Y-36808469D03*
X57309600Y-36808469D03*
X54769600Y-36808469D03*
X52229600Y-36808469D03*
%TD*%
D29*
%TO.C,C23*%
X49377000Y-34323069D03*
X47302000Y-34323069D03*
%TD*%
D23*
%TO.C,R3*%
X72472800Y-99795000D03*
X70647800Y-99795000D03*
%TD*%
%TO.C,R20*%
X98004600Y-79297200D03*
X96179600Y-79297200D03*
%TD*%
D12*
%TO.C,C21*%
X113270000Y-85774200D03*
X113270000Y-84049200D03*
%TD*%
D24*
%TO.C,R21*%
X91062000Y-39397500D03*
X92887000Y-39397500D03*
%TD*%
D12*
%TO.C,C13*%
X29027400Y-37568000D03*
X29027400Y-35843000D03*
%TD*%
D21*
%TO.C,C9*%
X76500000Y-68910700D03*
X76500000Y-70635700D03*
%TD*%
D19*
%TO.C,SW1*%
X22458000Y-64520400D03*
X22458000Y-55340400D03*
%TD*%
D10*
%TO.C,C25*%
X121181500Y-58746000D03*
X119456500Y-58746000D03*
%TD*%
D30*
%TO.C,U1*%
X49152000Y-107950000D03*
X49152000Y-109220000D03*
X49152000Y-110490000D03*
X49152000Y-111760000D03*
X49152000Y-113030000D03*
X49152000Y-114300000D03*
X49152000Y-115570000D03*
X49152000Y-116840000D03*
X54102000Y-116840000D03*
X54102000Y-115570000D03*
X54102000Y-114300000D03*
X54102000Y-113030000D03*
X54102000Y-111760000D03*
X54102000Y-110490000D03*
X54102000Y-109220000D03*
X54102000Y-107950000D03*
%TD*%
D31*
%TO.C,D8*%
X119315200Y-81659400D03*
X119315200Y-80389400D03*
X119315200Y-79119400D03*
X119315200Y-77849400D03*
X114365200Y-77849400D03*
X114365200Y-79119400D03*
X114365200Y-80389400D03*
X114365200Y-81659400D03*
%TD*%
D21*
%TO.C,C7*%
X63825400Y-76227000D03*
X63825400Y-77952000D03*
%TD*%
D23*
%TO.C,R8*%
X83208500Y-37084000D03*
X81383500Y-37084000D03*
%TD*%
D29*
%TO.C,C15*%
X51485200Y-48674069D03*
X49410200Y-48674069D03*
%TD*%
D12*
%TO.C,C16*%
X97750600Y-86280000D03*
X97750600Y-84555000D03*
%TD*%
D23*
%TO.C,R30*%
X123985000Y-78916200D03*
X122160000Y-78916200D03*
%TD*%
D15*
%TO.C,R2*%
X19465200Y-56540400D03*
X19465200Y-54715400D03*
%TD*%
D32*
%TO.C,U5*%
X43352600Y-127951400D03*
X42082600Y-127951400D03*
X40812600Y-127951400D03*
X39542600Y-127951400D03*
X38272600Y-127951400D03*
X37002600Y-127951400D03*
X35732600Y-127951400D03*
X34462600Y-127951400D03*
X34462600Y-137251400D03*
X35732600Y-137251400D03*
X37002600Y-137251400D03*
X38272600Y-137251400D03*
X39542600Y-137251400D03*
X40812600Y-137251400D03*
X42082600Y-137251400D03*
X43352600Y-137251400D03*
%TD*%
D21*
%TO.C,C29*%
X96150400Y-82828900D03*
X96150400Y-84553900D03*
%TD*%
D33*
%TO.C,D9*%
X57324800Y-33177769D03*
X59224800Y-33177769D03*
X58274800Y-31302769D03*
%TD*%
D21*
%TO.C,C5*%
X67203600Y-68858800D03*
X67203600Y-70583800D03*
%TD*%
D34*
%TO.C,D6*%
X106172000Y-93472000D03*
D35*
X106172000Y-99272000D03*
%TD*%
D24*
%TO.C,R9*%
X81334600Y-39979600D03*
X83159600Y-39979600D03*
%TD*%
D21*
%TO.C,C4*%
X18491200Y-59438200D03*
X18491200Y-61163200D03*
%TD*%
D36*
%TO.C,C11*%
X81382700Y-41554400D03*
X83107700Y-41554400D03*
%TD*%
D37*
%TO.C,Q4*%
X68278800Y-130374800D03*
X66378800Y-130374800D03*
X67328800Y-133374800D03*
%TD*%
D38*
%TO.C,D7*%
X90568000Y-52142000D03*
X95968000Y-52142000D03*
%TD*%
D39*
%TO.C,C26*%
X112973000Y-40413500D03*
X107873000Y-40413500D03*
%TD*%
D16*
%TO.C,R27*%
X97459000Y-66620000D03*
X102259000Y-66620000D03*
%TD*%
D24*
%TO.C,R11*%
X54057400Y-62844800D03*
X55882400Y-62844800D03*
%TD*%
D15*
%TO.C,R6*%
X74504800Y-104974700D03*
X74504800Y-103149700D03*
%TD*%
D40*
%TO.C,C27*%
X121716000Y-62302000D03*
X118841000Y-62302000D03*
%TD*%
D23*
%TO.C,R14*%
X27017000Y-24540000D03*
X25192000Y-24540000D03*
%TD*%
D41*
%TO.C,U4*%
X67663900Y-72458800D03*
X67663900Y-72958800D03*
X67663900Y-73458800D03*
X67663900Y-73958800D03*
X67663900Y-74458800D03*
X67663900Y-74958800D03*
X67663900Y-75458800D03*
X67663900Y-75958800D03*
X67663900Y-76458800D03*
X67663900Y-76958800D03*
X67663900Y-77458800D03*
X67663900Y-77958800D03*
D42*
X69076400Y-79371300D03*
X69576400Y-79371300D03*
X70076400Y-79371300D03*
X70576400Y-79371300D03*
X71076400Y-79371300D03*
X71576400Y-79371300D03*
X72076400Y-79371300D03*
X72576400Y-79371300D03*
X73076400Y-79371300D03*
X73576400Y-79371300D03*
X74076400Y-79371300D03*
X74576400Y-79371300D03*
D41*
X75988900Y-77958800D03*
X75988900Y-77458800D03*
X75988900Y-76958800D03*
X75988900Y-76458800D03*
X75988900Y-75958800D03*
X75988900Y-75458800D03*
X75988900Y-74958800D03*
X75988900Y-74458800D03*
X75988900Y-73958800D03*
X75988900Y-73458800D03*
X75988900Y-72958800D03*
X75988900Y-72458800D03*
D42*
X74576400Y-71046300D03*
X74076400Y-71046300D03*
X73576400Y-71046300D03*
X73076400Y-71046300D03*
X72576400Y-71046300D03*
X72076400Y-71046300D03*
X71576400Y-71046300D03*
X71076400Y-71046300D03*
X70576400Y-71046300D03*
X70076400Y-71046300D03*
X69576400Y-71046300D03*
X69076400Y-71046300D03*
%TD*%
D16*
%TO.C,R26*%
X97459000Y-62048000D03*
X102259000Y-62048000D03*
%TD*%
D43*
%TO.C,U6*%
X35981600Y-45810600D03*
X36931600Y-45810600D03*
X37881600Y-45810600D03*
X37881600Y-43535600D03*
X36931600Y-43535600D03*
X35981600Y-43535600D03*
%TD*%
D32*
%TO.C,U3*%
X89945000Y-131850000D03*
X88675000Y-131850000D03*
X87405000Y-131850000D03*
X86135000Y-131850000D03*
X84865000Y-131850000D03*
X83595000Y-131850000D03*
X82325000Y-131850000D03*
X81055000Y-131850000D03*
X81055000Y-141150000D03*
X82325000Y-141150000D03*
X83595000Y-141150000D03*
X84865000Y-141150000D03*
X86135000Y-141150000D03*
X87405000Y-141150000D03*
X88675000Y-141150000D03*
X89945000Y-141150000D03*
%TD*%
D26*
%TO.C,D1*%
X69805800Y-102817600D03*
X69805800Y-104867600D03*
%TD*%
D16*
%TO.C,R25*%
X97459000Y-57476000D03*
X102259000Y-57476000D03*
%TD*%
D20*
%TO.C,D4*%
X87290000Y-39397500D03*
X89340000Y-39397500D03*
%TD*%
D15*
%TO.C,R13*%
X120040400Y-43380500D03*
X120040400Y-41555500D03*
%TD*%
D44*
%TO.C,Q7*%
X85521000Y-37054500D03*
X86791000Y-37054500D03*
X88061000Y-37054500D03*
X89331000Y-37054500D03*
X89331000Y-31904500D03*
X88061000Y-31904500D03*
X86791000Y-31904500D03*
X85521000Y-31904500D03*
%TD*%
D12*
%TO.C,C8*%
X53741600Y-77188900D03*
X53741600Y-75463900D03*
%TD*%
%TO.C,C2*%
X25459600Y-60792900D03*
X25459600Y-59067900D03*
%TD*%
D45*
%TO.C,D5*%
X86537000Y-57410000D03*
X86537000Y-62810000D03*
%TD*%
M02*

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,127 @@
{
"Header": {
"GenerationSoftware": {
"Vendor": "KiCad",
"Application": "Pcbnew",
"Version": "6.0.5"
},
"CreationDate": "2022-11-11T14:10:47+03:00"
},
"GeneralSpecs": {
"ProjectId": {
"Name": "stm32",
"GUID": "73746d33-322e-46b6-9963-61645f706362",
"Revision": "rev?"
},
"Size": {
"X": 121.65,
"Y": 136.65
},
"LayerNumber": 2,
"BoardThickness": 1.6,
"Finish": "None"
},
"DesignRules": [
{
"Layers": "Outer",
"PadToPad": 0.1,
"PadToTrack": 0.1,
"TrackToTrack": 0.2,
"MinLineWidth": 0.2,
"TrackToRegion": 0.508,
"RegionToRegion": 0.508
}
],
"FilesAttributes": [
{
"Path": "stm32-F_Cu.gbr",
"FileFunction": "Copper,L1,Top",
"FilePolarity": "Positive"
},
{
"Path": "stm32-B_Cu.gbr",
"FileFunction": "Copper,L2,Bot",
"FilePolarity": "Positive"
},
{
"Path": "stm32-F_Paste.gbr",
"FileFunction": "SolderPaste,Top",
"FilePolarity": "Positive"
},
{
"Path": "stm32-B_Paste.gbr",
"FileFunction": "SolderPaste,Bot",
"FilePolarity": "Positive"
},
{
"Path": "stm32-F_Silkscreen.gbr",
"FileFunction": "Legend,Top",
"FilePolarity": "Positive"
},
{
"Path": "stm32-B_Silkscreen.gbr",
"FileFunction": "Legend,Bot",
"FilePolarity": "Positive"
},
{
"Path": "stm32-F_Mask.gbr",
"FileFunction": "SolderMask,Top",
"FilePolarity": "Negative"
},
{
"Path": "stm32-B_Mask.gbr",
"FileFunction": "SolderMask,Bot",
"FilePolarity": "Negative"
},
{
"Path": "stm32-Edge_Cuts.gbr",
"FileFunction": "Profile",
"FilePolarity": "Positive"
}
],
"MaterialStackup": [
{
"Type": "Legend",
"Name": "Top Silk Screen"
},
{
"Type": "SolderPaste",
"Name": "Top Solder Paste"
},
{
"Type": "SolderMask",
"Thickness": 0.01,
"Name": "Top Solder Mask"
},
{
"Type": "Copper",
"Thickness": 0.035,
"Name": "F.Cu"
},
{
"Type": "Dielectric",
"Thickness": 1.51,
"Material": "FR4",
"Name": "F.Cu/B.Cu",
"Notes": "Type: dielectric layer 1 (from F.Cu to B.Cu)"
},
{
"Type": "Copper",
"Thickness": 0.035,
"Name": "B.Cu"
},
{
"Type": "SolderMask",
"Thickness": 0.01,
"Name": "Bottom Solder Mask"
},
{
"Type": "SolderPaste",
"Name": "Bottom Solder Paste"
},
{
"Type": "Legend",
"Name": "Bottom Silk Screen"
}
]
}

View File

@ -0,0 +1,409 @@
M48
; DRILL file {KiCad 6.0.5} date Вт 22 ноя 2022 12:05:16
; FORMAT={-:-/ absolute / metric / decimal}
; #@! TF.CreationDate,2022-11-22T12:05:16+03:00
; #@! TF.GenerationSoftware,Kicad,Pcbnew,6.0.5
; #@! TF.FileFunction,MixedPlating,1,2
FMAT,2
METRIC
; #@! TA.AperFunction,Plated,PTH,ViaDrill
T1C0.400
; #@! TA.AperFunction,Plated,PTH,ViaDrill
T2C0.600
; #@! TA.AperFunction,Plated,PTH,ComponentDrill
T3C0.600
; #@! TA.AperFunction,Plated,PTH,ComponentDrill
T4C0.700
; #@! TA.AperFunction,Plated,PTH,ComponentDrill
T5C0.750
; #@! TA.AperFunction,Plated,PTH,ViaDrill
T6C0.800
; #@! TA.AperFunction,Plated,PTH,ComponentDrill
T7C0.800
; #@! TA.AperFunction,Plated,PTH,ComponentDrill
T8C0.920
; #@! TA.AperFunction,Plated,PTH,ComponentDrill
T9C1.000
; #@! TA.AperFunction,Plated,PTH,ComponentDrill
T10C1.100
; #@! TA.AperFunction,Plated,PTH,ComponentDrill
T11C1.200
; #@! TA.AperFunction,Plated,PTH,ComponentDrill
T12C1.300
; #@! TA.AperFunction,Plated,PTH,ComponentDrill
T13C1.500
; #@! TA.AperFunction,Plated,PTH,ComponentDrill
T14C2.330
; #@! TA.AperFunction,Plated,PTH,ComponentDrill
T15C3.000
; #@! TA.AperFunction,Plated,PTH,ComponentDrill
T16C3.200
%
G90
G05
T1
X19.71Y-58.014
X23.571Y-59.741
X28.078Y-81.378
X28.078Y-87.118
X28.078Y-93.112
X28.078Y-98.7
X28.078Y-104.238
X28.078Y-109.724
X28.078Y-115.312
X30.658Y-66.573
X35.509Y-39.319
X36.779Y-39.319
X36.932Y-107.696
X37.186Y-47.447
X39.421Y-45.923
X39.827Y-54.051
X40.996Y-53.137
X41.295Y-130.265
X41.402Y-46.38
X43.332Y-102.667
X44.45Y-47.346
X44.45Y-53.848
X45.263Y-53.238
X46.888Y-106.985
X46.888Y-110.49
X46.888Y-116.84
X47.193Y-98.908
X48.428Y-97.857
X50.038Y-53.442
X50.952Y-96.825
X50.957Y-105.725
X51.719Y-104.937
X52.883Y-99.365
X53.696Y-98.095
X54.638Y-98.429
X55.677Y-48.463
X56.189Y-114.716
X56.722Y-115.885
X56.794Y-48.463
X57.31Y-34.755
X57.428Y-101.801
X57.963Y-66.154
X58.255Y-102.362
X58.623Y-58.166
X58.725Y-66.904
X58.91Y-43.137
X59.215Y-34.704
X60.147Y-68.834
X60.652Y-97.787
X60.713Y-34.933
X63.551Y-68.783
X64.618Y-73.203
X64.668Y-79.604
X65.007Y-128.338
X65.989Y-79.451
X66.396Y-124.866
X67.158Y-78.994
X67.92Y-80.162
X68.808Y-68.859
X69.037Y-75.438
X69.342Y-58.115
X69.647Y-63.246
X69.799Y-73.914
X70.669Y-101.167
X70.714Y-64.414
X71.476Y-65.38
X71.614Y-74.066
X71.831Y-84.938
X72.644Y-67.818
X72.644Y-73.965
X72.847Y-72.695
X72.898Y-85.75
X73.66Y-73.558
X74.93Y-65.532
X75.387Y-67.818
X76.181Y-101.167
X77.318Y-64.821
X78.029Y-81.432
X79.146Y-78.74
X79.807Y-41.605
X80.327Y-80.924
X80.62Y-79.858
X81.128Y-77.927
X81.534Y-50.546
X81.788Y-77.114
X82.753Y-84.176
X82.804Y-76.759
X83.668Y-83.16
X83.668Y-128.981
X86.309Y-75.082
X87.173Y-74.32
X87.173Y-128.88
X93.0Y-103.0
X97.993Y-74.371
X112.279Y-78.129
X112.279Y-80.135
X113.995Y-48.108
X114.794Y-84.047
X116.445Y-78.484
X121.195Y-82.523
T2
X36.932Y-41.859
X37.084Y-76.2
X38.71Y-48.311
X38.71Y-52.832
X40.742Y-93.624
X43.383Y-76.225
X54.077Y-86.233
X56.49Y-105.562
X56.49Y-107.899
X65.278Y-104.8
X65.964Y-92.786
X66.497Y-104.8
X68.986Y-115.519
X68.986Y-124.749
X70.764Y-76.459
X73.965Y-135.433
X83.21Y-80.569
X83.668Y-144.628
X85.5Y-118.5
X86.614Y-145.694
X91.389Y-86.817
X91.465Y-80.493
X91.897Y-97.688
X98.4Y-81.991
T3
X32.106Y-127.48
X32.106Y-130.02
X32.106Y-135.1
X32.106Y-140.18
T4
X28.525Y-55.825
X28.525Y-57.095
X28.525Y-58.365
X28.525Y-59.635
X28.525Y-60.905
X28.525Y-62.175
T5
X63.339Y-141.059
X65.339Y-141.059
X67.339Y-141.059
X70.5Y-108.099
X72.5Y-108.099
X74.5Y-108.099
X76.5Y-108.099
X79.764Y-55.492
X79.764Y-57.492
X79.764Y-59.492
X79.764Y-61.492
T6
X26.72Y-75.794
X38.71Y-65.38
X43.378Y-145.082
X51.664Y-50.952
X54.254Y-50.14
X85.115Y-101.524
X85.521Y-34.698
X85.688Y-29.324
X86.639Y-100.0
X88.138Y-98.501
X89.291Y-29.324
X94.666Y-91.973
X96.088Y-90.551
X97.336Y-89.386
X103.581Y-88.087
X106.284Y-59.192
X108.316Y-57.16
X110.413Y-55.063
X120.701Y-99.924
T7
X26.0Y-78.934
X26.0Y-81.474
X26.0Y-84.697
X26.0Y-87.237
X26.0Y-90.46
X26.0Y-93.0
X26.0Y-96.223
X26.0Y-98.763
X26.0Y-101.986
X26.0Y-104.526
X26.0Y-107.749
X26.0Y-110.289
X26.0Y-113.511
X26.0Y-116.051
X26.0Y-119.274
X26.0Y-121.814
X26.025Y-70.781
X28.565Y-70.781
X31.105Y-70.781
X32.949Y-35.843
X33.0Y-24.515
X33.62Y-78.934
X33.62Y-81.474
X33.62Y-84.697
X33.62Y-87.237
X33.62Y-90.46
X33.62Y-93.0
X33.62Y-96.223
X33.62Y-98.763
X33.62Y-101.986
X33.62Y-104.526
X33.62Y-107.749
X33.62Y-110.289
X33.62Y-113.511
X33.62Y-116.051
X33.62Y-119.274
X33.62Y-121.814
X33.645Y-70.781
X35.489Y-35.843
X35.54Y-24.515
X38.029Y-35.843
X38.08Y-24.515
X47.655Y-120.718
X47.655Y-128.338
X49.385Y-37.523
X49.385Y-40.063
X49.385Y-42.603
X49.385Y-45.143
X50.195Y-120.718
X50.195Y-128.338
X52.735Y-120.718
X52.735Y-128.338
X55.275Y-120.718
X55.275Y-128.338
X57.679Y-72.276
X57.679Y-77.156
X62.195Y-36.805
X69.815Y-36.805
X95.298Y-32.413
X98.798Y-32.413
X116.89Y-23.013
X116.89Y-26.513
X118.541Y-34.444
X118.541Y-37.944
T8
X127.29Y-76.429
X127.29Y-78.929
X129.29Y-76.429
X129.29Y-78.929
T9
X38.7Y-60.0
X41.914Y-106.995
X41.914Y-110.5
X41.914Y-114.056
X41.914Y-117.612
X46.3Y-60.0
X54.071Y-26.416
X55.456Y-23.576
X56.841Y-26.416
X58.226Y-23.576
X59.611Y-26.416
X60.996Y-23.576
X61.472Y-106.969
X61.472Y-110.525
X61.472Y-114.081
X61.472Y-117.637
X62.381Y-26.416
X63.766Y-23.576
X65.151Y-26.416
X74.879Y-63.094
X75.59Y-90.983
X75.59Y-94.691
X82.29Y-148.696
X82.29Y-151.236
X82.29Y-153.776
X87.0Y-45.0
X90.17Y-75.946
X91.0Y-45.0
X91.42Y-113.0
X91.475Y-106.0
X93.96Y-113.0
X94.015Y-106.0
X96.165Y-148.358
X96.5Y-113.0
X96.555Y-106.0
X97.55Y-151.198
X98.935Y-148.358
X100.32Y-151.198
X101.396Y-52.65
X101.705Y-148.358
X103.0Y-33.809
X103.09Y-151.198
X104.475Y-148.358
X105.86Y-151.198
X107.245Y-148.358
X113.0Y-33.809
X121.583Y-148.696
X121.583Y-151.236
X121.583Y-153.776
X130.0Y-57.5
X130.0Y-61.5
T10
X101.298Y-24.488
X102.998Y-28.188
X104.698Y-24.488
X106.398Y-28.188
X108.098Y-24.488
T11
X18.683Y-80.399
X18.683Y-85.479
X18.683Y-90.559
X18.683Y-95.639
X18.683Y-100.719
X18.683Y-105.799
X18.683Y-110.879
X18.683Y-115.959
X18.683Y-121.039
X18.683Y-126.119
X94.082Y-142.291
X101.702Y-121.971
X104.242Y-142.291
X106.782Y-121.971
X108.0Y-51.5
X108.0Y-66.5
X114.402Y-142.291
T12
X18.526Y-25.5
X18.526Y-30.5
X18.526Y-35.5
X24.75Y-150.788
X29.75Y-150.788
X34.75Y-150.788
X39.75Y-150.788
X44.75Y-150.788
X49.75Y-150.788
X84.291Y-25.351
X89.291Y-25.351
X99.217Y-40.413
X103.027Y-40.413
X129.805Y-91.0
X129.805Y-96.0
X129.805Y-101.0
X129.805Y-107.0
X129.805Y-112.0
X129.805Y-117.0
X130.047Y-34.183
X130.047Y-39.183
X130.098Y-22.713
X130.098Y-27.713
T13
X113.207Y-92.292
X113.207Y-107.292
X113.207Y-112.292
X113.207Y-117.292
X120.707Y-92.292
X120.707Y-107.292
X120.707Y-112.292
X120.707Y-117.292
T14
X132.0Y-71.659
X132.0Y-83.699
T15
X18.5Y-49.5
X18.5Y-151.0
X74.5Y-49.5
X74.5Y-151.0
X130.0Y-49.5
X130.0Y-151.0
T16
X47.111Y-26.116
X72.111Y-26.116
X89.205Y-148.658
X114.205Y-148.658
T0
M30

View File

@ -0,0 +1,110 @@
(kicad_symbol_lib (version 20211014) (generator kicad_symbol_editor)
(symbol "ISO3086" (in_bom yes) (on_board yes)
(property "Reference" "U" (id 0) (at 0 20.32 0)
(effects (font (size 1.27 1.27)))
)
(property "Value" "ISO3086" (id 1) (at 0 17.78 0)
(effects (font (size 1.27 1.27)))
)
(property "Footprint" "Package_SO:SOIC-16W_7.5x10.3mm_P1.27mm" (id 2) (at 0 0 0)
(effects (font (size 1.27 1.27)) hide)
)
(property "Datasheet" "" (id 3) (at 0 0 0)
(effects (font (size 1.27 1.27)) hide)
)
(property "ki_description" "RS422 isolator" (id 4) (at 0 0 0)
(effects (font (size 1.27 1.27)) hide)
)
(symbol "ISO3086_0_0"
(rectangle (start -11.43 15.24) (end 13.97 -15.24)
(stroke (width 0.254) (type default) (color 0 0 0 0))
(fill (type background))
)
(polyline
(pts
(xy -1.27 15.24)
(xy -1.27 -15.24)
)
(stroke (width 0) (type default) (color 0 0 0 0))
(fill (type none))
)
(polyline
(pts
(xy 1.27 15.24)
(xy 1.27 -15.24)
)
(stroke (width 0) (type default) (color 0 0 0 0))
(fill (type none))
)
(text "GALVANIC ISOLATION" (at 0 0.508 900)
(effects (font (size 1.016 1.016)))
)
)
(symbol "ISO3086_1_1"
(pin power_in line (at -6.35 17.78 270) (length 2.54)
(name "Vcc1" (effects (font (size 1.27 1.27))))
(number "1" (effects (font (size 1.27 1.27))))
)
(pin power_in line (at 8.89 -17.78 90) (length 2.54)
(name "GND2" (effects (font (size 1.27 1.27))))
(number "10" (effects (font (size 1.27 1.27))))
)
(pin bidirectional line (at 16.51 -8.89 180) (length 2.54)
(name "Y" (effects (font (size 1.27 1.27))))
(number "11" (effects (font (size 1.27 1.27))))
)
(pin bidirectional line (at 16.51 -5.08 180) (length 2.54)
(name "Z" (effects (font (size 1.27 1.27))))
(number "12" (effects (font (size 1.27 1.27))))
)
(pin bidirectional line (at 16.51 5.08 180) (length 2.54)
(name "B" (effects (font (size 1.27 1.27))))
(number "13" (effects (font (size 1.27 1.27))))
)
(pin bidirectional line (at 16.51 8.89 180) (length 2.54)
(name "A" (effects (font (size 1.27 1.27))))
(number "14" (effects (font (size 1.27 1.27))))
)
(pin power_in line (at 11.43 -17.78 90) (length 2.54)
(name "GND2" (effects (font (size 1.27 1.27))))
(number "15" (effects (font (size 1.27 1.27))))
)
(pin power_in line (at 8.89 17.78 270) (length 2.54)
(name "Vcc2" (effects (font (size 1.27 1.27))))
(number "16" (effects (font (size 1.27 1.27))))
)
(pin power_in line (at -8.89 -17.78 90) (length 2.54)
(name "GND1" (effects (font (size 1.27 1.27))))
(number "2" (effects (font (size 1.27 1.27))))
)
(pin output line (at -13.97 -2.54 0) (length 2.54)
(name "R" (effects (font (size 1.27 1.27))))
(number "3" (effects (font (size 1.27 1.27))))
)
(pin input line (at -13.97 -5.08 0) (length 2.54)
(name "~{RE}" (effects (font (size 1.27 1.27))))
(number "4" (effects (font (size 1.27 1.27))))
)
(pin input line (at -13.97 7.62 0) (length 2.54)
(name "DE" (effects (font (size 1.27 1.27))))
(number "5" (effects (font (size 1.27 1.27))))
)
(pin input line (at -13.97 2.54 0) (length 2.54)
(name "D" (effects (font (size 1.27 1.27))))
(number "6" (effects (font (size 1.27 1.27))))
)
(pin power_in line (at -6.35 -17.78 90) (length 2.54)
(name "GND1" (effects (font (size 1.27 1.27))))
(number "7" (effects (font (size 1.27 1.27))))
)
(pin power_in line (at -3.81 -17.78 90) (length 2.54)
(name "GND1" (effects (font (size 1.27 1.27))))
(number "8" (effects (font (size 1.27 1.27))))
)
(pin power_in line (at 6.35 -17.78 90) (length 2.54)
(name "GND2" (effects (font (size 1.27 1.27))))
(number "9" (effects (font (size 1.27 1.27))))
)
)
)
)

View File

@ -0,0 +1,19 @@
(footprint "B0505S-2W" (version 20211014) (generator pcbnew)
(layer "F.Cu")
(tedit 0)
(attr smd)
(fp_text reference "REF**" (at 10.2 7.2 unlocked) (layer "F.SilkS")
(effects (font (size 1 1) (thickness 0.15)))
(tstamp 063944c1-1524-42ff-905d-c6b885fc84e4)
)
(fp_text value "B0505S-2W" (at 11.4 3.1 unlocked) (layer "F.Fab")
(effects (font (size 1 1) (thickness 0.15)))
(tstamp 7415e127-24bc-4666-a29b-ff109d7551a2)
)
(fp_rect (start -2 -0.9) (end 17.6 6.1) (layer "F.SilkS") (width 0.15) (fill none) (tstamp 57bbab45-a75a-4905-a574-87517a61f8db))
(fp_line (start 5.08 -2.54) (end 5.08 7.62) (layer "Dwgs.User") (width 0.12) (tstamp a22d139b-ae36-48a3-b52e-1d45f780278d))
(pad "1" thru_hole roundrect (at 0 0) (size 2 1.524) (drill 0.6) (layers *.Cu *.Mask) (roundrect_rratio 0.25) (tstamp ddbc7909-3eed-4032-bb90-06d3d67deab6))
(pad "2" thru_hole roundrect (at 2.54 0) (size 2 1.524) (drill 0.6) (layers *.Cu *.Mask) (roundrect_rratio 0.25) (tstamp e2c7f9a0-cd9c-40f2-8bc0-64127c765f0d))
(pad "4" thru_hole roundrect (at 7.62 0) (size 2.286 1.524) (drill 0.6) (layers *.Cu *.Mask) (roundrect_rratio 0.25) (tstamp ab22ff25-f082-49df-a551-c9a53e6f86a3))
(pad "6" thru_hole roundrect (at 12.7 0) (size 2.286 1.524) (drill 0.6) (layers *.Cu *.Mask) (roundrect_rratio 0.25) (tstamp 2c7aecb6-ba12-4511-83ea-d194a95071b1))
)

View File

@ -0,0 +1,27 @@
(footprint "B0x0xS" (version 20211014) (generator pcbnew)
(layer "F.Cu")
(tedit 5EC4EFC6)
(attr through_hole)
(fp_text reference "REF**" (at -2.54 2.286) (layer "F.SilkS")
(effects (font (size 1 1) (thickness 0.15)))
(tstamp 1043daab-3013-49fb-a4c1-ffce55c5df46)
)
(fp_text value "B0x0xS" (at 0 -3.048) (layer "F.Fab")
(effects (font (size 1 1) (thickness 0.15)))
(tstamp a871fd26-0bbc-4811-bb52-c4e5e6df0fad)
)
(fp_line (start 5.8 0.9) (end 0.7112 0.9144) (layer "F.SilkS") (width 0.15) (tstamp 0b84b7ec-816f-417e-80c2-0f03b7ee6c7b))
(fp_line (start -0.508 -5.08) (end -5.8 -5.1) (layer "F.SilkS") (width 0.15) (tstamp 8e59ddde-6d7b-4614-9742-26db8138db0f))
(fp_line (start -5.8 -5.1) (end -5.8 0.9) (layer "F.SilkS") (width 0.12) (tstamp 91575876-2f5f-4300-a59e-6327bd41978a))
(fp_line (start -5.8 0.9) (end -0.7112 0.9144) (layer "F.SilkS") (width 0.15) (tstamp da822648-b16d-46ef-87d0-571b66c556db))
(fp_line (start 5.8 -5.1) (end 5.8 0.9) (layer "F.SilkS") (width 0.12) (tstamp dbc34d16-64b1-40be-9926-084f9486b43d))
(fp_line (start 5.8 -5.1) (end 0.508 -5.08) (layer "F.SilkS") (width 0.15) (tstamp f87c72b9-c305-489a-bd04-b4a4d58b725c))
(fp_line (start 0.254 1.0668) (end 0.254 -5.0292) (layer "Dwgs.User") (width 0.12) (tstamp 935182ad-231d-4492-a2e6-b8ef4f61bdd9))
(fp_line (start -0.254 -5.0292) (end -0.254 1.0668) (layer "Dwgs.User") (width 0.12) (tstamp a79606de-8ac2-4d48-8694-8906053dee31))
(fp_arc (start -0.254 -5.0292) (mid 0 -5.2832) (end 0.254 -5.0292) (layer "Dwgs.User") (width 0.12) (tstamp 376daf3d-77a6-4454-837b-ecaaa3bfab58))
(fp_arc (start 0.254 1.0668) (mid 0 1.3208) (end -0.254 1.0668) (layer "Dwgs.User") (width 0.12) (tstamp f817554e-83c7-4eb1-9e73-a6b2db3e941a))
(pad "1" thru_hole circle (at -3.81 0) (size 1.5 1.5) (drill 0.8) (layers *.Cu *.Mask) (tstamp 3679fd64-6d94-4bd2-ac77-833e9fb0e6b1))
(pad "2" thru_hole circle (at -1.27 0) (size 1.5 1.5) (drill 0.8) (layers *.Cu *.Mask) (tstamp 51cfc21e-2343-41b5-b7a1-6cbb380df6a0))
(pad "3" thru_hole circle (at 1.27 0) (size 1.5 1.5) (drill 0.8) (layers *.Cu *.Mask) (tstamp 753f1d53-de67-4ec3-9369-8afe92344e33))
(pad "4" thru_hole circle (at 3.81 0) (size 1.5 1.5) (drill 0.8) (layers *.Cu *.Mask) (tstamp ca5c819c-51a9-4cb4-96b3-826dc377af10))
)

View File

@ -0,0 +1,9 @@
(module Hole_3mm (layer F.Cu) (tedit 5913F6E4)
(fp_text reference REF** (at 0 3.81) (layer F.SilkS) hide
(effects (font (size 1 1) (thickness 0.15)))
)
(fp_text value Hole_3mm (at 0 -7.62) (layer F.Fab) hide
(effects (font (size 1 1) (thickness 0.15)))
)
(pad 1 thru_hole circle (at 0 0) (size 5 5) (drill 3) (layers *.Cu *.Mask))
)

View File

@ -0,0 +1,20 @@
(footprint "VRB2405" (version 20211014) (generator pcbnew)
(layer "F.Cu")
(tedit 0)
(attr through_hole)
(fp_text reference "REF**" (at 0 -13.716 unlocked) (layer "F.SilkS")
(effects (font (size 1 1) (thickness 0.15)))
(tstamp 0faf069b-fb54-4864-86e1-7fd122f4a4a3)
)
(fp_text value "VRB2405" (at 0 -2.54 unlocked) (layer "F.Fab")
(effects (font (size 1 1) (thickness 0.15)))
(tstamp a98339ac-ad08-4500-94a6-174f45d84c2b)
)
(fp_rect (start -12.7 -12.7) (end 12.7 12.7) (layer "F.SilkS") (width 0.15) (fill none) (tstamp c117b339-9dcb-4f17-a926-a6727d168613))
(fp_line (start -15.24 0) (end 15.24 0) (layer "Dwgs.User") (width 0.12) (tstamp 13c6470f-24d5-4fbf-b46d-9411f4ff631b))
(pad "1" thru_hole circle (at 2.54 -10.16) (size 2.54 2.54) (drill 1.2) (layers *.Cu *.Mask) (tstamp 36094dfc-e4e6-4402-9f42-f4e6d7e8e35c))
(pad "2" thru_hole circle (at -2.54 -10.16) (size 2.54 2.54) (drill 1.2) (layers *.Cu *.Mask) (tstamp 81ee4493-5964-4bee-9f00-d3600a91f343))
(pad "3" thru_hole circle (at -10.16 10.16) (size 2.54 2.54) (drill 1.2) (layers *.Cu *.Mask) (tstamp 479ecae6-8e9a-4fb6-907d-b61244d3d00a))
(pad "4" thru_hole circle (at 0 10.16) (size 2.54 2.54) (drill 1.2) (layers *.Cu *.Mask) (tstamp d5bc4fdd-79c2-4932-baf4-6c3332cb7326))
(pad "5" thru_hole circle (at 10.16 10.16) (size 2.54 2.54) (drill 1.2) (layers *.Cu *.Mask) (tstamp 8e02d2ba-3c66-43d1-ad2b-b019709f7dbc))
)

View File

@ -0,0 +1,28 @@
(footprint "VRB_DCDC" (version 20211014) (generator pcbnew)
(layer "F.Cu")
(tedit 0)
(attr through_hole)
(fp_text reference "REF**" (at -5.08 -15.24 unlocked) (layer "F.SilkS")
(effects (font (size 1 1) (thickness 0.15)))
(tstamp f99a7a51-f125-4528-9d0b-f38d042973a9)
)
(fp_text value "VRB_DCDC" (at -5.08 10.16 unlocked) (layer "F.Fab")
(effects (font (size 1 1) (thickness 0.15)))
(tstamp a5187400-e305-4a39-af41-ea18fbb49ac0)
)
(fp_line (start 12.7 12.7) (end 2.54 12.7) (layer "F.SilkS") (width 0.15) (tstamp 5a0aedc4-9ee7-42bb-bee3-606b5d5c221e))
(fp_line (start 2.54 -12.7) (end 12.7 -12.7) (layer "F.SilkS") (width 0.15) (tstamp 75286667-128a-4cb3-9243-665f9a2b854f))
(fp_line (start -2.54 12.7) (end -12.7 12.7) (layer "F.SilkS") (width 0.15) (tstamp cfefbd5b-5d36-405a-867f-4546f50bf336))
(fp_line (start -12.7 12.7) (end -12.7 -12.7) (layer "F.SilkS") (width 0.15) (tstamp d5c7ca95-1912-4f1a-9414-3032085491ef))
(fp_line (start 12.7 -12.7) (end 12.7 12.7) (layer "F.SilkS") (width 0.15) (tstamp ea2626d9-2b3d-43b8-94dd-3e780da78668))
(fp_line (start -12.7 -12.7) (end -2.54 -12.7) (layer "F.SilkS") (width 0.15) (tstamp fa297ab7-5de8-40b5-bbea-903acfea8b65))
(fp_line (start -1.27 -12.7) (end -1.27 12.7) (layer "Edge.Cuts") (width 0.12) (tstamp d297c4a1-f78c-43dd-a839-a4e76ccda37d))
(fp_line (start 1.27 12.7) (end 1.27 -12.7) (layer "Edge.Cuts") (width 0.12) (tstamp f796c2f3-fd76-4075-ad90-0c53e5f64f6a))
(fp_arc (start -1.27 -12.7) (mid 0 -13.97) (end 1.27 -12.7) (layer "Edge.Cuts") (width 0.12) (tstamp 5e2b7723-6580-427c-9b5e-95fba34b2648))
(fp_arc (start 1.27 12.7) (mid 0 13.97) (end -1.27 12.7) (layer "Edge.Cuts") (width 0.12) (tstamp 7e02ae0b-9c8f-4168-8d24-cd07d3f04912))
(pad "1" thru_hole circle (at -10.16 -2.54) (size 3 3) (drill 1.5) (layers *.Cu *.Mask) (tstamp 83b6a448-f6df-4a5a-9eab-ab8dc651fe65))
(pad "2" thru_hole circle (at -10.16 2.54) (size 3 3) (drill 1.5) (layers *.Cu *.Mask) (tstamp ef4b9388-f9fd-46ff-a38c-6f79a73cbf41))
(pad "3" thru_hole circle (at 10.16 10.16) (size 3 3) (drill 1.5) (layers *.Cu *.Mask) (tstamp 0c946511-fcc8-4258-8e49-2425d11340ab))
(pad "4" thru_hole circle (at 10.16 0) (size 3 3) (drill 1.5) (layers *.Cu *.Mask) (tstamp 356ff193-c3af-4d9c-a3e5-419144eb66a0))
(pad "5" thru_hole circle (at 10.16 -10.16) (size 3 3) (drill 1.5) (layers *.Cu *.Mask) (tstamp 188214f1-a73c-4fb9-bfbe-46fa78ef5f6d))
)

View File

@ -0,0 +1,328 @@
(kicad_sch (version 20230121) (generator eeschema)
(uuid c774fcd8-2321-49e3-82b6-f080291ee83c)
(paper "A4")
(lib_symbols
(symbol "Device:R" (pin_numbers hide) (pin_names (offset 0)) (in_bom yes) (on_board yes)
(property "Reference" "R" (at 2.032 0 90)
(effects (font (size 1.27 1.27)))
)
(property "Value" "R" (at 0 0 90)
(effects (font (size 1.27 1.27)))
)
(property "Footprint" "" (at -1.778 0 90)
(effects (font (size 1.27 1.27)) hide)
)
(property "Datasheet" "~" (at 0 0 0)
(effects (font (size 1.27 1.27)) hide)
)
(property "ki_keywords" "R res resistor" (at 0 0 0)
(effects (font (size 1.27 1.27)) hide)
)
(property "ki_description" "Resistor" (at 0 0 0)
(effects (font (size 1.27 1.27)) hide)
)
(property "ki_fp_filters" "R_*" (at 0 0 0)
(effects (font (size 1.27 1.27)) hide)
)
(symbol "R_0_1"
(rectangle (start -1.016 -2.54) (end 1.016 2.54)
(stroke (width 0.254) (type default))
(fill (type none))
)
)
(symbol "R_1_1"
(pin passive line (at 0 3.81 270) (length 1.27)
(name "~" (effects (font (size 1.27 1.27))))
(number "1" (effects (font (size 1.27 1.27))))
)
(pin passive line (at 0 -3.81 90) (length 1.27)
(name "~" (effects (font (size 1.27 1.27))))
(number "2" (effects (font (size 1.27 1.27))))
)
)
)
(symbol "Isolator:PC817" (pin_names (offset 1.016)) (in_bom yes) (on_board yes)
(property "Reference" "U" (at -5.08 5.08 0)
(effects (font (size 1.27 1.27)) (justify left))
)
(property "Value" "PC817" (at 0 5.08 0)
(effects (font (size 1.27 1.27)) (justify left))
)
(property "Footprint" "Package_DIP:DIP-4_W7.62mm" (at -5.08 -5.08 0)
(effects (font (size 1.27 1.27) italic) (justify left) hide)
)
(property "Datasheet" "http://www.soselectronic.cz/a_info/resource/d/pc817.pdf" (at 0 0 0)
(effects (font (size 1.27 1.27)) (justify left) hide)
)
(property "ki_keywords" "NPN DC Optocoupler" (at 0 0 0)
(effects (font (size 1.27 1.27)) hide)
)
(property "ki_description" "DC Optocoupler, Vce 35V, CTR 50-300%, DIP-4" (at 0 0 0)
(effects (font (size 1.27 1.27)) hide)
)
(property "ki_fp_filters" "DIP*W7.62mm*" (at 0 0 0)
(effects (font (size 1.27 1.27)) hide)
)
(symbol "PC817_0_1"
(rectangle (start -5.08 3.81) (end 5.08 -3.81)
(stroke (width 0.254) (type default))
(fill (type background))
)
(polyline
(pts
(xy -3.175 -0.635)
(xy -1.905 -0.635)
)
(stroke (width 0.254) (type default))
(fill (type none))
)
(polyline
(pts
(xy 2.54 0.635)
(xy 4.445 2.54)
)
(stroke (width 0) (type default))
(fill (type none))
)
(polyline
(pts
(xy 4.445 -2.54)
(xy 2.54 -0.635)
)
(stroke (width 0) (type default))
(fill (type outline))
)
(polyline
(pts
(xy 4.445 -2.54)
(xy 5.08 -2.54)
)
(stroke (width 0) (type default))
(fill (type none))
)
(polyline
(pts
(xy 4.445 2.54)
(xy 5.08 2.54)
)
(stroke (width 0) (type default))
(fill (type none))
)
(polyline
(pts
(xy -5.08 2.54)
(xy -2.54 2.54)
(xy -2.54 -0.635)
)
(stroke (width 0) (type default))
(fill (type none))
)
(polyline
(pts
(xy -2.54 -0.635)
(xy -2.54 -2.54)
(xy -5.08 -2.54)
)
(stroke (width 0) (type default))
(fill (type none))
)
(polyline
(pts
(xy 2.54 1.905)
(xy 2.54 -1.905)
(xy 2.54 -1.905)
)
(stroke (width 0.508) (type default))
(fill (type none))
)
(polyline
(pts
(xy -2.54 -0.635)
(xy -3.175 0.635)
(xy -1.905 0.635)
(xy -2.54 -0.635)
)
(stroke (width 0.254) (type default))
(fill (type none))
)
(polyline
(pts
(xy -0.508 -0.508)
(xy 0.762 -0.508)
(xy 0.381 -0.635)
(xy 0.381 -0.381)
(xy 0.762 -0.508)
)
(stroke (width 0) (type default))
(fill (type none))
)
(polyline
(pts
(xy -0.508 0.508)
(xy 0.762 0.508)
(xy 0.381 0.381)
(xy 0.381 0.635)
(xy 0.762 0.508)
)
(stroke (width 0) (type default))
(fill (type none))
)
(polyline
(pts
(xy 3.048 -1.651)
(xy 3.556 -1.143)
(xy 4.064 -2.159)
(xy 3.048 -1.651)
(xy 3.048 -1.651)
)
(stroke (width 0) (type default))
(fill (type outline))
)
)
(symbol "PC817_1_1"
(pin passive line (at -7.62 2.54 0) (length 2.54)
(name "~" (effects (font (size 1.27 1.27))))
(number "1" (effects (font (size 1.27 1.27))))
)
(pin passive line (at -7.62 -2.54 0) (length 2.54)
(name "~" (effects (font (size 1.27 1.27))))
(number "2" (effects (font (size 1.27 1.27))))
)
(pin passive line (at 7.62 -2.54 180) (length 2.54)
(name "~" (effects (font (size 1.27 1.27))))
(number "3" (effects (font (size 1.27 1.27))))
)
(pin passive line (at 7.62 2.54 180) (length 2.54)
(name "~" (effects (font (size 1.27 1.27))))
(number "4" (effects (font (size 1.27 1.27))))
)
)
)
)
(wire (pts (xy 129.413 54.229) (xy 124.46 54.229))
(stroke (width 0) (type default))
(uuid 2f25ebff-821d-424a-a5e6-7aaeb1db0afa)
)
(wire (pts (xy 124.46 59.309) (xy 129.286 59.309))
(stroke (width 0) (type default))
(uuid f4fc9d10-1e63-4e24-a02b-556e4b39b19c)
)
(hierarchical_label "EXT5V" (shape input) (at 109.22 46.609 0) (fields_autoplaced)
(effects (font (size 1.27 1.27)) (justify left))
(uuid 0b20c453-dee8-4cc6-90fe-d346e6222768)
)
(hierarchical_label "In" (shape input) (at 129.413 54.229 0) (fields_autoplaced)
(effects (font (size 1.27 1.27)) (justify left))
(uuid 8e6bd8d7-45cc-4e50-9857-61670736c481)
)
(hierarchical_label "gnd" (shape input) (at 129.286 59.309 0) (fields_autoplaced)
(effects (font (size 1.27 1.27)) (justify left))
(uuid ab6c4d70-58f2-4e0b-88e2-6f2d9aeddb16)
)
(hierarchical_label "EXTi" (shape input) (at 109.22 59.309 180) (fields_autoplaced)
(effects (font (size 1.27 1.27)) (justify right))
(uuid c868a95d-cc21-426a-9cfd-3f9543b753be)
)
(symbol (lib_id "Device:R") (at 109.22 50.419 0) (unit 1)
(in_bom yes) (on_board yes) (dnp no)
(uuid 09735fc2-1580-4524-a728-ca09449b348a)
(property "Reference" "R31" (at 110.998 49.5843 0)
(effects (font (size 1.27 1.27)) (justify left))
)
(property "Value" "360" (at 109.093 51.943 90)
(effects (font (size 1.27 1.27)) (justify left))
)
(property "Footprint" "Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolder" (at 107.442 50.419 90)
(effects (font (size 1.27 1.27)) hide)
)
(property "Datasheet" "~" (at 109.22 50.419 0)
(effects (font (size 1.27 1.27)) hide)
)
(pin "1" (uuid d8e2831f-0444-4eb0-a255-0be00f3eb495))
(pin "2" (uuid 450e036f-cbf0-46f9-86d8-88929d707ae4))
(instances
(project "stm32"
(path "/f40cbe7e-cd25-45e5-a6cb-d92457495048/311a5cb3-0370-4a86-a5e8-6335fee47f9a"
(reference "R31") (unit 1)
)
(path "/f40cbe7e-cd25-45e5-a6cb-d92457495048/2b18f3bb-219b-4cc5-8bc9-bc122d6e81e9"
(reference "R35") (unit 1)
)
(path "/f40cbe7e-cd25-45e5-a6cb-d92457495048/c51c7789-4b67-42c9-a921-b1066b3f95ba"
(reference "R37") (unit 1)
)
(path "/f40cbe7e-cd25-45e5-a6cb-d92457495048/737c47dd-2cc5-4c23-ab54-7bef18beb2a3"
(reference "R32") (unit 1)
)
(path "/f40cbe7e-cd25-45e5-a6cb-d92457495048/0ff6ac13-ac49-41f0-9506-376ccd8b8ba4"
(reference "R33") (unit 1)
)
(path "/f40cbe7e-cd25-45e5-a6cb-d92457495048/1cf77ae7-411e-49cc-bbff-6947c0aa32bd"
(reference "R34") (unit 1)
)
(path "/f40cbe7e-cd25-45e5-a6cb-d92457495048/d7c9ec36-f6b4-4bc2-8e9a-7a0792b9eff0"
(reference "R36") (unit 1)
)
(path "/f40cbe7e-cd25-45e5-a6cb-d92457495048/e5255d96-2d32-432c-bf31-9afa6ac7ec6a"
(reference "R38") (unit 1)
)
)
)
)
(symbol (lib_id "Isolator:PC817") (at 116.84 56.769 0) (unit 1)
(in_bom yes) (on_board yes) (dnp no) (fields_autoplaced)
(uuid 400c154c-5d09-4b90-bd4d-4cdbee68e158)
(property "Reference" "U11" (at 116.84 49.2592 0)
(effects (font (size 1.27 1.27)))
)
(property "Value" "PC817" (at 116.84 51.7961 0)
(effects (font (size 1.27 1.27)))
)
(property "Footprint" "Package_DIP:DIP-4_W7.62mm" (at 111.76 61.849 0)
(effects (font (size 1.27 1.27) italic) (justify left) hide)
)
(property "Datasheet" "http://www.soselectronic.cz/a_info/resource/d/pc817.pdf" (at 116.84 56.769 0)
(effects (font (size 1.27 1.27)) (justify left) hide)
)
(pin "1" (uuid 91cf025a-067c-492c-bcee-1aa442b5190b))
(pin "2" (uuid 92a29dae-4114-4ac4-b292-3f9303033fe3))
(pin "3" (uuid 22931c93-52d3-4f9e-a51a-72db694a5d75))
(pin "4" (uuid 493f9777-02f4-4e33-a6e5-ec3981392cf3))
(instances
(project "stm32"
(path "/f40cbe7e-cd25-45e5-a6cb-d92457495048/311a5cb3-0370-4a86-a5e8-6335fee47f9a"
(reference "U11") (unit 1)
)
(path "/f40cbe7e-cd25-45e5-a6cb-d92457495048/2b18f3bb-219b-4cc5-8bc9-bc122d6e81e9"
(reference "U15") (unit 1)
)
(path "/f40cbe7e-cd25-45e5-a6cb-d92457495048/c51c7789-4b67-42c9-a921-b1066b3f95ba"
(reference "U17") (unit 1)
)
(path "/f40cbe7e-cd25-45e5-a6cb-d92457495048/737c47dd-2cc5-4c23-ab54-7bef18beb2a3"
(reference "U12") (unit 1)
)
(path "/f40cbe7e-cd25-45e5-a6cb-d92457495048/0ff6ac13-ac49-41f0-9506-376ccd8b8ba4"
(reference "U13") (unit 1)
)
(path "/f40cbe7e-cd25-45e5-a6cb-d92457495048/1cf77ae7-411e-49cc-bbff-6947c0aa32bd"
(reference "U14") (unit 1)
)
(path "/f40cbe7e-cd25-45e5-a6cb-d92457495048/d7c9ec36-f6b4-4bc2-8e9a-7a0792b9eff0"
(reference "U16") (unit 1)
)
(path "/f40cbe7e-cd25-45e5-a6cb-d92457495048/e5255d96-2d32-432c-bf31-9afa6ac7ec6a"
(reference "U18") (unit 1)
)
)
)
)
)

View File

@ -0,0 +1,597 @@
work_dir = /home/eddy/Docs/SAO/ELECTRONICS/STM32/F0-srcs/CANbus4BTA/kicad
in_pcb_file = stm32.kicad_pcb
root_schematic_file = stm32.kicad_sch
store to sheet[] = stm32.kicad_sch
store to sheet[/0ff6ac13-ac49-41f0-9506-376ccd8b8ba4] = optocouple.kicad_sch
store to sheet[/1cf77ae7-411e-49cc-bbff-6947c0aa32bd] = optocouple.kicad_sch
store to sheet[/2b18f3bb-219b-4cc5-8bc9-bc122d6e81e9] = optocouple.kicad_sch
store to sheet[/311a5cb3-0370-4a86-a5e8-6335fee47f9a] = optocouple.kicad_sch
store to sheet[/737c47dd-2cc5-4c23-ab54-7bef18beb2a3] = optocouple.kicad_sch
store to sheet[/c51c7789-4b67-42c9-a921-b1066b3f95ba] = optocouple.kicad_sch
store to sheet[/d7c9ec36-f6b4-4bc2-8e9a-7a0792b9eff0] = optocouple.kicad_sch
store to sheet[/e5255d96-2d32-432c-bf31-9afa6ac7ec6a] = optocouple.kicad_sch
Processing /0ff6ac13-ac49-41f0-9506-376ccd8b8ba4
Processing /1cf77ae7-411e-49cc-bbff-6947c0aa32bd
Processing /2b18f3bb-219b-4cc5-8bc9-bc122d6e81e9
Processing /311a5cb3-0370-4a86-a5e8-6335fee47f9a
Processing /737c47dd-2cc5-4c23-ab54-7bef18beb2a3
Processing /c51c7789-4b67-42c9-a921-b1066b3f95ba
Processing /d7c9ec36-f6b4-4bc2-8e9a-7a0792b9eff0
Processing /e5255d96-2d32-432c-bf31-9afa6ac7ec6a
/00000000-0000-0000-0000-000058c42d39 ('C5', (3340, 10185), '')
/00000000-0000-0000-0000-000058c45269 ('#PWR064', (20853, 6451), '')
/00000000-0000-0000-0000-000058c453c7 ('#PWR075', (25679, 7670), '')
/00000000-0000-0000-0000-000058c454f6 ('C27', (27228, 7162), '')
/00000000-0000-0000-0000-000058c455cb ('#PWR079', (27228, 6781), '')
/00000000-0000-0000-0000-000058c46522 ('D9', (25120, 9626), '')
/00000000-0000-0000-0000-000058c488c6 ('R28', (25463, 11112), '')
/00000000-0000-0000-0000-0000590935ea ('C7', (4102, 10185), '')
/00000000-0000-0000-0000-000059093675 ('C9', (4864, 10185), '')
/00000000-0000-0000-0000-000059098d4d ('D8', (24726, 13995), '')
/00000000-0000-0000-0000-0000590a0c2d ('#PWR030', (6273, 10566), '')
/00000000-0000-0000-0000-0000590a1958 ('#PWR021', (2451, 9804), '')
/00000000-0000-0000-0000-0000590a8102 ('C10', (5626, 10185), '')
/00000000-0000-0000-0000-0000590cee5e ('#FLG02', (25958, 3200), '')
/00000000-0000-0000-0000-000059143415 ('P1', (32893, 18084), '')
/00000000-0000-0000-0000-00005914456d ('P2', (32893, 18719), '')
/00000000-0000-0000-0000-00005968e385 ('R19', (19558, 13995), '')
/00000000-0000-0000-0000-00005968e83b ('R20', (19558, 14249), '')
/00000000-0000-0000-0000-00005ec7332b ('Q8', (21653, 11061), '')
/00000000-0000-0000-0000-00005eca19cb ('J29', (27520, 13855), '')
/00000000-0000-0000-0000-00005ed38032 ('U4', (4610, 5613), '')
/00000000-0000-0000-0000-00005edf00ab ('#PWR027', (4610, 1803), '')
/00000000-0000-0000-0000-00005efcc1d1 ('C25', (26441, 7162), '')
/00000000-0000-0000-0000-00005efdfde6 ('SW4', (24320, 11112), '')
/00000000-0000-0000-0000-00005f012762 ('#PWR062', (20637, 10807), '')
/00000000-0000-0000-0000-00005f026bcd ('#PWR061', (20586, 9258), '')
/00000000-0000-0000-0000-00005f0b58fe ('#PWR077', (26720, 3200), '')
/00000000-0000-0000-0000-00005f0b7bcc ('U10', (25679, 6781), '')
/00000000-0000-0000-0000-00005f0e47e1 ('C24', (24815, 7162), '')
/00000000-0000-0000-0000-00005f0f75f5 ('C23', (23507, 9639), '')
/00000000-0000-0000-0000-00005f0f92a0 ('C15', (19418, 9639), '')
/00000000-0000-0000-0000-00005f189262 ('#PWR063', (20637, 11315), '')
/00000000-0000-0000-0000-000060cd9cc5 ('J23', (19532, 2108), '')
/00000000-0000-0000-0000-000060cdd40b ('D4', (20650, 3200), '')
/00000000-0000-0000-0000-000060cdf8cf ('R21', (19786, 3200), '')
/00000000-0000-0000-0000-000060d5d4fa ('#PWR054', (19405, 3200), '')
/00000000-0000-0000-0000-000060db3611 ('C19', (22402, 3581), '')
/00000000-0000-0000-0000-000060db45c7 ('C17', (21742, 3581), '')
/00000000-0000-0000-0000-000060db5d15 ('C26', (26720, 4089), '')
/00000000-0000-0000-0000-000060dbfbc1 ('U9', (24180, 3454), '')
/00000000-0000-0000-0000-000060dc099d ('D10', (25958, 4089), '')
/00000000-0000-0000-0000-000060dc190f ('L1', (26339, 3708), '')
/00000000-0000-0000-0000-000060df55b4 ('#PWR072', (24206, 4851), '')
/00000000-0000-0000-0000-000060df621a ('#PWR078', (26720, 4470), '')
/00000000-0000-0000-0000-000060e144ee ('#PWR067', (22072, 3962), '')
/00000000-0000-0000-0000-000060e7fab6 ('R2', (2108, 2819), '')
/00000000-0000-0000-0000-000060f2f77c ('Q6', (20078, -1917), '')
/00000000-0000-0000-0000-000060f3ed21 ('R17', (18808, -1536), '')
/00000000-0000-0000-0000-000060f4a360 ('R18', (19189, -1917), '')
/00000000-0000-0000-0000-000060f821c5 ('#PWR060', (20332, -1155), '')
/00000000-0000-0000-0000-000060f8923e ('K1', (21678, -1917), '')
/00000000-0000-0000-0000-000060f9eb64 ('J25', (23380, -1409), '')
/00000000-0000-0000-0000-000060fd5c63 ('D6', (21653, -3340), '')
/00000000-0000-0000-0000-0000610519a2 ('Q7', (20955, 2540), '')
/00000000-0000-0000-0000-0000610721ac ('#PWR020', (1727, 2819), '')
/00000000-0000-0000-0000-00006107636a ('J26', (23380, 1968), '')
/00000000-0000-0000-0000-000061084abf ('#PWR068', (22402, 1676), '')
/00000000-0000-0000-0000-0000610f9be1 ('Q5', (15798, 18796), '')
/00000000-0000-0000-0000-0000610fab25 ('R11', (14909, 18796), '')
/00000000-0000-0000-0000-0000610faedc ('R16', (15671, 19304), '')
/00000000-0000-0000-0000-00006112f2f0 ('D2', (10464, -1549), '')
/00000000-0000-0000-0000-00006113896f ('R5', (10845, -2286), '')
/00000000-0000-0000-0000-000061138d34 ('R6', (10845, -2032), '')
/00000000-0000-0000-0000-000061138fc0 ('R3', (9753, -2832), '')
/00000000-0000-0000-0000-00006113ab69 ('D1', (9753, -1549), '')
/00000000-0000-0000-0000-00006113b115 ('#PWR038', (11226, -3213), '')
/00000000-0000-0000-0000-00006117d6be ('#FLG01', (21209, 3200), '')
/00000000-0000-0000-0000-00006117e151 ('#PWR037', (10121, -1168), '')
/00000000-0000-0000-0000-000061180069 ('R4', (10299, -2832), '')
/00000000-0000-0000-0000-0000611ebd67 ('Q4', (15036, -2654), '')
/00000000-0000-0000-0000-0000611f02e2 ('R10', (14909, -2019), '')
/00000000-0000-0000-0000-0000611f6148 ('R7', (14147, -2654), '')
/00000000-0000-0000-0000-0000612410fb ('J22', (17703, -1485), '')
/00000000-0000-0000-0000-000061259f9e ('#PWR050', (16941, -1485), '')
/00000000-0000-0000-0000-000061286113 ('J19', (11734, -2286), '')
/00000000-0000-0000-0000-00006128836a ('#PWR039', (11226, -1778), '')
/00000000-0000-0000-0000-000061291425 ('#PWR048', (16052, 17780), '')
/00000000-0000-0000-0000-0000612946ff ('TP3', (24434, 4851), '')
/00000000-0000-0000-0000-0000612bea7a ('D3', (15773, -2781), '')
/00000000-0000-0000-0000-0000612bf7fc ('#PWR051', (17195, -1739), '')
/00000000-0000-0000-0000-0000612c0093 ('#PWR047', (15773, -2400), '')
/00000000-0000-0000-0000-0000612d24d1 ('C18', (22402, 2057), '')
/00000000-0000-0000-0000-00006134ea3d ('#PWR045', (15290, -2019), '')
/00000000-0000-0000-0000-0000617663de ('#PWR058', (20040, 2108), '')
/00000000-0000-0000-0000-0000617e4995 ('C28', (27406, 4089), '')
/00000000-0000-0000-0000-00006184746e ('TP5', (27127, 3200), '')
/00000000-0000-0000-0000-000061854eaa ('TP4', (26682, 6781), '')
/00000000-0000-0000-0000-000061c0dc3c ('P3', (32918, 19265), '')
/00000000-0000-0000-0000-000061c0dc46 ('P4', (32918, 19900), '')
/054640a2-3f85-4d74-bbbd-eeed58cb5b94 ('R27', (22758, 7277), '')
/0b115f45-6911-407e-a341-c7089893b8b6 ('R13', (14960, 3124), '')
/0b3eb060-4cc9-40a1-9367-a5e28520fe38 ('#PWR08', (-5092, 16484), '')
/0bf6fe2d-a7ca-4711-b626-b7d8edff3322 ('C8', (4114, -1079), '')
/0c0bbac4-ca7f-46e3-80eb-1606d06594c7 ('J20', (12230, 18008), '')
/0c206d9e-ad40-4802-9126-a0047f02ad9f ('D7', (23507, 6489), '')
/0d509690-880a-4aa6-a8fc-c86cc1739036 ('C22', (23507, 7251), '')
/0e79d957-0a13-45f3-a6b8-0f2e29c73bec ('#PWR059', (20256, 12725), '')
/0e965621-2e06-4200-b31a-fd954d6b8d97 ('J17', (6642, 8915), '')
/0ea5144a-8751-4287-9bcd-0431fd0ba426 ('C4', (-1866, 1968), '')
/0eba5c35-2a8f-4e18-96df-b463871dd590 ('#PWR042', (14351, 1968), '')
/100f7ed9-b7d4-4cc2-97b6-de4015d29db2 ('#FLG04', (22987, 13893), '')
/1032ed2e-266e-481b-9db3-c9c3f44f11f5 ('J21', (15913, 5778), '')
/104b4038-0d39-4290-93db-ceec2e404f19 ('#PWR010', (-5003, 13284), '')
/120d34b1-d8e2-4081-aab1-5aeda236e3d8 ('J15', (2324, 7645), '')
/14126f80-c9c8-4063-891f-49693172a747 ('#PWR014', (-2374, 14084), '')
/177a6c0b-aa6f-4e9b-8cd2-961a762fc7e6 ('#PWR040', (13944, 4737), '')
/1a1c2ef2-bed5-4dd2-911b-055642c4b22e ('#PWR069', (22771, -2425), '')
/1a9d53e2-0b5c-45a6-aa32-7e39e06ff85e ('#PWR043', (14630, 3505), '')
/1d99c860-2526-4cbc-90cb-e272fcc6a24a ('R1', (-2032, 4318), '')
/1dd288bd-42ce-4bed-9f19-42a0861c87b7 ('#PWR026', (4394, 16776), '')
/21538172-7710-4aea-a95f-c002bc6fb600 ('J13', (-1143, 5334), '')
/253a1d6d-9b50-4386-9630-5f3ecc085ec2 ('R22', (21996, 6451), '')
/2653940b-2982-43ae-8a4d-ef81fe133c6c ('#PWR036', (9194, 15481), '')
/28a2b46c-ebc3-4719-9207-e4af31619c8c ('U6', (17500, 4343), '')
/2936c100-4bd9-417a-821c-796dfa1680c9 ('#PWR044', (14960, 1981), '')
/29e949e6-8659-45bf-81e2-675b87891b4e ('#PWR066', (21742, 3200), '')
/2a57c89d-c95e-4b8c-9371-ed0e0bd2e0f2 ('U3', (3505, 14998), '')
/2b90b1f6-d639-4825-9b90-cd199385330e ('J14', (-1143, 5588), '')
/2ec25089-db7b-4d8b-a941-e1f94183b5b2 ('RV1', (14389, 4737), '')
/2f8307e9-7273-44a1-9448-22311ed6aff7 ('BZ1', (16306, 18034), '')
/30393d1e-0347-4aa6-99e6-3d1e1f7319b8 ('#PWR057', (19786, 7086), '')
/30ee9aa9-870e-4bf8-a397-872828efd6e3 ('J5', (-5588, 10198), '')
/32d0c73c-04a4-491c-ac25-12bd6440075c ('#PWR017', (-2362, 18986), '')
/33ab5ad6-9df4-454d-98ce-5e5ce74e7958 ('R8', (14351, 2349), '')
/33ca0e4c-0eb9-4e3c-bb6a-12a7463f509a ('J11', (-1143, 4826), '')
/33d35d3f-829d-49bf-b5f3-8ab386499c8b ('#PWR053', (17500, 5359), '')
/35713709-17d6-46c2-a652-dcfe11056b20 ('C6', (3352, -1079), '')
/3780f544-6f22-4382-a621-4013ec61a13f ('#FLG05', (22987, 15773), '')
/3870c967-36b7-4e56-b2a5-8dbd5aef6603 ('JP1', (4000, 18072), '')
/38cd3bb4-71f2-48aa-a0b5-37173d207cf3 ('#PWR018', (-1651, 5588), '')
/39230b26-ae40-47a3-b257-b97c36a58bed ('#PWR070', (22796, 11315), '')
/3b1f8705-bf08-41a6-82ea-930ca2a6ed54 ('U1', (-7112, 9436), '')
/3bdee6c2-276d-4d52-a2e6-34877cc4875c ('R30', (26377, 14109), '')
/411b986a-7bed-466d-a7c3-0d0fa313ffb4 ('J16', (2324, 7899), '')
/43dc25fa-cc1a-4f75-9dc4-e1bcbb108f93 ('J8', (-5359, 8064), '')
/45d028a1-e2d9-495b-bf40-7eab380b9383 ('J38', (6642, 7137), '')
/4bc419d9-4ea3-4622-bf50-d27a4db683a9 ('R9', (14351, 3124), '')
/4d8352aa-3c5c-4a77-99ef-9ce7e4432c18 ('C12', (14389, 5029), '')
/4dfe3314-b792-46f0-a048-eb0d720e42e4 ('#PWR028', (4699, 12382), '')
/4f2e85af-2b80-4e53-8b7d-747b34e9e855 ('#PWR05', (-5638, 11290), '')
/4fc7292d-b7a7-46d8-b070-021e8ec1f89c ('#PWR073', (25590, 1955), '')
/503362e8-55fb-4d6e-8fc6-7634525271e8 ('JP2', (4013, 19189), '')
/53f6691b-853a-41d8-82d9-374f8662035d ('#PWR012', (-3581, 9436), '')
/5569c91d-111c-492b-81ef-3e4da9afebb0 ('C11', (13766, 3111), '')
/56758733-eeb9-492a-96c7-fd89daed6dd0 ('R29', (26377, 13855), '')
/5bb29b58-8c85-4a10-8add-12503a77550d ('#PWR013', (-2413, 4318), '')
/60e68b2f-1574-4980-9e9b-e32807fb36f0 ('SW3', (-1854, 1638), '')
/61b4e825-47e4-40c5-80de-942447daa651 ('#PWR02', (-7010, 12230), '')
/6312b9d4-4b0e-40cc-a4b3-49c5fb02d88b ('TP2', (23926, 4851), '')
/64b7323f-d158-42c5-bf26-f144a085693b ('#PWR031', (6756, 12585), '')
/6521c46b-0f95-43df-bc25-d25022cf80f6 ('C2', (-5054, 2324), '')
/65b6142d-b567-45b7-8093-f605b722228d ('#PWR065', (21018, 15773), '')
/68fffa8a-6e9e-4d44-9a2d-fa1adac8e34f ('J10', (-1143, 4572), '')
/692cea91-162a-4758-81e1-aa6555e71bf7 ('#PWR019', (-1346, 1638), '')
/6a193267-fbe5-4a23-aadb-91f126725f8c ('#PWR016', (-2374, 17462), '')
/6d89f343-c490-43ce-9bc9-395539af18d3 ('#PWR071', (23507, 7632), '')
/6e6c4f9b-98fa-4118-9d20-c7d803162ad2 ('Y1', (3733, -1460), '')
/6ff01c2b-11a2-4ee8-9278-d251169c73d6 ('#PWR01', (-7112, 8166), '')
/71044a0d-259e-46f9-ac28-cd66eb082493 ('#PWR025', (3733, -698), '')
/71d98676-6157-4c95-9aed-eb1bb64cc439 ('TP1', (23507, 6870), '')
/735dac43-8d30-46f1-893c-fed3ef4e6dbe ('#PWR056', (19786, 6324), '')
/74f69adb-1a66-4bcf-b574-3c21cacfcf1c ('R24', (21996, 7277), '')
/75c927f0-fe4d-494c-872d-ba7328e5572a ('#PWR074', (25590, 2209), '')
/770f8b7d-9bf3-49cc-b4a6-1ce9671c09bd ('Q1', (-4622, 11544), '')
/783caa49-98e1-4ee1-9fe6-3b17b5636775 ('#PWR033', (9105, 16738), '')
/7a881e95-07e4-4e22-9121-115965787b59 ('JP3', (5994, 11468), '')
/7c6d5863-14a7-4ec7-8113-2b1994e276cf ('R23', (21996, 6870), '')
/7cd14cd5-9733-41f2-955b-db75373a78d8 ('R12', (14960, 2362), '')
/7d17ca4b-20bf-403f-a03d-5a021e8f590b ('C14', (15608, 3124), '')
/7de10c84-c49d-439c-bbae-04a805281938 ('J24', (20294, 6578), '')
/86243f82-6155-4a79-88f4-d438eb21fd49 ('C13', (14389, 6070), '')
/8c4d36b8-706e-4d71-83db-782cad6b986b ('#FLG0102', (23139, 12725), '')
/8d6b503e-5962-4acb-b031-0dfb28996ef1 ('#PWR052', (17500, 3327), '')
/8d75df65-6b0a-48a0-85a2-1e08be8f9ab3 ('U7', (21526, 14249), '')
/8deb6efe-ded2-419d-8ccb-426109009fce ('D5', (21234, 6451), '')
/8f560d6a-94bb-4b58-8a53-12b2343b4c26 ('#PWR055', (19443, 6578), '')
/93947ffc-b9e1-43e0-a026-3461c421d230 ('JP4', (6007, 12585), '')
/971a16ad-1c82-4e70-abad-2116c59bae49 ('C21', (23139, 13106), '')
/97428a20-20d1-4782-afd6-112e95d792e4 ('#PWR015', (-2374, 16014), '')
/981da248-ed67-499d-a991-85ea4d362915 ('#PWR024', (2870, 16776), '')
/9b6b6b38-fb60-4b5e-bf52-632696461ce3 ('C20', (22987, 14884), '')
/9c1ca373-5a52-42eb-815b-ee5695f28642 ('J2', (-5740, 8064), '')
/9d77c400-150a-498d-b229-31c610eb1a06 ('R25', (22758, 6451), '')
/9db45a8d-9df2-4c52-848e-fea1f8976859 ('J27', (26098, 1955), '')
/9e78e83b-34c3-404a-bfdd-081d96c1cb53 ('J4', (-5588, 9944), '')
/a4027aa8-927e-4ea8-9e88-90d35e759e55 ('#PWR032', (8724, 16992), '')
/a4359e4e-cbd2-4699-aee7-14357c7abc49 ('#PWR049', (16052, 19304), '')
/a617b36d-2ff9-49e5-af7e-bbdfa99e4018 ('#PWR04', (-6883, 15024), '')
/aad4c609-7e03-4576-a0f5-108625fc1371 ('#PWR035', (9194, 14973), '')
/ab6ac2c9-5592-4df1-9a9e-2d2dc6e173b0 ('Q2', (3683, 12128), '')
/b2d49f58-778b-49f0-913f-b059394ebf6e ('C1', (-5638, 11544), '')
/b5ba6bf3-dbc9-458e-8aaf-b34c2d1d9610 ('J3', (-5588, 9690), '')
/b944f607-1432-48b1-95e4-bfc2630f8d66 ('#PWR046', (15405, 6032), '')
/baa8b58e-c327-4be8-91dc-b670ea22cd9c ('SW2', (-4343, 9182), '')
/baa9d797-2dc5-46a0-805e-14ddb1aeba25 ('C16', (20053, 15138), '')
/c443a1d1-8d39-4a8e-acf6-38fe4832911d ('U2', (-7010, 13500), '')
/c496840f-8a1c-4ded-a4b7-deb1b831f932 ('#PWR076', (26136, 9880), '')
/c62b18a1-c6b5-48a9-96ab-32b4d2b823a6 ('#PWR029', (6210, 13855), '')
/c6343196-cdb0-4b28-a760-da7ed9b43f67 ('#PWR03', (-6984, 10960), '')
/c6877987-287c-43d4-8206-b8997de2056c ('J6', (-5588, 10452), '')
/c7f94789-2538-44d8-9626-3b52d225f717 ('U8', (21602, 9512), '')
/cf053fdd-192e-4904-b566-bdbbe8fe72c1 ('#FLG03', (20802, 12725), '')
/cf5a04f8-c5d9-4167-bb87-9cc5b13eca9d ('Q3', (10210, 15227), '')
/d1027741-8cbc-48bd-b373-5719dfd179e8 ('J7', (-5549, 8064), '')
/d23cf98a-ff83-4ac2-bbc5-9c30d28d78b8 ('#PWR041', (13944, 5778), '')
/d2a47a87-3007-498b-9ea6-dada917416be ('U5', (10121, 17754), '')
/d30f4cf9-d160-4c5a-a331-bc01cb316d1f ('J9', (-1143, 4318), '')
/d4c38100-f103-4bdc-9259-be7f90bf1774 ('J1', (-5918, 8064), '')
/d5ea083d-3219-4ba2-8c80-e151bd9b99a8 ('#PWR022', (2667, 11874), '')
/d60b751f-ca22-4aa7-b80a-ef1d90ec42a5 ('#PWR011', (-4533, 2324), '')
/d6aef62f-680d-4e80-8d8a-da098f5301f8 ('#PWR09', (-5092, 18072), '')
/da7dea09-ba69-4a3a-8f41-6104c99a3c2d ('R15', (15024, 5778), '')
/df0e219e-6a72-41ea-8dfc-70140d1b8bf4 ('#PWR0101', (2108, 13220), '')
/e00fc69a-c8b1-4085-8487-54bc7626db71 ('J12', (-1143, 5080), '')
/eb9ff82c-cc72-4a95-9611-ee40bc551846 ('#PWR06', (-5638, 11798), '')
/eddc122f-ae6e-4e8f-a658-779a7e6682fa ('#PWR023', (2667, 12382), '')
/efaf83c9-779f-4d89-9af3-2beac3335842 ('#PWR034', (9105, 17500), '')
/efeb359d-fcc7-4ba5-807f-b8f8577fc504 ('R14', (15024, 4737), '')
/f02e50e3-09db-4af2-97ba-2eca487a89ff ('J28', (27279, 9880), '')
/f174c8cf-82c6-4198-9647-debf669687b3 ('#PWR07', (-5105, 14973), '')
/f187c41a-ce55-4b88-9520-5cc86fed339b ('R26', (22758, 6870), '')
/f1c88291-405c-4acd-bd2b-667d6f1e4b9b ('J18', (6972, 14871), '')
/f73e8d41-f0b0-4c88-9176-37acd42e3860 ('#FLG0101', (22987, 6108), '')
/fa2633f3-fef6-4a2f-b530-e262c70f5aac ('SW1', (-5041, 1993), '')
/fc489d23-5fe3-448f-a89a-1edc326144e0 ('#FLG0103', (26441, 7543), '')
/feb8af60-c0c4-4ac3-89cd-8551f82caf0c ('RV2', (14389, 5778), '')
/ff8d3de2-57b9-4270-9d92-8830b2f70749 ('C3', (-3606, 11544), '')
/0ff6ac13-ac49-41f0-9506-376ccd8b8ba4/09735fc2-1580-4524-a728-ca09449b348a ('R31', (10922, 5041), '/0ff6ac13-ac49-41f0-9506-376ccd8b8ba4')
/0ff6ac13-ac49-41f0-9506-376ccd8b8ba4/29e10d42-1dd1-4a69-abec-c13748c3bb68 ('J30', (10414, 6184), '/0ff6ac13-ac49-41f0-9506-376ccd8b8ba4')
/0ff6ac13-ac49-41f0-9506-376ccd8b8ba4/400c154c-5d09-4b90-bd4d-4cdbee68e158 ('U11', (11684, 5676), '/0ff6ac13-ac49-41f0-9506-376ccd8b8ba4')
/1cf77ae7-411e-49cc-bbff-6947c0aa32bd/09735fc2-1580-4524-a728-ca09449b348a ('R31', (10922, 5041), '/1cf77ae7-411e-49cc-bbff-6947c0aa32bd')
/1cf77ae7-411e-49cc-bbff-6947c0aa32bd/29e10d42-1dd1-4a69-abec-c13748c3bb68 ('J30', (10414, 6184), '/1cf77ae7-411e-49cc-bbff-6947c0aa32bd')
/1cf77ae7-411e-49cc-bbff-6947c0aa32bd/400c154c-5d09-4b90-bd4d-4cdbee68e158 ('U11', (11684, 5676), '/1cf77ae7-411e-49cc-bbff-6947c0aa32bd')
/2b18f3bb-219b-4cc5-8bc9-bc122d6e81e9/09735fc2-1580-4524-a728-ca09449b348a ('R31', (10922, 5041), '/2b18f3bb-219b-4cc5-8bc9-bc122d6e81e9')
/2b18f3bb-219b-4cc5-8bc9-bc122d6e81e9/29e10d42-1dd1-4a69-abec-c13748c3bb68 ('J30', (10414, 6184), '/2b18f3bb-219b-4cc5-8bc9-bc122d6e81e9')
/2b18f3bb-219b-4cc5-8bc9-bc122d6e81e9/400c154c-5d09-4b90-bd4d-4cdbee68e158 ('U11', (11684, 5676), '/2b18f3bb-219b-4cc5-8bc9-bc122d6e81e9')
/311a5cb3-0370-4a86-a5e8-6335fee47f9a/09735fc2-1580-4524-a728-ca09449b348a ('R31', (10922, 5041), '/311a5cb3-0370-4a86-a5e8-6335fee47f9a')
/311a5cb3-0370-4a86-a5e8-6335fee47f9a/29e10d42-1dd1-4a69-abec-c13748c3bb68 ('J30', (10414, 6184), '/311a5cb3-0370-4a86-a5e8-6335fee47f9a')
/311a5cb3-0370-4a86-a5e8-6335fee47f9a/400c154c-5d09-4b90-bd4d-4cdbee68e158 ('U11', (11684, 5676), '/311a5cb3-0370-4a86-a5e8-6335fee47f9a')
/737c47dd-2cc5-4c23-ab54-7bef18beb2a3/09735fc2-1580-4524-a728-ca09449b348a ('R31', (10922, 5041), '/737c47dd-2cc5-4c23-ab54-7bef18beb2a3')
/737c47dd-2cc5-4c23-ab54-7bef18beb2a3/29e10d42-1dd1-4a69-abec-c13748c3bb68 ('J30', (10414, 6184), '/737c47dd-2cc5-4c23-ab54-7bef18beb2a3')
/737c47dd-2cc5-4c23-ab54-7bef18beb2a3/400c154c-5d09-4b90-bd4d-4cdbee68e158 ('U11', (11684, 5676), '/737c47dd-2cc5-4c23-ab54-7bef18beb2a3')
/c51c7789-4b67-42c9-a921-b1066b3f95ba/09735fc2-1580-4524-a728-ca09449b348a ('R31', (10922, 5041), '/c51c7789-4b67-42c9-a921-b1066b3f95ba')
/c51c7789-4b67-42c9-a921-b1066b3f95ba/29e10d42-1dd1-4a69-abec-c13748c3bb68 ('J30', (10414, 6184), '/c51c7789-4b67-42c9-a921-b1066b3f95ba')
/c51c7789-4b67-42c9-a921-b1066b3f95ba/400c154c-5d09-4b90-bd4d-4cdbee68e158 ('U11', (11684, 5676), '/c51c7789-4b67-42c9-a921-b1066b3f95ba')
/d7c9ec36-f6b4-4bc2-8e9a-7a0792b9eff0/09735fc2-1580-4524-a728-ca09449b348a ('R31', (10922, 5041), '/d7c9ec36-f6b4-4bc2-8e9a-7a0792b9eff0')
/d7c9ec36-f6b4-4bc2-8e9a-7a0792b9eff0/29e10d42-1dd1-4a69-abec-c13748c3bb68 ('J30', (10414, 6184), '/d7c9ec36-f6b4-4bc2-8e9a-7a0792b9eff0')
/d7c9ec36-f6b4-4bc2-8e9a-7a0792b9eff0/400c154c-5d09-4b90-bd4d-4cdbee68e158 ('U11', (11684, 5676), '/d7c9ec36-f6b4-4bc2-8e9a-7a0792b9eff0')
/e5255d96-2d32-432c-bf31-9afa6ac7ec6a/09735fc2-1580-4524-a728-ca09449b348a ('R31', (10922, 5041), '/e5255d96-2d32-432c-bf31-9afa6ac7ec6a')
/e5255d96-2d32-432c-bf31-9afa6ac7ec6a/29e10d42-1dd1-4a69-abec-c13748c3bb68 ('J30', (10414, 6184), '/e5255d96-2d32-432c-bf31-9afa6ac7ec6a')
/e5255d96-2d32-432c-bf31-9afa6ac7ec6a/400c154c-5d09-4b90-bd4d-4cdbee68e158 ('U11', (11684, 5676), '/e5255d96-2d32-432c-bf31-9afa6ac7ec6a')
R28 /00000000-0000-0000-0000-000058c488c6
path = /00000000-0000-0000-0000-000058c488c6 sheet = ref = R28 pos = (25463, 11112) new_pos = (381945000, 166680000)
C23 /00000000-0000-0000-0000-00005f0f75f5
path = /00000000-0000-0000-0000-00005f0f75f5 sheet = ref = C23 pos = (23507, 9639) new_pos = (352605000, 144585000)
C15 /00000000-0000-0000-0000-00005f0f92a0
path = /00000000-0000-0000-0000-00005f0f92a0 sheet = ref = C15 pos = (19418, 9639) new_pos = (291270000, 144585000)
R30 /3bdee6c2-276d-4d52-a2e6-34877cc4875c
path = /3bdee6c2-276d-4d52-a2e6-34877cc4875c sheet = ref = R30 pos = (26377, 14109) new_pos = (395655000, 211635000)
R29 /56758733-eeb9-492a-96c7-fd89daed6dd0
path = /56758733-eeb9-492a-96c7-fd89daed6dd0 sheet = ref = R29 pos = (26377, 13855) new_pos = (395655000, 207825000)
R21 /00000000-0000-0000-0000-000060cdf8cf
path = /00000000-0000-0000-0000-000060cdf8cf sheet = ref = R21 pos = (19786, 3200) new_pos = (296790000, 48000000)
R20 /00000000-0000-0000-0000-00005968e83b
path = /00000000-0000-0000-0000-00005968e83b sheet = ref = R20 pos = (19558, 14249) new_pos = (293370000, 213735000)
R19 /00000000-0000-0000-0000-00005968e385
path = /00000000-0000-0000-0000-00005968e385 sheet = ref = R19 pos = (19558, 13995) new_pos = (293370000, 209925000)
R18 /00000000-0000-0000-0000-000060f4a360
path = /00000000-0000-0000-0000-000060f4a360 sheet = ref = R18 pos = (19189, -1917) new_pos = (287835000, -28755000)
R17 /00000000-0000-0000-0000-000060f3ed21
path = /00000000-0000-0000-0000-000060f3ed21 sheet = ref = R17 pos = (18808, -1536) new_pos = (282120000, -23040000)
R16 /00000000-0000-0000-0000-0000610faedc
path = /00000000-0000-0000-0000-0000610faedc sheet = ref = R16 pos = (15671, 19304) new_pos = (235065000, 289560000)
R11 /00000000-0000-0000-0000-0000610fab25
path = /00000000-0000-0000-0000-0000610fab25 sheet = ref = R11 pos = (14909, 18796) new_pos = (223635000, 281940000)
R10 /00000000-0000-0000-0000-0000611f02e2
path = /00000000-0000-0000-0000-0000611f02e2 sheet = ref = R10 pos = (14909, -2019) new_pos = (223635000, -30285000)
R7 /00000000-0000-0000-0000-0000611f6148
path = /00000000-0000-0000-0000-0000611f6148 sheet = ref = R7 pos = (14147, -2654) new_pos = (212205000, -39810000)
R6 /00000000-0000-0000-0000-000061138d34
path = /00000000-0000-0000-0000-000061138d34 sheet = ref = R6 pos = (10845, -2032) new_pos = (162675000, -30480000)
R5 /00000000-0000-0000-0000-00006113896f
path = /00000000-0000-0000-0000-00006113896f sheet = ref = R5 pos = (10845, -2286) new_pos = (162675000, -34290000)
R4 /00000000-0000-0000-0000-000061180069
path = /00000000-0000-0000-0000-000061180069 sheet = ref = R4 pos = (10299, -2832) new_pos = (154485000, -42480000)
R3 /00000000-0000-0000-0000-000061138fc0
path = /00000000-0000-0000-0000-000061138fc0 sheet = ref = R3 pos = (9753, -2832) new_pos = (146295000, -42480000)
R2 /00000000-0000-0000-0000-000060e7fab6
path = /00000000-0000-0000-0000-000060e7fab6 sheet = ref = R2 pos = (2108, 2819) new_pos = (31620000, 42285000)
R1 /1d99c860-2526-4cbc-90cb-e272fcc6a24a
path = /1d99c860-2526-4cbc-90cb-e272fcc6a24a sheet = ref = R1 pos = (-2032, 4318) new_pos = (-30480000, 64770000)
C25 /00000000-0000-0000-0000-00005efcc1d1
path = /00000000-0000-0000-0000-00005efcc1d1 sheet = ref = C25 pos = (26441, 7162) new_pos = (396615000, 107430000)
C24 /00000000-0000-0000-0000-00005f0e47e1
path = /00000000-0000-0000-0000-00005f0e47e1 sheet = ref = C24 pos = (24815, 7162) new_pos = (372225000, 107430000)
C21 /971a16ad-1c82-4e70-abad-2116c59bae49
path = /971a16ad-1c82-4e70-abad-2116c59bae49 sheet = ref = C21 pos = (23139, 13106) new_pos = (347085000, 196590000)
C20 /9b6b6b38-fb60-4b5e-bf52-632696461ce3
path = /9b6b6b38-fb60-4b5e-bf52-632696461ce3 sheet = ref = C20 pos = (22987, 14884) new_pos = (344805000, 223260000)
C17 /00000000-0000-0000-0000-000060db45c7
path = /00000000-0000-0000-0000-000060db45c7 sheet = ref = C17 pos = (21742, 3581) new_pos = (326130000, 53715000)
C16 /baa9d797-2dc5-46a0-805e-14ddb1aeba25
path = /baa9d797-2dc5-46a0-805e-14ddb1aeba25 sheet = ref = C16 pos = (20053, 15138) new_pos = (300795000, 227070000)
C14 /7d17ca4b-20bf-403f-a03d-5a021e8f590b
path = /7d17ca4b-20bf-403f-a03d-5a021e8f590b sheet = ref = C14 pos = (15608, 3124) new_pos = (234120000, 46860000)
C11 /5569c91d-111c-492b-81ef-3e4da9afebb0
path = /5569c91d-111c-492b-81ef-3e4da9afebb0 sheet = ref = C11 pos = (13766, 3111) new_pos = (206490000, 46665000)
C10 /00000000-0000-0000-0000-0000590a8102
path = /00000000-0000-0000-0000-0000590a8102 sheet = ref = C10 pos = (5626, 10185) new_pos = (84390000, 152775000)
C9 /00000000-0000-0000-0000-000059093675
path = /00000000-0000-0000-0000-000059093675 sheet = ref = C9 pos = (4864, 10185) new_pos = (72960000, 152775000)
C8 /0bf6fe2d-a7ca-4711-b626-b7d8edff3322
path = /0bf6fe2d-a7ca-4711-b626-b7d8edff3322 sheet = ref = C8 pos = (4114, -1079) new_pos = (61710000, -16185000)
C7 /00000000-0000-0000-0000-0000590935ea
path = /00000000-0000-0000-0000-0000590935ea sheet = ref = C7 pos = (4102, 10185) new_pos = (61530000, 152775000)
C6 /35713709-17d6-46c2-a652-dcfe11056b20
path = /35713709-17d6-46c2-a652-dcfe11056b20 sheet = ref = C6 pos = (3352, -1079) new_pos = (50280000, -16185000)
C5 /00000000-0000-0000-0000-000058c42d39
path = /00000000-0000-0000-0000-000058c42d39 sheet = ref = C5 pos = (3340, 10185) new_pos = (50100000, 152775000)
C4 /0ea5144a-8751-4287-9bcd-0431fd0ba426
path = /0ea5144a-8751-4287-9bcd-0431fd0ba426 sheet = ref = C4 pos = (-1866, 1968) new_pos = (-27990000, 29520000)
C2 /6521c46b-0f95-43df-bc25-d25022cf80f6
path = /6521c46b-0f95-43df-bc25-d25022cf80f6 sheet = ref = C2 pos = (-5054, 2324) new_pos = (-75810000, 34860000)
Y1 /6e6c4f9b-98fa-4118-9d20-c7d803162ad2
path = /6e6c4f9b-98fa-4118-9d20-c7d803162ad2 sheet = ref = Y1 pos = (3733, -1460) new_pos = (55995000, -21900000)
U18 /e5255d96-2d32-432c-bf31-9afa6ac7ec6a/400c154c-5d09-4b90-bd4d-4cdbee68e158
path = /e5255d96-2d32-432c-bf31-9afa6ac7ec6a/400c154c-5d09-4b90-bd4d-4cdbee68e158 sheet = /e5255d96-2d32-432c-bf31-9afa6ac7ec6a ref = U11 pos = (11684, 5676) new_pos = (175260000, 670908750)
U17 /c51c7789-4b67-42c9-a921-b1066b3f95ba/400c154c-5d09-4b90-bd4d-4cdbee68e158
path = /c51c7789-4b67-42c9-a921-b1066b3f95ba/400c154c-5d09-4b90-bd4d-4cdbee68e158 sheet = /c51c7789-4b67-42c9-a921-b1066b3f95ba ref = U11 pos = (11684, 5676) new_pos = (175260000, 628046250)
U16 /d7c9ec36-f6b4-4bc2-8e9a-7a0792b9eff0/400c154c-5d09-4b90-bd4d-4cdbee68e158
path = /d7c9ec36-f6b4-4bc2-8e9a-7a0792b9eff0/400c154c-5d09-4b90-bd4d-4cdbee68e158 sheet = /d7c9ec36-f6b4-4bc2-8e9a-7a0792b9eff0 ref = U11 pos = (11684, 5676) new_pos = (175260000, 649477500)
U15 /2b18f3bb-219b-4cc5-8bc9-bc122d6e81e9/400c154c-5d09-4b90-bd4d-4cdbee68e158
path = /2b18f3bb-219b-4cc5-8bc9-bc122d6e81e9/400c154c-5d09-4b90-bd4d-4cdbee68e158 sheet = /2b18f3bb-219b-4cc5-8bc9-bc122d6e81e9 ref = U11 pos = (11684, 5676) new_pos = (175260000, 563752500)
U14 /1cf77ae7-411e-49cc-bbff-6947c0aa32bd/400c154c-5d09-4b90-bd4d-4cdbee68e158
path = /1cf77ae7-411e-49cc-bbff-6947c0aa32bd/400c154c-5d09-4b90-bd4d-4cdbee68e158 sheet = /1cf77ae7-411e-49cc-bbff-6947c0aa32bd ref = U11 pos = (11684, 5676) new_pos = (175260000, 542321250)
U13 /0ff6ac13-ac49-41f0-9506-376ccd8b8ba4/400c154c-5d09-4b90-bd4d-4cdbee68e158
path = /0ff6ac13-ac49-41f0-9506-376ccd8b8ba4/400c154c-5d09-4b90-bd4d-4cdbee68e158 sheet = /0ff6ac13-ac49-41f0-9506-376ccd8b8ba4 ref = U11 pos = (11684, 5676) new_pos = (175260000, 520890000)
U12 /737c47dd-2cc5-4c23-ab54-7bef18beb2a3/400c154c-5d09-4b90-bd4d-4cdbee68e158
path = /737c47dd-2cc5-4c23-ab54-7bef18beb2a3/400c154c-5d09-4b90-bd4d-4cdbee68e158 sheet = /737c47dd-2cc5-4c23-ab54-7bef18beb2a3 ref = U11 pos = (11684, 5676) new_pos = (175260000, 606615000)
U11 /311a5cb3-0370-4a86-a5e8-6335fee47f9a/400c154c-5d09-4b90-bd4d-4cdbee68e158
path = /311a5cb3-0370-4a86-a5e8-6335fee47f9a/400c154c-5d09-4b90-bd4d-4cdbee68e158 sheet = /311a5cb3-0370-4a86-a5e8-6335fee47f9a ref = U11 pos = (11684, 5676) new_pos = (175260000, 585183750)
U10 /00000000-0000-0000-0000-00005f0b7bcc
path = /00000000-0000-0000-0000-00005f0b7bcc sheet = ref = U10 pos = (25679, 6781) new_pos = (385185000, 101715000)
U9 /00000000-0000-0000-0000-000060dbfbc1
path = /00000000-0000-0000-0000-000060dbfbc1 sheet = ref = U9 pos = (24180, 3454) new_pos = (362700000, 51810000)
U8 /c7f94789-2538-44d8-9626-3b52d225f717
path = /c7f94789-2538-44d8-9626-3b52d225f717 sheet = ref = U8 pos = (21602, 9512) new_pos = (324030000, 142680000)
U7 /8d75df65-6b0a-48a0-85a2-1e08be8f9ab3
path = /8d75df65-6b0a-48a0-85a2-1e08be8f9ab3 sheet = ref = U7 pos = (21526, 14249) new_pos = (322890000, 213735000)
U6 /28a2b46c-ebc3-4719-9207-e4af31619c8c
path = /28a2b46c-ebc3-4719-9207-e4af31619c8c sheet = ref = U6 pos = (17500, 4343) new_pos = (262500000, 65145000)
U5 /d2a47a87-3007-498b-9ea6-dada917416be
path = /d2a47a87-3007-498b-9ea6-dada917416be sheet = ref = U5 pos = (10121, 17754) new_pos = (151815000, 266310000)
U4 /00000000-0000-0000-0000-00005ed38032
path = /00000000-0000-0000-0000-00005ed38032 sheet = ref = U4 pos = (4610, 5613) new_pos = (69150000, 84195000)
U3 /2a57c89d-c95e-4b8c-9371-ed0e0bd2e0f2
path = /2a57c89d-c95e-4b8c-9371-ed0e0bd2e0f2 sheet = ref = U3 pos = (3505, 14998) new_pos = (52575000, 224970000)
U2 /c443a1d1-8d39-4a8e-acf6-38fe4832911d
path = /c443a1d1-8d39-4a8e-acf6-38fe4832911d sheet = ref = U2 pos = (-7010, 13500) new_pos = (-105150000, 202500000)
U1 /3b1f8705-bf08-41a6-82ea-930ca2a6ed54
path = /3b1f8705-bf08-41a6-82ea-930ca2a6ed54 sheet = ref = U1 pos = (-7112, 9436) new_pos = (-106680000, 141540000)
TP5 /00000000-0000-0000-0000-00006184746e
path = /00000000-0000-0000-0000-00006184746e sheet = ref = TP5 pos = (27127, 3200) new_pos = (406905000, 48000000)
TP4 /00000000-0000-0000-0000-000061854eaa
path = /00000000-0000-0000-0000-000061854eaa sheet = ref = TP4 pos = (26682, 6781) new_pos = (400230000, 101715000)
TP3 /00000000-0000-0000-0000-0000612946ff
path = /00000000-0000-0000-0000-0000612946ff sheet = ref = TP3 pos = (24434, 4851) new_pos = (366510000, 72765000)
TP2 /6312b9d4-4b0e-40cc-a4b3-49c5fb02d88b
path = /6312b9d4-4b0e-40cc-a4b3-49c5fb02d88b sheet = ref = TP2 pos = (23926, 4851) new_pos = (358890000, 72765000)
TP1 /71d98676-6157-4c95-9aed-eb1bb64cc439
path = /71d98676-6157-4c95-9aed-eb1bb64cc439 sheet = ref = TP1 pos = (23507, 6870) new_pos = (352605000, 103050000)
SW4 /00000000-0000-0000-0000-00005efdfde6
path = /00000000-0000-0000-0000-00005efdfde6 sheet = ref = SW4 pos = (24320, 11112) new_pos = (364800000, 166680000)
SW3 /60e68b2f-1574-4980-9e9b-e32807fb36f0
path = /60e68b2f-1574-4980-9e9b-e32807fb36f0 sheet = ref = SW3 pos = (-1854, 1638) new_pos = (-27810000, 24570000)
SW2 /baa8b58e-c327-4be8-91dc-b670ea22cd9c
path = /baa8b58e-c327-4be8-91dc-b670ea22cd9c sheet = ref = SW2 pos = (-4343, 9182) new_pos = (-65145000, 137730000)
SW1 /fa2633f3-fef6-4a2f-b530-e262c70f5aac
path = /fa2633f3-fef6-4a2f-b530-e262c70f5aac sheet = ref = SW1 pos = (-5041, 1993) new_pos = (-75615000, 29895000)
RV2 /feb8af60-c0c4-4ac3-89cd-8551f82caf0c
path = /feb8af60-c0c4-4ac3-89cd-8551f82caf0c sheet = ref = RV2 pos = (14389, 5778) new_pos = (215835000, 86670000)
RV1 /2ec25089-db7b-4d8b-a941-e1f94183b5b2
path = /2ec25089-db7b-4d8b-a941-e1f94183b5b2 sheet = ref = RV1 pos = (14389, 4737) new_pos = (215835000, 71055000)
R38 /e5255d96-2d32-432c-bf31-9afa6ac7ec6a/09735fc2-1580-4524-a728-ca09449b348a
path = /e5255d96-2d32-432c-bf31-9afa6ac7ec6a/09735fc2-1580-4524-a728-ca09449b348a sheet = /e5255d96-2d32-432c-bf31-9afa6ac7ec6a ref = R31 pos = (10922, 5041) new_pos = (163830000, 661383750)
R37 /c51c7789-4b67-42c9-a921-b1066b3f95ba/09735fc2-1580-4524-a728-ca09449b348a
path = /c51c7789-4b67-42c9-a921-b1066b3f95ba/09735fc2-1580-4524-a728-ca09449b348a sheet = /c51c7789-4b67-42c9-a921-b1066b3f95ba ref = R31 pos = (10922, 5041) new_pos = (163830000, 618521250)
R36 /d7c9ec36-f6b4-4bc2-8e9a-7a0792b9eff0/09735fc2-1580-4524-a728-ca09449b348a
path = /d7c9ec36-f6b4-4bc2-8e9a-7a0792b9eff0/09735fc2-1580-4524-a728-ca09449b348a sheet = /d7c9ec36-f6b4-4bc2-8e9a-7a0792b9eff0 ref = R31 pos = (10922, 5041) new_pos = (163830000, 639952500)
R35 /2b18f3bb-219b-4cc5-8bc9-bc122d6e81e9/09735fc2-1580-4524-a728-ca09449b348a
path = /2b18f3bb-219b-4cc5-8bc9-bc122d6e81e9/09735fc2-1580-4524-a728-ca09449b348a sheet = /2b18f3bb-219b-4cc5-8bc9-bc122d6e81e9 ref = R31 pos = (10922, 5041) new_pos = (163830000, 554227500)
R34 /1cf77ae7-411e-49cc-bbff-6947c0aa32bd/09735fc2-1580-4524-a728-ca09449b348a
path = /1cf77ae7-411e-49cc-bbff-6947c0aa32bd/09735fc2-1580-4524-a728-ca09449b348a sheet = /1cf77ae7-411e-49cc-bbff-6947c0aa32bd ref = R31 pos = (10922, 5041) new_pos = (163830000, 532796250)
R33 /0ff6ac13-ac49-41f0-9506-376ccd8b8ba4/09735fc2-1580-4524-a728-ca09449b348a
path = /0ff6ac13-ac49-41f0-9506-376ccd8b8ba4/09735fc2-1580-4524-a728-ca09449b348a sheet = /0ff6ac13-ac49-41f0-9506-376ccd8b8ba4 ref = R31 pos = (10922, 5041) new_pos = (163830000, 511365000)
R32 /737c47dd-2cc5-4c23-ab54-7bef18beb2a3/09735fc2-1580-4524-a728-ca09449b348a
path = /737c47dd-2cc5-4c23-ab54-7bef18beb2a3/09735fc2-1580-4524-a728-ca09449b348a sheet = /737c47dd-2cc5-4c23-ab54-7bef18beb2a3 ref = R31 pos = (10922, 5041) new_pos = (163830000, 597090000)
R31 /311a5cb3-0370-4a86-a5e8-6335fee47f9a/09735fc2-1580-4524-a728-ca09449b348a
path = /311a5cb3-0370-4a86-a5e8-6335fee47f9a/09735fc2-1580-4524-a728-ca09449b348a sheet = /311a5cb3-0370-4a86-a5e8-6335fee47f9a ref = R31 pos = (10922, 5041) new_pos = (163830000, 575658750)
R27 /054640a2-3f85-4d74-bbbd-eeed58cb5b94
path = /054640a2-3f85-4d74-bbbd-eeed58cb5b94 sheet = ref = R27 pos = (22758, 7277) new_pos = (341370000, 109155000)
R26 /f187c41a-ce55-4b88-9520-5cc86fed339b
path = /f187c41a-ce55-4b88-9520-5cc86fed339b sheet = ref = R26 pos = (22758, 6870) new_pos = (341370000, 103050000)
R25 /9d77c400-150a-498d-b229-31c610eb1a06
path = /9d77c400-150a-498d-b229-31c610eb1a06 sheet = ref = R25 pos = (22758, 6451) new_pos = (341370000, 96765000)
R24 /74f69adb-1a66-4bcf-b574-3c21cacfcf1c
path = /74f69adb-1a66-4bcf-b574-3c21cacfcf1c sheet = ref = R24 pos = (21996, 7277) new_pos = (329940000, 109155000)
R23 /7c6d5863-14a7-4ec7-8113-2b1994e276cf
path = /7c6d5863-14a7-4ec7-8113-2b1994e276cf sheet = ref = R23 pos = (21996, 6870) new_pos = (329940000, 103050000)
R22 /253a1d6d-9b50-4386-9630-5f3ecc085ec2
path = /253a1d6d-9b50-4386-9630-5f3ecc085ec2 sheet = ref = R22 pos = (21996, 6451) new_pos = (329940000, 96765000)
R15 /da7dea09-ba69-4a3a-8f41-6104c99a3c2d
path = /da7dea09-ba69-4a3a-8f41-6104c99a3c2d sheet = ref = R15 pos = (15024, 5778) new_pos = (225360000, 86670000)
R14 /efeb359d-fcc7-4ba5-807f-b8f8577fc504
path = /efeb359d-fcc7-4ba5-807f-b8f8577fc504 sheet = ref = R14 pos = (15024, 4737) new_pos = (225360000, 71055000)
R13 /0b115f45-6911-407e-a341-c7089893b8b6
path = /0b115f45-6911-407e-a341-c7089893b8b6 sheet = ref = R13 pos = (14960, 3124) new_pos = (224400000, 46860000)
R12 /7cd14cd5-9733-41f2-955b-db75373a78d8
path = /7cd14cd5-9733-41f2-955b-db75373a78d8 sheet = ref = R12 pos = (14960, 2362) new_pos = (224400000, 35430000)
R9 /4bc419d9-4ea3-4622-bf50-d27a4db683a9
path = /4bc419d9-4ea3-4622-bf50-d27a4db683a9 sheet = ref = R9 pos = (14351, 3124) new_pos = (215265000, 46860000)
R8 /33ab5ad6-9df4-454d-98ce-5e5ce74e7958
path = /33ab5ad6-9df4-454d-98ce-5e5ce74e7958 sheet = ref = R8 pos = (14351, 2349) new_pos = (215265000, 35235000)
Q8 /00000000-0000-0000-0000-00005ec7332b
path = /00000000-0000-0000-0000-00005ec7332b sheet = ref = Q8 pos = (21653, 11061) new_pos = (324795000, 165915000)
Q7 /00000000-0000-0000-0000-0000610519a2
path = /00000000-0000-0000-0000-0000610519a2 sheet = ref = Q7 pos = (20955, 2540) new_pos = (314325000, 38100000)
Q6 /00000000-0000-0000-0000-000060f2f77c
path = /00000000-0000-0000-0000-000060f2f77c sheet = ref = Q6 pos = (20078, -1917) new_pos = (301170000, -28755000)
Q5 /00000000-0000-0000-0000-0000610f9be1
path = /00000000-0000-0000-0000-0000610f9be1 sheet = ref = Q5 pos = (15798, 18796) new_pos = (236970000, 281940000)
Q4 /00000000-0000-0000-0000-0000611ebd67
path = /00000000-0000-0000-0000-0000611ebd67 sheet = ref = Q4 pos = (15036, -2654) new_pos = (225540000, -39810000)
Q3 /cf5a04f8-c5d9-4167-bb87-9cc5b13eca9d
path = /cf5a04f8-c5d9-4167-bb87-9cc5b13eca9d sheet = ref = Q3 pos = (10210, 15227) new_pos = (153150000, 228405000)
Q2 /ab6ac2c9-5592-4df1-9a9e-2d2dc6e173b0
path = /ab6ac2c9-5592-4df1-9a9e-2d2dc6e173b0 sheet = ref = Q2 pos = (3683, 12128) new_pos = (55245000, 181920000)
Q1 /770f8b7d-9bf3-49cc-b4a6-1ce9671c09bd
path = /770f8b7d-9bf3-49cc-b4a6-1ce9671c09bd sheet = ref = Q1 pos = (-4622, 11544) new_pos = (-69330000, 173160000)
P4 /00000000-0000-0000-0000-000061c0dc46
path = /00000000-0000-0000-0000-000061c0dc46 sheet = ref = P4 pos = (32918, 19900) new_pos = (493770000, 298500000)
P3 /00000000-0000-0000-0000-000061c0dc3c
path = /00000000-0000-0000-0000-000061c0dc3c sheet = ref = P3 pos = (32918, 19265) new_pos = (493770000, 288975000)
P2 /00000000-0000-0000-0000-00005914456d
path = /00000000-0000-0000-0000-00005914456d sheet = ref = P2 pos = (32893, 18719) new_pos = (493395000, 280785000)
P1 /00000000-0000-0000-0000-000059143415
path = /00000000-0000-0000-0000-000059143415 sheet = ref = P1 pos = (32893, 18084) new_pos = (493395000, 271260000)
L1 /00000000-0000-0000-0000-000060dc190f
path = /00000000-0000-0000-0000-000060dc190f sheet = ref = L1 pos = (26339, 3708) new_pos = (395085000, 55620000)
K1 /00000000-0000-0000-0000-000060f8923e
path = /00000000-0000-0000-0000-000060f8923e sheet = ref = K1 pos = (21678, -1917) new_pos = (325170000, -28755000)
JP4 /93947ffc-b9e1-43e0-a026-3461c421d230
path = /93947ffc-b9e1-43e0-a026-3461c421d230 sheet = ref = JP4 pos = (6007, 12585) new_pos = (90105000, 188775000)
JP3 /7a881e95-07e4-4e22-9121-115965787b59
path = /7a881e95-07e4-4e22-9121-115965787b59 sheet = ref = JP3 pos = (5994, 11468) new_pos = (89910000, 172020000)
JP2 /503362e8-55fb-4d6e-8fc6-7634525271e8
path = /503362e8-55fb-4d6e-8fc6-7634525271e8 sheet = ref = JP2 pos = (4013, 19189) new_pos = (60195000, 287835000)
JP1 /3870c967-36b7-4e56-b2a5-8dbd5aef6603
path = /3870c967-36b7-4e56-b2a5-8dbd5aef6603 sheet = ref = JP1 pos = (4000, 18072) new_pos = (60000000, 271080000)
J38 /45d028a1-e2d9-495b-bf40-7eab380b9383
path = /45d028a1-e2d9-495b-bf40-7eab380b9383 sheet = ref = J38 pos = (6642, 7137) new_pos = (99630000, 107055000)
J37 /e5255d96-2d32-432c-bf31-9afa6ac7ec6a/29e10d42-1dd1-4a69-abec-c13748c3bb68
path = /e5255d96-2d32-432c-bf31-9afa6ac7ec6a/29e10d42-1dd1-4a69-abec-c13748c3bb68 sheet = /e5255d96-2d32-432c-bf31-9afa6ac7ec6a ref = J30 pos = (10414, 6184) new_pos = (156210000, 678528750)
J36 /c51c7789-4b67-42c9-a921-b1066b3f95ba/29e10d42-1dd1-4a69-abec-c13748c3bb68
path = /c51c7789-4b67-42c9-a921-b1066b3f95ba/29e10d42-1dd1-4a69-abec-c13748c3bb68 sheet = /c51c7789-4b67-42c9-a921-b1066b3f95ba ref = J30 pos = (10414, 6184) new_pos = (156210000, 635666250)
J35 /d7c9ec36-f6b4-4bc2-8e9a-7a0792b9eff0/29e10d42-1dd1-4a69-abec-c13748c3bb68
path = /d7c9ec36-f6b4-4bc2-8e9a-7a0792b9eff0/29e10d42-1dd1-4a69-abec-c13748c3bb68 sheet = /d7c9ec36-f6b4-4bc2-8e9a-7a0792b9eff0 ref = J30 pos = (10414, 6184) new_pos = (156210000, 657097500)
J34 /2b18f3bb-219b-4cc5-8bc9-bc122d6e81e9/29e10d42-1dd1-4a69-abec-c13748c3bb68
path = /2b18f3bb-219b-4cc5-8bc9-bc122d6e81e9/29e10d42-1dd1-4a69-abec-c13748c3bb68 sheet = /2b18f3bb-219b-4cc5-8bc9-bc122d6e81e9 ref = J30 pos = (10414, 6184) new_pos = (156210000, 571372500)
J33 /1cf77ae7-411e-49cc-bbff-6947c0aa32bd/29e10d42-1dd1-4a69-abec-c13748c3bb68
path = /1cf77ae7-411e-49cc-bbff-6947c0aa32bd/29e10d42-1dd1-4a69-abec-c13748c3bb68 sheet = /1cf77ae7-411e-49cc-bbff-6947c0aa32bd ref = J30 pos = (10414, 6184) new_pos = (156210000, 549941250)
J32 /0ff6ac13-ac49-41f0-9506-376ccd8b8ba4/29e10d42-1dd1-4a69-abec-c13748c3bb68
path = /0ff6ac13-ac49-41f0-9506-376ccd8b8ba4/29e10d42-1dd1-4a69-abec-c13748c3bb68 sheet = /0ff6ac13-ac49-41f0-9506-376ccd8b8ba4 ref = J30 pos = (10414, 6184) new_pos = (156210000, 528510000)
J31 /737c47dd-2cc5-4c23-ab54-7bef18beb2a3/29e10d42-1dd1-4a69-abec-c13748c3bb68
path = /737c47dd-2cc5-4c23-ab54-7bef18beb2a3/29e10d42-1dd1-4a69-abec-c13748c3bb68 sheet = /737c47dd-2cc5-4c23-ab54-7bef18beb2a3 ref = J30 pos = (10414, 6184) new_pos = (156210000, 614235000)
J30 /311a5cb3-0370-4a86-a5e8-6335fee47f9a/29e10d42-1dd1-4a69-abec-c13748c3bb68
path = /311a5cb3-0370-4a86-a5e8-6335fee47f9a/29e10d42-1dd1-4a69-abec-c13748c3bb68 sheet = /311a5cb3-0370-4a86-a5e8-6335fee47f9a ref = J30 pos = (10414, 6184) new_pos = (156210000, 592803750)
J29 /00000000-0000-0000-0000-00005eca19cb
path = /00000000-0000-0000-0000-00005eca19cb sheet = ref = J29 pos = (27520, 13855) new_pos = (412800000, 207825000)
J28 /f02e50e3-09db-4af2-97ba-2eca487a89ff
path = /f02e50e3-09db-4af2-97ba-2eca487a89ff sheet = ref = J28 pos = (27279, 9880) new_pos = (409185000, 148200000)
J27 /9db45a8d-9df2-4c52-848e-fea1f8976859
path = /9db45a8d-9df2-4c52-848e-fea1f8976859 sheet = ref = J27 pos = (26098, 1955) new_pos = (391470000, 29325000)
J26 /00000000-0000-0000-0000-00006107636a
path = /00000000-0000-0000-0000-00006107636a sheet = ref = J26 pos = (23380, 1968) new_pos = (350700000, 29520000)
J25 /00000000-0000-0000-0000-000060f9eb64
path = /00000000-0000-0000-0000-000060f9eb64 sheet = ref = J25 pos = (23380, -1409) new_pos = (350700000, -21135000)
J24 /7de10c84-c49d-439c-bbae-04a805281938
path = /7de10c84-c49d-439c-bbae-04a805281938 sheet = ref = J24 pos = (20294, 6578) new_pos = (304410000, 98670000)
J23 /00000000-0000-0000-0000-000060cd9cc5
path = /00000000-0000-0000-0000-000060cd9cc5 sheet = ref = J23 pos = (19532, 2108) new_pos = (292980000, 31620000)
J22 /00000000-0000-0000-0000-0000612410fb
path = /00000000-0000-0000-0000-0000612410fb sheet = ref = J22 pos = (17703, -1485) new_pos = (265545000, -22275000)
J21 /1032ed2e-266e-481b-9db3-c9c3f44f11f5
path = /1032ed2e-266e-481b-9db3-c9c3f44f11f5 sheet = ref = J21 pos = (15913, 5778) new_pos = (238695000, 86670000)
J20 /0c0bbac4-ca7f-46e3-80eb-1606d06594c7
path = /0c0bbac4-ca7f-46e3-80eb-1606d06594c7 sheet = ref = J20 pos = (12230, 18008) new_pos = (183450000, 270120000)
J19 /00000000-0000-0000-0000-000061286113
path = /00000000-0000-0000-0000-000061286113 sheet = ref = J19 pos = (11734, -2286) new_pos = (176010000, -34290000)
J18 /f1c88291-405c-4acd-bd2b-667d6f1e4b9b
path = /f1c88291-405c-4acd-bd2b-667d6f1e4b9b sheet = ref = J18 pos = (6972, 14871) new_pos = (104580000, 223065000)
J17 /0e965621-2e06-4200-b31a-fd954d6b8d97
path = /0e965621-2e06-4200-b31a-fd954d6b8d97 sheet = ref = J17 pos = (6642, 8915) new_pos = (99630000, 133725000)
J16 /411b986a-7bed-466d-a7c3-0d0fa313ffb4
path = /411b986a-7bed-466d-a7c3-0d0fa313ffb4 sheet = ref = J16 pos = (2324, 7899) new_pos = (34860000, 118485000)
J15 /120d34b1-d8e2-4081-aab1-5aeda236e3d8
path = /120d34b1-d8e2-4081-aab1-5aeda236e3d8 sheet = ref = J15 pos = (2324, 7645) new_pos = (34860000, 114675000)
J14 /2b90b1f6-d639-4825-9b90-cd199385330e
path = /2b90b1f6-d639-4825-9b90-cd199385330e sheet = ref = J14 pos = (-1143, 5588) new_pos = (-17145000, 83820000)
J13 /21538172-7710-4aea-a95f-c002bc6fb600
path = /21538172-7710-4aea-a95f-c002bc6fb600 sheet = ref = J13 pos = (-1143, 5334) new_pos = (-17145000, 80010000)
J12 /e00fc69a-c8b1-4085-8487-54bc7626db71
path = /e00fc69a-c8b1-4085-8487-54bc7626db71 sheet = ref = J12 pos = (-1143, 5080) new_pos = (-17145000, 76200000)
J11 /33ca0e4c-0eb9-4e3c-bb6a-12a7463f509a
path = /33ca0e4c-0eb9-4e3c-bb6a-12a7463f509a sheet = ref = J11 pos = (-1143, 4826) new_pos = (-17145000, 72390000)
J10 /68fffa8a-6e9e-4d44-9a2d-fa1adac8e34f
path = /68fffa8a-6e9e-4d44-9a2d-fa1adac8e34f sheet = ref = J10 pos = (-1143, 4572) new_pos = (-17145000, 68580000)
J9 /d30f4cf9-d160-4c5a-a331-bc01cb316d1f
path = /d30f4cf9-d160-4c5a-a331-bc01cb316d1f sheet = ref = J9 pos = (-1143, 4318) new_pos = (-17145000, 64770000)
J8 /43dc25fa-cc1a-4f75-9dc4-e1bcbb108f93
path = /43dc25fa-cc1a-4f75-9dc4-e1bcbb108f93 sheet = ref = J8 pos = (-5359, 8064) new_pos = (-80385000, 120960000)
J7 /d1027741-8cbc-48bd-b373-5719dfd179e8
path = /d1027741-8cbc-48bd-b373-5719dfd179e8 sheet = ref = J7 pos = (-5549, 8064) new_pos = (-83235000, 120960000)
J6 /c6877987-287c-43d4-8206-b8997de2056c
path = /c6877987-287c-43d4-8206-b8997de2056c sheet = ref = J6 pos = (-5588, 10452) new_pos = (-83820000, 156780000)
J5 /30ee9aa9-870e-4bf8-a397-872828efd6e3
path = /30ee9aa9-870e-4bf8-a397-872828efd6e3 sheet = ref = J5 pos = (-5588, 10198) new_pos = (-83820000, 152970000)
J4 /9e78e83b-34c3-404a-bfdd-081d96c1cb53
path = /9e78e83b-34c3-404a-bfdd-081d96c1cb53 sheet = ref = J4 pos = (-5588, 9944) new_pos = (-83820000, 149160000)
J3 /b5ba6bf3-dbc9-458e-8aaf-b34c2d1d9610
path = /b5ba6bf3-dbc9-458e-8aaf-b34c2d1d9610 sheet = ref = J3 pos = (-5588, 9690) new_pos = (-83820000, 145350000)
J2 /9c1ca373-5a52-42eb-815b-ee5695f28642
path = /9c1ca373-5a52-42eb-815b-ee5695f28642 sheet = ref = J2 pos = (-5740, 8064) new_pos = (-86100000, 120960000)
J1 /d4c38100-f103-4bdc-9259-be7f90bf1774
path = /d4c38100-f103-4bdc-9259-be7f90bf1774 sheet = ref = J1 pos = (-5918, 8064) new_pos = (-88770000, 120960000)
D10 /00000000-0000-0000-0000-000060dc099d
path = /00000000-0000-0000-0000-000060dc099d sheet = ref = D10 pos = (25958, 4089) new_pos = (389370000, 61335000)
D9 /00000000-0000-0000-0000-000058c46522
path = /00000000-0000-0000-0000-000058c46522 sheet = ref = D9 pos = (25120, 9626) new_pos = (376800000, 144390000)
D8 /00000000-0000-0000-0000-000059098d4d
path = /00000000-0000-0000-0000-000059098d4d sheet = ref = D8 pos = (24726, 13995) new_pos = (370890000, 209925000)
D7 /0c206d9e-ad40-4802-9126-a0047f02ad9f
path = /0c206d9e-ad40-4802-9126-a0047f02ad9f sheet = ref = D7 pos = (23507, 6489) new_pos = (352605000, 97335000)
D6 /00000000-0000-0000-0000-000060fd5c63
path = /00000000-0000-0000-0000-000060fd5c63 sheet = ref = D6 pos = (21653, -3340) new_pos = (324795000, -50100000)
D5 /8deb6efe-ded2-419d-8ccb-426109009fce
path = /8deb6efe-ded2-419d-8ccb-426109009fce sheet = ref = D5 pos = (21234, 6451) new_pos = (318510000, 96765000)
D4 /00000000-0000-0000-0000-000060cdd40b
path = /00000000-0000-0000-0000-000060cdd40b sheet = ref = D4 pos = (20650, 3200) new_pos = (309750000, 48000000)
D3 /00000000-0000-0000-0000-0000612bea7a
path = /00000000-0000-0000-0000-0000612bea7a sheet = ref = D3 pos = (15773, -2781) new_pos = (236595000, -41715000)
D2 /00000000-0000-0000-0000-00006112f2f0
path = /00000000-0000-0000-0000-00006112f2f0 sheet = ref = D2 pos = (10464, -1549) new_pos = (156960000, -23235000)
D1 /00000000-0000-0000-0000-00006113ab69
path = /00000000-0000-0000-0000-00006113ab69 sheet = ref = D1 pos = (9753, -1549) new_pos = (146295000, -23235000)
C28 /00000000-0000-0000-0000-0000617e4995
path = /00000000-0000-0000-0000-0000617e4995 sheet = ref = C28 pos = (27406, 4089) new_pos = (411090000, 61335000)
C27 /00000000-0000-0000-0000-000058c454f6
path = /00000000-0000-0000-0000-000058c454f6 sheet = ref = C27 pos = (27228, 7162) new_pos = (408420000, 107430000)
C26 /00000000-0000-0000-0000-000060db5d15
path = /00000000-0000-0000-0000-000060db5d15 sheet = ref = C26 pos = (26720, 4089) new_pos = (400800000, 61335000)
C22 /0d509690-880a-4aa6-a8fc-c86cc1739036
path = /0d509690-880a-4aa6-a8fc-c86cc1739036 sheet = ref = C22 pos = (23507, 7251) new_pos = (352605000, 108765000)
C19 /00000000-0000-0000-0000-000060db3611
path = /00000000-0000-0000-0000-000060db3611 sheet = ref = C19 pos = (22402, 3581) new_pos = (336030000, 53715000)
C18 /00000000-0000-0000-0000-0000612d24d1
path = /00000000-0000-0000-0000-0000612d24d1 sheet = ref = C18 pos = (22402, 2057) new_pos = (336030000, 30855000)
C13 /86243f82-6155-4a79-88f4-d438eb21fd49
path = /86243f82-6155-4a79-88f4-d438eb21fd49 sheet = ref = C13 pos = (14389, 6070) new_pos = (215835000, 91050000)
C12 /4d8352aa-3c5c-4a77-99ef-9ce7e4432c18
path = /4d8352aa-3c5c-4a77-99ef-9ce7e4432c18 sheet = ref = C12 pos = (14389, 5029) new_pos = (215835000, 75435000)
C3 /ff8d3de2-57b9-4270-9d92-8830b2f70749
path = /ff8d3de2-57b9-4270-9d92-8830b2f70749 sheet = ref = C3 pos = (-3606, 11544) new_pos = (-54090000, 173160000)
C1 /b2d49f58-778b-49f0-913f-b059394ebf6e
path = /b2d49f58-778b-49f0-913f-b059394ebf6e sheet = ref = C1 pos = (-5638, 11544) new_pos = (-84570000, 173160000)
BZ1 /2f8307e9-7273-44a1-9448-22311ed6aff7
path = /2f8307e9-7273-44a1-9448-22311ed6aff7 sheet = ref = BZ1 pos = (16306, 18034) new_pos = (244590000, 270510000)

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,257 @@
"Source:","/home/eddy/Docs/SAO/BTA/NEW_control_system/InsteadOfPEP/CANbus4BTA/kicad/stm32.kicad_sch"
"Date:","Вт 22 ноя 2022 12:54:52"
"Tool:","Eeschema 6.0.5"
"Generator:","/usr/local/share/kicad/plugins/bom_csv_grouped_by_value.py"
"Component Count:","155"
"Individual Components:"
"Item","Qty","Reference(s)","Value","LibPart","Footprint","Datasheet","Manufacturer"
"","","BZ1","Buzzer 3.3V","Device:Buzzer","Buzzer_Beeper:Buzzer_12x9.5RM7.6","~",""
"","","C1","1u","Device:C_Small","Capacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolder","~",""
"","","C2","0.1","stm32-rescue:C","Capacitor_SMD:C_0603_1608Metric_Pad1.08x0.95mm_HandSolder","",""
"","","C3","1u","Device:C_Small","Capacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolder","~",""
"","","C4","0.1","stm32-rescue:C","Capacitor_SMD:C_0603_1608Metric_Pad1.08x0.95mm_HandSolder","",""
"","","C5","0.1","stm32-rescue:C","Capacitor_SMD:C_0603_1608Metric_Pad1.08x0.95mm_HandSolder","",""
"","","C6","12","stm32-rescue:C","Capacitor_SMD:C_0603_1608Metric_Pad1.08x0.95mm_HandSolder","",""
"","","C7","0.1","stm32-rescue:C","Capacitor_SMD:C_0603_1608Metric_Pad1.08x0.95mm_HandSolder","",""
"","","C8","12","stm32-rescue:C","Capacitor_SMD:C_0603_1608Metric_Pad1.08x0.95mm_HandSolder","",""
"","","C9","0.1","stm32-rescue:C","Capacitor_SMD:C_0603_1608Metric_Pad1.08x0.95mm_HandSolder","",""
"","","C10","0.1","stm32-rescue:C","Capacitor_SMD:C_0603_1608Metric_Pad1.08x0.95mm_HandSolder","",""
"","","C11","0.1","stm32-rescue:C","Capacitor_SMD:C_0603_1608Metric_Pad1.08x0.95mm_HandSolder","",""
"","","C12","0.1","Device:C_Small","Capacitor_SMD:C_0603_1608Metric_Pad1.08x0.95mm_HandSolder","~",""
"","","C13","0.1","Device:C_Small","Capacitor_SMD:C_0603_1608Metric_Pad1.08x0.95mm_HandSolder","~",""
"","","C14","0.1","stm32-rescue:C","Capacitor_SMD:C_0603_1608Metric_Pad1.08x0.95mm_HandSolder","",""
"","","C15","1u","stm32-rescue:C","Capacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolder","",""
"","","C16","0.1","stm32-rescue:C","Capacitor_SMD:C_0603_1608Metric_Pad1.08x0.95mm_HandSolder","",""
"","","C17","0.1","Device:C","Capacitor_SMD:C_0603_1608Metric_Pad1.08x0.95mm_HandSolder","~",""
"","","C18","100u 35V","Device:C_Polarized","Capacitor_THT:CP_Radial_D8.0mm_P3.50mm","~",""
"","","C19","100u 35V","Device:C_Polarized","Capacitor_THT:CP_Radial_D8.0mm_P3.50mm","~",""
"","","C20","0.1","stm32-rescue:C","Capacitor_SMD:C_0603_1608Metric_Pad1.08x0.95mm_HandSolder","",""
"","","C21","0.1","stm32-rescue:C","Capacitor_SMD:C_0603_1608Metric_Pad1.08x0.95mm_HandSolder","",""
"","","C22","1F","stm32-rescue:CP","Capacitor_THT:C_Rect_L18.0mm_W8.0mm_P15.00mm_FKS3_FKP3","",""
"","","C23","1u","stm32-rescue:C","Capacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolder","",""
"","","C24","0.1","stm32-rescue:C","Capacitor_SMD:C_0603_1608Metric_Pad1.08x0.95mm_HandSolder","",""
"","","C25","0.1","stm32-rescue:C","Capacitor_SMD:C_0603_1608Metric_Pad1.08x0.95mm_HandSolder","",""
"","","C26","47u 10V","Device:C_Polarized","Capacitor_Tantalum_SMD:CP_EIA-6032-28_Kemet-C_Pad2.25x2.35mm_HandSolder","~",""
"","","C27","47u 6V","stm32-rescue:CP","Capacitor_Tantalum_SMD:CP_EIA-3216-18_Kemet-A_Pad1.58x1.35mm_HandSolder","",""
"","","C28","100u 16V","Device:C_Polarized","Capacitor_THT:CP_Radial_D8.0mm_P3.50mm","~",""
"","","C29","0.1","stm32-rescue:C","Capacitor_SMD:C_0603_1608Metric_Pad1.08x0.95mm_HandSolder","",""
"","","D1","CESD3V3","Device:D","Diode_SMD:D_0805_2012Metric_Pad1.15x1.40mm_HandSolder","~",""
"","","D2","CESD3V3","Device:D","Diode_SMD:D_0805_2012Metric_Pad1.15x1.40mm_HandSolder","~",""
"","","D3","D","Device:D","Diode_SMD:D_0805_2012Metric_Pad1.15x1.40mm_HandSolder","~",""
"","","D4","MM3Z7V5","Device:D_Zener","Diode_SMD:D_0805_2012Metric_Pad1.15x1.40mm_HandSolder","~",""
"","","D5","MBRS130L","Device:D_Schottky","Diode_SMD:D_SMB_Handsoldering","~",""
"","","D6","SS14","Device:D_Schottky","Diode_SMD:D_SMA-SMB_Universal_Handsoldering","~",""
"","","D7","MBRS130L","Device:D_Schottky","Diode_SMD:D_SMB_Handsoldering","~",""
"","","D8","USB6B1","elements:USB6B1","Package_SO:SOIC-8_3.9x4.9mm_P1.27mm","",""
"","","D9","PESD1CAN","elements:PESD1CAN","Package_TO_SOT_SMD:SOT-23","",""
"","","D10","1N5822","Device:D","Diode_THT:D_DO-201_P3.81mm_Vertical_AnodeUp","~",""
"","","J1","0","Connector:Conn_01x01_Female","Connector_PinSocket_2.54mm:PinSocket_1x01_P2.54mm_Vertical","~",""
"","","J2","1","Connector:Conn_01x01_Female","Connector_PinSocket_2.54mm:PinSocket_1x01_P2.54mm_Vertical","~",""
"","","J3","4","Connector:Conn_01x01_Female","Connector_PinSocket_2.54mm:PinSocket_1x01_P2.54mm_Vertical","~",""
"","","J4","5","Connector:Conn_01x01_Female","Connector_PinSocket_2.54mm:PinSocket_1x01_P2.54mm_Vertical","~",""
"","","J5","6","Connector:Conn_01x01_Female","Connector_PinSocket_2.54mm:PinSocket_1x01_P2.54mm_Vertical","~",""
"","","J6","7","Connector:Conn_01x01_Female","Connector_PinSocket_2.54mm:PinSocket_1x01_P2.54mm_Vertical","~",""
"","","J7","2","Connector:Conn_01x01_Female","Connector_PinSocket_2.54mm:PinSocket_1x01_P2.54mm_Vertical","~",""
"","","J8","3","Connector:Conn_01x01_Female","Connector_PinSocket_2.54mm:PinSocket_1x01_P2.54mm_Vertical","~",""
"","","J9","PROG","Connector:Conn_01x06_Female","Connector_PinSocket_1.27mm:PinSocket_1x06_P1.27mm_Vertical","~",""
"","","J10","RelayB","Connector:Screw_Terminal_01x03","TerminalBlock_Phoenix:TerminalBlock_Phoenix_MKDS-1,5-3_1x03_P5.00mm_Horizontal","~",""
"","","J15","PB10","Connector:Conn_01x01_Female","Connector_PinSocket_2.54mm:PinSocket_1x01_P2.54mm_Vertical","~",""
"","","J16","PB11","Connector:Conn_01x01_Female","Connector_PinSocket_2.54mm:PinSocket_1x01_P2.54mm_Vertical","~",""
"","","J17","PA15","Connector:Conn_01x01_Female","Connector_PinSocket_2.54mm:PinSocket_1x01_P2.54mm_Vertical","~",""
"","","J18","SSI/422","Connector:DB9_Female","Connector_Dsub:DSUB-9_Female_Horizontal_P2.77x2.84mm_EdgePinOffset4.94mm_Housed_MountingHolesOffset7.48mm"," ~",""
"","","J19","I2C","Connector:Conn_01x04_Female","Connector_JST:JST_PH_B4B-PH-K_1x04_P2.00mm_Vertical","~",""
"","","J20","SPI","Connector:Screw_Terminal_01x06","TerminalBlock_Phoenix:TerminalBlock_Phoenix_MKDS-1,5-6_1x06_P5.00mm_Horizontal","~",""
"","","J21","Ain","Connector:Screw_Terminal_01x03","TerminalBlock_Phoenix:TerminalBlock_Phoenix_MKDS-1,5-3_1x03_P5.00mm_Horizontal","~",""
"","","J22","PWMout","Connector:Conn_01x03_Male","Connector_JST:JST_PH_B3B-PH-K_1x03_P2.00mm_Vertical","~",""
"","","J23","Vin","Connector:Screw_Terminal_01x02","TerminalBlock_Phoenix:TerminalBlock_Phoenix_MKDS-1,5-2_1x02_P5.00mm_Horizontal","~",""
"","","J24","Power","Connector:Conn_01x04_Female","Connector_JST:JST_PH_B4B-PH-K_1x04_P2.00mm_Vertical","~",""
"","","J25","RelayA","Connector:Screw_Terminal_01x03","TerminalBlock_Phoenix:TerminalBlock_Phoenix_MKDS-1,5-3_1x03_P5.00mm_Horizontal","~",""
"","","J26","Vout","Connector:Screw_Terminal_01x02","TerminalBlock_Phoenix:TerminalBlock_Phoenix_MKDS-1,5-2_1x02_P5.00mm_Horizontal","~",""
"","","J27","5Vout","Connector:Screw_Terminal_01x02","TerminalBlock_Phoenix:TerminalBlock_Phoenix_MKDS-1,5-2_1x02_P5.00mm_Horizontal","~",""
"","","J28","CAN","Connector:DB9_Female","Connector_Dsub:DSUB-9_Female_Horizontal_P2.77x2.84mm_EdgePinOffset4.94mm_Housed_MountingHolesOffset7.48mm"," ~",""
"","","J29","USB_B","Connector:USB_B","Connector_USB:USB_B_OST_USB-B1HSxx_Horizontal"," ~",""
"","","J30","EXT_IN","Connector:Screw_Terminal_01x10","Connector_Phoenix_MC_HighVoltage:PhoenixContact_MC_1,5_10-GF-5.08_1x10_P5.08mm_Horizontal_ThreadedFlange","~",""
"","","J38","PA8","Connector:Conn_01x01_Female","Connector_PinSocket_2.54mm:PinSocket_1x01_P2.54mm_Vertical","~",""
"","","JP1","Tx","Jumper:Jumper_3_Open","Connector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_Vertical","~",""
"","","JP2","Rx","Jumper:Jumper_3_Open","Connector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_Vertical","~",""
"","","JP3","SSI_VR","Jumper:Jumper_3_Open","Connector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_Vertical","~",""
"","","JP4","SSI_Z","Jumper:Jumper_3_Open","Connector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_Vertical","~",""
"","","K1","HF115F-024-2ZS4","Relay:FINDER-41.52","Relay_THT:Relay_DPDT_Finder_40.52","http://gfinder.findernet.com/assets/Series/357/S41EN.pdf",""
"","","L1","100u","Device:L","Inductor_THT:L_Toroid_Horizontal_D6.5mm_P10.00mm_Diameter7-5mm_Amidon-T25","~",""
"","","P1","Hole","stm32-rescue:CONN_01X01","my_footprints:Hole_3mm","",""
"","","P2","Hole","stm32-rescue:CONN_01X01","my_footprints:Hole_3mm","",""
"","","P3","Hole","stm32-rescue:CONN_01X01","my_footprints:Hole_3mm","",""
"","","P4","Hole","stm32-rescue:CONN_01X01","my_footprints:Hole_3mm","",""
"","","P5","Hole","stm32-rescue:CONN_01X01","my_footprints:Hole_3mm","",""
"","","P6","Hole","stm32-rescue:CONN_01X01","my_footprints:Hole_3mm","",""
"","","Q1","B0505S-1W","elements:B0505S","my_footprints:B0x0xS","",""
"","","Q2","VRB2405YMD","elements:VRB2405YMD","my_footprints:VRB2405","",""
"","","Q3","B0505S-2W","elements:B0505S-2W","my_footprints:B0505S-2W","",""
"","","Q4","SI2300","Device:Q_NMOS_GSD","Package_TO_SOT_SMD:SOT-23_Handsoldering","~",""
"","","Q5","SI2300","Device:Q_NMOS_GSD","Package_TO_SOT_SMD:SOT-23_Handsoldering","~",""
"","","Q6","SI2308","Device:Q_NMOS_GSD","Package_TO_SOT_SMD:SOT-23_Handsoldering","~",""
"","","Q7","IRF9310","elements:IRF9310","Package_SO:SO-8_3.9x4.9mm_P1.27mm","~",""
"","","Q8","B0505S-1W","elements:B0505S","my_footprints:B0x0xS","",""
"","","R1","22","Device:R","Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolder","~",""
"","","R2","10k","Device:R","Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolder","~",""
"","","R3","4k7","Device:R","Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolder","~",""
"","","R4","4k7","Device:R","Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolder","~",""
"","","R5","100","Device:R","Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolder","~",""
"","","R6","100","Device:R","Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolder","~",""
"","","R7","330","Device:R","Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolder","~",""
"","","R8","91k","Device:R","Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolder","~",""
"","","R9","10k","Device:R","Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolder","~",""
"","","R10","10k","Device:R","Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolder","~",""
"","","R11","330","Device:R","Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolder","~",""
"","","R12","10k","Device:R","Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolder","~",""
"","","R13","10k","Device:R","Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolder","~",""
"","","R14","10k","Device:R","Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolder","~",""
"","","R15","10k","Device:R","Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolder","~",""
"","","R16","10k","Device:R","Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolder","~",""
"","","R17","10k","Device:R","Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolder","~",""
"","","R18","330","Device:R","Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolder","~",""
"","","R19","22","stm32-rescue:R","Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolder","",""
"","","R20","22","stm32-rescue:R","Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolder","",""
"","","R21","4k7","Device:R","Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolder","~",""
"","","R22","7.5","Device:R","Resistor_SMD:R_2010_5025Metric_Pad1.40x2.65mm_HandSolder","~",""
"","","R23","7.5","Device:R","Resistor_SMD:R_2010_5025Metric_Pad1.40x2.65mm_HandSolder","~",""
"","","R24","7.5","Device:R","Resistor_SMD:R_2010_5025Metric_Pad1.40x2.65mm_HandSolder","~",""
"","","R25","7.5","Device:R","Resistor_SMD:R_2010_5025Metric_Pad1.40x2.65mm_HandSolder","~",""
"","","R26","7.5","Device:R","Resistor_SMD:R_2010_5025Metric_Pad1.40x2.65mm_HandSolder","~",""
"","","R27","7.5","Device:R","Resistor_SMD:R_2010_5025Metric_Pad1.40x2.65mm_HandSolder","~",""
"","","R28","120","stm32-rescue:R","Resistor_SMD:R_1210_3225Metric_Pad1.30x2.65mm_HandSolder","",""
"","","R29","22","stm32-rescue:R","Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolder","",""
"","","R30","22","stm32-rescue:R","Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolder","",""
"","","R31","360","Device:R","Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolder","~",""
"","","R32","360","Device:R","Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolder","~",""
"","","R33","360","Device:R","Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolder","~",""
"","","R34","360","Device:R","Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolder","~",""
"","","R35","360","Device:R","Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolder","~",""
"","","R36","360","Device:R","Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolder","~",""
"","","R37","360","Device:R","Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolder","~",""
"","","R38","360","Device:R","Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolder","~",""
"","","RV1","50k","Device:R_Potentiometer_Small","Potentiometer_THT:Potentiometer_Bourns_3296W_Vertical","~",""
"","","RV2","50k","Device:R_Potentiometer_Small","Potentiometer_THT:Potentiometer_Bourns_3296W_Vertical","~",""
"","","SW1","SW_Push","Switch:SW_Push","Button_Switch_SMD:SW_SPST_FSMSM","~",""
"","","SW2","SW_DIP_x04","Switch:SW_DIP_x04","Button_Switch_THT:SW_DIP_SPSTx04_Slide_9.78x12.34mm_W7.62mm_P2.54mm","~",""
"","","SW3","SW_Push","Switch:SW_Push","Button_Switch_SMD:SW_SPST_FSMSM","~",""
"","","SW4","SW_DIP_x01","Switch:SW_DIP_x01","Button_Switch_THT:SW_DIP_SPSTx01_Slide_6.7x4.1mm_W7.62mm_P2.54mm_LowProfile","~",""
"","","TP1","4.6V","Connector:TestPoint","Connector_PinSocket_2.54mm:PinSocket_1x01_P2.54mm_Vertical","~",""
"","","TP2","Gnd","Connector:TestPoint","Connector_PinSocket_2.54mm:PinSocket_1x01_P2.54mm_Vertical","~",""
"","","TP3","Gnd","Connector:TestPoint","Connector_PinSocket_2.54mm:PinSocket_1x01_P2.54mm_Vertical","~",""
"","","TP4","3.3V","Connector:TestPoint","Connector_PinSocket_2.54mm:PinSocket_1x01_P2.54mm_Vertical","~",""
"","","TP5","5V","Connector:TestPoint","Connector_PinSocket_2.54mm:PinSocket_1x01_P2.54mm_Vertical","~",""
"","","U1","74HC4051","74xx:74HC4051","Package_SO:SOIC-16_3.9x9.9mm_P1.27mm","http://www.ti.com/lit/ds/symlink/cd74hc4051.pdf",""
"","","U2","74HC4051","74xx:74HC4051","Package_SO:SOIC-16_3.9x9.9mm_P1.27mm","http://www.ti.com/lit/ds/symlink/cd74hc4051.pdf",""
"","","U3","ISO3086","iso3086:ISO3086","Package_SO:SOIC-16W_7.5x10.3mm_P1.27mm","",""
"","","U4","STM32F072C8Tx","MCU_ST_STM32F0:STM32F072C8Tx","Package_QFP:LQFP-48_7x7mm_P0.5mm","http://www.st.com/st-web-ui/static/active/en/resource/technical/document/datasheet/DM00090510.pdf",""
"","","U5","ISO7241C","Isolator:ISO7341C","Package_SO:SOIC-16W_7.5x10.3mm_P1.27mm","http://www.ti.com/general/docs/lit/getliterature.tsp?genericPartNumber=iso7341c&fileType=pdf",""
"","","U6","IP4220CZ6","Power_Protection:USBLC6-4SC6","Package_TO_SOT_SMD:SOT-23-6","https://www.st.com/resource/en/datasheet/usblc6-4.pdf",""
"","","U7","ADUM4160","Interface_USB:ADUM4160","Package_SO:SOIC-16W_7.5x10.3mm_P1.27mm","https://www.analog.com/media/en/technical-documentation/data-sheets/ADuM4160.pdf",""
"","","U8","ISO1050DUB","Interface_CAN_LIN:ISO1050DUB","Package_SO:SOP-8_6.62x9.15mm_P2.54mm","http://www.ti.com/lit/ds/symlink/iso1050.pdf",""
"","","U9","LM2576-5.0","vreg:LM2576","Package_TO_SOT_THT:TO-220-5_P3.4x3.7mm_StaggerEven_Lead3.8mm_Vertical","","Texas Instruments"
"","","U10","LM1117-3.3","Regulator_Linear:LM1117-3.3","Package_TO_SOT_SMD:SOT-223-3_TabPin2","http://www.ti.com/lit/ds/symlink/lm1117.pdf",""
"","","U11","PC817","Isolator:PC817","Package_DIP:DIP-4_W7.62mm","http://www.soselectronic.cz/a_info/resource/d/pc817.pdf",""
"","","U12","PC817","Isolator:PC817","Package_DIP:DIP-4_W7.62mm","http://www.soselectronic.cz/a_info/resource/d/pc817.pdf",""
"","","U13","PC817","Isolator:PC817","Package_DIP:DIP-4_W7.62mm","http://www.soselectronic.cz/a_info/resource/d/pc817.pdf",""
"","","U14","PC817","Isolator:PC817","Package_DIP:DIP-4_W7.62mm","http://www.soselectronic.cz/a_info/resource/d/pc817.pdf",""
"","","U15","PC817","Isolator:PC817","Package_DIP:DIP-4_W7.62mm","http://www.soselectronic.cz/a_info/resource/d/pc817.pdf",""
"","","U16","PC817","Isolator:PC817","Package_DIP:DIP-4_W7.62mm","http://www.soselectronic.cz/a_info/resource/d/pc817.pdf",""
"","","U17","PC817","Isolator:PC817","Package_DIP:DIP-4_W7.62mm","http://www.soselectronic.cz/a_info/resource/d/pc817.pdf",""
"","","U18","PC817","Isolator:PC817","Package_DIP:DIP-4_W7.62mm","http://www.soselectronic.cz/a_info/resource/d/pc817.pdf",""
"","","Y1","8MHz","Device:Crystal","Crystal:Crystal_HC49-U_Vertical","~",""
"Collated Components:"
"Item","Qty","Reference(s)","Value","LibPart","Footprint","Datasheet","Manufacturer"
"1","1","BZ1","Buzzer 3.3V","Device:Buzzer","Buzzer_Beeper:Buzzer_12x9.5RM7.6","~",""
"2","2","C1, C3","1u","Device:C_Small","Capacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolder","~",""
"3","15","C2, C4, C5, C7, C9, C10, C11, C14, C16, C17, C20, C21, C24, C25, C29","0.1","stm32-rescue:C","Capacitor_SMD:C_0603_1608Metric_Pad1.08x0.95mm_HandSolder","~",""
"4","2","C6, C8","12","stm32-rescue:C","Capacitor_SMD:C_0603_1608Metric_Pad1.08x0.95mm_HandSolder","",""
"5","2","C12, C13","0.1","Device:C_Small","Capacitor_SMD:C_0603_1608Metric_Pad1.08x0.95mm_HandSolder","~",""
"6","2","C15, C23","1u","stm32-rescue:C","Capacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolder","",""
"7","2","C18, C19","100u 35V","Device:C_Polarized","Capacitor_THT:CP_Radial_D8.0mm_P3.50mm","~",""
"8","1","C22","1F","stm32-rescue:CP","Capacitor_THT:C_Rect_L18.0mm_W8.0mm_P15.00mm_FKS3_FKP3","",""
"9","1","C26","47u 10V","Device:C_Polarized","Capacitor_Tantalum_SMD:CP_EIA-6032-28_Kemet-C_Pad2.25x2.35mm_HandSolder","~",""
"10","1","C27","47u 6V","stm32-rescue:CP","Capacitor_Tantalum_SMD:CP_EIA-3216-18_Kemet-A_Pad1.58x1.35mm_HandSolder","",""
"11","1","C28","100u 16V","Device:C_Polarized","Capacitor_THT:CP_Radial_D8.0mm_P3.50mm","~",""
"12","2","D1, D2","CESD3V3","Device:D","Diode_SMD:D_0805_2012Metric_Pad1.15x1.40mm_HandSolder","~",""
"13","1","D3","D","Device:D","Diode_SMD:D_0805_2012Metric_Pad1.15x1.40mm_HandSolder","~",""
"14","1","D4","MM3Z7V5","Device:D_Zener","Diode_SMD:D_0805_2012Metric_Pad1.15x1.40mm_HandSolder","~",""
"15","2","D5, D7","MBRS130L","Device:D_Schottky","Diode_SMD:D_SMB_Handsoldering","~",""
"16","1","D6","SS14","Device:D_Schottky","Diode_SMD:D_SMA-SMB_Universal_Handsoldering","~",""
"17","1","D8","USB6B1","elements:USB6B1","Package_SO:SOIC-8_3.9x4.9mm_P1.27mm","",""
"18","1","D9","PESD1CAN","elements:PESD1CAN","Package_TO_SOT_SMD:SOT-23","",""
"19","1","D10","1N5822","Device:D","Diode_THT:D_DO-201_P3.81mm_Vertical_AnodeUp","~",""
"20","1","J1","0","Connector:Conn_01x01_Female","Connector_PinSocket_2.54mm:PinSocket_1x01_P2.54mm_Vertical","~",""
"21","1","J2","1","Connector:Conn_01x01_Female","Connector_PinSocket_2.54mm:PinSocket_1x01_P2.54mm_Vertical","~",""
"22","1","J3","4","Connector:Conn_01x01_Female","Connector_PinSocket_2.54mm:PinSocket_1x01_P2.54mm_Vertical","~",""
"23","1","J4","5","Connector:Conn_01x01_Female","Connector_PinSocket_2.54mm:PinSocket_1x01_P2.54mm_Vertical","~",""
"24","1","J5","6","Connector:Conn_01x01_Female","Connector_PinSocket_2.54mm:PinSocket_1x01_P2.54mm_Vertical","~",""
"25","1","J6","7","Connector:Conn_01x01_Female","Connector_PinSocket_2.54mm:PinSocket_1x01_P2.54mm_Vertical","~",""
"26","1","J7","2","Connector:Conn_01x01_Female","Connector_PinSocket_2.54mm:PinSocket_1x01_P2.54mm_Vertical","~",""
"27","1","J8","3","Connector:Conn_01x01_Female","Connector_PinSocket_2.54mm:PinSocket_1x01_P2.54mm_Vertical","~",""
"28","1","J9","PROG","Connector:Conn_01x06_Female","Connector_PinSocket_1.27mm:PinSocket_1x06_P1.27mm_Vertical","~",""
"29","1","J10","RelayB","Connector:Screw_Terminal_01x03","TerminalBlock_Phoenix:TerminalBlock_Phoenix_MKDS-1,5-3_1x03_P5.00mm_Horizontal","~",""
"30","1","J15","PB10","Connector:Conn_01x01_Female","Connector_PinSocket_2.54mm:PinSocket_1x01_P2.54mm_Vertical","~",""
"31","1","J16","PB11","Connector:Conn_01x01_Female","Connector_PinSocket_2.54mm:PinSocket_1x01_P2.54mm_Vertical","~",""
"32","1","J17","PA15","Connector:Conn_01x01_Female","Connector_PinSocket_2.54mm:PinSocket_1x01_P2.54mm_Vertical","~",""
"33","1","J18","SSI/422","Connector:DB9_Female","Connector_Dsub:DSUB-9_Female_Horizontal_P2.77x2.84mm_EdgePinOffset4.94mm_Housed_MountingHolesOffset7.48mm"," ~",""
"34","1","J19","I2C","Connector:Conn_01x04_Female","Connector_JST:JST_PH_B4B-PH-K_1x04_P2.00mm_Vertical","~",""
"35","1","J20","SPI","Connector:Screw_Terminal_01x06","TerminalBlock_Phoenix:TerminalBlock_Phoenix_MKDS-1,5-6_1x06_P5.00mm_Horizontal","~",""
"36","1","J21","Ain","Connector:Screw_Terminal_01x03","TerminalBlock_Phoenix:TerminalBlock_Phoenix_MKDS-1,5-3_1x03_P5.00mm_Horizontal","~",""
"37","1","J22","PWMout","Connector:Conn_01x03_Male","Connector_JST:JST_PH_B3B-PH-K_1x03_P2.00mm_Vertical","~",""
"38","1","J23","Vin","Connector:Screw_Terminal_01x02","TerminalBlock_Phoenix:TerminalBlock_Phoenix_MKDS-1,5-2_1x02_P5.00mm_Horizontal","~",""
"39","1","J24","Power","Connector:Conn_01x04_Female","Connector_JST:JST_PH_B4B-PH-K_1x04_P2.00mm_Vertical","~",""
"40","1","J25","RelayA","Connector:Screw_Terminal_01x03","TerminalBlock_Phoenix:TerminalBlock_Phoenix_MKDS-1,5-3_1x03_P5.00mm_Horizontal","~",""
"41","1","J26","Vout","Connector:Screw_Terminal_01x02","TerminalBlock_Phoenix:TerminalBlock_Phoenix_MKDS-1,5-2_1x02_P5.00mm_Horizontal","~",""
"42","1","J27","5Vout","Connector:Screw_Terminal_01x02","TerminalBlock_Phoenix:TerminalBlock_Phoenix_MKDS-1,5-2_1x02_P5.00mm_Horizontal","~",""
"43","1","J28","CAN","Connector:DB9_Female","Connector_Dsub:DSUB-9_Female_Horizontal_P2.77x2.84mm_EdgePinOffset4.94mm_Housed_MountingHolesOffset7.48mm"," ~",""
"44","1","J29","USB_B","Connector:USB_B","Connector_USB:USB_B_OST_USB-B1HSxx_Horizontal"," ~",""
"45","1","J30","EXT_IN","Connector:Screw_Terminal_01x10","Connector_Phoenix_MC_HighVoltage:PhoenixContact_MC_1,5_10-GF-5.08_1x10_P5.08mm_Horizontal_ThreadedFlange","~",""
"46","1","J38","PA8","Connector:Conn_01x01_Female","Connector_PinSocket_2.54mm:PinSocket_1x01_P2.54mm_Vertical","~",""
"47","1","JP1","Tx","Jumper:Jumper_3_Open","Connector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_Vertical","~",""
"48","1","JP2","Rx","Jumper:Jumper_3_Open","Connector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_Vertical","~",""
"49","1","JP3","SSI_VR","Jumper:Jumper_3_Open","Connector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_Vertical","~",""
"50","1","JP4","SSI_Z","Jumper:Jumper_3_Open","Connector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_Vertical","~",""
"51","1","K1","HF115F-024-2ZS4","Relay:FINDER-41.52","Relay_THT:Relay_DPDT_Finder_40.52","http://gfinder.findernet.com/assets/Series/357/S41EN.pdf",""
"52","1","L1","100u","Device:L","Inductor_THT:L_Toroid_Horizontal_D6.5mm_P10.00mm_Diameter7-5mm_Amidon-T25","~",""
"53","6","P1, P2, P3, P4, P5, P6","Hole","stm32-rescue:CONN_01X01","my_footprints:Hole_3mm","",""
"54","2","Q1, Q8","B0505S-1W","elements:B0505S","my_footprints:B0x0xS","",""
"55","1","Q2","VRB2405YMD","elements:VRB2405YMD","my_footprints:VRB2405","",""
"56","1","Q3","B0505S-2W","elements:B0505S-2W","my_footprints:B0505S-2W","",""
"57","2","Q4, Q5","SI2300","Device:Q_NMOS_GSD","Package_TO_SOT_SMD:SOT-23_Handsoldering","~",""
"58","1","Q6","SI2308","Device:Q_NMOS_GSD","Package_TO_SOT_SMD:SOT-23_Handsoldering","~",""
"59","1","Q7","IRF9310","elements:IRF9310","Package_SO:SO-8_3.9x4.9mm_P1.27mm","~",""
"60","5","R1, R19, R20, R29, R30","22","stm32-rescue:R","Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolder","~",""
"61","9","R2, R9, R10, R12, R13, R14, R15, R16, R17","10k","Device:R","Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolder","~",""
"62","3","R3, R4, R21","4k7","Device:R","Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolder","~",""
"63","2","R5, R6","100","Device:R","Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolder","~",""
"64","3","R7, R11, R18","330","Device:R","Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolder","~",""
"65","1","R8","91k","Device:R","Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolder","~",""
"66","6","R22, R23, R24, R25, R26, R27","7.5","Device:R","Resistor_SMD:R_2010_5025Metric_Pad1.40x2.65mm_HandSolder","~",""
"67","1","R28","120","stm32-rescue:R","Resistor_SMD:R_1210_3225Metric_Pad1.30x2.65mm_HandSolder","",""
"68","8","R31, R32, R33, R34, R35, R36, R37, R38","360","Device:R","Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolder","~",""
"69","2","RV1, RV2","50k","Device:R_Potentiometer_Small","Potentiometer_THT:Potentiometer_Bourns_3296W_Vertical","~",""
"70","2","SW1, SW3","SW_Push","Switch:SW_Push","Button_Switch_SMD:SW_SPST_FSMSM","~",""
"71","1","SW2","SW_DIP_x04","Switch:SW_DIP_x04","Button_Switch_THT:SW_DIP_SPSTx04_Slide_9.78x12.34mm_W7.62mm_P2.54mm","~",""
"72","1","SW4","SW_DIP_x01","Switch:SW_DIP_x01","Button_Switch_THT:SW_DIP_SPSTx01_Slide_6.7x4.1mm_W7.62mm_P2.54mm_LowProfile","~",""
"73","1","TP1","4.6V","Connector:TestPoint","Connector_PinSocket_2.54mm:PinSocket_1x01_P2.54mm_Vertical","~",""
"74","2","TP2, TP3","Gnd","Connector:TestPoint","Connector_PinSocket_2.54mm:PinSocket_1x01_P2.54mm_Vertical","~",""
"75","1","TP4","3.3V","Connector:TestPoint","Connector_PinSocket_2.54mm:PinSocket_1x01_P2.54mm_Vertical","~",""
"76","1","TP5","5V","Connector:TestPoint","Connector_PinSocket_2.54mm:PinSocket_1x01_P2.54mm_Vertical","~",""
"77","2","U1, U2","74HC4051","74xx:74HC4051","Package_SO:SOIC-16_3.9x9.9mm_P1.27mm","http://www.ti.com/lit/ds/symlink/cd74hc4051.pdf",""
"78","1","U3","ISO3086","iso3086:ISO3086","Package_SO:SOIC-16W_7.5x10.3mm_P1.27mm","",""
"79","1","U4","STM32F072C8Tx","MCU_ST_STM32F0:STM32F072C8Tx","Package_QFP:LQFP-48_7x7mm_P0.5mm","http://www.st.com/st-web-ui/static/active/en/resource/technical/document/datasheet/DM00090510.pdf",""
"80","1","U5","ISO7241C","Isolator:ISO7341C","Package_SO:SOIC-16W_7.5x10.3mm_P1.27mm","http://www.ti.com/general/docs/lit/getliterature.tsp?genericPartNumber=iso7341c&fileType=pdf",""
"81","1","U6","IP4220CZ6","Power_Protection:USBLC6-4SC6","Package_TO_SOT_SMD:SOT-23-6","https://www.st.com/resource/en/datasheet/usblc6-4.pdf",""
"82","1","U7","ADUM4160","Interface_USB:ADUM4160","Package_SO:SOIC-16W_7.5x10.3mm_P1.27mm","https://www.analog.com/media/en/technical-documentation/data-sheets/ADuM4160.pdf",""
"83","1","U8","ISO1050DUB","Interface_CAN_LIN:ISO1050DUB","Package_SO:SOP-8_6.62x9.15mm_P2.54mm","http://www.ti.com/lit/ds/symlink/iso1050.pdf",""
"84","1","U9","LM2576-5.0","vreg:LM2576","Package_TO_SOT_THT:TO-220-5_P3.4x3.7mm_StaggerEven_Lead3.8mm_Vertical","","Texas Instruments"
"85","1","U10","LM1117-3.3","Regulator_Linear:LM1117-3.3","Package_TO_SOT_SMD:SOT-223-3_TabPin2","http://www.ti.com/lit/ds/symlink/lm1117.pdf",""
"86","8","U11, U12, U13, U14, U15, U16, U17, U18","PC817","Isolator:PC817","Package_DIP:DIP-4_W7.62mm","http://www.soselectronic.cz/a_info/resource/d/pc817.pdf",""
"87","1","Y1","8MHz","Device:Crystal","Crystal:Crystal_HC49-U_Vertical","~",""
Can't render this file because it has a wrong number of fields in line 7.

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,77 @@
{
"board": {
"active_layer": 0,
"active_layer_preset": "All Layers",
"auto_track_width": false,
"hidden_netclasses": [],
"hidden_nets": [],
"high_contrast_mode": 0,
"net_color_mode": 1,
"opacity": {
"images": 0.6,
"pads": 1.0,
"tracks": 1.0,
"vias": 1.0,
"zones": 0.6
},
"ratsnest_display_mode": 0,
"selection_filter": {
"dimensions": true,
"footprints": true,
"graphics": true,
"keepouts": true,
"lockedItems": true,
"otherItems": true,
"pads": true,
"text": true,
"tracks": true,
"vias": true,
"zones": true
},
"visible_items": [
0,
1,
2,
3,
4,
5,
8,
9,
10,
11,
12,
13,
14,
15,
16,
17,
18,
19,
20,
21,
22,
23,
24,
25,
26,
27,
28,
29,
30,
32,
33,
34,
35,
36
],
"visible_layers": "fffffff_ffffffff",
"zone_display_mode": 0
},
"meta": {
"filename": "stm32.kicad_prl",
"version": 3
},
"project": {
"files": []
}
}

View File

@ -0,0 +1,588 @@
{
"board": {
"3dviewports": [],
"design_settings": {
"defaults": {
"board_outline_line_width": 0.15,
"copper_line_width": 0.19999999999999998,
"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,
"dimension_precision": 4,
"dimension_units": 3,
"dimensions": {
"arrow_length": 1270000,
"extension_offset": 500000,
"keep_text_aligned": true,
"suppress_zeroes": false,
"text_position": 0,
"units_format": 1
},
"fab_line_width": 0.09999999999999999,
"fab_text_italic": false,
"fab_text_size_h": 1.0,
"fab_text_size_v": 1.0,
"fab_text_thickness": 0.15,
"fab_text_upright": false,
"other_line_width": 0.09999999999999999,
"other_text_italic": false,
"other_text_size_h": 1.0,
"other_text_size_v": 1.0,
"other_text_thickness": 0.15,
"other_text_upright": false,
"pads": {
"drill": 0.762,
"height": 1.524,
"width": 1.524
},
"silk_line_width": 0.25,
"silk_text_italic": false,
"silk_text_size_h": 2.0,
"silk_text_size_v": 2.0,
"silk_text_thickness": 0.25,
"silk_text_upright": false,
"zones": {
"45_degree_only": false,
"min_clearance": 0.508
}
},
"diff_pair_dimensions": [
{
"gap": 0.0,
"via_gap": 0.0,
"width": 0.0
}
],
"drc_exclusions": [],
"meta": {
"filename": "board_design_settings.json",
"version": 2
},
"rule_severities": {
"annular_width": "error",
"clearance": "error",
"connection_width": "warning",
"copper_edge_clearance": "error",
"copper_sliver": "warning",
"courtyards_overlap": "warning",
"diff_pair_gap_out_of_range": "error",
"diff_pair_uncoupled_length_too_long": "error",
"drill_out_of_range": "error",
"duplicate_footprints": "warning",
"extra_footprint": "warning",
"footprint": "error",
"footprint_type_mismatch": "error",
"hole_clearance": "error",
"hole_near_hole": "error",
"invalid_outline": "error",
"isolated_copper": "warning",
"item_on_disabled_layer": "error",
"items_not_allowed": "error",
"length_out_of_range": "error",
"lib_footprint_issues": "warning",
"lib_footprint_mismatch": "warning",
"malformed_courtyard": "error",
"microvia_drill_out_of_range": "error",
"missing_courtyard": "ignore",
"missing_footprint": "warning",
"net_conflict": "warning",
"npth_inside_courtyard": "ignore",
"padstack": "error",
"pth_inside_courtyard": "ignore",
"shorting_items": "error",
"silk_edge_clearance": "warning",
"silk_over_copper": "warning",
"silk_overlap": "warning",
"skew_out_of_range": "error",
"solder_mask_bridge": "error",
"starved_thermal": "error",
"text_height": "warning",
"text_thickness": "warning",
"through_hole_pad_without_hole": "error",
"too_many_vias": "error",
"track_dangling": "warning",
"track_width": "error",
"tracks_crossing": "error",
"unconnected_items": "error",
"unresolved_variable": "error",
"via_dangling": "warning",
"zones_intersect": "error"
},
"rule_severitieslegacy_courtyards_overlap": true,
"rule_severitieslegacy_no_courtyard_defined": false,
"rules": {
"allow_blind_buried_vias": false,
"allow_microvias": false,
"max_error": 0.005,
"min_clearance": 0.09999999999999999,
"min_connection": 0.0,
"min_copper_edge_clearance": 0.19999999999999998,
"min_hole_clearance": 0.25,
"min_hole_to_hole": 0.5,
"min_microvia_diameter": 0.19999999999999998,
"min_microvia_drill": 0.09999999999999999,
"min_resolved_spokes": 2,
"min_silk_clearance": 0.0,
"min_text_height": 0.7999999999999999,
"min_text_thickness": 0.08,
"min_through_hole_diameter": 0.39999999999999997,
"min_track_width": 0.19999999999999998,
"min_via_annular_width": 0.09999999999999999,
"min_via_diameter": 0.7999999999999999,
"solder_mask_to_copper_clearance": 0.0,
"use_height_for_length_calcs": true
},
"teardrop_options": [
{
"td_allow_use_two_tracks": true,
"td_curve_segcount": 5,
"td_on_pad_in_zone": false,
"td_onpadsmd": true,
"td_onroundshapesonly": false,
"td_ontrackend": false,
"td_onviapad": true
}
],
"teardrop_parameters": [
{
"td_curve_segcount": 0,
"td_height_ratio": 1.0,
"td_length_ratio": 0.5,
"td_maxheight": 2.0,
"td_maxlen": 1.0,
"td_target_name": "td_round_shape",
"td_width_to_size_filter_ratio": 0.9
},
{
"td_curve_segcount": 0,
"td_height_ratio": 1.0,
"td_length_ratio": 0.5,
"td_maxheight": 2.0,
"td_maxlen": 1.0,
"td_target_name": "td_rect_shape",
"td_width_to_size_filter_ratio": 0.9
},
{
"td_curve_segcount": 0,
"td_height_ratio": 1.0,
"td_length_ratio": 0.5,
"td_maxheight": 2.0,
"td_maxlen": 1.0,
"td_target_name": "td_track_end",
"td_width_to_size_filter_ratio": 0.9
}
],
"track_widths": [
0.0,
0.2,
0.3,
0.5,
1.0,
2.0
],
"via_dimensions": [
{
"diameter": 0.0,
"drill": 0.0
},
{
"diameter": 0.8,
"drill": 0.4
},
{
"diameter": 1.2,
"drill": 0.6
},
{
"diameter": 2.0,
"drill": 0.8
}
],
"zones_allow_external_fillets": false,
"zones_use_no_outline": true
},
"layer_presets": [],
"viewports": []
},
"boards": [],
"cvpcb": {
"equivalence_files": []
},
"erc": {
"erc_exclusions": [],
"meta": {
"version": 0
},
"pin_map": [
[
0,
0,
0,
0,
0,
0,
1,
0,
0,
0,
0,
2
],
[
0,
2,
0,
1,
0,
0,
1,
0,
2,
2,
2,
2
],
[
0,
0,
0,
0,
0,
0,
1,
0,
1,
0,
1,
2
],
[
0,
1,
0,
0,
0,
0,
1,
1,
2,
1,
1,
2
],
[
0,
0,
0,
0,
0,
0,
1,
0,
0,
0,
0,
2
],
[
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
2
],
[
1,
1,
1,
1,
1,
0,
1,
1,
1,
1,
1,
2
],
[
0,
0,
0,
1,
0,
0,
1,
0,
0,
0,
0,
2
],
[
0,
2,
1,
2,
0,
0,
1,
0,
2,
2,
2,
2
],
[
0,
2,
0,
1,
0,
0,
1,
0,
2,
0,
0,
2
],
[
0,
2,
1,
1,
0,
0,
1,
0,
2,
0,
0,
2
],
[
2,
2,
2,
2,
2,
2,
2,
2,
2,
2,
2,
2
]
],
"rule_severities": {
"bus_definition_conflict": "error",
"bus_entry_needed": "error",
"bus_to_bus_conflict": "error",
"bus_to_net_conflict": "error",
"conflicting_netclasses": "error",
"different_unit_footprint": "error",
"different_unit_net": "error",
"duplicate_reference": "error",
"duplicate_sheet_names": "error",
"endpoint_off_grid": "warning",
"extra_units": "error",
"global_label_dangling": "warning",
"hier_label_mismatch": "error",
"label_dangling": "error",
"lib_symbol_issues": "warning",
"missing_bidi_pin": "warning",
"missing_input_pin": "warning",
"missing_power_pin": "error",
"missing_unit": "warning",
"multiple_net_names": "warning",
"net_not_bus_member": "warning",
"no_connect_connected": "warning",
"no_connect_dangling": "warning",
"pin_not_connected": "error",
"pin_not_driven": "error",
"pin_to_pin": "error",
"power_pin_not_driven": "error",
"similar_labels": "warning",
"simulation_model_issue": "ignore",
"unannotated": "error",
"unit_value_mismatch": "error",
"unresolved_variable": "error",
"wire_dangling": "error"
}
},
"libraries": {
"pinned_footprint_libs": [],
"pinned_symbol_libs": []
},
"meta": {
"filename": "stm32.kicad_pro",
"version": 1
},
"net_settings": {
"classes": [
{
"bus_width": 12,
"clearance": 0.2,
"diff_pair_gap": 0.25,
"diff_pair_via_gap": 0.25,
"diff_pair_width": 0.2,
"line_style": 0,
"microvia_diameter": 0.3,
"microvia_drill": 0.1,
"name": "Default",
"pcb_color": "rgba(0, 0, 0, 0.000)",
"schematic_color": "rgba(0, 0, 0, 0.000)",
"track_width": 0.2,
"via_diameter": 0.8,
"via_drill": 0.4,
"wire_width": 6
},
{
"bus_width": 12,
"clearance": 0.3,
"diff_pair_gap": 0.25,
"diff_pair_via_gap": 0.25,
"diff_pair_width": 0.2,
"line_style": 0,
"microvia_diameter": 0.3,
"microvia_drill": 0.1,
"name": "0.5",
"pcb_color": "rgba(0, 0, 0, 0.000)",
"schematic_color": "rgba(0, 0, 0, 0.000)",
"track_width": 0.5,
"via_diameter": 1.2,
"via_drill": 0.6,
"wire_width": 6
},
{
"bus_width": 12,
"clearance": 0.5,
"diff_pair_gap": 0.25,
"diff_pair_via_gap": 0.25,
"diff_pair_width": 0.2,
"line_style": 0,
"microvia_diameter": 0.3,
"microvia_drill": 0.1,
"name": "1",
"pcb_color": "rgba(0, 0, 0, 0.000)",
"schematic_color": "rgba(0, 0, 0, 0.000)",
"track_width": 1.0,
"via_diameter": 2.0,
"via_drill": 0.8,
"wire_width": 6
}
],
"meta": {
"version": 3
},
"net_colors": null,
"netclass_assignments": null,
"netclass_patterns": []
},
"pcbnew": {
"last_paths": {
"gencad": "",
"idf": "",
"netlist": "stm32.net",
"specctra_dsn": "",
"step": "",
"vrml": ""
},
"page_layout_descr_file": ""
},
"schematic": {
"annotate_start_num": 0,
"drawing": {
"dashed_lines_dash_length_ratio": 12.0,
"dashed_lines_gap_length_ratio": 3.0,
"default_line_thickness": 6.0,
"default_text_size": 50.0,
"field_names": [],
"intersheets_ref_own_page": false,
"intersheets_ref_prefix": "",
"intersheets_ref_short": false,
"intersheets_ref_show": false,
"intersheets_ref_suffix": "",
"junction_size_choice": 3,
"label_size_ratio": 0.25,
"pin_symbol_size": 0.0,
"text_offset_ratio": 0.08
},
"legacy_lib_dir": "",
"legacy_lib_list": [],
"meta": {
"version": 1
},
"net_format_name": "Pcbnew",
"ngspice": {
"fix_include_paths": true,
"fix_passive_vals": false,
"meta": {
"version": 0
},
"model_mode": 0,
"workbook_filename": ""
},
"page_layout_descr_file": "",
"plot_directory": "",
"spice_adjust_passive_values": false,
"spice_current_sheet_as_root": false,
"spice_external_command": "spice \"%I\"",
"spice_model_current_sheet_as_root": true,
"spice_save_all_currents": false,
"spice_save_all_voltages": false,
"subpart_first_id": 65,
"subpart_id_separator": 0
},
"sheets": [
[
"f40cbe7e-cd25-45e5-a6cb-d92457495048",
""
],
[
"311a5cb3-0370-4a86-a5e8-6335fee47f9a",
"Optocouple"
],
[
"737c47dd-2cc5-4c23-ab54-7bef18beb2a3",
"Optocouple1"
],
[
"0ff6ac13-ac49-41f0-9506-376ccd8b8ba4",
"Optocouple2"
],
[
"1cf77ae7-411e-49cc-bbff-6947c0aa32bd",
"Optocouple3"
],
[
"2b18f3bb-219b-4cc5-8bc9-bc122d6e81e9",
"Optocouple4"
],
[
"d7c9ec36-f6b4-4bc2-8e9a-7a0792b9eff0",
"Optocouple5"
],
[
"c51c7789-4b67-42c9-a921-b1066b3f95ba",
"Optocouple6"
],
[
"e5255d96-2d32-432c-bf31-9afa6ac7ec6a",
"Optocouple7"
]
],
"text_variables": {}
}

File diff suppressed because it is too large Load Diff

Binary file not shown.

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,8 @@
(sym_lib_table
(lib (name "stm32-rescue")(type "KiCad")(uri "${KIPRJMOD}/stm32-rescue.kicad_sym")(options "")(descr ""))
(lib (name "stm32")(type "KiCad")(uri "/home/eddy/kicad/Kicad-Libraries/library/stm32.kicad_sym")(options "")(descr ""))
(lib (name "vreg")(type "KiCad")(uri "/home/eddy/kicad/Kicad-Libraries/library/vreg.kicad_sym")(options "")(descr ""))
(lib (name "elements")(type "KiCad")(uri "${KIPRJMOD}/elements.kicad_sym")(options "")(descr ""))
(lib (name "stm32-cache")(type "KiCad")(uri "${KIPRJMOD}/stm32-cache.kicad_sym")(options "")(descr ""))
(lib (name "iso3086")(type "KiCad")(uri "${KIPRJMOD}/iso3086.kicad_sym")(options "")(descr ""))
)

View File

@ -0,0 +1,9 @@
BINARY := BTA_CAN
# MCU code
MCU := F303xb
# change this linking script depending on particular MCU model,
LDSCRIPT := stm32f303xB.ld
DEFINES := -DUSB1_16
include ../makefile.f3
include ../../makefile.stm32

View File

@ -0,0 +1,123 @@
BTA CANbus node controller
====================================
# Pinout
PP - push-pull, OD - open drain, I - floating input, A - analog input, AFn - alternate function number n.
1 - active high, 0 - active low.
### Sorted by pin number
|**Pin #**|**Pin name **| **function**| **settings**|**comment ** |
|---------|-------------|-------------|-------------|------------------|
| 1 | VBAT | 3v3 | | |
| 2 | PC13 | buzzer | PP1 | |
| 3 | PC14 | relay | PP1 | |
| 4 | PC15 | usb pullup | PP1 | |
| 5 | PF0 | OSCIN | | |
| 6 | PF1 | OSCOUT | | |
| 7 | NRST | reset | | |
| 8 | VSSA | gnd | | |
| 9 | VDDA | 3v3 | | |
| 10 | PA0 | AIN0 | A | |
| 11 | PA1 | AIN1 | A | |
| 12 | PA2 | ANI2 | A | |
| 13 | PA3 | AIN3 | A | |
| 14 | PA4 | DIN | I | mul0/1 input |
| 15 | PA5 | DEN0 | PP0 | enable mul0 |
| 16 | PA6 | DEN1 | PP0 | enable mul1 |
| 17 | PA7 | PWM | AF1 | TIM17CH1 PWM |
| 18 | PB0 | ADDR0 | PP | MUL address |
| 19 | PB1 | ADDR1 | PP | selection |
| 20 | PB2 | ADDR2 | PP | |
| 21 | PB10 | PB10 | gpio | reserved gpio |
| 22 | PB11 | PB11 | gpio | reserved gpio |
| 23 | VSS | gnd | | |
| 24 | VDD | 3v3 | | |
| 25 | PB12 | SPI2 NSS | AF5 | isolated |
| 26 | PB13 | SPI2 SCK | AF5 | external |
| 27 | PB14 | SPI2 MISO | AF5 | SPI |
| 28 | PB15 | SPI2 MOSI | AF5 | |
| 29 | PA8 | PA8 | gpio | reserved gpio |
| 30 | PA9 | USART1 TX | AF7 | RS-422 interface |
| 31 | PA10 | USART1 RX | AF7 | (opt) |
| 32 | PA11 | USB DM | AF14 | |
| 33 | PA12 | USB DP | AF14 | |
| 34 | PA13 | SWDIO | AF0 | |
| 35 | VSS | gnd | | |
| 36 | VDD | 3v3 | | |
| 37 | PA14 | SWCLK | AF0 | |
| 38 | PA15 | PA15 | gpio | reserved gpio |
| 39 | PB3 | SPI1 SCK | AF5 | SSI interface |
| 40 | PB4 | SPI1 MISO | AF5 | (opt) |
| 41 | PB5 | X | | |
| 42 | PB6 | I2C1 SCL | AF4 | non-isolated |
| 43 | PB7 | I2C1 SDA | AF4 | ext. I2C |
| 44 | BOOT0 | boot | | |
| 45 | PB8 | CAN RX | AF9 | |
| 46 | PB9 | CAN TX | AF9 | |
| 47 | VSS | gnd | | |
| 48 | VDD | 3v3 | | |
|---------|-------------|-------------|-------------|------------------|
### Sorted by port
// sort -Vk4 Readme.md
|**Pin #**|**Pin name **| **function**| **settings**|**comment ** |
|---------|-------------|-------------|-------------|------------------|
| 44 | BOOT0 | boot | | |
| 7 | NRST | reset | | |
| 10 | PA0 | AIN0 | A | |
| 11 | PA1 | AIN1 | A | |
| 12 | PA2 | ANI2 | A | |
| 13 | PA3 | AIN3 | A | |
| 14 | PA4 | DIN | I | mul0/1 input |
| 15 | PA5 | DEN0 | PP0 | enable mul0 |
| 16 | PA6 | DEN1 | PP0 | enable mul1 |
| 17 | PA7 | PWM | AF1 | TIM17CH1 PWM |
| 29 | PA8 | PA8 | gpio | reserved gpio |
| 30 | PA9 | USART1 TX | AF7 | RS-422 interface |
| 31 | PA10 | USART1 RX | AF7 | (opt) |
| 32 | PA11 | USB DM | AF14 | |
| 33 | PA12 | USB DP | AF14 | |
| 34 | PA13 | SWDIO | AF0 | |
| 37 | PA14 | SWCLK | AF0 | |
| 38 | PA15 | PA15 | gpio | reserved gpio |
| 18 | PB0 | ADDR0 | PP | MUL address |
| 19 | PB1 | ADDR1 | PP | selection |
| 20 | PB2 | ADDR2 | PP | |
| 39 | PB3 | SPI1 SCK | AF5 | SSI interface |
| 40 | PB4 | SPI1 MISO | AF5 | (opt) |
| 41 | PB5 | X | | |
| 42 | PB6 | I2C1 SCL | AF4 | non-isolated |
| 43 | PB7 | I2C1 SDA | AF4 | ext. I2C |
| 45 | PB8 | CAN RX | AF9 | |
| 46 | PB9 | CAN TX | AF9 | |
| 21 | PB10 | PB10 | gpio | reserved gpio |
| 22 | PB11 | PB11 | gpio | reserved gpio |
| 25 | PB12 | SPI2 NSS | AF5 | isolated |
| 26 | PB13 | SPI2 SCK | AF5 | external |
| 27 | PB14 | SPI2 MISO | AF5 | SPI |
| 28 | PB15 | SPI2 MOSI | AF5 | |
| 2 | PC13 | buzzer | PP1 | |
| 3 | PC14 | relay | PP1 | |
| 4 | PC15 | usb pullup | PP1 | |
| 5 | PF0 | OSCIN | | |
| 6 | PF1 | OSCOUT | | |
| 1 | VBAT | 3v3 | | |
| 9 | VDDA | 3v3 | | |
| 24 | VDD | 3v3 | | |
| 36 | VDD | 3v3 | | |
| 48 | VDD | 3v3 | | |
| 8 | VSSA | gnd | | |
| 23 | VSS | gnd | | |
| 35 | VSS | gnd | | |
| 47 | VSS | gnd | | |
|---------|-------------|-------------|-------------|------------------|
## DMA usage
### DMA1
### DMA2

View File

@ -0,0 +1,37 @@
/*
* This file is part of the pl2303 project.
* Copyright 2023 Edward V. Emelianov <edward.emelianoff@gmail.com>.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include "hardware.h"
#include "usart.h"
static inline void gpio_setup(){
RCC->AHBENR |= RCC_AHBENR_GPIOAEN | RCC_AHBENR_GPIOBEN;
// LEDs on PB0 and PB1
GPIOB->MODER = GPIO_MODER_MODER0_O | GPIO_MODER_MODER1_O;
GPIOB->ODR = 1;
// USB - alternate function 14 @ pins PA11/PA12; USART1 = AF7 @PA9/10; SWD - AF0 @PA13/14
GPIOA->AFR[1] = AFRf(7, 9) | AFRf(7, 10) | AFRf(14, 11) | AFRf(14, 12);
// USART1: PA10(Rx), PA9(Tx); USB - PA11, PA12; SWDIO - PA13, PA14; Pullup - PA15
GPIOA->MODER = MODER_AF(9) | MODER_AF(10) | MODER_AF(11) | MODER_AF(12) | MODER_AF(13) | MODER_AF(14) | MODER_O(15);
GPIOA->OSPEEDR = OSPEED_HI(11) | OSPEED_HI(12) | OSPEED_HI(13) | OSPEED_HI(14);
}
void hw_setup(){
gpio_setup();
}

View File

@ -0,0 +1,34 @@
/*
* This file is part of the pl2303 project.
* Copyright 2023 Edward V. Emelianov <edward.emelianoff@gmail.com>.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#pragma once
#ifndef __HARDWARE_H__
#define __HARDWARE_H__
#include <stm32f3.h>
#define USBPU_port GPIOA
#define USBPU_pin (1<<15)
#define USBPU_ON() pin_clear(USBPU_port, USBPU_pin)
#define USBPU_OFF() pin_set(USBPU_port, USBPU_pin)
extern volatile uint32_t Tms;
void hw_setup();
#endif // __HARDWARE_H__

View File

@ -0,0 +1,89 @@
/*
* This file is part of the pl2303 project.
* Copyright 2023 Edward V. Emelianov <edward.emelianoff@gmail.com>.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include "hardware.h"
#include "proto.h"
#include "usart.h"
#include "usb.h"
#define MAXSTRLEN RBINSZ
const char *test = "123456789A123456789B123456789C123456789D123456789E123456789F123456789G123456789H123456789I123456789J123456789K123456789L123456789M123456789N123456789O123456789P123456789Q123456789R123456789S123456789T123456789U123456789V123456789W123456789X123456789Y\n"
"123456789A123456789B123456789C123456789D123456789E123456789F123456789G123456789H123456789I123456789J123456789K123456789L123456789M123456789N123456789O123456789P123456789Q123456789R123456789S123456789T123456789U123456789V123456789W123456789X123456789Y\n";
volatile uint32_t Tms = 0;
void sys_tick_handler(void){
++Tms;
}
int main(void){
char inbuff[MAXSTRLEN+1];
int hse = 0;
USBPU_OFF();
if(StartHSE()){
hse = 1;
SysTick_Config((uint32_t)72000); // 1ms
}else{
StartHSI();
SysTick_Config((uint32_t)48000); // 1ms
}
hw_setup();
usart_setup();
USB_setup();
USBPU_ON();
if(hse) usart_send("Ready @ HSE");
else usart_send("Ready @ HSI");
usart_send(", CFGR="); usart_send(u2hexstr(RCC->CFGR));
usart_send(", CR="); usart_send(u2hexstr(RCC->CR));
usart_send(", SysFreq="); usart_send(u2str(SysFreq)); usart_putchar('\n');
uint32_t ctr = Tms;
while(1){
if(Tms - ctr > 499){
ctr = Tms;
pin_toggle(GPIOB, 1 << 1 | 1 << 0); // toggle LED @ PB0
}
if(bufovr){
bufovr = 0;
usart_send("bufovr\n");
}
char *txt = NULL;
if(usart_getline(&txt)){
const char *ans = parse_cmd(txt);
if(ans) usart_send(ans);
}
int l = USB_receivestr(inbuff, MAXSTRLEN);
if(l < 0) USB_sendstr("ERROR: USB buffer overflow or string was too long\n");
else if(l){
usart_send("Get by USB ");
usart_send(u2str(l)); usart_send(" bytes:");
usart_send(inbuff); usart_putchar('\n');
const char *ans = parse_cmd(inbuff);
if(ans) USB_sendstr(ans);
}
if(starttest){
USB_sendstr(test);
if(0 == --starttest){
#define SENDBOTH(x) do{char *_ = x; usart_send(_); USB_sendstr(_);}while(0)
SENDBOTH("ENDT=");
SENDBOTH(u2str(Tms));
usart_putchar('\n'); USB_putbyte('\n');
}
}
}
}

View File

@ -0,0 +1,4 @@
set FLASH_SIZE 0x20000
source [find interface/stlink-v2-1.cfg]
source [find target/stm32f3x.cfg]

BIN
F3:F303/CANbus4BTA/src/pl2303.bin Executable file

Binary file not shown.

View File

@ -0,0 +1 @@
-std=c17

View File

@ -0,0 +1,7 @@
// Add predefined macros for your project here. For example:
// #define THE_ANSWER 42
#define EBUG
#define STM32F3
#define STM32F303xb
#define __thumb2__ 1
#define __ARM_ARCH_7M__

View File

@ -0,0 +1 @@
[General]

View File

@ -0,0 +1,171 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE QtCreatorProject>
<!-- Written by QtCreator 8.0.2, 2023-04-17T15:07:13. -->
<qtcreator>
<data>
<variable>EnvironmentId</variable>
<value type="QByteArray">{cf63021e-ef53-49b0-b03b-2f2570cdf3b6}</value>
</data>
<data>
<variable>ProjectExplorer.Project.ActiveTarget</variable>
<value type="int">0</value>
</data>
<data>
<variable>ProjectExplorer.Project.EditorSettings</variable>
<valuemap type="QVariantMap">
<value type="bool" key="EditorConfiguration.AutoIndent">true</value>
<value type="bool" key="EditorConfiguration.AutoSpacesForTabs">false</value>
<value type="bool" key="EditorConfiguration.CamelCaseNavigation">true</value>
<valuemap type="QVariantMap" key="EditorConfiguration.CodeStyle.0">
<value type="QString" key="language">Cpp</value>
<valuemap type="QVariantMap" key="value">
<value type="QByteArray" key="CurrentPreferences">CppGlobal</value>
</valuemap>
</valuemap>
<valuemap type="QVariantMap" key="EditorConfiguration.CodeStyle.1">
<value type="QString" key="language">QmlJS</value>
<valuemap type="QVariantMap" key="value">
<value type="QByteArray" key="CurrentPreferences">QmlJSGlobal</value>
</valuemap>
</valuemap>
<value type="int" key="EditorConfiguration.CodeStyle.Count">2</value>
<value type="QByteArray" key="EditorConfiguration.Codec">KOI8-R</value>
<value type="bool" key="EditorConfiguration.ConstrainTooltips">false</value>
<value type="int" key="EditorConfiguration.IndentSize">4</value>
<value type="bool" key="EditorConfiguration.KeyboardTooltips">false</value>
<value type="int" key="EditorConfiguration.MarginColumn">80</value>
<value type="bool" key="EditorConfiguration.MouseHiding">true</value>
<value type="bool" key="EditorConfiguration.MouseNavigation">true</value>
<value type="int" key="EditorConfiguration.PaddingMode">1</value>
<value type="bool" key="EditorConfiguration.PreferSingleLineComments">false</value>
<value type="bool" key="EditorConfiguration.ScrollWheelZooming">true</value>
<value type="bool" key="EditorConfiguration.ShowMargin">false</value>
<value type="int" key="EditorConfiguration.SmartBackspaceBehavior">1</value>
<value type="bool" key="EditorConfiguration.SmartSelectionChanging">true</value>
<value type="bool" key="EditorConfiguration.SpacesForTabs">true</value>
<value type="int" key="EditorConfiguration.TabKeyBehavior">0</value>
<value type="int" key="EditorConfiguration.TabSize">8</value>
<value type="bool" key="EditorConfiguration.UseGlobal">true</value>
<value type="bool" key="EditorConfiguration.UseIndenter">false</value>
<value type="int" key="EditorConfiguration.Utf8BomBehavior">2</value>
<value type="bool" key="EditorConfiguration.addFinalNewLine">true</value>
<value type="bool" key="EditorConfiguration.cleanIndentation">false</value>
<value type="bool" key="EditorConfiguration.cleanWhitespace">true</value>
<value type="QString" key="EditorConfiguration.ignoreFileTypes">*.md, *.MD, Makefile</value>
<value type="bool" key="EditorConfiguration.inEntireDocument">false</value>
<value type="bool" key="EditorConfiguration.skipTrailingWhitespace">true</value>
</valuemap>
</data>
<data>
<variable>ProjectExplorer.Project.PluginSettings</variable>
<valuemap type="QVariantMap">
<valuemap type="QVariantMap" key="AutoTest.ActiveFrameworks">
<value type="bool" key="AutoTest.Framework.Boost">true</value>
<value type="bool" key="AutoTest.Framework.CTest">false</value>
<value type="bool" key="AutoTest.Framework.Catch">true</value>
<value type="bool" key="AutoTest.Framework.GTest">true</value>
<value type="bool" key="AutoTest.Framework.QtQuickTest">true</value>
<value type="bool" key="AutoTest.Framework.QtTest">true</value>
</valuemap>
<valuemap type="QVariantMap" key="AutoTest.CheckStates"/>
<value type="int" key="AutoTest.RunAfterBuild">0</value>
<value type="bool" key="AutoTest.UseGlobal">true</value>
<valuemap type="QVariantMap" key="ClangTools">
<value type="bool" key="ClangTools.AnalyzeOpenFiles">true</value>
<value type="bool" key="ClangTools.BuildBeforeAnalysis">true</value>
<value type="QString" key="ClangTools.DiagnosticConfig">Builtin.DefaultTidyAndClazy</value>
<value type="int" key="ClangTools.ParallelJobs">1</value>
<valuelist type="QVariantList" key="ClangTools.SelectedDirs"/>
<valuelist type="QVariantList" key="ClangTools.SelectedFiles"/>
<valuelist type="QVariantList" key="ClangTools.SuppressedDiagnostics"/>
<value type="bool" key="ClangTools.UseGlobalSettings">true</value>
</valuemap>
</valuemap>
</data>
<data>
<variable>ProjectExplorer.Project.Target.0</variable>
<valuemap type="QVariantMap">
<value type="QString" key="DeviceType">Desktop</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Desktop</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Desktop</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">{91347f2c-5221-46a7-80b1-0a054ca02f79}</value>
<value type="int" key="ProjectExplorer.Target.ActiveBuildConfiguration">0</value>
<value type="int" key="ProjectExplorer.Target.ActiveDeployConfiguration">0</value>
<value type="int" key="ProjectExplorer.Target.ActiveRunConfiguration">0</value>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.0">
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">/home/eddy/C-files/stm32samples/F3:F303/PL2303</value>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<valuelist type="QVariantList" key="GenericProjectManager.GenericMakeStep.BuildTargets">
<value type="QString">all</value>
</valuelist>
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">GenericProjectManager.GenericMakeStep</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Сборка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Сборка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<valuelist type="QVariantList" key="GenericProjectManager.GenericMakeStep.BuildTargets">
<value type="QString">clean</value>
</valuelist>
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">GenericProjectManager.GenericMakeStep</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Очистка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Очистка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
<value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.CustomParsers"/>
<value type="bool" key="ProjectExplorer.BuildConfiguration.ParseStandardOutput">false</value>
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">По умолчанию</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">GenericProjectManager.GenericBuildConfiguration</value>
</valuemap>
<value type="int" key="ProjectExplorer.Target.BuildConfigurationCount">1</value>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.DeployConfiguration.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">0</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Развёртывание</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Развёртывание</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Deploy</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">1</value>
<valuemap type="QVariantMap" key="ProjectExplorer.DeployConfiguration.CustomData"/>
<value type="bool" key="ProjectExplorer.DeployConfiguration.CustomDataEnabled">false</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.DefaultDeployConfiguration</value>
</valuemap>
<value type="int" key="ProjectExplorer.Target.DeployConfigurationCount">1</value>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.RunConfiguration.0">
<valuelist type="QVariantList" key="CustomOutputParsers"/>
<value type="int" key="PE.EnvironmentAspect.Base">2</value>
<valuelist type="QVariantList" key="PE.EnvironmentAspect.Changes"/>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.CustomExecutableRunConfiguration</value>
<value type="QString" key="ProjectExplorer.RunConfiguration.BuildKey"></value>
<value type="bool" key="RunConfiguration.UseCppDebugger">false</value>
<value type="bool" key="RunConfiguration.UseCppDebuggerAuto">true</value>
<value type="bool" key="RunConfiguration.UseQmlDebugger">false</value>
<value type="bool" key="RunConfiguration.UseQmlDebuggerAuto">true</value>
</valuemap>
<value type="int" key="ProjectExplorer.Target.RunConfigurationCount">1</value>
</valuemap>
</data>
<data>
<variable>ProjectExplorer.Project.TargetCount</variable>
<value type="int">1</value>
</data>
<data>
<variable>ProjectExplorer.Project.Updater.FileVersion</variable>
<value type="int">22</value>
</data>
<data>
<variable>Version</variable>
<value type="int">22</value>
</data>
</qtcreator>

View File

@ -0,0 +1,171 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE QtCreatorProject>
<!-- Written by QtCreator 8.0.2, 2023-01-18T20:42:42. -->
<qtcreator>
<data>
<variable>EnvironmentId</variable>
<value type="QByteArray">{7bd84e39-ca37-46d3-be9d-99ebea85bc0d}</value>
</data>
<data>
<variable>ProjectExplorer.Project.ActiveTarget</variable>
<value type="int">0</value>
</data>
<data>
<variable>ProjectExplorer.Project.EditorSettings</variable>
<valuemap type="QVariantMap">
<value type="bool" key="EditorConfiguration.AutoIndent">true</value>
<value type="bool" key="EditorConfiguration.AutoSpacesForTabs">false</value>
<value type="bool" key="EditorConfiguration.CamelCaseNavigation">true</value>
<valuemap type="QVariantMap" key="EditorConfiguration.CodeStyle.0">
<value type="QString" key="language">Cpp</value>
<valuemap type="QVariantMap" key="value">
<value type="QByteArray" key="CurrentPreferences">CppGlobal</value>
</valuemap>
</valuemap>
<valuemap type="QVariantMap" key="EditorConfiguration.CodeStyle.1">
<value type="QString" key="language">QmlJS</value>
<valuemap type="QVariantMap" key="value">
<value type="QByteArray" key="CurrentPreferences">QmlJSGlobal</value>
</valuemap>
</valuemap>
<value type="int" key="EditorConfiguration.CodeStyle.Count">2</value>
<value type="QByteArray" key="EditorConfiguration.Codec">KOI8-R</value>
<value type="bool" key="EditorConfiguration.ConstrainTooltips">false</value>
<value type="int" key="EditorConfiguration.IndentSize">4</value>
<value type="bool" key="EditorConfiguration.KeyboardTooltips">false</value>
<value type="int" key="EditorConfiguration.MarginColumn">80</value>
<value type="bool" key="EditorConfiguration.MouseHiding">true</value>
<value type="bool" key="EditorConfiguration.MouseNavigation">true</value>
<value type="int" key="EditorConfiguration.PaddingMode">1</value>
<value type="bool" key="EditorConfiguration.PreferSingleLineComments">false</value>
<value type="bool" key="EditorConfiguration.ScrollWheelZooming">true</value>
<value type="bool" key="EditorConfiguration.ShowMargin">false</value>
<value type="int" key="EditorConfiguration.SmartBackspaceBehavior">0</value>
<value type="bool" key="EditorConfiguration.SmartSelectionChanging">true</value>
<value type="bool" key="EditorConfiguration.SpacesForTabs">true</value>
<value type="int" key="EditorConfiguration.TabKeyBehavior">0</value>
<value type="int" key="EditorConfiguration.TabSize">8</value>
<value type="bool" key="EditorConfiguration.UseGlobal">true</value>
<value type="bool" key="EditorConfiguration.UseIndenter">false</value>
<value type="int" key="EditorConfiguration.Utf8BomBehavior">1</value>
<value type="bool" key="EditorConfiguration.addFinalNewLine">true</value>
<value type="bool" key="EditorConfiguration.cleanIndentation">false</value>
<value type="bool" key="EditorConfiguration.cleanWhitespace">true</value>
<value type="QString" key="EditorConfiguration.ignoreFileTypes">*.md, *.MD, Makefile</value>
<value type="bool" key="EditorConfiguration.inEntireDocument">false</value>
<value type="bool" key="EditorConfiguration.skipTrailingWhitespace">true</value>
</valuemap>
</data>
<data>
<variable>ProjectExplorer.Project.PluginSettings</variable>
<valuemap type="QVariantMap">
<valuemap type="QVariantMap" key="AutoTest.ActiveFrameworks">
<value type="bool" key="AutoTest.Framework.Boost">true</value>
<value type="bool" key="AutoTest.Framework.CTest">false</value>
<value type="bool" key="AutoTest.Framework.Catch">true</value>
<value type="bool" key="AutoTest.Framework.GTest">true</value>
<value type="bool" key="AutoTest.Framework.QtQuickTest">true</value>
<value type="bool" key="AutoTest.Framework.QtTest">true</value>
</valuemap>
<valuemap type="QVariantMap" key="AutoTest.CheckStates"/>
<value type="int" key="AutoTest.RunAfterBuild">0</value>
<value type="bool" key="AutoTest.UseGlobal">true</value>
<valuemap type="QVariantMap" key="ClangTools">
<value type="bool" key="ClangTools.AnalyzeOpenFiles">true</value>
<value type="bool" key="ClangTools.BuildBeforeAnalysis">true</value>
<value type="QString" key="ClangTools.DiagnosticConfig">Builtin.DefaultTidyAndClazy</value>
<value type="int" key="ClangTools.ParallelJobs">2</value>
<valuelist type="QVariantList" key="ClangTools.SelectedDirs"/>
<valuelist type="QVariantList" key="ClangTools.SelectedFiles"/>
<valuelist type="QVariantList" key="ClangTools.SuppressedDiagnostics"/>
<value type="bool" key="ClangTools.UseGlobalSettings">true</value>
</valuemap>
</valuemap>
</data>
<data>
<variable>ProjectExplorer.Project.Target.0</variable>
<valuemap type="QVariantMap">
<value type="QString" key="DeviceType">Desktop</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Desktop</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Desktop</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">{65a14f9e-e008-4c1b-89df-4eaa4774b6e3}</value>
<value type="int" key="ProjectExplorer.Target.ActiveBuildConfiguration">0</value>
<value type="int" key="ProjectExplorer.Target.ActiveDeployConfiguration">0</value>
<value type="int" key="ProjectExplorer.Target.ActiveRunConfiguration">0</value>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.0">
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">/Big/Data/00__Electronics/STM32/F303-nolib/blink</value>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<valuelist type="QVariantList" key="GenericProjectManager.GenericMakeStep.BuildTargets">
<value type="QString">all</value>
</valuelist>
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">GenericProjectManager.GenericMakeStep</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Сборка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Сборка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<valuelist type="QVariantList" key="GenericProjectManager.GenericMakeStep.BuildTargets">
<value type="QString">clean</value>
</valuelist>
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">GenericProjectManager.GenericMakeStep</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Очистка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Очистка</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
<value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.CustomParsers"/>
<value type="bool" key="ProjectExplorer.BuildConfiguration.ParseStandardOutput">false</value>
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Default</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">GenericProjectManager.GenericBuildConfiguration</value>
</valuemap>
<value type="int" key="ProjectExplorer.Target.BuildConfigurationCount">1</value>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.DeployConfiguration.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">0</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Развёртывание</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Развёртывание</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Deploy</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">1</value>
<valuemap type="QVariantMap" key="ProjectExplorer.DeployConfiguration.CustomData"/>
<value type="bool" key="ProjectExplorer.DeployConfiguration.CustomDataEnabled">false</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.DefaultDeployConfiguration</value>
</valuemap>
<value type="int" key="ProjectExplorer.Target.DeployConfigurationCount">1</value>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.RunConfiguration.0">
<valuelist type="QVariantList" key="CustomOutputParsers"/>
<value type="int" key="PE.EnvironmentAspect.Base">2</value>
<valuelist type="QVariantList" key="PE.EnvironmentAspect.Changes"/>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.CustomExecutableRunConfiguration</value>
<value type="QString" key="ProjectExplorer.RunConfiguration.BuildKey"></value>
<value type="bool" key="RunConfiguration.UseCppDebugger">false</value>
<value type="bool" key="RunConfiguration.UseCppDebuggerAuto">true</value>
<value type="bool" key="RunConfiguration.UseQmlDebugger">false</value>
<value type="bool" key="RunConfiguration.UseQmlDebuggerAuto">true</value>
</valuemap>
<value type="int" key="ProjectExplorer.Target.RunConfigurationCount">1</value>
</valuemap>
</data>
<data>
<variable>ProjectExplorer.Project.TargetCount</variable>
<value type="int">1</value>
</data>
<data>
<variable>ProjectExplorer.Project.Updater.FileVersion</variable>
<value type="int">22</value>
</data>
<data>
<variable>Version</variable>
<value type="int">22</value>
</data>
</qtcreator>

View File

@ -0,0 +1 @@
-std=c++17

View File

@ -0,0 +1,15 @@
hardware.c
hardware.h
main.c
proto.c
proto.h
ringbuffer.c
ringbuffer.h
usart.c
usart.h
usb.c
usb.h
usb_lib.c
usb_lib.h
usbhw.c
usbhw.h

View File

@ -0,0 +1,6 @@
.
../inc
../inc/Fx
../inc/cm
../inc/ld
../inc/startup

View File

@ -0,0 +1,281 @@
/*
* This file is part of the pl2303 project.
* Copyright 2022 Edward V. Emelianov <edward.emelianoff@gmail.com>.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include "proto.h"
#include "usart.h"
#include "usb.h"
#include "version.inc"
uint8_t starttest = 0;
char *omit_spaces(const char *buf){
while(*buf){
if(*buf > ' ') break;
++buf;
}
return (char*)buf;
}
// In case of overflow return `buf` and N==0xffffffff
// read decimal number & return pointer to next non-number symbol
static char *getdec(const char *buf, uint32_t *N){
char *start = (char*)buf;
uint32_t num = 0;
while(*buf){
char c = *buf;
if(c < '0' || c > '9'){
break;
}
if(num > 429496729 || (num == 429496729 && c > '5')){ // overflow
*N = 0xffffff;
return start;
}
num *= 10;
num += c - '0';
++buf;
}
*N = num;
return (char*)buf;
}
// read hexadecimal number (without 0x prefix!)
static char *gethex(const char *buf, uint32_t *N){
char *start = (char*)buf;
uint32_t num = 0;
while(*buf){
char c = *buf;
uint8_t M = 0;
if(c >= '0' && c <= '9'){
M = '0';
}else if(c >= 'A' && c <= 'F'){
M = 'A' - 10;
}else if(c >= 'a' && c <= 'f'){
M = 'a' - 10;
}
if(M){
if(num & 0xf0000000){ // overflow
*N = 0xffffff;
return start;
}
num <<= 4;
num += c - M;
}else{
break;
}
++buf;
}
*N = num;
return (char*)buf;
}
// read octal number (without 0 prefix!)
static char *getoct(const char *buf, uint32_t *N){
char *start = (char*)buf;
uint32_t num = 0;
while(*buf){
char c = *buf;
if(c < '0' || c > '7'){
break;
}
if(num & 0xe0000000){ // overflow
*N = 0xffffff;
return start;
}
num <<= 3;
num += c - '0';
++buf;
}
*N = num;
return (char*)buf;
}
// read binary number (without b prefix!)
static char *getbin(const char *buf, uint32_t *N){
char *start = (char*)buf;
uint32_t num = 0;
while(*buf){
char c = *buf;
if(c < '0' || c > '1'){
break;
}
if(num & 0x80000000){ // overflow
*N = 0xffffff;
return start;
}
num <<= 1;
if(c == '1') num |= 1;
++buf;
}
*N = num;
return (char*)buf;
}
/**
* @brief getnum - read uint32_t from string (dec, hex or bin: 127, 0x7f, 0b1111111)
* @param buf - buffer with number and so on
* @param N - the number read
* @return pointer to first non-number symbol in buf
* (if it is == buf, there's no number or if *N==0xffffffff there was overflow)
*/
char *getnum(const char *txt, uint32_t *N){
char *nxt = NULL;
char *s = omit_spaces(txt);
if(*s == '0'){ // hex, oct or 0
if(s[1] == 'x' || s[1] == 'X'){ // hex
nxt = gethex(s+2, N);
if(nxt == s+2) nxt = (char*)txt;
}else if(s[1] > '0'-1 && s[1] < '8'){ // oct
nxt = getoct(s+1, N);
if(nxt == s+1) nxt = (char*)txt;
}else{ // 0
nxt = s+1;
*N = 0;
}
}else if(*s == 'b' || *s == 'B'){
nxt = getbin(s+1, N);
if(nxt == s+1) nxt = (char*)txt;
}else{
nxt = getdec(s, N);
if(nxt == s) nxt = (char*)txt;
}
return nxt;
}
const char* helpmsg =
"https://github.com/eddyem/stm32samples/tree/master/F3:F303/PL2303 build#" BUILD_NUMBER " @ " BUILD_DATE "\n"
"'i' - print USB->ISTR state\n"
"'p' - toggle USB pullup\n"
"'N' - read number (dec, 0xhex, 0oct, bbin) and show it in decimal\n"
"'R' - software reset\n"
"'T' - test usb sending a very large message\n"
"'U' - get USB status\n"
"'W' - test watchdog\n"
;
static char stbuf[256], *bptr = NULL;
static int blen = 0;
static void initbuf(){bptr = stbuf; blen = 255; *bptr = 0;}
static void add2buf(const char *s){
while(blen && *s){
*bptr++ = *s++;
--blen;
}
*bptr = 0;
}
extern uint8_t usbON;
const char *parse_cmd(const char *buf){
initbuf();
if(buf[1] == '\n' || !buf[1]){ // one symbol commands
switch(*buf){
case 'i':
add2buf("USB->ISTR=");
add2buf(u2hexstr(USB->ISTR));
add2buf(", USB->CNTR=");
add2buf(u2hexstr(USB->CNTR));
add2buf("\n");
break;
case 'p':
pin_toggle(USBPU_port, USBPU_pin);
add2buf("USB pullup is ");
if(pin_read(USBPU_port, USBPU_pin)) add2buf("off\n");
else add2buf("on\n");
break;
case 'R':
USB_sendstr("Soft reset\n");
usart_send("Soft reset\n");
NVIC_SystemReset();
break;
case 'T':
add2buf("STARTT=");
add2buf(u2str(Tms)); add2buf("\n");
starttest = 10;
break;
case 'U':
add2buf("USB status: ");
if(usbON) add2buf("ON");
else add2buf("OFF");
add2buf("\n");
break;
case 'W':
USB_sendstr("Wait for reboot\n");
usart_send("Wait for reboot\n");
while(1){nop();};
break;
default:
return helpmsg;
}
return stbuf;
}
uint32_t Num = 0;
char *nxt;
switch(*buf){ // long messages
case 'N':
++buf;
nxt = getnum(buf, &Num);
if(buf == nxt){
if(Num == 0) return "Wrong number\n";
return "Integer32 overflow\n";
}
add2buf("You give: ");
add2buf(u2str(Num));
if(*nxt && *nxt != '\n'){
add2buf(", the rest of string: ");
add2buf(nxt);
}else add2buf("\n");
break;
default:
return buf;
}
return stbuf;
}
// return string with number `val`
char *u2str(uint32_t val){
static char strbuf[11];
char *bufptr = &strbuf[10];
*bufptr = 0;
if(!val){
*(--bufptr) = '0';
}else{
while(val){
*(--bufptr) = val % 10 + '0';
val /= 10;
}
}
return bufptr;
}
char *u2hexstr(uint32_t val){
static char strbuf[11] = "0x";
char *sptr = strbuf + 2;
uint8_t *ptr = (uint8_t*)&val + 3;
int8_t i, j, z=1;
for(i = 0; i < 4; ++i, --ptr){
if(*ptr == 0){ // omit leading zeros
if(i == 3) z = 0;
if(z) continue;
}
else z = 0;
for(j = 1; j > -1; --j){
uint8_t half = (*ptr >> (4*j)) & 0x0f;
if(half < 10) *sptr++ = half + '0';
else *sptr++ = half - 10 + 'a';
}
}
*sptr = 0;
return strbuf;
}

View File

@ -0,0 +1,33 @@
/*
* This file is part of the pl2303 project.
* Copyright 2022 Edward V. Emelianov <edward.emelianoff@gmail.com>.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#pragma once
#ifndef PROTO_H__
#define PROTO_H__
#include <stm32f3.h>
extern uint8_t starttest;
const char *parse_cmd(const char *buf);
char *omit_spaces(const char *buf);
char *getnum(const char *buf, uint32_t *N);
char *u2str(uint32_t val);
char *u2hexstr(uint32_t val);
#endif // PROTO_H__

View File

@ -0,0 +1,124 @@
/*
* This file is part of the pl2303 project.
* Copyright 2022 Edward V. Emelianov <edward.emelianoff@gmail.com>.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include "ringbuffer.h"
// stored data length
int RB_datalen(ringbuffer *b){
if(b->tail >= b->head) return (b->tail - b->head);
else return (b->length - b->head + b->tail);
}
/**
* @brief RB_hasbyte - check if buffer has given byte stored
* @param b - buffer
* @param byte - byte to find
* @return index if found, -1 if none
*/
int RB_hasbyte(ringbuffer *b, uint8_t byte){
if(b->head == b->tail) return -1; // no data in buffer
int startidx = b->head;
if(b->head > b->tail){ //
for(int found = b->head; found < b->length; ++found)
if(b->data[found] == byte) return found;
startidx = 0;
}
for(int found = startidx; found < b->tail; ++found)
if(b->data[found] == byte) return found;
return -1;
}
// poor memcpy
static void mcpy(uint8_t *targ, const uint8_t *src, int l){
while(l--) *targ++ = *src++;
}
// increment head or tail
TRUE_INLINE void incr(ringbuffer *b, volatile int *what, int n){
*what += n;
if(*what >= b->length) *what -= b->length;
}
/**
* @brief RB_read - read data from ringbuffer
* @param b - buffer
* @param s - array to write data
* @param len - max len of `s`
* @return bytes read
*/
int RB_read(ringbuffer *b, uint8_t *s, int len){
int l = RB_datalen(b);
if(!l) return 0;
if(l > len) l = len;
int _1st = b->length - b->head;
if(_1st > l) _1st = l;
if(_1st > len) _1st = len;
mcpy(s, b->data + b->head, _1st);
if(_1st < len && l > _1st){
mcpy(s+_1st, b->data, l - _1st);
incr(b, &b->head, l);
return l;
}
incr(b, &b->head, _1st);
return _1st;
}
/**
* @brief RB_readto fill array `s` with data until byte `byte` (with it)
* @param b - ringbuffer
* @param byte - check byte
* @param s - buffer to write data
* @param len - length of `s`
* @return amount of bytes written (negative, if len<data in buffer)
*/
int RB_readto(ringbuffer *b, uint8_t byte, uint8_t *s, int len){
int idx = RB_hasbyte(b, byte);
if(idx < 0) return 0;
int partlen = idx + 1 - b->head;
// now calculate length of new data portion
if(idx < b->head) partlen += b->length;
if(partlen > len) return -RB_read(b, s, len);
return RB_read(b, s, partlen);
}
/**
* @brief RB_write - write some data to ringbuffer
* @param b - buffer
* @param str - data
* @param l - length
* @return amount of bytes written
*/
int RB_write(ringbuffer *b, const uint8_t *str, int l){
int r = b->length - 1 - RB_datalen(b); // rest length
if(l > r) l = r;
if(!l) return 0;
int _1st = b->length - b->tail;
if(_1st > l) _1st = l;
mcpy(b->data + b->tail, str, _1st);
if(_1st < l){ // add another piece from start
mcpy(b->data, str+_1st, l-_1st);
}
incr(b, &b->tail, l);
return l;
}
// just delete all information in buffer `b`
void RB_clearbuf(ringbuffer *b){
b->head = 0;
b->tail = 0;
}

View File

@ -0,0 +1,39 @@
/*
* This file is part of the pl2303 project.
* Copyright 2022 Edward V. Emelianov <edward.emelianoff@gmail.com>.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#pragma once
#ifndef RINGBUFFER_H__
#define RINGBUFFER_H__
#include <stm32f3.h>
typedef struct{
uint8_t *data; // data buffer
const int length; // its length
int head; // head index
int tail; // tail index
} ringbuffer;
int RB_read(ringbuffer *b, uint8_t *s, int len);
int RB_readto(ringbuffer *b, uint8_t byte, uint8_t *s, int len);
int RB_hasbyte(ringbuffer *b, uint8_t byte);
int RB_write(ringbuffer *b, const uint8_t *str, int l);
int RB_datalen(ringbuffer *b);
void RB_clearbuf(ringbuffer *b);
#endif // RINGBUFFER_H__

View File

@ -0,0 +1,100 @@
/*
* This file is part of the pl2303 project.
* Copyright 2022 Edward V. Emelianov <edward.emelianoff@gmail.com>.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include "stm32f3.h"
#include "hardware.h"
#include "usart.h"
#include <string.h>
static volatile int idatalen = 0; // received data line length (including '\n')
volatile int linerdy = 0, // received data ready
dlen = 0, // length of data (including '\n') in current buffer
bufovr = 0; // input buffer overfull
static volatile int rbufno = 0; // current rbuf number
static char rbuf[2][UARTBUFSZ]; // receive buffers
static volatile char *recvdata = NULL;
/**
* return length of received data (without trailing zero)
*/
int usart_getline(char **line){
if(bufovr){
bufovr = 0;
linerdy = 0;
return 0;
}
if(!linerdy) return 0;
*line = (char*)recvdata;
linerdy = 0;
return dlen;
}
void usart_putchar(const char ch){
while(!(USART1->ISR & USART_ISR_TXE));
USART1->TDR = ch;
}
void usart_sendn(const char *str, int L){
if(!str) return;
for(int i = 0; i < L; ++i){
usart_putchar(str[i]);
}
}
void usart_send(const char *str){
if(!str) return;
int L = 0;
const char *ptr = str;
while(*ptr++) ++L;
usart_sendn(str, L);
}
void usart_setup(){
// clock
RCC->APB2ENR |= RCC_APB2ENR_USART1EN;
USART1->ICR = 0xffffffff; // clear all flags
USART1->BRR = SysFreq / 115200;
USART1->CR1 = USART_CR1_TE | USART_CR1_RE | USART_CR1_UE | USART_CR1_RXNEIE; // 1start,8data,nstop; enable Rx,Tx,USART
uint32_t tmout = 16000000;
while(!(USART1->ISR & USART_ISR_TC)){if(--tmout == 0) break;} // polling idle frame Transmission
USART1->ICR = 0xffffffff; // clear all flags again
NVIC_SetPriority(USART1_IRQn, 0);
NVIC_EnableIRQ(USART1_IRQn);
}
void usart1_exti25_isr(){
if(USART1->ISR & USART_ISR_RXNE){ // RX not emty - receive next char
// read RDR clears flag
uint8_t rb = USART1->RDR;
if(idatalen < UARTBUFSZ){ // put next char into buf
rbuf[rbufno][idatalen++] = rb;
if(rb == '\n'){ // got newline - line ready
linerdy = 1;
dlen = idatalen;
recvdata = rbuf[rbufno];
recvdata[dlen-1] = 0;
// prepare other buffer
rbufno = !rbufno;
idatalen = 0;
}
}else{ // buffer overrun
bufovr = 1;
idatalen = 0;
}
}
}

View File

@ -0,0 +1,36 @@
/*
* This file is part of the pl2303 project.
* Copyright 2022 Edward V. Emelianov <edward.emelianoff@gmail.com>.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#pragma once
#ifndef __USART_H__
#define __USART_H__
#include "hardware.h"
// input buffers size
#define UARTBUFSZ (80)
extern volatile int linerdy, bufovr;
void usart_setup();
int usart_getline(char **line);
void usart_send(const char *str);
void usart_sendn(const char *str, int L);
void usart_putchar(const char ch);
#endif // __USART_H__

View File

@ -0,0 +1,126 @@
/*
* This file is part of the pl2303 project.
* Copyright 2023 Edward V. Emelianov <edward.emelianoff@gmail.com>.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include <string.h>
#include "hardware.h"
#include "usb.h"
#include "usb_lib.h"
static volatile uint8_t usbbuff[USB_TXBUFSZ]; // temporary buffer for sending data
// ring buffers for incoming and outgoing data
static uint8_t obuf[RBOUTSZ], ibuf[RBINSZ];
volatile ringbuffer rbout = {.data = obuf, .length = RBOUTSZ, .head = 0, .tail = 0};
volatile ringbuffer rbin = {.data = ibuf, .length = RBINSZ, .head = 0, .tail = 0};
// transmission is succesfull
volatile uint8_t bufisempty = 1;
volatile uint8_t bufovrfl = 0;
void send_next(){
if(bufisempty) return;
static int lastdsz = 0;
int buflen = RB_read((ringbuffer*)&rbout, (uint8_t*)usbbuff, USB_TXBUFSZ);
if(!buflen){
if(lastdsz == 64) EP_Write(3, NULL, 0); // send ZLP after 64 bits packet when nothing more to send
lastdsz = 0;
bufisempty = 1;
return;
}
EP_Write(3, (uint8_t*)usbbuff, buflen);
lastdsz = buflen;
}
// blocking send full content of ring buffer
int USB_sendall(){
while(!bufisempty){
if(!usbON) return 0;
}
return 1;
}
// put `buf` into queue to send
int USB_send(const uint8_t *buf, int len){
if(!buf || !usbON || !len) return 0;
while(len){
int a = RB_write((ringbuffer*)&rbout, buf, len);
len -= a;
buf += a;
if(bufisempty){
bufisempty = 0;
send_next();
}
}
return 1;
}
int USB_putbyte(uint8_t byte){
if(!usbON) return 0;
while(0 == RB_write((ringbuffer*)&rbout, &byte, 1)){
if(bufisempty){
bufisempty = 0;
send_next();
}
}
return 1;
}
int USB_sendstr(const char *string){
if(!string || !usbON) return 0;
int len = 0;
const char *b = string;
while(*b++) ++len;
if(!len) return 0;
return USB_send((const uint8_t*)string, len);
}
/**
* @brief USB_receive - get binary data from receiving ring-buffer
* @param buf (i) - buffer for received data
* @param len - length of `buf`
* @return amount of received bytes (negative, if overfull happened)
*/
int USB_receive(uint8_t *buf, int len){
int sz = RB_read((ringbuffer*)&rbin, buf, len);
if(bufovrfl){
RB_clearbuf((ringbuffer*)&rbin);
if(!sz) sz = -1;
else sz = -sz;
bufovrfl = 0;
}
return sz;
}
/**
* @brief USB_receivestr - get string up to '\n' and replace '\n' with 0
* @param buf - receiving buffer
* @param len - its length
* @return strlen or negative value indicating overflow (if so, string won't be ends with 0 and buffer should be cleared)
*/
int USB_receivestr(char *buf, int len){
int l = RB_readto((ringbuffer*)&rbin, '\n', (uint8_t*)buf, len);
if(l == 0) return 0;
if(--l < 0 || bufovrfl) RB_clearbuf((ringbuffer*)&rbin);
else buf[l] = 0; // replace '\n' with strend
if(bufovrfl){
if(l > 0) l = -l;
else l = -1;
bufovrfl = 0;
}
return l;
}

View File

@ -0,0 +1,49 @@
/*
* This file is part of the pl2303 project.
* Copyright 2023 Edward V. Emelianov <edward.emelianoff@gmail.com>.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#pragma once
#include "ringbuffer.h"
#include "usbhw.h"
// sizes of ringbuffers for outgoing and incoming data
#define RBOUTSZ (512)
#define RBINSZ (512)
#define newline() USB_putbyte('\n')
#define USND(s) do{USB_sendstr(s); USB_putbyte('\n');}while(0)
#define STR_HELPER(s) #s
#define STR(s) STR_HELPER(s)
#ifdef EBUG
#define DBG(str) do{USB_sendstr(__FILE__ " (L" STR(__LINE__) "): " str); newline();}while(0)
#else
#define DBG(str)
#endif
extern volatile ringbuffer rbout, rbin;
extern volatile uint8_t bufisempty, bufovrfl;
void send_next();
int USB_sendall();
int USB_send(const uint8_t *buf, int len);
int USB_putbyte(uint8_t byte);
int USB_sendstr(const char *string);
int USB_receive(uint8_t *buf, int len);
int USB_receivestr(char *buf, int len);

View File

@ -0,0 +1,438 @@
/*
* This file is part of the pl2303 project.
* Copyright 2023 Edward V. Emelianov <edward.emelianoff@gmail.com>.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include <stdint.h>
#include "usb.h"
#include "usb_lib.h"
#include "usbhw.h"
ep_t endpoints[STM32ENDPOINTS];
static uint16_t USB_Addr = 0;
static usb_LineCoding lineCoding = {115200, 0, 0, 8};
uint8_t ep0databuf[EP0DATABUF_SIZE], setupdatabuf[EP0DATABUF_SIZE];
static config_pack_t *setup_packet = (config_pack_t*) setupdatabuf;
usb_LineCoding getLineCoding(){return lineCoding;}
volatile uint8_t usbON = 0; // device disconnected from terminal
// definition of parts common for USB_DeviceDescriptor & USB_DeviceQualifierDescriptor
#define bcdUSB_L 0x10
#define bcdUSB_H 0x01
#define bDeviceClass 0
#define bDeviceSubClass 0
#define bDeviceProtocol 0
#define bNumConfigurations 1
static const uint8_t USB_DeviceDescriptor[] = {
18, // bLength
0x01, // bDescriptorType - Device descriptor
bcdUSB_L, // bcdUSB_L - 1.10
bcdUSB_H, // bcdUSB_H
bDeviceClass, // bDeviceClass - USB_COMM
bDeviceSubClass, // bDeviceSubClass
bDeviceProtocol, // bDeviceProtocol
USB_EP0_BUFSZ, // bMaxPacketSize
0x7b, // idVendor_L PL2303: VID=0x067b, PID=0x2303
0x06, // idVendor_H
0x03, // idProduct_L
0x23, // idProduct_H
0x00, // bcdDevice_Ver_L
0x03, // bcdDevice_Ver_H
iMANUFACTURER_DESCR, // iManufacturer
iPRODUCT_DESCR, // iProduct
iSERIAL_DESCR, // iSerialNumber
bNumConfigurations // bNumConfigurations
};
static const uint8_t USB_DeviceQualifierDescriptor[] = {
10, //bLength
0x06, // bDescriptorType - Device qualifier
bcdUSB_L, // bcdUSB_L
bcdUSB_H, // bcdUSB_H
bDeviceClass, // bDeviceClass
bDeviceSubClass, // bDeviceSubClass
bDeviceProtocol, // bDeviceProtocol
USB_EP0_BUFSZ, // bMaxPacketSize0
bNumConfigurations, // bNumConfigurations
0x00 // Reserved
};
static const uint8_t USB_ConfigDescriptor[] = {
/*Configuration Descriptor*/
0x09, /* bLength: Configuration Descriptor size */
0x02, /* bDescriptorType: Configuration */
39, /* wTotalLength:no of returned bytes */
0x00,
0x01, /* bNumInterfaces: 1 interface */
0x01, /* bConfigurationValue: Configuration value */
0x00, /* iConfiguration: Index of string descriptor describing the configuration */
0xa0, /* bmAttributes - Bus powered, Remote wakeup */
0x32, /* MaxPower 100 mA */
/*---------------------------------------------------------------------------*/
/*Interface Descriptor */
0x09, /* bLength: Interface Descriptor size */
0x04, /* bDescriptorType: Interface */
0x00, /* bInterfaceNumber: Number of Interface */
0x00, /* bAlternateSetting: Alternate setting */
0x03, /* bNumEndpoints: 3 endpoints used */
0xff, /* bInterfaceClass */
0x00, /* bInterfaceSubClass */
0x00, /* bInterfaceProtocol */
iINTERFACE_DESCR, /* iInterface: */
///////////////////////////////////////////////////
/*Endpoint 1 Descriptor*/
0x07, /* bLength: Endpoint Descriptor size */
0x05, /* bDescriptorType: Endpoint */
0x81, /* bEndpointAddress IN1 */
0x03, /* bmAttributes: Interrupt */
0x0a, /* wMaxPacketSize LO: */
0x00, /* wMaxPacketSize HI: */
0x01, /* bInterval: */
/*Endpoint OUT2 Descriptor*/
0x07, /* bLength: Endpoint Descriptor size */
0x05, /* bDescriptorType: Endpoint */
0x02, /* bEndpointAddress: OUT2 */
0x02, /* bmAttributes: Bulk */
(USB_RXBUFSZ & 0xff), /* wMaxPacketSize: 64 */
(USB_RXBUFSZ >> 8),
0x00, /* bInterval: ignore for Bulk transfer */
/*Endpoint IN3 Descriptor*/
0x07, /* bLength: Endpoint Descriptor size */
0x05, /* bDescriptorType: Endpoint */
0x83, /* bEndpointAddress IN3 */
0x02, /* bmAttributes: Bulk */
(USB_TXBUFSZ & 0xff), /* wMaxPacketSize: 64 */
(USB_TXBUFSZ >> 8),
0x00, /* bInterval: ignore for Bulk transfer */
};
_USB_LANG_ID_(LD, LANG_US);
_USB_STRING_(SD, u"0.0.1");
_USB_STRING_(MD, u"Prolific Technology Inc.");
_USB_STRING_(PD, u"USB-Serial Controller");
_USB_STRING_(ID, u"pl2303_emulator");
static void const *StringDescriptor[iDESCR_AMOUNT] = {
[iLANGUAGE_DESCR] = &LD,
[iMANUFACTURER_DESCR] = &MD,
[iPRODUCT_DESCR] = &PD,
[iSERIAL_DESCR] = &SD,
[iINTERFACE_DESCR] = &ID
};
/*
* default handlers
*/
// SET_LINE_CODING
void WEAK linecoding_handler(usb_LineCoding __attribute__((unused)) *lc){
}
// SET_CONTROL_LINE_STATE
void WEAK clstate_handler(uint16_t __attribute__((unused)) val){
}
// SEND_BREAK
void WEAK break_handler(){
}
// handler of vendor requests
void WEAK vendor_handler(config_pack_t *packet){
uint16_t c;
if(packet->bmRequestType & 0x80){ // read
switch(packet->wValue){
case 0x8484:
c = 2;
break;
case 0x0080:
c = 1;
break;
case 0x8686:
c = 0xaa;
break;
default:
c = 0;
}
EP_WriteIRQ(0, (uint8_t*)&c, 1);
}else{ // write ZLP
c = 0;
EP_WriteIRQ(0, (uint8_t *)&c, 0);
}
}
static void wr0(const uint8_t *buf, uint16_t size){
if(setup_packet->wLength < size) size = setup_packet->wLength; // shortened request
if(size < endpoints[0].txbufsz){
EP_WriteIRQ(0, buf, size);
return;
}
while(size){
uint16_t l = size;
if(l > endpoints[0].txbufsz) l = endpoints[0].txbufsz;
EP_WriteIRQ(0, buf, l);
buf += l;
size -= l;
uint8_t needzlp = (l == endpoints[0].txbufsz) ? 1 : 0;
if(size || needzlp){ // send last data buffer
uint16_t status = KEEP_DTOG(USB->EPnR[0]);
// keep DTOGs, clear CTR_RX,TX, set TX VALID, leave stat_Rx
USB->EPnR[0] = (status & ~(USB_EPnR_CTR_RX|USB_EPnR_CTR_TX|USB_EPnR_STAT_RX))
^ USB_EPnR_STAT_TX;
uint32_t ctr = 1000000;
while(--ctr && (USB->ISTR & USB_ISTR_CTR) == 0){IWDG->KR = IWDG_REFRESH;};
if((USB->ISTR & USB_ISTR_CTR) == 0){
return;
}
if(needzlp) EP_WriteIRQ(0, (uint8_t*)0, 0);
}
}
}
static inline void get_descriptor(){
uint8_t descrtype = setup_packet->wValue >> 8,
descridx = setup_packet->wValue & 0xff;
switch(descrtype){
case DEVICE_DESCRIPTOR:
wr0(USB_DeviceDescriptor, sizeof(USB_DeviceDescriptor));
break;
case CONFIGURATION_DESCRIPTOR:
wr0(USB_ConfigDescriptor, sizeof(USB_ConfigDescriptor));
break;
case STRING_DESCRIPTOR:
if(descridx < iDESCR_AMOUNT) wr0((const uint8_t *)StringDescriptor[descridx], *((uint8_t*)StringDescriptor[descridx]));
else EP_WriteIRQ(0, (uint8_t*)0, 0);
break;
case DEVICE_QUALIFIER_DESCRIPTOR:
wr0(USB_DeviceQualifierDescriptor, USB_DeviceQualifierDescriptor[0]);
break;
default:
break;
}
}
static uint16_t configuration = 0; // reply for GET_CONFIGURATION (==1 if configured)
static inline void std_d2h_req(){
uint16_t status = 0; // bus powered
switch(setup_packet->bRequest){
case GET_DESCRIPTOR:
get_descriptor();
break;
case GET_STATUS:
EP_WriteIRQ(0, (uint8_t *)&status, 2); // send status: Bus Powered
break;
case GET_CONFIGURATION:
EP_WriteIRQ(0, (uint8_t*)&configuration, 1);
break;
default:
break;
}
}
// interrupt IN handler (never used?)
static void EP1_Handler(){
uint16_t epstatus = KEEP_DTOG(USB->EPnR[1]);
if(RX_FLAG(epstatus)) epstatus = (epstatus & ~USB_EPnR_STAT_TX) ^ USB_EPnR_STAT_RX; // set valid RX
else epstatus = epstatus & ~(USB_EPnR_STAT_TX|USB_EPnR_STAT_RX);
// clear CTR
epstatus = (epstatus & ~(USB_EPnR_CTR_RX|USB_EPnR_CTR_TX));
USB->EPnR[1] = epstatus;
}
// data IN/OUT handlers
static void transmit_Handler(){ // EP3IN
uint16_t epstatus = KEEP_DTOG_STAT(USB->EPnR[3]);
// clear CTR keep DTOGs & STATs
USB->EPnR[3] = (epstatus & ~(USB_EPnR_CTR_TX)); // clear TX ctr
send_next();
}
static void receive_Handler(){ // EP2OUT
uint8_t buf[USB_RXBUFSZ];
uint16_t epstatus = KEEP_DTOG(USB->EPnR[2]);
uint8_t sz = EP_Read(2, (uint8_t*)buf);
if(sz){
if(RB_write((ringbuffer*)&rbin, buf, sz) != sz) bufovrfl = 1;
}
// keep stat_tx & set ACK rx, clear RX ctr
USB->EPnR[2] = (epstatus & ~USB_EPnR_CTR_RX) ^ USB_EPnR_STAT_RX;
}
static inline void std_h2d_req(){
switch(setup_packet->bRequest){
case SET_ADDRESS:
// new address will be assigned later - after acknowlegement or request to host
USB_Addr = setup_packet->wValue;
break;
case SET_CONFIGURATION:
// Now device configured
configuration = setup_packet->wValue;
EP_Init(1, EP_TYPE_INTERRUPT, USB_EP1BUFSZ, 0, EP1_Handler); // IN1 - transmit
EP_Init(2, EP_TYPE_BULK, 0, USB_RXBUFSZ, receive_Handler); // OUT2 - receive data
EP_Init(3, EP_TYPE_BULK, USB_TXBUFSZ, 0, transmit_Handler); // IN3 - transmit data
break;
default:
break;
}
}
/*
bmRequestType: 76543210
7 direction: 0 - host->device, 1 - device->host
65 type: 0 - standard, 1 - class, 2 - vendor
4..0 getter: 0 - device, 1 - interface, 2 - endpoint, 3 - other
*/
/**
* Endpoint0 (control) handler
*/
void EP0_Handler(){
uint16_t epstatus = USB->EPnR[0]; // EP0R on input -> return this value after modifications
uint8_t reqtype = setup_packet->bmRequestType & 0x7f;
uint8_t dev2host = (setup_packet->bmRequestType & 0x80) ? 1 : 0;
int rxflag = RX_FLAG(epstatus);
if(rxflag && SETUP_FLAG(epstatus)){
switch(reqtype){
case STANDARD_DEVICE_REQUEST_TYPE: // standard device request
if(dev2host){
std_d2h_req();
}else{
std_h2d_req();
EP_WriteIRQ(0, (uint8_t *)0, 0);
}
break;
case STANDARD_ENDPOINT_REQUEST_TYPE: // standard endpoint request
if(setup_packet->bRequest == CLEAR_FEATURE){
EP_WriteIRQ(0, (uint8_t *)0, 0);
}
break;
case VENDOR_REQUEST_TYPE:
vendor_handler(setup_packet);
break;
case CONTROL_REQUEST_TYPE:
switch(setup_packet->bRequest){
case GET_LINE_CODING:
EP_WriteIRQ(0, (uint8_t*)&lineCoding, sizeof(lineCoding));
break;
case SET_LINE_CODING: // omit this for next stage, when data will come
break;
case SET_CONTROL_LINE_STATE:
usbON = 1;
clstate_handler(setup_packet->wValue);
break;
case SEND_BREAK:
usbON = 0;
break_handler();
break;
default:
break;
}
if(setup_packet->bRequest != GET_LINE_CODING) EP_WriteIRQ(0, (uint8_t *)0, 0); // write acknowledgement
break;
default:
EP_WriteIRQ(0, (uint8_t *)0, 0);
}
}else if(rxflag){ // got data over EP0 or host acknowlegement
if(endpoints[0].rx_cnt){
if(setup_packet->bRequest == SET_LINE_CODING){
linecoding_handler((usb_LineCoding*)ep0databuf);
}
}
} else if(TX_FLAG(epstatus)){ // package transmitted
// now we can change address after enumeration
if ((USB->DADDR & USB_DADDR_ADD) != USB_Addr){
USB->DADDR = USB_DADDR_EF | USB_Addr;
usbON = 0;
}
}
epstatus = KEEP_DTOG(USB->EPnR[0]);
if(rxflag) epstatus ^= USB_EPnR_STAT_TX; // start ZLP/data transmission
else epstatus &= ~USB_EPnR_STAT_TX; // or leave unchanged
// keep DTOGs, clear CTR_RX,TX, set RX VALID
USB->EPnR[0] = (epstatus & ~(USB_EPnR_CTR_RX|USB_EPnR_CTR_TX)) ^ USB_EPnR_STAT_RX;
}
/**
* Write data to EP buffer (called from IRQ handler)
* @param number - EP number
* @param *buf - array with data
* @param size - its size
*/
void EP_WriteIRQ(uint8_t number, const uint8_t *buf, uint16_t size){
if(size > endpoints[number].txbufsz) size = endpoints[number].txbufsz;
uint16_t N2 = (size + 1) >> 1;
// the buffer is 16-bit, so we should copy data as it would be uint16_t
uint16_t *buf16 = (uint16_t *)buf;
#if defined USB1_16
// very bad: what if `size` is odd?
uint32_t *out = (uint32_t *)endpoints[number].tx_buf;
for(int i = 0; i < N2; ++i, ++out){
*out = buf16[i];
}
#elif defined USB2_16
// use memcpy instead?
for(int i = 0; i < N2; i++){
endpoints[number].tx_buf[i] = buf16[i];
}
#else
#error "Define USB1_16 or USB2_16"
#endif
USB_BTABLE->EP[number].USB_COUNT_TX = size;
}
/**
* Write data to EP buffer (called outside IRQ handler)
* @param number - EP number
* @param *buf - array with data
* @param size - its size
*/
void EP_Write(uint8_t number, const uint8_t *buf, uint16_t size){
EP_WriteIRQ(number, buf, size);
uint16_t status = KEEP_DTOG(USB->EPnR[number]);
// keep DTOGs, clear CTR_TX & set TX VALID to start transmission
USB->EPnR[number] = (status & ~(USB_EPnR_CTR_TX)) ^ USB_EPnR_STAT_TX;
}
/*
* Copy data from EP buffer into user buffer area
* @param *buf - user array for data
* @return amount of data read
*/
int EP_Read(uint8_t number, uint8_t *buf){
int sz = endpoints[number].rx_cnt;
if(!sz) return 0;
endpoints[number].rx_cnt = 0;
#if defined USB1_16
int n = (sz + 1) >> 1;
uint32_t *in = (uint32_t*)endpoints[number].rx_buf;
uint16_t *out = (uint16_t*)buf;
for(int i = 0; i < n; ++i, ++in)
out[i] = *(uint16_t*)in;
#elif defined USB2_16
// use memcpy instead?
for(int i = 0; i < sz; ++i)
buf[i] = endpoints[number].rx_buf[i];
#else
#error "Define USB1_16 or USB2_16"
#endif
return sz;
}

View File

@ -0,0 +1,171 @@
/*
* This file is part of the pl2303 project.
* Copyright 2023 Edward V. Emelianov <edward.emelianoff@gmail.com>.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#pragma once
#include <wchar.h>
#include "usbhw.h"
#define EP0DATABUF_SIZE (64)
#define LASTADDR_DEFAULT (STM32ENDPOINTS * 8)
// bmRequestType & 0x7f
#define STANDARD_DEVICE_REQUEST_TYPE 0
#define STANDARD_ENDPOINT_REQUEST_TYPE 2
#define VENDOR_REQUEST_TYPE 0x40
#define CONTROL_REQUEST_TYPE 0x21
// bRequest, standard; for bmRequestType == 0x80
#define GET_STATUS 0x00
#define GET_DESCRIPTOR 0x06
#define GET_CONFIGURATION 0x08
// for bmRequestType == 0
#define CLEAR_FEATURE 0x01
#define SET_FEATURE 0x03 // unused
#define SET_ADDRESS 0x05
#define SET_DESCRIPTOR 0x07 // unused
#define SET_CONFIGURATION 0x09
// for bmRequestType == 0x81, 1 or 0xB2
#define GET_INTERFACE 0x0A // unused
#define SET_INTERFACE 0x0B // unused
#define SYNC_FRAME 0x0C // unused
#define VENDOR_REQUEST 0x01 // unused
// Class-Specific Control Requests
#define SEND_ENCAPSULATED_COMMAND 0x00 // unused
#define GET_ENCAPSULATED_RESPONSE 0x01 // unused
#define SET_COMM_FEATURE 0x02 // unused
#define GET_COMM_FEATURE 0x03 // unused
#define CLEAR_COMM_FEATURE 0x04 // unused
#define SET_LINE_CODING 0x20
#define GET_LINE_CODING 0x21
#define SET_CONTROL_LINE_STATE 0x22
#define SEND_BREAK 0x23
// control line states
#define CONTROL_DTR 0x01
#define CONTROL_RTS 0x02
// string descriptors
enum{
iLANGUAGE_DESCR,
iMANUFACTURER_DESCR,
iPRODUCT_DESCR,
iSERIAL_DESCR,
iINTERFACE_DESCR,
iDESCR_AMOUNT
};
// Types of descriptors
#define DEVICE_DESCRIPTOR 0x01
#define CONFIGURATION_DESCRIPTOR 0x02
#define STRING_DESCRIPTOR 0x03
#define DEVICE_QUALIFIER_DESCRIPTOR 0x06
#define RX_FLAG(epstat) (epstat & USB_EPnR_CTR_RX)
#define TX_FLAG(epstat) (epstat & USB_EPnR_CTR_TX)
#define SETUP_FLAG(epstat) (epstat & USB_EPnR_SETUP)
// EPnR bits manipulation
#define KEEP_DTOG_STAT(EPnR) (EPnR & ~(USB_EPnR_STAT_RX|USB_EPnR_STAT_TX|USB_EPnR_DTOG_RX|USB_EPnR_DTOG_TX))
#define KEEP_DTOG(EPnR) (EPnR & ~(USB_EPnR_DTOG_RX|USB_EPnR_DTOG_TX))
// EP types
#define EP_TYPE_BULK 0x00
#define EP_TYPE_CONTROL 0x01
#define EP_TYPE_ISO 0x02
#define EP_TYPE_INTERRUPT 0x03
#define LANG_US (uint16_t)0x0409
#define _USB_STRING_(name, str) \
static const struct name \
{ \
uint8_t bLength; \
uint8_t bDescriptorType; \
uint16_t bString[(sizeof(str) - 2) / 2]; \
\
} \
name = {sizeof(name), 0x03, str}
#define _USB_LANG_ID_(name, lng_id) \
\
static const struct name \
{ \
uint8_t bLength; \
uint8_t bDescriptorType; \
uint16_t bString; \
\
} \
name = {0x04, 0x03, lng_id}
// EP0 configuration packet
typedef struct {
uint8_t bmRequestType;
uint8_t bRequest;
uint16_t wValue;
uint16_t wIndex;
uint16_t wLength;
} config_pack_t;
// endpoints state
typedef struct{
uint16_t *tx_buf; // transmission buffer address
uint16_t txbufsz; // transmission buffer size
uint8_t *rx_buf; // reception buffer address
void (*func)(); // endpoint action function
unsigned rx_cnt : 10; // received data counter
} ep_t;
typedef struct {
uint32_t dwDTERate;
uint8_t bCharFormat;
#define USB_CDC_1_STOP_BITS 0
#define USB_CDC_1_5_STOP_BITS 1
#define USB_CDC_2_STOP_BITS 2
uint8_t bParityType;
#define USB_CDC_NO_PARITY 0
#define USB_CDC_ODD_PARITY 1
#define USB_CDC_EVEN_PARITY 2
#define USB_CDC_MARK_PARITY 3
#define USB_CDC_SPACE_PARITY 4
uint8_t bDataBits;
} __attribute__ ((packed)) usb_LineCoding;
typedef struct {
uint8_t bmRequestType;
uint8_t bNotificationType;
uint16_t wValue;
uint16_t wIndex;
uint16_t wLength;
} __attribute__ ((packed)) usb_cdc_notification;
extern ep_t endpoints[];
extern volatile uint8_t usbON;
extern uint8_t ep0databuf[], setupdatabuf[];
void EP0_Handler();
void EP_WriteIRQ(uint8_t number, const uint8_t *buf, uint16_t size);
void EP_Write(uint8_t number, const uint8_t *buf, uint16_t size);
int EP_Read(uint8_t number, uint8_t *buf);
usb_LineCoding getLineCoding();
void linecoding_handler(usb_LineCoding *lc);
void clstate_handler(uint16_t val);
void break_handler();
void vendor_handler(config_pack_t *packet);

View File

@ -0,0 +1,123 @@
/*
* This file is part of the pl2303 project.
* Copyright 2023 Edward V. Emelianov <edward.emelianoff@gmail.com>.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include "usb.h"
#include "usb_lib.h"
// here we suppose that all PIN settings done in hw_setup earlier
void USB_setup(){
NVIC_DisableIRQ(USB_LP_IRQn);
// remap USB LP & Wakeup interrupts to 75 and 76 - works only on pure F303
RCC->APB2ENR |= RCC_APB2ENR_SYSCFGEN; // enable tacting of SYSCFG
SYSCFG->CFGR1 |= SYSCFG_CFGR1_USB_IT_RMP;
RCC->APB1ENR |= RCC_APB1ENR_USBEN;
USB->CNTR = USB_CNTR_FRES; // Force USB Reset
for(uint32_t ctr = 0; ctr < 72000; ++ctr) nop(); // wait >1ms
//uint32_t ctr = 0;
USB->CNTR = 0;
USB->BTABLE = 0;
USB->DADDR = 0;
USB->ISTR = 0;
USB->CNTR = USB_CNTR_RESETM | USB_CNTR_WKUPM; // allow only wakeup & reset interrupts
NVIC_EnableIRQ(USB_LP_IRQn);
}
static uint16_t lastaddr = LASTADDR_DEFAULT;
/**
* Endpoint initialisation
* @param number - EP num (0...7)
* @param type - EP type (EP_TYPE_BULK, EP_TYPE_CONTROL, EP_TYPE_ISO, EP_TYPE_INTERRUPT)
* @param txsz - transmission buffer size @ USB/CAN buffer
* @param rxsz - reception buffer size @ USB/CAN buffer
* @param uint16_t (*func)(ep_t *ep) - EP handler function
* @return 0 if all OK
*/
int EP_Init(uint8_t number, uint8_t type, uint16_t txsz, uint16_t rxsz, void (*func)(ep_t ep)){
if(number >= STM32ENDPOINTS) return 4; // out of configured amount
if(txsz > USB_BTABLE_SIZE || rxsz > USB_BTABLE_SIZE) return 1; // buffer too large
if(lastaddr + txsz + rxsz >= USB_BTABLE_SIZE) return 2; // out of btable
USB->EPnR[number] = (type << 9) | (number & USB_EPnR_EA);
USB->EPnR[number] ^= USB_EPnR_STAT_RX | USB_EPnR_STAT_TX_1;
if(rxsz & 1 || rxsz > 512) return 3; // wrong rx buffer size
uint16_t countrx = 0;
if(rxsz < 64) countrx = rxsz / 2;
else{
if(rxsz & 0x1f) return 3; // should be multiple of 32
countrx = 31 + rxsz / 32;
}
USB_BTABLE->EP[number].USB_ADDR_TX = lastaddr;
endpoints[number].tx_buf = (uint16_t *)(USB_BTABLE_BASE + lastaddr * ACCESSZ);
endpoints[number].txbufsz = txsz;
lastaddr += txsz;
USB_BTABLE->EP[number].USB_COUNT_TX = 0;
USB_BTABLE->EP[number].USB_ADDR_RX = lastaddr;
endpoints[number].rx_buf = (uint8_t *)(USB_BTABLE_BASE + lastaddr * ACCESSZ);
lastaddr += rxsz;
USB_BTABLE->EP[number].USB_COUNT_RX = countrx << 10;
endpoints[number].func = func;
return 0;
}
// standard IRQ handler
void usb_lp_isr(){
if(USB->ISTR & USB_ISTR_RESET){
usbON = 0;
// Reinit registers
USB->CNTR = USB_CNTR_RESETM | USB_CNTR_CTRM | USB_CNTR_SUSPM | USB_CNTR_WKUPM;
// Endpoint 0 - CONTROL
// ON USB LS size of EP0 may be 8 bytes, but on FS it should be 64 bytes!
lastaddr = LASTADDR_DEFAULT;
// clear address, leave only enable bit
USB->DADDR = USB_DADDR_EF;
if(EP_Init(0, EP_TYPE_CONTROL, USB_EP0_BUFSZ, USB_EP0_BUFSZ, EP0_Handler)){
return;
}
USB->ISTR = ~USB_ISTR_RESET;
}
if(USB->ISTR & USB_ISTR_CTR){
// EP number
uint8_t n = USB->ISTR & USB_ISTR_EPID;
// copy status register
uint16_t epstatus = USB->EPnR[n];
// copy received bytes amount
endpoints[n].rx_cnt = USB_BTABLE->EP[n].USB_COUNT_RX & 0x3FF; // low 10 bits is counter
// check direction
if(USB->ISTR & USB_ISTR_DIR){ // OUT interrupt - receive data, CTR_RX==1 (if CTR_TX == 1 - two pending transactions: receive following by transmit)
if(n == 0){ // control endpoint
if(epstatus & USB_EPnR_SETUP){ // setup packet -> copy data to conf_pack
EP_Read(0, setupdatabuf);
// interrupt handler will be called later
}else if(epstatus & USB_EPnR_CTR_RX){ // data packet -> push received data to ep0databuf
EP_Read(0, ep0databuf);
}
}
}
// call EP handler
if(endpoints[n].func) endpoints[n].func(endpoints[n]);
}
if(USB->ISTR & USB_ISTR_SUSP){ // suspend -> still no connection, may sleep
usbON = 0;
USB->CNTR |= USB_CNTR_FSUSP | USB_CNTR_LP_MODE;
USB->ISTR = ~USB_ISTR_SUSP;
}
if(USB->ISTR & USB_ISTR_WKUP){ // wakeup
USB->CNTR &= ~(USB_CNTR_FSUSP | USB_CNTR_LP_MODE); // clear suspend flags
USB->ISTR = ~USB_ISTR_WKUP;
}
}

View File

@ -0,0 +1,113 @@
/*
* This file is part of the pl2303 project.
* Copyright 2023 Edward V. Emelianov <edward.emelianoff@gmail.com>.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#pragma once
#include <stm32f3.h>
// max endpoints number
#define STM32ENDPOINTS 8
/**
* Buffers size definition
**/
#define USB_BTABLE_SIZE 768
// first 64 bytes of USB_BTABLE are registers!
//#define USB_EP0_BASEADDR 64
// for USB FS EP0 buffers are from 8 to 64 bytes long (64 for PL2303)
#define USB_EP0_BUFSZ 64
// USB transmit buffer size (64 for PL2303)
#define USB_TXBUFSZ 64
// USB receive buffer size (64 for PL2303)
#define USB_RXBUFSZ 64
// EP1 - interrupt - buffer size
#define USB_EP1BUFSZ 8
#define USB_BTABLE_BASE 0x40006000
#define USB ((USB_TypeDef *) USB_BASE)
#ifdef USB_BTABLE
#undef USB_BTABLE
#endif
#define USB_BTABLE ((USB_BtableDef *)(USB_BTABLE_BASE))
#define USB_ISTR_EPID 0x0000000F
#define USB_FNR_LSOF_0 0x00000800
#define USB_FNR_lSOF_1 0x00001000
#define USB_LPMCSR_BESL_0 0x00000010
#define USB_LPMCSR_BESL_1 0x00000020
#define USB_LPMCSR_BESL_2 0x00000040
#define USB_LPMCSR_BESL_3 0x00000080
#define USB_EPnR_CTR_RX 0x00008000
#define USB_EPnR_DTOG_RX 0x00004000
#define USB_EPnR_STAT_RX 0x00003000
#define USB_EPnR_STAT_RX_0 0x00001000
#define USB_EPnR_STAT_RX_1 0x00002000
#define USB_EPnR_SETUP 0x00000800
#define USB_EPnR_EP_TYPE 0x00000600
#define USB_EPnR_EP_TYPE_0 0x00000200
#define USB_EPnR_EP_TYPE_1 0x00000400
#define USB_EPnR_EP_KIND 0x00000100
#define USB_EPnR_CTR_TX 0x00000080
#define USB_EPnR_DTOG_TX 0x00000040
#define USB_EPnR_STAT_TX 0x00000030
#define USB_EPnR_STAT_TX_0 0x00000010
#define USB_EPnR_STAT_TX_1 0x00000020
#define USB_EPnR_EA 0x0000000F
#define USB_COUNTn_RX_BLSIZE 0x00008000
#define USB_COUNTn_NUM_BLOCK 0x00007C00
#define USB_COUNTn_RX 0x0000003F
#define USB_TypeDef USB_TypeDef_custom
typedef struct {
__IO uint32_t EPnR[STM32ENDPOINTS];
__IO uint32_t RESERVED[STM32ENDPOINTS];
__IO uint32_t CNTR;
__IO uint32_t ISTR;
__IO uint32_t FNR;
__IO uint32_t DADDR;
__IO uint32_t BTABLE;
} USB_TypeDef;
// F303 D/E have 2x16 access scheme
typedef struct{
#if defined USB2_16
__IO uint16_t USB_ADDR_TX;
__IO uint16_t USB_COUNT_TX;
__IO uint16_t USB_ADDR_RX;
__IO uint16_t USB_COUNT_RX;
#define ACCESSZ (1)
#define BUFTYPE uint8_t
#elif defined USB1_16
__IO uint32_t USB_ADDR_TX;
__IO uint32_t USB_COUNT_TX;
__IO uint32_t USB_ADDR_RX;
__IO uint32_t USB_COUNT_RX;
#define ACCESSZ (2)
#define BUFTYPE uint16_t
#else
#error "Define USB1_16 or USB2_16"
#endif
} USB_EPDATA_TypeDef;
typedef struct{
__IO USB_EPDATA_TypeDef EP[STM32ENDPOINTS];
} USB_BtableDef;
void USB_setup();
int EP_Init(uint8_t number, uint8_t type, uint16_t txsz, uint16_t rxsz, void (*func)());

View File

@ -0,0 +1,2 @@
#define BUILD_NUMBER "0"
#define BUILD_DATE "2023-04-17"