2 # Copyright 2017 by Bdale Garbee <bdale@gag.com>. GPLv3
4 # Program to emit PCB footprint for TI ADS124S0X in LQFP32 package
7 # TI doesn't provide a recommended footprint for this package, and instead
8 # points to IPC standards. Searching on those yielded a LTC packaging
9 # datasheet TQFP_32_05-08-1735.pdf, so dimensions in mm taken from that.
14 Inside = 5.2 # size of square inside rows of pins
16 BodySize = 5.0 # size of package for square in silk
18 # tweaked resist to get 4 mils width between pads to meet OshPark rules
19 PinResist = PinWidth + (2 * 0.063)
23 # we're going to use the 1/100 of a mil fundamental unit form
25 return int( mm / 25.4 * 1000.0 * 100.0 + 0.5 )
27 print '# author: Bdale Garbee'
28 print '# email: bdale@gag.com'
29 print '# dist-license: GPL 3'
30 print '# use-license: unlimited'
32 print 'Element[0x0 "S-PQFP-G32" "" "" 0 0 0 0 0 100 0x0]'
36 for pin in range (1,9):
38 mm2mils100((pin - 4.5) * PinSpacing), \
39 mm2mils100(-Inside/2 - PinWidth/2), \
40 mm2mils100((pin - 4.5) * PinSpacing), \
41 mm2mils100(-Inside/2 - PinHeight + PinWidth/2), \
42 mm2mils100(PinWidth), \
43 mm2mils100(PinSpacing - PinWidth), \
44 mm2mils100(PinResist), \
45 '"pin%i"' % (9-pin), '"%i"' % (9-pin), '0x0100]'
48 mm2mils100((pin - 4.5) * PinSpacing), \
49 mm2mils100(+Inside/2 + PinHeight - PinWidth/2), \
50 mm2mils100((pin - 4.5) * PinSpacing), \
51 mm2mils100(+Inside/2 + PinWidth/2), \
52 mm2mils100(PinWidth), \
53 mm2mils100(PinSpacing - PinWidth), \
54 mm2mils100(PinResist), \
55 '"pin%i"' % (16+pin), '"%i"' % (16+pin), '0x0100]'
58 mm2mils100(Inside/2 + PinHeight - PinWidth/2), \
59 mm2mils100((pin - 4.5) * PinSpacing), \
60 mm2mils100(Inside/2 + PinWidth/2), \
61 mm2mils100((pin - 4.5) * PinSpacing), \
62 mm2mils100(PinWidth), \
63 mm2mils100(PinSpacing - PinWidth), \
64 mm2mils100(PinResist), \
65 '"pin%i"' % (33-pin), '"%i"' % (33-pin), '0x0100]'
68 mm2mils100(-Inside/2 - PinWidth/2), \
69 mm2mils100((pin - 4.5) * PinSpacing), \
70 mm2mils100(-Inside/2 - PinHeight + PinWidth/2), \
71 mm2mils100((pin - 4.5) * PinSpacing), \
72 mm2mils100(PinWidth), \
73 mm2mils100(PinSpacing - PinWidth), \
74 mm2mils100(PinResist), \
75 '"pin%i"' % (8+pin), '"%i"' % (8+pin), '0x0100]'
78 print ' ElementLine[',\
79 mm2mils100(-BodySize/2), \
80 mm2mils100(-BodySize/2), \
81 mm2mils100(-BodySize/2), \
82 mm2mils100( BodySize/2), \
85 print ' ElementLine[',\
86 mm2mils100(-BodySize/2), \
87 mm2mils100( BodySize/2), \
88 mm2mils100( BodySize/2), \
89 mm2mils100( BodySize/2), \
92 print ' ElementLine[',\
93 mm2mils100( BodySize/2), \
94 mm2mils100( BodySize/2), \
95 mm2mils100( BodySize/2), \
96 mm2mils100(-BodySize/2), \
99 print ' ElementLine[',\
100 mm2mils100( BodySize/2), \
101 mm2mils100(-BodySize/2), \
102 mm2mils100(-BodySize/2), \
103 mm2mils100(-BodySize/2), \
107 print ' ElementArc[',\
108 mm2mils100( (BodySize/2)+0.3), \
109 mm2mils100(-((BodySize/2)+0.3)), \
110 '500 500 0 360 1000 ]'