changeset 154:2328205328a9 default tip

m4-fp: WR-FPC 1mm pitch FFC/FPC connectors
author Mychaela Falconia <falcon@freecalypso.org>
date Tue, 25 Oct 2022 07:36:09 +0000
parents c147a730271f
children
files ifctf-part-lib/m4-fp/common.m4 ifctf-part-lib/m4-fp/wr_fpc.inc
diffstat 2 files changed, 108 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- 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)
--- /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)')