# HG changeset patch # User Mychaela Falconia # Date 1666683369 0 # Node ID 2328205328a9a9dcac908b8b7ff5ae67a9d426ce # Parent c147a730271fdf8ef3d9dbf3bdfaec8ff54d6d3c m4-fp: WR-FPC 1mm pitch FFC/FPC connectors diff -r c147a730271f -r 2328205328a9 ifctf-part-lib/m4-fp/common.m4 --- a/ifctf-part-lib/m4-fp/common.m4 Thu Jun 24 06:38:02 2021 +0000 +++ b/ifctf-part-lib/m4-fp/common.m4 Tue Oct 25 07:36:09 2022 +0000 @@ -98,6 +98,7 @@ include(geda.inc) include(gullwing.inc) include(hirose.inc) +include(wr_fpc.inc) include(johnstech.inc) include(midcom.inc) include(minicircuits.inc) diff -r c147a730271f -r 2328205328a9 ifctf-part-lib/m4-fp/wr_fpc.inc --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/ifctf-part-lib/m4-fp/wr_fpc.inc Tue Oct 25 07:36:09 2022 +0000 @@ -0,0 +1,107 @@ +# -*- m4 -*- +# +# WR-FPC series - FFC/FPC connectors +# 1.0 mm pitch, horizontal mounting +# +# Some applications of these connectors define the leftmost contact +# to be pin 1, while others define it to be the rightmost contact; +# we provide footprint versions for both configurations. +# +# $1: canonical name +# $2: name on PCB +# $3: value +# $4: number of contacts +# $5: 1 to put pin 1 on the left or -1 to put it on the right +define(`WRFPC_1MM_FAMILY', + ` +Element[0x00 "$1" "$2" "$3" 200000 100000 0 0 0 100 0x00] +( + # We put the mark at the bottom of the keepout directly under pin 1 + # all units are um + define(`left_gnd_nearedge', -1300) + define(`left_gnd_centre', eval(left_gnd_nearedge - 1000)) + define(`left_gnd_faredge', eval(left_gnd_nearedge - 2000)) + define(`right_gnd_nearedge', eval(($4 - 1) * 1000 + 1300)) + define(`right_gnd_centre', eval(right_gnd_nearedge + 1000)) + define(`right_gnd_faredge', eval(right_gnd_nearedge + 2000)) + # x dimensions + define(`padwidth', 600) + define(`gndpadwidth', 2000) + # y axis planning + define(`gndpadheight', 1800) + define(`gndycent', 3500) + define(`padbot', 5600) + define(`padtop', 6900) + # x motion for ground/mechanical pads + define(`gndxadj', eval((gndpadwidth - gndpadheight) / 2)) + # soldermask opening fudge + define(`maskextra_pad', 150) + define(`maskextra_gnd', 150) + # draw the pads first + forloop(i, 1, $4, ` + define(`Xpos', eval((i-1) * 1000 * $5)`um') + Pad[Xpos -eval(padtop-padwidth/2)`um' + Xpos -eval(padbot+padwidth/2)`um' + padwidth`um' 150um eval(padwidth+maskextra_pad)`um' + "" "i" "square"] + ') + # ground/mechanical pads + define(`Xpos', eval(left_gnd_centre * $5)) + Pad[eval(Xpos-gndxadj)`um' -gndycent`um' + eval(Xpos+gndxadj)`um' -gndycent`um' + gndpadheight`um' 150um eval(gndpadheight+maskextra_gnd)`um' + "GND" "eval($4 + 1)" "square"] + define(`Xpos', eval(right_gnd_centre * $5)) + Pad[eval(Xpos-gndxadj)`um' -gndycent`um' + eval(Xpos+gndxadj)`um' -gndycent`um' + gndpadheight`um' 150um eval(gndpadheight+maskextra_gnd)`um' + "GND" "eval($4 + 2)" "square"] + # silk outline, legacy mil units + define(`silkW', 1000) + define(`silkext', 1100) + define(`silktop', eval(padtop * 1000 / 254 + silkext)) + define(`silkleft', eval(left_gnd_faredge * 1000 / 254 - silkext)) + define(`silkright', eval(right_gnd_faredge * 1000 / 254 + silkext)) + define(`silkleft', eval(silkleft * $5)) + define(`silkright', eval(silkright * $5)) + ElementLine[silkleft -silktop silkright -silktop silkW] + ElementLine[silkleft silkext silkright silkext silkW] + ElementLine[silkleft -silktop silkleft silkext silkW] + ElementLine[silkright -silktop silkright silkext silkW] +)') + +# Footprints with pin 1 on the left + +define(`PKG_WRFPC1_4_1L', `WRFPC_1MM_FAMILY(`$1',`$2',`$3', 4, 1)') +define(`PKG_WRFPC1_6_1L', `WRFPC_1MM_FAMILY(`$1',`$2',`$3', 6, 1)') +define(`PKG_WRFPC1_8_1L', `WRFPC_1MM_FAMILY(`$1',`$2',`$3', 8, 1)') +define(`PKG_WRFPC1_10_1L', `WRFPC_1MM_FAMILY(`$1',`$2',`$3', 10, 1)') +define(`PKG_WRFPC1_12_1L', `WRFPC_1MM_FAMILY(`$1',`$2',`$3', 12, 1)') +define(`PKG_WRFPC1_14_1L', `WRFPC_1MM_FAMILY(`$1',`$2',`$3', 14, 1)') +define(`PKG_WRFPC1_15_1L', `WRFPC_1MM_FAMILY(`$1',`$2',`$3', 15, 1)') +define(`PKG_WRFPC1_16_1L', `WRFPC_1MM_FAMILY(`$1',`$2',`$3', 16, 1)') +define(`PKG_WRFPC1_18_1L', `WRFPC_1MM_FAMILY(`$1',`$2',`$3', 18, 1)') +define(`PKG_WRFPC1_20_1L', `WRFPC_1MM_FAMILY(`$1',`$2',`$3', 20, 1)') +define(`PKG_WRFPC1_22_1L', `WRFPC_1MM_FAMILY(`$1',`$2',`$3', 22, 1)') +define(`PKG_WRFPC1_24_1L', `WRFPC_1MM_FAMILY(`$1',`$2',`$3', 24, 1)') +define(`PKG_WRFPC1_26_1L', `WRFPC_1MM_FAMILY(`$1',`$2',`$3', 26, 1)') +define(`PKG_WRFPC1_28_1L', `WRFPC_1MM_FAMILY(`$1',`$2',`$3', 28, 1)') +define(`PKG_WRFPC1_30_1L', `WRFPC_1MM_FAMILY(`$1',`$2',`$3', 30, 1)') + +# Footprints with pin 1 on the right + +define(`PKG_WRFPC1_4_1R', `WRFPC_1MM_FAMILY(`$1',`$2',`$3', 4, -1)') +define(`PKG_WRFPC1_6_1R', `WRFPC_1MM_FAMILY(`$1',`$2',`$3', 6, -1)') +define(`PKG_WRFPC1_8_1R', `WRFPC_1MM_FAMILY(`$1',`$2',`$3', 8, -1)') +define(`PKG_WRFPC1_10_1R', `WRFPC_1MM_FAMILY(`$1',`$2',`$3', 10, -1)') +define(`PKG_WRFPC1_12_1R', `WRFPC_1MM_FAMILY(`$1',`$2',`$3', 12, -1)') +define(`PKG_WRFPC1_14_1R', `WRFPC_1MM_FAMILY(`$1',`$2',`$3', 14, -1)') +define(`PKG_WRFPC1_15_1R', `WRFPC_1MM_FAMILY(`$1',`$2',`$3', 15, -1)') +define(`PKG_WRFPC1_16_1R', `WRFPC_1MM_FAMILY(`$1',`$2',`$3', 16, -1)') +define(`PKG_WRFPC1_18_1R', `WRFPC_1MM_FAMILY(`$1',`$2',`$3', 18, -1)') +define(`PKG_WRFPC1_20_1R', `WRFPC_1MM_FAMILY(`$1',`$2',`$3', 20, -1)') +define(`PKG_WRFPC1_22_1R', `WRFPC_1MM_FAMILY(`$1',`$2',`$3', 22, -1)') +define(`PKG_WRFPC1_24_1R', `WRFPC_1MM_FAMILY(`$1',`$2',`$3', 24, -1)') +define(`PKG_WRFPC1_26_1R', `WRFPC_1MM_FAMILY(`$1',`$2',`$3', 26, -1)') +define(`PKG_WRFPC1_28_1R', `WRFPC_1MM_FAMILY(`$1',`$2',`$3', 28, -1)') +define(`PKG_WRFPC1_30_1R', `WRFPC_1MM_FAMILY(`$1',`$2',`$3', 30, -1)')