From 0ec04f9a1c7f2e2ac3cd4add4f3988563a0c97aa Mon Sep 17 00:00:00 2001 From: Bdale Garbee Date: Fri, 26 Nov 2021 11:13:41 -0700 Subject: [PATCH] add lqfp80 for STM32G491ME --- packages/Makefile | 1 + packages/lqfp80.py | 105 +++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 106 insertions(+) create mode 100755 packages/lqfp80.py diff --git a/packages/Makefile b/packages/Makefile index 2e99d25..ec46d84 100644 --- a/packages/Makefile +++ b/packages/Makefile @@ -39,6 +39,7 @@ FOOTPRINTS= \ lqfp32.fp \ lqfp48.fp \ lqfp64.fp \ + lqfp80.fp \ lqfp100.fp \ LPCC16.fp \ MPU6000.fp \ diff --git a/packages/lqfp80.py b/packages/lqfp80.py new file mode 100755 index 0000000..437ec67 --- /dev/null +++ b/packages/lqfp80.py @@ -0,0 +1,105 @@ +#!/usr/bin/python2 +# Copyright 2021 by Bdale Garbee . GPLv3 +# +# Program to emit PCB footprint for LQFP80 12x12 mm package, ala STM32G491 +# + +# dimensions in mm from STM32L151 data sheet +PinWidth = 0.3 +PinHeight = 1.2 +PinResist = PinWidth + 0.16 +PinSpacing = 0.5 +BodySize = 12 +Overall = 14.7 + +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 "LQFP80" "" "" 0 0 0 0 0 100 0x0]' +print "(" + +# pins +for pin in range (1,21): + print ' Pad[',\ + mm2mils100((pin - 10.5) * PinSpacing), \ + mm2mils100(-Overall/2 + PinWidth/2), \ + mm2mils100((pin - 10.5) * PinSpacing), \ + mm2mils100(-Overall/2 + PinHeight - PinWidth/2), \ + mm2mils100(PinWidth), \ + mm2mils100(PinSpacing - PinWidth), \ + mm2mils100(PinResist), \ + '"pin%i"' % (21-pin), '"%i"' % (21-pin), '0x0100]' + + print ' Pad[',\ + mm2mils100((pin - 10.5) * PinSpacing), \ + mm2mils100(+Overall/2 - PinHeight + PinWidth/2), \ + mm2mils100((pin - 10.5) * PinSpacing), \ + mm2mils100(+Overall/2 - PinWidth/2), \ + mm2mils100(PinWidth), \ + mm2mils100(PinSpacing - PinWidth), \ + mm2mils100(PinResist), \ + '"pin%i"' % (40+pin), '"%i"' % (40+pin), '0x0100]' + + print ' Pad[',\ + mm2mils100(Overall/2 - PinHeight + PinWidth/2), \ + mm2mils100((pin - 10.5) * PinSpacing), \ + mm2mils100(Overall/2 - PinWidth/2), \ + mm2mils100((pin - 10.5) * PinSpacing), \ + mm2mils100(PinWidth), \ + mm2mils100(PinSpacing - PinWidth), \ + mm2mils100(PinResist), \ + '"pin%i"' % (81-pin), '"%i"' % (81-pin), '0x0100]' + + print ' Pad[',\ + mm2mils100(-Overall/2 + PinWidth/2), \ + mm2mils100((pin - 10.5) * PinSpacing), \ + mm2mils100(-Overall/2 + PinHeight - PinWidth/2), \ + mm2mils100((pin - 10.5) * PinSpacing), \ + mm2mils100(PinWidth), \ + mm2mils100(PinSpacing - PinWidth), \ + mm2mils100(PinResist), \ + '"pin%i"' % (20+pin), '"%i"' % (20+pin), '0x0100]' + + +print ' ElementLine[',\ + mm2mils100(-BodySize/2), \ + mm2mils100(-BodySize/2), \ + mm2mils100(-BodySize/2), \ + mm2mils100( BodySize/2), \ + '1000 ]' + +print ' ElementLine[',\ + mm2mils100(-BodySize/2), \ + mm2mils100( BodySize/2), \ + mm2mils100( BodySize/2), \ + mm2mils100( BodySize/2), \ + '1000 ]' + +print ' ElementLine[',\ + mm2mils100( BodySize/2), \ + mm2mils100( BodySize/2), \ + mm2mils100( BodySize/2), \ + mm2mils100(-BodySize/2), \ + '1000 ]' + +print ' ElementLine[',\ + mm2mils100( BodySize/2), \ + mm2mils100(-BodySize/2), \ + mm2mils100(-BodySize/2), \ + mm2mils100(-BodySize/2), \ + '1000 ]' + + +print ' ElementArc[',\ + mm2mils100( (BodySize/2)+0.3), \ + mm2mils100(-((BodySize/2)+0.3)), \ + '500 500 0 360 1000 ]' +print ")" -- 2.30.2