From 6db34475d1935f368bec60f530f88cd066924849 Mon Sep 17 00:00:00 2001 From: xengineering Date: Sat, 24 May 2025 13:52:16 +0200 Subject: pcb: Add voltage divider for PCB versioning This voltage divider provides an analog voltage between GND and +3.3V to indicate which hardware revision this board is. Thus the same firmware image can be used on multiple PCB versions compensating the hardware differences in software. The resistor combinations are calculated by `tools/resistory_selector.py`. --- pcb/iot-contact.kicad_sch | 490 +++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 481 insertions(+), 9 deletions(-) (limited to 'pcb/iot-contact.kicad_sch') diff --git a/pcb/iot-contact.kicad_sch b/pcb/iot-contact.kicad_sch index 9eee96f..2ac0831 100644 --- a/pcb/iot-contact.kicad_sch +++ b/pcb/iot-contact.kicad_sch @@ -1843,6 +1843,130 @@ ) (embedded_fonts no) ) + (symbol "Device:R" + (pin_numbers + (hide yes) + ) + (pin_names + (offset 0) + ) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (property "Reference" "R" + (at 2.032 0 90) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Value" "R" + (at 0 0 90) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Footprint" "" + (at -1.778 0 90) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Datasheet" "~" + (at 0 0 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Description" "Resistor" + (at 0 0 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "ki_keywords" "R res resistor" + (at 0 0 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "ki_fp_filters" "R_*" + (at 0 0 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (symbol "R_0_1" + (rectangle + (start -1.016 -2.54) + (end 1.016 2.54) + (stroke + (width 0.254) + (type default) + ) + (fill + (type none) + ) + ) + ) + (symbol "R_1_1" + (pin passive line + (at 0 3.81 270) + (length 1.27) + (name "~" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "1" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + (pin passive line + (at 0 -3.81 90) + (length 1.27) + (name "~" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "2" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + ) + (embedded_fonts no) + ) (symbol "Switch:SW_Push" (pin_numbers (hide yes) @@ -2230,9 +2354,19 @@ ) (uuid "56f4af8c-1572-4497-98f2-10a81ab55e1d") ) + (text "PCB versioning" + (exclude_from_sim no) + (at 116.332 122.174 0) + (effects + (font + (size 1.27 1.27) + ) + ) + (uuid "8ffab84b-2909-4547-976c-9674893a87fe") + ) (text "TODO: RMII connection" (exclude_from_sim no) - (at 109.474 82.55 0) + (at 109.982 70.104 0) (effects (font (size 1.27 1.27) @@ -2252,6 +2386,12 @@ (color 0 0 0 0) (uuid "339686e0-bcb6-47c9-8375-f2246251856d") ) + (junction + (at 115.57 104.14) + (diameter 0) + (color 0 0 0 0) + (uuid "d7a5ded7-cab0-44bc-bcb3-51d295ef17c4") + ) (junction (at 116.84 53.34) (diameter 0) @@ -2308,6 +2448,16 @@ ) (uuid "0c6acda6-3218-49fa-bfb0-4421586fc9bb") ) + (wire + (pts + (xy 115.57 102.87) (xy 115.57 104.14) + ) + (stroke + (width 0) + (type default) + ) + (uuid "1020a578-763e-4bf0-98ef-3e843e6e7cd5") + ) (wire (pts (xy 55.88 80.01) (xy 66.04 80.01) @@ -2330,7 +2480,7 @@ ) (wire (pts - (xy 111.76 165.1) (xy 134.62 165.1) + (xy 105.41 165.1) (xy 134.62 165.1) ) (stroke (width 0) @@ -2350,7 +2500,7 @@ ) (wire (pts - (xy 109.22 97.79) (xy 109.22 167.64) + (xy 102.87 107.95) (xy 102.87 167.64) ) (stroke (width 0) @@ -2360,7 +2510,7 @@ ) (wire (pts - (xy 111.76 95.25) (xy 111.76 165.1) + (xy 105.41 105.41) (xy 105.41 165.1) ) (stroke (width 0) @@ -2548,6 +2698,16 @@ ) (uuid "6202abf4-a107-49fb-81ba-92fea3003088") ) + (wire + (pts + (xy 115.57 104.14) (xy 115.57 105.41) + ) + (stroke + (width 0) + (type default) + ) + (uuid "668ac295-8e98-4bec-8a6a-9e0f9977aa67") + ) (wire (pts (xy 241.3 83.82) (xy 245.11 83.82) @@ -2558,6 +2718,26 @@ ) (uuid "6c5416b3-8486-43d2-a4ce-6a4be340559a") ) + (wire + (pts + (xy 115.57 104.14) (xy 127 104.14) + ) + (stroke + (width 0) + (type default) + ) + (uuid "6ecbd238-9a11-40af-a479-f3c1c33f4443") + ) + (wire + (pts + (xy 115.57 113.03) (xy 115.57 114.3) + ) + (stroke + (width 0) + (type default) + ) + (uuid "6f33808b-14aa-42f0-bfaf-5d5d041eda6f") + ) (wire (pts (xy 170.18 53.34) (xy 170.18 58.42) @@ -2580,7 +2760,7 @@ ) (wire (pts - (xy 91.44 97.79) (xy 109.22 97.79) + (xy 91.44 107.95) (xy 102.87 107.95) ) (stroke (width 0) @@ -2628,6 +2808,16 @@ ) (uuid "830105cb-b7a4-486c-9905-375b2ac42ebe") ) + (wire + (pts + (xy 115.57 93.98) (xy 115.57 95.25) + ) + (stroke + (width 0) + (type default) + ) + (uuid "863152a8-b32a-4cee-ac15-5a3388895411") + ) (wire (pts (xy 55.88 97.79) (xy 66.04 97.79) @@ -2900,7 +3090,7 @@ ) (wire (pts - (xy 91.44 95.25) (xy 111.76 95.25) + (xy 91.44 105.41) (xy 105.41 105.41) ) (stroke (width 0) @@ -2920,7 +3110,7 @@ ) (wire (pts - (xy 109.22 167.64) (xy 134.62 167.64) + (xy 102.87 167.64) (xy 134.62 167.64) ) (stroke (width 0) @@ -3247,6 +3437,76 @@ ) ) ) + (symbol + (lib_id "Device:R") + (at 115.57 109.22 0) + (unit 1) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (dnp no) + (fields_autoplaced yes) + (uuid "25ff6048-df12-4801-a5fa-10858ec580ea") + (property "Reference" "R2" + (at 118.11 107.9499 0) + (effects + (font + (size 1.27 1.27) + ) + (justify left) + ) + ) + (property "Value" "180R" + (at 118.11 110.4899 0) + (effects + (font + (size 1.27 1.27) + ) + (justify left) + ) + ) + (property "Footprint" "" + (at 113.792 109.22 90) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Datasheet" "~" + (at 115.57 109.22 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Description" "Resistor" + (at 115.57 109.22 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (pin "1" + (uuid "4594fa96-7bf7-4a55-b5cf-06cd56d16577") + ) + (pin "2" + (uuid "b8ec48f2-d366-4783-a0c0-ce6e9d04ad8c") + ) + (instances + (project "" + (path "/5defd195-0277-4d04-9f5f-69e505c9845c" + (reference "R2") + (unit 1) + ) + ) + ) + ) (symbol (lib_id "Switch:SW_Push") (at 142.24 142.24 0) @@ -3333,6 +3593,76 @@ ) ) ) + (symbol + (lib_id "Device:R") + (at 115.57 99.06 0) + (unit 1) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (dnp no) + (fields_autoplaced yes) + (uuid "44194e8c-d4ca-4f3b-8f0c-38d2daec1648") + (property "Reference" "R1" + (at 118.11 97.7899 0) + (effects + (font + (size 1.27 1.27) + ) + (justify left) + ) + ) + (property "Value" "75k" + (at 118.11 100.3299 0) + (effects + (font + (size 1.27 1.27) + ) + (justify left) + ) + ) + (property "Footprint" "" + (at 113.792 99.06 90) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Datasheet" "~" + (at 115.57 99.06 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Description" "Resistor" + (at 115.57 99.06 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (pin "2" + (uuid "4c288ead-2ab6-4e25-a3f0-01cafd4880ac") + ) + (pin "1" + (uuid "28fc83dd-c36e-444e-9a1b-af275a24160b") + ) + (instances + (project "" + (path "/5defd195-0277-4d04-9f5f-69e505c9845c" + (reference "R1") + (unit 1) + ) + ) + ) + ) (symbol (lib_id "Device:LED") (at 181.61 129.54 90) @@ -4050,6 +4380,72 @@ ) ) ) + (symbol + (lib_id "power:+3V3") + (at 115.57 93.98 0) + (unit 1) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (dnp no) + (fields_autoplaced yes) + (uuid "b8d6d94c-727e-456b-b826-af3fd7c72013") + (property "Reference" "#PWR09" + (at 115.57 97.79 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Value" "+3V3" + (at 115.57 88.9 0) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Footprint" "" + (at 115.57 93.98 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Datasheet" "" + (at 115.57 93.98 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Description" "Power symbol creates a global label with name \"+3V3\"" + (at 115.57 93.98 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (pin "1" + (uuid "4c5e5d17-e7b8-4575-85c6-050868f487a2") + ) + (instances + (project "" + (path "/5defd195-0277-4d04-9f5f-69e505c9845c" + (reference "#PWR09") + (unit 1) + ) + ) + ) + ) (symbol (lib_id "power:GND") (at 181.61 138.43 0) @@ -4183,6 +4579,72 @@ ) ) ) + (symbol + (lib_id "power:GND") + (at 115.57 114.3 0) + (unit 1) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (dnp no) + (fields_autoplaced yes) + (uuid "dd045ace-112c-424a-ad3b-982fb4c768f7") + (property "Reference" "#PWR010" + (at 115.57 120.65 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Value" "GND" + (at 115.57 119.38 0) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Footprint" "" + (at 115.57 114.3 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Datasheet" "" + (at 115.57 114.3 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Description" "Power symbol creates a global label with name \"GND\" , ground" + (at 115.57 114.3 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (pin "1" + (uuid "1a4096b2-db22-464d-b040-d8134123dfb5") + ) + (instances + (project "" + (path "/5defd195-0277-4d04-9f5f-69e505c9845c" + (reference "#PWR010") + (unit 1) + ) + ) + ) + ) (symbol (lib_id "power:+3V3") (at 116.84 22.86 0) @@ -4537,7 +4999,7 @@ ) ) (pin "POE_GND" output - (at 91.44 97.79 0) + (at 91.44 107.95 0) (uuid "6c770162-6936-4729-b598-10f0375ecc24") (effects (font @@ -4547,7 +5009,7 @@ ) ) (pin "POE_VIN" output - (at 91.44 95.25 0) + (at 91.44 105.41 0) (uuid "1863d617-dc5e-4005-9116-05e2cde6d04b") (effects (font @@ -4871,6 +5333,16 @@ (justify right) ) ) + (pin "VVERSION" input + (at 127 104.14 180) + (uuid "cc6082cf-6e1b-4529-a830-c6a9254ad3b1") + (effects + (font + (size 1.27 1.27) + ) + (justify left) + ) + ) (instances (project "iot-contact" (path "/5defd195-0277-4d04-9f5f-69e505c9845c" -- cgit v1.2.3-70-g09d2