From 83fa1a607a23490c3291680be7f37b823b2c46c8 Mon Sep 17 00:00:00 2001 From: Bdale Garbee Date: Tue, 21 Sep 2021 01:55:31 -0600 Subject: [PATCH] add a footprint for 32-pin variant of cc1310 --- packages/Makefile | 3 +- packages/RSM0032B.py | 152 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 154 insertions(+), 1 deletion(-) create mode 100755 packages/RSM0032B.py diff --git a/packages/Makefile b/packages/Makefile index c40fc88..9efa2cc 100644 --- a/packages/Makefile +++ b/packages/Makefile @@ -146,7 +146,8 @@ FOOTPRINTS= \ AT1220.fp \ LPH.fp \ FA-20H.fp \ - RGZ0048A.fp + RGZ0048A.fp \ + RSM0032B.fp .5c.fp: nickle $*.5c -o $@ diff --git a/packages/RSM0032B.py b/packages/RSM0032B.py new file mode 100755 index 0000000..4143c0f --- /dev/null +++ b/packages/RSM0032B.py @@ -0,0 +1,152 @@ +#!/usr/bin/python2 +# Copyright 2021 by Bdale Garbee . GPLv3 +# +# Emit PCB footprint for RSM0032B package used by TI CC1310 with RSMR suffix +# + +# dimensions in mm from the ti/cc1310/cc1310.pdf datasheet + +PinWidth = 0.2 +PinResist = 0.2 # width of gap in solder resist over pad +PinHeight = 0.55 +PinSpacing = 0.40 +Overall = 4.00 +GndSquare = 2.8 +GndSquareMask = 2.9 +PasteSquare = 1.23 # paste spots over ground tab +PasteGrid = 1.43 +ViaDrill = 0.254 # mfg spec is 0.2, >= 10 mil AC standard spec +ViaPadSize = 0.5 +CoreViaSpacing = 1.15 + +import sys + +# we're going to use the 1/100 of a mil fundamental unit form +def mm2mils100( mm ): + return int( mm / 25.4 * 1000.0 * 100.0 + 0.5 ) + +print '# author: Bdale Garbee' +print '# email: bdale@gag.com' +print '# dist-license: GPL 3' +print '# use-license: unlimited' + +print 'Element[0x0 "RSM0032B" "" "" 0 0 0 0 0 100 0x0]' +print "(" + +# pad under the chip, must be grounded +print ' Pad[',\ + mm2mils100(0), \ + mm2mils100(0), \ + mm2mils100(0), \ + mm2mils100(0), \ + mm2mils100(GndSquare), \ + 0, \ + mm2mils100(GndSquareMask), \ + '"pin33" "33" "square,nopaste"]' + +# vias in the ground pad under the chip +print ' Pin[',\ + mm2mils100(-CoreViaSpacing), \ + mm2mils100(0), \ + mm2mils100(ViaPadSize), \ + mm2mils100(ViaPadSize), \ + 0, \ + mm2mils100(ViaDrill), \ + '"pin33" "33" 0x0002]' + +print ' Pin[',\ + mm2mils100(0), \ + mm2mils100(0), \ + mm2mils100(ViaPadSize), \ + mm2mils100(ViaPadSize), \ + 0, \ + mm2mils100(ViaDrill), \ + '"pin33" "33" 0x0002]' + +print ' Pin[',\ + mm2mils100(CoreViaSpacing), \ + mm2mils100(0), \ + mm2mils100(ViaPadSize), \ + mm2mils100(ViaPadSize), \ + 0, \ + mm2mils100(ViaDrill), \ + '"pin33" "33" 0x0002]' + +print ' Pin[',\ + mm2mils100(0), \ + mm2mils100(-CoreViaSpacing), \ + mm2mils100(ViaPadSize), \ + mm2mils100(ViaPadSize), \ + 0, \ + mm2mils100(ViaDrill), \ + '"pin33" "33" 0x0002]' + +print ' Pin[',\ + mm2mils100(0), \ + mm2mils100(CoreViaSpacing), \ + mm2mils100(ViaPadSize), \ + mm2mils100(ViaPadSize), \ + 0, \ + mm2mils100(ViaDrill), \ + '"pin33" "33" 0x0002]' + +# solder paste squares in a grid on central ground pad +for pasterow in range (-1, 1): + for pastecol in range (-1, 1): + print ' Pad[',\ + mm2mils100(pastecol * PasteGrid + PasteGrid/2), \ + mm2mils100(pasterow * PasteGrid + PasteGrid/2), \ + mm2mils100(pastecol * PasteGrid + PasteGrid/2), \ + mm2mils100(pasterow * PasteGrid + PasteGrid/2), \ + mm2mils100((PasteSquare)), \ + 0, \ + mm2mils100((PasteSquare)), \ + '"pin33" "33" "square"]' + +# pins +for pin in range (1,9): + print ' Pad[',\ + mm2mils100((pin - 4.5) * PinSpacing), \ + mm2mils100(-Overall/2 - PinHeight/2 + PinWidth/2), \ + mm2mils100((pin - 4.5) * PinSpacing), \ + mm2mils100(-Overall/2 + PinHeight/2 - PinWidth/2), \ + mm2mils100(PinWidth), \ + mm2mils100(PinSpacing - PinWidth), \ + mm2mils100(PinResist), \ + '"pin%i"' % (25-(pin)), '"%i"' % (25-(pin)), '"square"]' + + print ' Pad[',\ + mm2mils100((pin - 4.5) * PinSpacing), \ + mm2mils100(Overall/2 - PinHeight/2 + PinWidth/2), \ + mm2mils100((pin - 4.5) * PinSpacing), \ + mm2mils100(+Overall/2 + PinHeight/2 - PinWidth/2), \ + mm2mils100(PinWidth), \ + mm2mils100(PinSpacing - PinWidth), \ + mm2mils100(PinResist), \ + '"pin%i"' % pin, '"%i"' % pin, '"square"]' + + print ' Pad[',\ + mm2mils100(Overall/2 - PinHeight/2 + PinWidth/2), \ + mm2mils100((pin - 4.5) * PinSpacing), \ + mm2mils100(Overall/2 + PinHeight/2 - PinWidth/2), \ + mm2mils100((pin - 4.5) * PinSpacing), \ + mm2mils100(PinWidth), \ + mm2mils100(PinSpacing - PinWidth), \ + mm2mils100(PinResist), \ + '"pin%i"' % (17-pin), '"%i"' % (17-pin), '"square"]' + + print ' Pad[',\ + mm2mils100(-Overall/2 - PinHeight/2 + PinWidth/2), \ + mm2mils100((pin - 4.5) * PinSpacing), \ + mm2mils100(-Overall/2 + PinHeight/2 - PinWidth/2), \ + mm2mils100((pin - 4.5) * PinSpacing), \ + mm2mils100(PinWidth), \ + mm2mils100(PinSpacing - PinWidth), \ + mm2mils100(PinResist), \ + '"pin%i"' % (24+pin), '"%i"' % (24+pin), '"square"]' + +print ' ElementArc[',\ + mm2mils100(-2.25), \ + mm2mils100(2.25), \ + '500 500 0 360 1000 ]' +print ")" -- 2.47.2