2 # Copyright 2011 by Bdale Garbee <bdale@gag.com>. GPLv2
4 # Program to emit PCB footprint for STM32L151 LQFP100 14 x 14 mm package
7 # dimensions in mm from STM32L151 data sheet
10 PinResist = PinWidth + 0.16
17 # we're going to use the 1/100 of a mil fundamental unit form
19 return int( mm / 25.4 * 1000.0 * 100.0 + 0.5 )
21 print '# author: Bdale Garbee'
22 print '# email: bdale@gag.com'
23 print '# dist-license: GPL 2'
24 print '# use-license: unlimited'
26 print 'Element[0x0 "LQFP100" "" "" 0 0 0 0 0 100 0x0]'
30 for pin in range (1,26):
32 mm2mils100((pin - 13) * PinSpacing), \
33 mm2mils100(-Overall/2 + PinWidth/2), \
34 mm2mils100((pin - 13) * PinSpacing), \
35 mm2mils100(-Overall/2 + PinHeight - PinWidth/2), \
36 mm2mils100(PinWidth), \
37 mm2mils100(PinSpacing - PinWidth), \
38 mm2mils100(PinResist), \
39 '"pin%i"' % (26-pin), '"%i"' % (26-pin), '0x0100]'
42 mm2mils100((pin - 13) * PinSpacing), \
43 mm2mils100(+Overall/2 - PinHeight + PinWidth/2), \
44 mm2mils100((pin - 13) * PinSpacing), \
45 mm2mils100(+Overall/2 - PinWidth/2), \
46 mm2mils100(PinWidth), \
47 mm2mils100(PinSpacing - PinWidth), \
48 mm2mils100(PinResist), \
49 '"pin%i"' % (50+pin), '"%i"' % (50+pin), '0x0100]'
52 mm2mils100(Overall/2 - PinHeight + PinWidth/2), \
53 mm2mils100((pin - 13) * PinSpacing), \
54 mm2mils100(Overall/2 - PinWidth/2), \
55 mm2mils100((pin - 13) * PinSpacing), \
56 mm2mils100(PinWidth), \
57 mm2mils100(PinSpacing - PinWidth), \
58 mm2mils100(PinResist), \
59 '"pin%i"' % (101-pin), '"%i"' % (101-pin), '0x0100]'
62 mm2mils100(-Overall/2 + PinWidth/2), \
63 mm2mils100((pin - 13) * PinSpacing), \
64 mm2mils100(-Overall/2 + PinHeight - PinWidth/2), \
65 mm2mils100((pin - 13) * PinSpacing), \
66 mm2mils100(PinWidth), \
67 mm2mils100(PinSpacing - PinWidth), \
68 mm2mils100(PinResist), \
69 '"pin%i"' % (25+pin), '"%i"' % (25+pin), '0x0100]'
72 print ' ElementLine[',\
73 mm2mils100(-BodySize/2), \
74 mm2mils100(-BodySize/2), \
75 mm2mils100(-BodySize/2), \
76 mm2mils100( BodySize/2), \
79 print ' ElementLine[',\
80 mm2mils100(-BodySize/2), \
81 mm2mils100( BodySize/2), \
82 mm2mils100( BodySize/2), \
83 mm2mils100( BodySize/2), \
86 print ' ElementLine[',\
87 mm2mils100( BodySize/2), \
88 mm2mils100( BodySize/2), \
89 mm2mils100( BodySize/2), \
90 mm2mils100(-BodySize/2), \
93 print ' ElementLine[',\
94 mm2mils100( BodySize/2), \
95 mm2mils100(-BodySize/2), \
96 mm2mils100(-BodySize/2), \
97 mm2mils100(-BodySize/2), \
101 print ' ElementArc[',\
102 mm2mils100( (BodySize/2)+0.3), \
103 mm2mils100(-((BodySize/2)+0.3)), \
104 '500 500 0 360 1000 ]'