From: Keith Packard Date: Sun, 3 Nov 2013 00:18:54 +0000 (-0700) Subject: Add TI s-pwson-n8 footprint (for drv8837) X-Git-Tag: telelco-v3.0~822 X-Git-Url: https://git.gag.com/?a=commitdiff_plain;h=beda790974a151482bba17097fd14a3e47db2b43;p=hw%2Faltusmetrum Add TI s-pwson-n8 footprint (for drv8837) Signed-off-by: Keith Packard --- diff --git a/packages/footprint.5c b/packages/footprint.5c index 7e45489..e6af81a 100644 --- a/packages/footprint.5c +++ b/packages/footprint.5c @@ -164,33 +164,50 @@ namespace Footprint { name, num); } + public void pad_mm_options(real center_x, + real center_y, + real width, + real height, + string name, + string num, + string options) + { + pad_mm_clear_options(center_x, + center_y, + width, + height, + process_clearance, + name, + num, + options); + } -public void pad_mm_arbitrary( real x1, - real y1, - real x2, - real y2, - real thickness, - string name, - string num, - string options) -{ - real clearance = process_clearance; + public void pad_mm_arbitrary( real x1, + real y1, + real x2, + real y2, + real thickness, + string name, + string num, + string options) + { + real clearance = process_clearance; - real mask = thickness + clearance / 2; + real mask = thickness + clearance / 2; - printf (" Pad["); - printf (" %6d %6d %6d %6d", - mm2mils100(x1), - mm2mils100(y1), - mm2mils100(x2), - mm2mils100(y2)); - printf (" %6d %6d %6d", - mm2mils100(thickness), - mm2mils100(clearance), - mm2mils100(mask)); - printf (" \"%s\" \"%s\" \"%s\"]\n", - name, num, options); -} + printf (" Pad["); + printf (" %6d %6d %6d %6d", + mm2mils100(x1), + mm2mils100(y1), + mm2mils100(x2), + mm2mils100(y2)); + printf (" %6d %6d %6d", + mm2mils100(thickness), + mm2mils100(clearance), + mm2mils100(mask)); + printf (" \"%s\" \"%s\" \"%s\"]\n", + name, num, options); + } public void pin_mm_clear(real x, real y, real drill, real copper, real clearance, string name, diff --git a/packages/s-pwson-n8.5c b/packages/s-pwson-n8.5c new file mode 100644 index 0000000..57952b9 --- /dev/null +++ b/packages/s-pwson-n8.5c @@ -0,0 +1,79 @@ +/* + * Copyright © 2012 Keith Packard + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; version 2 of the License. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. + */ + +load "footprint.5c" +import Footprint; + +Footprint::process_clearance = 0.07; + +real pad_expose = 0.1; +real pad_width = 0.28; +real pad_height = 0.50; +real pad_x_spacing = 0.50; +real pad_y_gap = 1.4; +real pad_y_spacing = pad_y_gap + pad_height; + +real package_width = 2; +real package_height = 2; + +real center_width = 1.6; +real center_height = 0.9; + + +real pad_x_off = package_width / 2 - (pad_width - pad_expose) / 2 + pad_expose; + +real num_pad = 4; /* per side */ + +element_start("s-pwson-n8"); + +/* full center pad */ +pad_mm_options(0, 0, center_width, center_height, "9", "9", "square,nopaste"); + +/* 63% paste coverage */ +real paste_coverage = 0.63; +real paste_coverage_scale = sqrt(paste_coverage); +pad_mm_options(0, 0, center_width * paste_coverage_scale, + center_height * paste_coverage_scale, "9", "9", "square"); + +real pad_y_off = pad_y_spacing / 2; + +real pad_off(int n) { + return pad_x_spacing * (n - (num_pad - 1) / 2); +} + +for (int pad = 0; pad < num_pad; pad++) { + /* bottom side (1-4) */ + + pad_mm(pad_off(pad), + -pad_y_off, + pad_width, + pad_height, + sprintf("%d", pad + 1), + sprintf("%d", pad + 1)); + + /* top side (8-5) */ + + pad_mm(pad_off(pad), + pad_y_off, + pad_width, + pad_height, + sprintf("%d", 8 - pad), + sprintf("%d", 8 - pad)); + +} + +element_end();