2 # Copyright 2021 by Bdale Garbee <bdale@gag.com>. GPLv3
4 # Emit PCB footprint for RHB0032E package used by TI CC1310 with RHMR suffix
7 # dimensions in mm from the ti/cc1310/cc1310.pdf datasheet
10 PinResist = 0.26 # width of gap in solder resist over pad
16 PasteSquare = 1.49 # paste spots over ground tab
18 ViaDrill = 0.254 # mfg spec is 0.2, >= 10 mil AC standard spec
20 CoreViaSpacing = 1.475
24 # we're going to use the 1/100 of a mil fundamental unit form
26 return int( mm / 25.4 * 1000.0 * 100.0 + 0.5 )
28 print '# author: Bdale Garbee'
29 print '# email: bdale@gag.com'
30 print '# dist-license: GPL 3'
31 print '# use-license: unlimited'
33 print 'Element[0x0 "RHB0032E" "" "" 0 0 0 0 0 100 0x0]'
36 # pad under the chip, must be grounded
42 mm2mils100(GndSquare), \
44 mm2mils100(GndSquareMask), \
45 '"pin33" "33" "square,nopaste"]'
47 # vias in the ground pad under the chip
49 mm2mils100(-CoreViaSpacing), \
51 mm2mils100(ViaPadSize), \
52 mm2mils100(ViaPadSize), \
54 mm2mils100(ViaDrill), \
55 '"pin33" "33" 0x0002]'
60 mm2mils100(ViaPadSize), \
61 mm2mils100(ViaPadSize), \
63 mm2mils100(ViaDrill), \
64 '"pin33" "33" 0x0002]'
67 mm2mils100(CoreViaSpacing), \
69 mm2mils100(ViaPadSize), \
70 mm2mils100(ViaPadSize), \
72 mm2mils100(ViaDrill), \
73 '"pin33" "33" 0x0002]'
77 mm2mils100(-CoreViaSpacing), \
78 mm2mils100(ViaPadSize), \
79 mm2mils100(ViaPadSize), \
81 mm2mils100(ViaDrill), \
82 '"pin33" "33" 0x0002]'
86 mm2mils100(CoreViaSpacing), \
87 mm2mils100(ViaPadSize), \
88 mm2mils100(ViaPadSize), \
90 mm2mils100(ViaDrill), \
91 '"pin33" "33" 0x0002]'
93 # solder paste squares in a grid on central ground pad
94 for pasterow in range (-1, 1):
95 for pastecol in range (-1, 1):
97 mm2mils100(pastecol * PasteGrid + PasteGrid/2), \
98 mm2mils100(pasterow * PasteGrid + PasteGrid/2), \
99 mm2mils100(pastecol * PasteGrid + PasteGrid/2), \
100 mm2mils100(pasterow * PasteGrid + PasteGrid/2), \
101 mm2mils100((PasteSquare)), \
103 mm2mils100((PasteSquare)), \
104 '"pin33" "33" "square"]'
107 for pin in range (1,9):
109 mm2mils100((pin - 4.5) * PinSpacing), \
110 mm2mils100(-Overall/2 - PinHeight/2 + PinWidth/2), \
111 mm2mils100((pin - 4.5) * PinSpacing), \
112 mm2mils100(-Overall/2 + PinHeight/2 - PinWidth/2), \
113 mm2mils100(PinWidth), \
114 mm2mils100(PinSpacing - PinWidth), \
115 mm2mils100(PinResist), \
116 '"pin%i"' % (25-(pin)), '"%i"' % (25-(pin)), '"square"]'
119 mm2mils100((pin - 4.5) * PinSpacing), \
120 mm2mils100(Overall/2 - PinHeight/2 + PinWidth/2), \
121 mm2mils100((pin - 4.5) * PinSpacing), \
122 mm2mils100(+Overall/2 + PinHeight/2 - PinWidth/2), \
123 mm2mils100(PinWidth), \
124 mm2mils100(PinSpacing - PinWidth), \
125 mm2mils100(PinResist), \
126 '"pin%i"' % pin, '"%i"' % pin, '"square"]'
129 mm2mils100(Overall/2 - PinHeight/2 + PinWidth/2), \
130 mm2mils100((pin - 4.5) * PinSpacing), \
131 mm2mils100(Overall/2 + PinHeight/2 - PinWidth/2), \
132 mm2mils100((pin - 4.5) * PinSpacing), \
133 mm2mils100(PinWidth), \
134 mm2mils100(PinSpacing - PinWidth), \
135 mm2mils100(PinResist), \
136 '"pin%i"' % (17-pin), '"%i"' % (17-pin), '"square"]'
139 mm2mils100(-Overall/2 - PinHeight/2 + PinWidth/2), \
140 mm2mils100((pin - 4.5) * PinSpacing), \
141 mm2mils100(-Overall/2 + PinHeight/2 - PinWidth/2), \
142 mm2mils100((pin - 4.5) * PinSpacing), \
143 mm2mils100(PinWidth), \
144 mm2mils100(PinSpacing - PinWidth), \
145 mm2mils100(PinResist), \
146 '"pin%i"' % (24+pin), '"%i"' % (24+pin), '"square"]'
148 print ' ElementArc[',\
151 '500 500 0 360 1000 ]'