From fa67fabbb6abfaf76b25c35574da7b19544f3f87 Mon Sep 17 00:00:00 2001 From: Bdale Garbee Date: Fri, 6 Aug 2021 23:23:46 -0600 Subject: [PATCH] add footprint for CC1310 --- packages/.gitignore | 1 + packages/Makefile | 3 +- packages/RGZ0048A.py | 157 +++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 160 insertions(+), 1 deletion(-) create mode 100755 packages/RGZ0048A.py diff --git a/packages/.gitignore b/packages/.gitignore index 41eaf60..5a93bf2 100644 --- a/packages/.gitignore +++ b/packages/.gitignore @@ -132,3 +132,4 @@ SOIJ8.fp AT1220.fp LPH.fp FA-20H.fp +RGZ0048A.fp diff --git a/packages/Makefile b/packages/Makefile index 15ccd96..57947c0 100644 --- a/packages/Makefile +++ b/packages/Makefile @@ -147,7 +147,8 @@ FOOTPRINTS= \ SOIJ8.fp \ AT1220.fp \ LPH.fp \ - FA-20H.fp + FA-20H.fp \ + RGZ0048A.fp .5c.fp: nickle $*.5c -o $@ diff --git a/packages/RGZ0048A.py b/packages/RGZ0048A.py new file mode 100755 index 0000000..832b52b --- /dev/null +++ b/packages/RGZ0048A.py @@ -0,0 +1,157 @@ +#!/usr/bin/python2 +# Copyright 2021 by Bdale Garbee . GPLv3 +# +# Emit PCB footprint for RGZ0048A package used by TI CC1310 with RGZT suffix +# + +# dimensions in mm from the ti/cc1310/cc1310.pdf datasheet + +PinWidth = 0.24 +PinResist = 0.38 # width of gap in solder resist over pad +PinHeight = 0.6 +PinSpacing = 0.50 +Overall = 6.80 +GndSquare = 5.15 +GndSquareMask = 5.41 +PasteSquare = 1.06 # paste spots over ground tab +PasteGrid = 1.26 +ViaDrill = 0.254 # mfg spec is 0.2, >= 10 mil AC standard spec +ViaPadSize = 0.5 +CoreViaSpacing = 1.26 +SideViaSpacing = 1.065 + +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 "QFN48" "" "" 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), \ + '"pin49" "49" "square,nopaste"]' + +# vias in the ground pad under the chip +for viarow in range (-1,2): + # outer rows + print ' Pin[',\ + mm2mils100(-CoreViaSpacing - SideViaSpacing), \ + mm2mils100(viarow * CoreViaSpacing), \ + mm2mils100(ViaPadSize), \ + mm2mils100(ViaPadSize), \ + 0, \ + mm2mils100(ViaDrill), \ + '"pin49" "49" 0x0002]' + + print ' Pin[',\ + mm2mils100(CoreViaSpacing + SideViaSpacing), \ + mm2mils100(viarow * CoreViaSpacing), \ + mm2mils100(ViaPadSize), \ + mm2mils100(ViaPadSize), \ + 0, \ + mm2mils100(ViaDrill), \ + '"pin49" "49" 0x0002]' + + print ' Pin[',\ + mm2mils100(viarow * CoreViaSpacing), \ + mm2mils100(-CoreViaSpacing - SideViaSpacing), \ + mm2mils100(ViaPadSize), \ + mm2mils100(ViaPadSize), \ + 0, \ + mm2mils100(ViaDrill), \ + '"pin49" "49" 0x0002]' + + print ' Pin[',\ + mm2mils100(viarow * CoreViaSpacing), \ + mm2mils100(CoreViaSpacing + SideViaSpacing), \ + mm2mils100(ViaPadSize), \ + mm2mils100(ViaPadSize), \ + 0, \ + mm2mils100(ViaDrill), \ + '"pin49" "49" 0x0002]' + + # center array + for viacol in range (-1,2): + print ' Pin[',\ + mm2mils100(viacol * CoreViaSpacing), \ + mm2mils100(viarow * CoreViaSpacing), \ + mm2mils100(ViaPadSize), \ + mm2mils100(ViaPadSize), \ + 0, \ + mm2mils100(ViaDrill), \ + '"pin49" "49" 0x0002]' + +# solder paste squares in a grid on central ground pad +for pasterow in range (-2, 2): + for pastecol in range (-2, 2): + 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)), \ + '"pin49" "49" "square"]' + +# pins +for pin in range (1,13): + print ' Pad[',\ + mm2mils100(-3.25 + pin * PinSpacing), \ + mm2mils100(-Overall/2 - PinHeight/2 + PinWidth/2), \ + mm2mils100(-3.25 + pin * PinSpacing), \ + mm2mils100(-Overall/2 + PinHeight/2 - PinWidth/2), \ + mm2mils100(PinWidth), \ + mm2mils100(PinSpacing - PinWidth), \ + mm2mils100(PinResist), \ + '"pin%i"' % (37-pin), '"%i"' % (37-pin), '"square"]' + + print ' Pad[',\ + mm2mils100(-3.25 + pin * PinSpacing), \ + mm2mils100(+Overall/2 - PinHeight/2 + PinWidth/2), \ + mm2mils100(-3.25 + pin * 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(-3.25 + pin * PinSpacing), \ + mm2mils100(Overall/2 + PinHeight/2 - PinWidth/2), \ + mm2mils100(-3.25 + pin * PinSpacing), \ + mm2mils100(PinWidth), \ + mm2mils100(PinSpacing - PinWidth), \ + mm2mils100(PinResist), \ + '"pin%i"' % (25-pin), '"%i"' % (25-pin), '"square"]' + + print ' Pad[',\ + mm2mils100(-Overall/2 - PinHeight/2 + PinWidth/2), \ + mm2mils100(-3.25 + pin * PinSpacing), \ + mm2mils100(-Overall/2 + PinHeight/2 - PinWidth/2), \ + mm2mils100(-3.25 + pin * PinSpacing), \ + mm2mils100(PinWidth), \ + mm2mils100(PinSpacing - PinWidth), \ + mm2mils100(PinResist), \ + '"pin%i"' % (36+pin), '"%i"' % (36+pin), '"square"]' + +print ' ElementArc[',\ + mm2mils100(-3.6), \ + mm2mils100(3.6), \ + '500 500 0 360 1000 ]' +print ")" -- 2.47.2