From 87588bed0ed72bf44e01333d19915cbcebe6fb5a Mon Sep 17 00:00:00 2001 From: Werner Almesberger Date: Thu, 12 Aug 2010 09:39:13 -0300 Subject: [PATCH] Added QFN28 and QFN32 footprints for MCU and TXRX. --- BOOKSHELF | 8 ++++ modules/INFO | 22 +++++++++++ modules/qfn.fpd | 101 ++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 131 insertions(+) create mode 100644 modules/qfn.fpd diff --git a/BOOKSHELF b/BOOKSHELF index d7b2601..4e48115 100644 --- a/BOOKSHELF +++ b/BOOKSHELF @@ -39,3 +39,11 @@ D: http://jae-connector.com/en/pdf/SJ037525.pdf # Footprints of standard rectangular passive components N: stdpass D: http://www.vishay.com/docs/20035/dcrcwe3.pdf + +# NXP SOT617-3 package (QFN32 with a 3.6 x 3.6 mm center pad) +N: sot617-3-lp +A: nxp-qfn32-lp +D: http://www.nxp.com/documents/outline_drawing/sot617-3_po.pdf + +N: atmel-qfn +D: http://www.atmel.com/dyn/resources/prod_documents/doc8583.pdf diff --git a/modules/INFO b/modules/INFO index 6e6d954..17ae691 100644 --- a/modules/INFO +++ b/modules/INFO @@ -14,3 +14,25 @@ F: mini_usb_b # Standard rectangular passive components F: stdpass + +# "Generic" simple QFN +F: qfn +# +# The information for these packages comes from various sources: +# +# - the C8051F326 data sheet, for the QFN28 footprint (N: mcu) +# - the AT86F326 data sheet, for the QFN32 package dimensions (N: txrx) +# - Atmel's general recommendations for QFN land patterns (N: atmel-qfn) +# - NXP's SOT617-1 and SOT617-3, for package and land pattern: +# http://www.nxp.com/package/SOT617-1.html +# http://www.nxp.com/package/SOT617-3.html +# +# Known bugs: +# +# - we should distribute the solder paste in an array of small +# squares instead of just covering the whole center pad. +# - really ought to merge all the various QFN definitions (we have more +# over at gta02-core) into a single QFN file with a big mean table of +# everything +# +N: sot617-3-lp diff --git a/modules/qfn.fpd b/modules/qfn.fpd new file mode 100644 index 0000000..afc075f --- /dev/null +++ b/modules/qfn.fpd @@ -0,0 +1,101 @@ +/* MACHINE-GENERATED ! */ + +frame center { + set pin = pins+1 + + set x = D2+0.1mm + + set y = E2+0.1mm + + __0: vec @(x/2, y/2) + __1: vec @(-x/2, -y/2) + pad "$pin" . __0 +} + +frame pad { + set px = (dx*X1+dy*Y1)/2 + + set py = (dy*X1+dx*Y1)/2 + + set pin = side*pins/4+i+1 + + __0: vec @(px, py) + __1: vec @(-px, -py) + pad "$pin" __0 . +} + +frame side { + set pos = i-(pins/4-1)/2 + + loop i = 0, pins/4-1 + + __0: vec @(E*pos*dx, E*pos*dy) + frame pad . +} + +frame pads { + table + { side, dx, dy } + { 0, 0, -1 } + { 1, 1, 0 } + { 2, 0, 1 } + { 3, -1, 0 } + + __0: vec @(dy*C1/2, -dx*C2/2) + frame side . +} + +frame index { +} + +frame outline { + table + { index, dx, _, dy } + { 1, -1, 0, 0 } + { 0, 0, 0, -1 } + { 0, 1, 0, 0 } + { 0, 0, 0, 1 } + + set mx = dx*C1/2 + + set my = dy*C2/2 + + set cx = mx+my + + set cy = my-mx + + set ax = -Y1/2*dx + + set ay = -Y1/2*dy + + set bx = -Y1/2*dy + + set by = Y1/2*dx + + __0: vec @(cx, cy) + w: vec .(ax, ay) + line __0 . w + __2: vec __0(bx, by) + line __0 . w + __1: vec .(index*(ax-bx), index*(ay-by)) + line __2 . w +} + +package "QFN$pins" +unit mm + +table + { pins, X1, Y1, E, C1, C2, D2, E2 } + { 28, 0.25mm, 0.9mm, 0.5mm, 4.8mm, 4.8mm, 3.15mm, 3.15mm } + { 32, 0.29mm, 0.9mm, 0.5mm, 5.1mm, 5.1mm, 3.3mm, 3.3mm } + +set X2 = X1+(pins/4-1)*E + +set Y2 = X2 + +set w = 5mil + +__0: vec @(D2/2, E2/2) +frame pads @ +frame center @ +frame outline @