Change Details
BOOKSHELF |
39 | 39 | # Footprints of standard rectangular passive components |
40 | 40 | N: stdpass |
41 | 41 | D: http://www.vishay.com/docs/20035/dcrcwe3.pdf |
| 42 | |
| 43 | # NXP SOT617-3 package (QFN32 with a 3.6 x 3.6 mm center pad) |
| 44 | N: sot617-3-lp |
| 45 | A: nxp-qfn32-lp |
| 46 | D: http://www.nxp.com/documents/outline_drawing/sot617-3_po.pdf |
| 47 | |
| 48 | N: atmel-qfn |
| 49 | D: http://www.atmel.com/dyn/resources/prod_documents/doc8583.pdf |
modules/INFO |
14 | 14 | |
15 | 15 | # Standard rectangular passive components |
16 | 16 | F: stdpass |
| 17 | |
| 18 | # "Generic" simple QFN |
| 19 | F: qfn |
| 20 | # |
| 21 | # The information for these packages comes from various sources: |
| 22 | # |
| 23 | # - the C8051F326 data sheet, for the QFN28 footprint (N: mcu) |
| 24 | # - the AT86F326 data sheet, for the QFN32 package dimensions (N: txrx) |
| 25 | # - Atmel's general recommendations for QFN land patterns (N: atmel-qfn) |
| 26 | # - NXP's SOT617-1 and SOT617-3, for package and land pattern: |
| 27 | # http://www.nxp.com/package/SOT617-1.html |
| 28 | # http://www.nxp.com/package/SOT617-3.html |
| 29 | # |
| 30 | # Known bugs: |
| 31 | # |
| 32 | # - we should distribute the solder paste in an array of small |
| 33 | # squares instead of just covering the whole center pad. |
| 34 | # - really ought to merge all the various QFN definitions (we have more |
| 35 | # over at gta02-core) into a single QFN file with a big mean table of |
| 36 | # everything |
| 37 | # |
| 38 | N: sot617-3-lp |
modules/qfn.fpd |
| 1 | /* MACHINE-GENERATED ! */ |
| 2 | |
| 3 | frame center { |
| 4 | set pin = pins+1 |
| 5 | |
| 6 | set x = D2+0.1mm |
| 7 | |
| 8 | set y = E2+0.1mm |
| 9 | |
| 10 | __0: vec @(x/2, y/2) |
| 11 | __1: vec @(-x/2, -y/2) |
| 12 | pad "$pin" . __0 |
| 13 | } |
| 14 | |
| 15 | frame pad { |
| 16 | set px = (dx*X1+dy*Y1)/2 |
| 17 | |
| 18 | set py = (dy*X1+dx*Y1)/2 |
| 19 | |
| 20 | set pin = side*pins/4+i+1 |
| 21 | |
| 22 | __0: vec @(px, py) |
| 23 | __1: vec @(-px, -py) |
| 24 | pad "$pin" __0 . |
| 25 | } |
| 26 | |
| 27 | frame side { |
| 28 | set pos = i-(pins/4-1)/2 |
| 29 | |
| 30 | loop i = 0, pins/4-1 |
| 31 | |
| 32 | __0: vec @(E*pos*dx, E*pos*dy) |
| 33 | frame pad . |
| 34 | } |
| 35 | |
| 36 | frame pads { |
| 37 | table |
| 38 | { side, dx, dy } |
| 39 | { 0, 0, -1 } |
| 40 | { 1, 1, 0 } |
| 41 | { 2, 0, 1 } |
| 42 | { 3, -1, 0 } |
| 43 | |
| 44 | __0: vec @(dy*C1/2, -dx*C2/2) |
| 45 | frame side . |
| 46 | } |
| 47 | |
| 48 | frame index { |
| 49 | } |
| 50 | |
| 51 | frame outline { |
| 52 | table |
| 53 | { index, dx, _, dy } |
| 54 | { 1, -1, 0, 0 } |
| 55 | { 0, 0, 0, -1 } |
| 56 | { 0, 1, 0, 0 } |
| 57 | { 0, 0, 0, 1 } |
| 58 | |
| 59 | set mx = dx*C1/2 |
| 60 | |
| 61 | set my = dy*C2/2 |
| 62 | |
| 63 | set cx = mx+my |
| 64 | |
| 65 | set cy = my-mx |
| 66 | |
| 67 | set ax = -Y1/2*dx |
| 68 | |
| 69 | set ay = -Y1/2*dy |
| 70 | |
| 71 | set bx = -Y1/2*dy |
| 72 | |
| 73 | set by = Y1/2*dx |
| 74 | |
| 75 | __0: vec @(cx, cy) |
| 76 | w: vec .(ax, ay) |
| 77 | line __0 . w |
| 78 | __2: vec __0(bx, by) |
| 79 | line __0 . w |
| 80 | __1: vec .(index*(ax-bx), index*(ay-by)) |
| 81 | line __2 . w |
| 82 | } |
| 83 | |
| 84 | package "QFN$pins" |
| 85 | unit mm |
| 86 | |
| 87 | table |
| 88 | { pins, X1, Y1, E, C1, C2, D2, E2 } |
| 89 | { 28, 0.25mm, 0.9mm, 0.5mm, 4.8mm, 4.8mm, 3.15mm, 3.15mm } |
| 90 | { 32, 0.29mm, 0.9mm, 0.5mm, 5.1mm, 5.1mm, 3.3mm, 3.3mm } |
| 91 | |
| 92 | set X2 = X1+(pins/4-1)*E |
| 93 | |
| 94 | set Y2 = X2 |
| 95 | |
| 96 | set w = 5mil |
| 97 | |
| 98 | __0: vec @(D2/2, E2/2) |
| 99 | frame pads @ |
| 100 | frame center @ |
| 101 | frame outline @ |
Download the corresponding diff file