2 # Copyright 2016 by Bdale Garbee <bdale@gag.com>. GPLv3+
4 # Program to emit PCB footprint for Microchip BM70BLES1FC2 Bluetooth LE module
7 # dimensions in mm from BM70/71 Data Sheet
21 # we're going to use the 1/100 of a mil fundamental unit form
23 return int( mm / 25.4 * 1000.0 * 100.0 + 0.5 )
25 print '# author: Bdale Garbee'
26 print '# email: bdale@gag.com'
27 print '# dist-license: GPL 3+'
28 print '# use-license: unlimited'
30 print 'Element[0x0 "BM70BLES1FC2" "" "" 0 0 -10161 -12011 0 100 0x0]'
33 mm2mils100(BodyHeight - 21.2), \
34 mm2mils100(BodyWidth + PinOffset - PinWidth/2), \
35 mm2mils100(BodyHeight - 21.2), \
36 mm2mils100(BodyWidth + PinOffset - PinHeight + PinWidth/2), \
37 mm2mils100(PinWidth), \
38 mm2mils100(PinSpacing - PinWidth), \
39 mm2mils100(PinWidth)+600, \
43 mm2mils100(BodyHeight - 21.2), \
44 mm2mils100(-PinOffset + PinWidth/2), \
45 mm2mils100(BodyHeight - 21.2), \
46 mm2mils100(-PinOffset + PinHeight - PinWidth/2), \
47 mm2mils100(PinWidth), \
48 mm2mils100(PinSpacing - PinWidth), \
49 mm2mils100(PinWidth)+600, \
50 '"pin33" "33" 0x0100]'
53 mm2mils100(BodyHeight - 20.1), \
54 mm2mils100(BodyWidth + PinOffset - PinWidth/2), \
55 mm2mils100(BodyHeight - 20.1), \
56 mm2mils100(BodyWidth + PinOffset - PinHeight + PinWidth/2), \
57 mm2mils100(PinWidth), \
58 mm2mils100(PinSpacing - PinWidth), \
59 mm2mils100(PinWidth)+600, \
63 mm2mils100(BodyHeight - 20.1), \
64 mm2mils100(-PinOffset + PinWidth/2), \
65 mm2mils100(BodyHeight - 20.1), \
66 mm2mils100(-PinOffset + PinHeight - PinWidth/2), \
67 mm2mils100(PinWidth), \
68 mm2mils100(PinSpacing - PinWidth), \
69 mm2mils100(PinWidth)+600, \
70 '"pin32" "32" 0x0100]'
73 mm2mils100(BodyHeight - 13.9), \
74 mm2mils100(BodyWidth + PinOffset - PinWidth/2), \
75 mm2mils100(BodyHeight - 13.9), \
76 mm2mils100(BodyWidth + PinOffset - PinHeight + PinWidth/2), \
77 mm2mils100(PinWidth), \
78 mm2mils100(PinSpacing - PinWidth), \
79 mm2mils100(PinWidth)+600, \
83 mm2mils100(BodyHeight - 12.8), \
84 mm2mils100(BodyWidth + PinOffset - PinWidth/2), \
85 mm2mils100(BodyHeight - 12.8), \
86 mm2mils100(BodyWidth + PinOffset - PinHeight + PinWidth/2), \
87 mm2mils100(PinWidth), \
88 mm2mils100(PinSpacing - PinWidth), \
89 mm2mils100(PinWidth)+600, \
92 for pin in range (5,15):
94 mm2mils100(BodyHeight - 11.7 + ((pin - 5) * PinSpacing)), \
95 mm2mils100(BodyWidth + PinOffset - PinWidth/2), \
96 mm2mils100(BodyHeight - 11.7 + ((pin - 5) * PinSpacing)), \
97 mm2mils100(BodyWidth + PinOffset - PinHeight + PinWidth/2), \
98 mm2mils100(PinWidth), \
99 mm2mils100(PinSpacing - PinWidth), \
100 mm2mils100(PinWidth)+600, \
101 '"pin%i"' % pin, '"%i"' % pin, '0x0100]'
104 mm2mils100(BodyHeight - 11.7 + ((pin - 5) * PinSpacing)), \
105 mm2mils100(- PinOffset + PinWidth/2), \
106 mm2mils100(BodyHeight - 11.7 + ((pin - 5) * PinSpacing)), \
107 mm2mils100(- PinOffset + PinHeight - PinWidth/2), \
108 mm2mils100(PinWidth), \
109 mm2mils100(PinSpacing - PinWidth), \
110 mm2mils100(PinWidth)+600, \
111 '"pin%i"' % (36 - pin), '"%i"' % (36 - pin), '0x0100]'
113 for pin in range (15,22):
115 mm2mils100(BodyHeight + PinOffset - PinWidth/2), \
116 mm2mils100(BodyWidth - 2.7 + (-(pin - 15) * PinSpacing)), \
117 mm2mils100(BodyHeight - PinHeight + PinOffset + PinWidth/2), \
118 mm2mils100(BodyWidth - 2.7 + (-(pin - 15) * PinSpacing)), \
119 mm2mils100(PinWidth), \
120 mm2mils100(PinSpacing - PinWidth), \
121 mm2mils100(PinWidth)+600, \
122 '"pin%i"' % pin, '"%i"' % pin, '0x0100]'
127 print ' ElementLine[',\
131 mm2mils100(BodyWidth), \
134 print ' ElementLine[',\
136 mm2mils100(BodyWidth), \
137 mm2mils100(BodyHeight), \
138 mm2mils100(BodyWidth), \
141 print ' ElementLine[',\
142 mm2mils100(BodyHeight), \
143 mm2mils100(BodyWidth), \
144 mm2mils100(BodyHeight), \
148 print ' ElementLine[',\
149 mm2mils100(BodyHeight), \
155 # hash marks where gnd plane should end
157 print ' ElementLine[',\
158 mm2mils100(BodyHeight-GndEdgeLine), \
159 mm2mils100(BodyWidth-1), \
160 mm2mils100(BodyHeight-GndEdgeLine), \
161 mm2mils100(BodyWidth-3), \
164 print ' ElementLine[',\
165 mm2mils100(BodyHeight-GndEdgeLine), \
167 mm2mils100(BodyHeight-GndEdgeLine), \