Save before autofill

This commit is contained in:
Kelvin Ly 2019-11-21 06:40:15 -05:00
parent 8aeb85e04e
commit 7db1980084
4 changed files with 50266 additions and 139 deletions

49815
AN1914.pdf Normal file

File diff suppressed because it is too large Load Diff

286
autofill_schem.py Normal file
View File

@ -0,0 +1,286 @@
#!/usr/bin/env python3
# TODO: make sure it also works in python2
# version 0.0.2
# updates:
# - allow multiple input files, using the later ones only for component footprint
# and distributor
# - fix code so it works with Kicad 5
import argparse
DISTRIBUTOR_VALUES = ["\"Mouser\""]
class Component(object):
def __init__(self, start):
self.designator = None
self.value = None
self.footprint = None
self.footprint_row = None
# distributor ids, mapped to (line_num, value, all fields
# (to make reconstruction easier)
self.distributors = dict()
self.cls = None
self.last_value = None
self.num_fields = 0
# used mainly for parser debugging
self.start = start
class DistributorData(object):
def __init__(self, id):
self.id = id
def quotesplit(line):
parts = line.split(" ")
ret = []
num_quotes = 0
incomplete_part = None
for part in parts:
num_quotes += len([None for c in part if c == '"'])
if num_quotes % 2 == 1:
if incomplete_part is None:
# just started a quoted section
incomplete_part = part
else:
incomplete_part += " " + part
else:
if incomplete_part is not None:
# ending quote is in this part
ret.append(incomplete_part + " " + part)
incomplete_part = None
else:
# normal case; pass through
ret.append(part)
return ret
def parse_lines(f):
lines = []
components = []
component_start = False
component = None
for i, line in enumerate(f):
if component_start:
if line.startswith("L"):
parts = quotesplit(line)
component.designator = parts[2].rstrip()
component.cls = component.designator[0]
elif line.startswith("F"):
parts = quotesplit(line)
component.num_fields += 1
component.last_value = i
if parts[1].isdigit():
field_type = int(parts[1])
if field_type == 1:
component.value = parts[2]
elif field_type == 2:
component.footprint_row = (i, parts)
if len(parts[2]) > 2:
component.footprint = parts[2]
elif field_type > 3:
# TODO: make case insensitive
if parts[-1][:-1] in DISTRIBUTOR_VALUES:
component.distributors[parts[-1][:-1]] = DistributorData(parts[2])
elif line.startswith("$EndComp"):
component_start = False
# ignore power nodes
if component.cls != "#":
components.append(component)
if line.startswith("$Comp"):
component_start = True
component = Component(i)
lines.append(line)
return (lines, components)
def infer_components(components):
# dictionaries in dictionaries:
# distributor = (distributor_type, id) so that non-unique ids can be captured
# filled_values[cls][value] = [(footprint, [designators], [distributors])]
filled_values = dict()
# first pass to infer footprints and distributors, second pass to fill in details
for c in components:
if c.cls is None or len(c.cls) == 0:
print("Component at {} incorrectly parsed; no cls set".format(c.start))
else:
if c.cls not in filled_values:
filled_values[c.cls] = dict()
if c.value is not None and len(c.value) > 2:
if c.value not in filled_values[c.cls]:
filled_values[c.cls][c.value] = []
if c.footprint is not None and len(c.footprint) > 2:
# print(c.designator, c.value, c.footprint, c.distributors)
tosearch = filled_values[c.cls][c.value]
# find element with matching footprint
found = None
for i, fp in enumerate(tosearch):
if fp[0] == c.footprint:
found = i
break
if found is None:
distributors = []
for dist in c.distributors:
if len(c.distributors[dist].id) > 2 and len(dist) > 2:
distributors.append((dist, c.distributors[dist].id))
tosearch.append((c.footprint, [c.designator], distributors))
else:
tosearch[i][1].append(c.designator)
# append any new distributors
for dist in c.distributors:
if len(c.distributors[dist].id) > 2 and len(dist) > 2:
if not any([dist == m[0] and c.distributors[dist].id == m[1]
for m in tosearch[i][2]]):
tosearch[i][2].append((dist, c.distributors[dist].id))
return filled_values
def main():
parser = argparse.ArgumentParser(description="Autofills components in an Eeschema schematic")
parser.add_argument("-i", "--include", action="append", help="additional files to read in, for component inference")
parser.add_argument("input", help="file to autofill")
parser.add_argument("output", help="file to write autofilled schematic to")
args = parser.parse_args()
lines = None
components = None
with open(args.input, 'r') as f:
(lines, components) = parse_lines(f)
print("{} lines".format(len(lines)))
print("found {} components".format(len(components)))
without_footprints = len([None for c in components if c.footprint is None])
print("found {} components without footprints".format(without_footprints))
all_components = []
all_components.extend(components)
if args.include is not None:
print("searching additional files: {}".format(" ".join(args.include)))
for filename in args.include:
with open(filename, 'r') as f:
(more_lines, more_components) = parse_lines(f)
print("{} more lines".format(len(more_lines)))
print("found {} more components".format(len(more_components)))
more_without_footprints = len([None for c in more_components if c.footprint is None])
print("found {} more components without footprints".format(more_without_footprints))
all_components.extend(more_components)
filled_values = infer_components(all_components)
entry_count = 0
conflicts = []
for cls in filled_values:
for val in filled_values[cls]:
for _ in filled_values[cls][val]:
# TODO: check for conflicts
entry_count += 1
print("found {} filled unique component classes".format(entry_count))
# TODO: allow interactive distributor choice to resolve conflicts
while len(conflicts) > 0:
print("found conflicting information, cannot autofill")
for conflict in conflicts:
pass
return
# autofill
autofill_fp = 0
autofill_dist = 0
to_append = []
for c in components:
if c.cls in filled_values:
if c.value in filled_values[c.cls]:
matches = []
if c.footprint is not None:
matches = [t for t in filled_values[c.cls][c.value] if t[0] == c.footprint]
else:
matches = filled_values[c.cls][c.value]
if len(matches) == 1:
# autofill
match = matches[0]
if ((c.footprint is None or len(c.footprint) <= 2) and
c.footprint_row is not None):
print("matched {} {} with {}".format(c.designator, c.value, match))
# rewrite footprint
c.footprint = match[0]
row = c.footprint_row[1]
row[2] = match[0]
lines[c.footprint_row[0]] = " ".join(row)
autofill_fp += 1
# add in distributors
dist_added = 0
for dist in match[2]:
if dist[0] not in c.distributors:
c.distributors[dist[0]] = DistributorData(dist[1])
# append to the field list
template_row = quotesplit(lines[c.last_value][:-1])
row = [
template_row[0],
str(c.num_fields),
dist[1]] + template_row[3:11] + [dist[0] + "\n"]
c.num_fields += 1
to_append.append((c.last_value, row))
dist_added += 1
# mark as something to do, because appending now would
# cause the row numbers to shift for all the components after this one,
# invalidating their indices
if dist_added > 0:
autofill_dist += 1
# print(c.designator, c.value, c.footprint, c.distributors)
for ta in reversed(to_append):
idx = ta[0]
row = ta[1]
lines = lines[0:idx+1] + [" ".join(row)] + lines[idx+1:]
print("autofilled {} fp, {} dist".format(autofill_fp, autofill_dist))
# dictionary of dictionaries of components without footprints
# missing[cls][value] = [designators]
missing = dict()
for c in components:
if c.cls is not None:
if c.cls not in missing:
missing[c.cls] = dict()
if c.value is not None and c.footprint is None:
if c.value not in missing[c.cls]:
missing[c.cls][c.value] = []
missing[c.cls][c.value].append(c.designator)
for cls in missing:
for value in missing[cls]:
print("NOTE: no unique footprint found for {} {}".format(value, missing[cls][value]))
# repeat for manufacturer info
missing = dict()
for c in components:
if c.cls is not None:
if c.cls not in missing:
missing[c.cls] = dict()
if c.value is not None and c.value != "\"DNP\"" and not bool(c.distributors):
if c.value not in missing[c.cls]:
missing[c.cls][c.value] = []
missing[c.cls][c.value].append(c.designator)
for cls in missing:
for value in missing[cls]:
print("NOTE: no distributor data found for {} {}".format(value, missing[cls][value]))
output = args.output or args.input
print("outputting to {}...".format(output))
with open(output, "w+") as f:
for line in lines:
f.write(line)
if __name__ == "__main__":
main()

View File

@ -243,7 +243,7 @@ U 1 1 5DCF6874
P 9300 2050
F 0 "C33" H 9310 2120 50 0000 L CNN
F 1 "1 uF X5R 16V" H 9310 1970 50 0000 L CNN
F 2 "" H 9300 2050 50 0001 C CNN
F 2 "Capacitor_SMD:C_0603_1608Metric" H 9300 2050 50 0001 C CNN
F 3 "~" H 9300 2050 50 0001 C CNN
1 9300 2050
0 -1 1 0
@ -273,8 +273,9 @@ U 1 1 5DCFB8B2
P 8600 2050
F 0 "C27" H 8610 2120 50 0000 L CNN
F 1 "0.1 uF X5R 25V" H 8610 1970 50 0000 L CNN
F 2 "" H 8600 2050 50 0001 C CNN
F 2 "Capacitor_SMD:C_0402_1005Metric" H 8600 2050 50 0001 C CNN
F 3 "~" H 8600 2050 50 0001 C CNN
F 4 "81-GRM155R61H104KE9D" H 8600 2050 50 0001 C CNN "Mouser"
1 8600 2050
-1 0 0 -1
$EndComp
@ -319,7 +320,7 @@ U 1 1 5DD02CDB
P 9150 1750
F 0 "C32" H 9160 1820 50 0000 L CNN
F 1 "47 nF X5R 25V" H 9160 1670 50 0000 L CNN
F 2 "" H 9150 1750 50 0001 C CNN
F 2 "Capacitor_SMD:C_0402_1005Metric" H 9150 1750 50 0001 C CNN
F 3 "~" H 9150 1750 50 0001 C CNN
1 9150 1750
0 1 -1 0
@ -349,7 +350,7 @@ U 1 1 5DD07091
P 8700 1550
F 0 "C29" H 8710 1620 50 0000 L CNN
F 1 "1 uF X5R 25V" H 8710 1470 50 0000 L CNN
F 2 "" H 8700 1550 50 0001 C CNN
F 2 "Capacitor_SMD:C_0603_1608Metric" H 8700 1550 50 0001 C CNN
F 3 "~" H 8700 1550 50 0001 C CNN
1 8700 1550
0 1 -1 0
@ -559,7 +560,7 @@ L Device:L_Small L1
U 1 1 5DD614A2
P 12100 2400
F 0 "L1" H 12130 2440 50 0000 L CNN
F 1 "L_Small" H 12130 2360 50 0000 L CNN
F 1 "220 uH 1A" H 12130 2360 50 0000 L CNN
F 2 "" H 12100 2400 50 0001 C CNN
F 3 "~" H 12100 2400 50 0001 C CNN
1 12100 2400
@ -616,7 +617,7 @@ L Device:R_Small R39
U 1 1 5DD6C08A
P 12750 2600
F 0 "R39" H 12780 2620 50 0000 L CNN
F 1 "R_Small" H 12780 2560 50 0000 L CNN
F 1 "3R0" H 12780 2560 50 0000 L CNN
F 2 "" H 12750 2600 50 0001 C CNN
F 3 "~" H 12750 2600 50 0001 C CNN
1 12750 2600
@ -627,7 +628,7 @@ L Device:C_Small C49
U 1 1 5DD6CA40
P 12750 2900
F 0 "C49" H 12760 2970 50 0000 L CNN
F 1 "C_Small" H 12760 2820 50 0000 L CNN
F 1 "22 uF 10V" H 12760 2820 50 0000 L CNN
F 2 "" H 12750 2900 50 0001 C CNN
F 3 "~" H 12750 2900 50 0001 C CNN
1 12750 2900
@ -653,7 +654,7 @@ Wire Wire Line
Wire Wire Line
12750 2400 12350 2400
Connection ~ 12350 2400
Text Label 12750 2400 0 50 ~ 0
Text Label 13450 2400 1 50 ~ 0
VBUCK_5V0
Wire Wire Line
12600 2750 12350 2750
@ -662,7 +663,7 @@ Wire Wire Line
12350 2750 12350 2700
Text Label 12600 2750 2 50 ~ 0
FB
Text Notes 12800 2250 0 50 ~ 0
Text Notes 12500 2400 0 50 ~ 0
350 mA
$Comp
L power:GND #PWR0116
@ -1088,7 +1089,7 @@ L Device:C_Small C50
U 1 1 5DF94C9F
P 13250 2600
F 0 "C50" H 13260 2670 50 0000 L CNN
F 1 "C_Small" H 13260 2520 50 0000 L CNN
F 1 "22 uF" H 13260 2520 50 0000 L CNN
F 2 "" H 13250 2600 50 0001 C CNN
F 3 "~" H 13250 2600 50 0001 C CNN
1 13250 2600
@ -1118,14 +1119,10 @@ F 3 "~" H 15250 2600 50 0001 C CNN
$EndComp
Wire Wire Line
13250 2500 13250 2400
Wire Wire Line
13250 2400 12750 2400
Connection ~ 12750 2400
Wire Wire Line
13650 2500 13650 2400
Wire Wire Line
13650 2400 13550 2400
Connection ~ 13250 2400
Text Label 15800 2400 2 50 ~ 0
FPGA_IO_3V3
Wire Wire Line
@ -1233,7 +1230,7 @@ L Device:R_Small R15
U 1 1 5E0E88C6
P 5500 2950
F 0 "R15" H 5530 2970 50 0000 L CNN
F 1 "R_Small" H 5530 2910 50 0000 L CNN
F 1 "100kR 1%" H 5530 2910 50 0000 L CNN
F 2 "" H 5500 2950 50 0001 C CNN
F 3 "~" H 5500 2950 50 0001 C CNN
1 5500 2950
@ -1244,7 +1241,7 @@ L Device:R_Small R16
U 1 1 5E0E8F15
P 5500 3350
F 0 "R16" H 5530 3370 50 0000 L CNN
F 1 "R_Small" H 5530 3310 50 0000 L CNN
F 1 "10kR 1%" H 5530 3310 50 0000 L CNN
F 2 "" H 5500 3350 50 0001 C CNN
F 3 "~" H 5500 3350 50 0001 C CNN
1 5500 3350
@ -1255,8 +1252,8 @@ L Device:C_Small C17
U 1 1 5E0FD6B3
P 5900 3350
F 0 "C17" H 5910 3420 50 0000 L CNN
F 1 "C_Small" H 5910 3270 50 0000 L CNN
F 2 "" H 5900 3350 50 0001 C CNN
F 1 "150 pF" H 5910 3270 50 0000 L CNN
F 2 "Capacitor_SMD:C_0402_1005Metric" H 5900 3350 50 0001 C CNN
F 3 "~" H 5900 3350 50 0001 C CNN
1 5900 3350
1 0 0 -1
@ -1303,7 +1300,7 @@ L Device:R_Small R21
U 1 1 5E14C62C
P 7050 2950
F 0 "R21" H 7080 2970 50 0000 L CNN
F 1 "R_Small" H 7080 2910 50 0000 L CNN
F 1 "100kR 1%" H 7080 2910 50 0000 L CNN
F 2 "" H 7050 2950 50 0001 C CNN
F 3 "~" H 7050 2950 50 0001 C CNN
1 7050 2950
@ -1314,7 +1311,7 @@ L Device:R_Small R22
U 1 1 5E14C632
P 7050 3350
F 0 "R22" H 7080 3370 50 0000 L CNN
F 1 "R_Small" H 7080 3310 50 0000 L CNN
F 1 "10kR 1%" H 7080 3310 50 0000 L CNN
F 2 "" H 7050 3350 50 0001 C CNN
F 3 "~" H 7050 3350 50 0001 C CNN
1 7050 3350
@ -1325,7 +1322,7 @@ L Device:C_Small C23
U 1 1 5E14C638
P 7450 3350
F 0 "C23" H 7460 3420 50 0000 L CNN
F 1 "C_Small" H 7460 3270 50 0000 L CNN
F 1 "150 pF" H 7460 3270 50 0000 L CNN
F 2 "" H 7450 3350 50 0001 C CNN
F 3 "~" H 7450 3350 50 0001 C CNN
1 7450 3350
@ -1373,7 +1370,7 @@ L Device:R_Small R17
U 1 1 5E155B9C
P 5500 4200
F 0 "R17" H 5530 4220 50 0000 L CNN
F 1 "R_Small" H 5530 4160 50 0000 L CNN
F 1 "100kR 1%" H 5530 4160 50 0000 L CNN
F 2 "" H 5500 4200 50 0001 C CNN
F 3 "~" H 5500 4200 50 0001 C CNN
1 5500 4200
@ -1384,7 +1381,7 @@ L Device:R_Small R18
U 1 1 5E155BA2
P 5500 4600
F 0 "R18" H 5530 4620 50 0000 L CNN
F 1 "R_Small" H 5530 4560 50 0000 L CNN
F 1 "10kR 1%" H 5530 4560 50 0000 L CNN
F 2 "" H 5500 4600 50 0001 C CNN
F 3 "~" H 5500 4600 50 0001 C CNN
1 5500 4600
@ -1395,7 +1392,7 @@ L Device:C_Small C18
U 1 1 5E155BA8
P 5900 4600
F 0 "C18" H 5910 4670 50 0000 L CNN
F 1 "C_Small" H 5910 4520 50 0000 L CNN
F 1 "150 pF" H 5910 4520 50 0000 L CNN
F 2 "" H 5900 4600 50 0001 C CNN
F 3 "~" H 5900 4600 50 0001 C CNN
1 5900 4600
@ -1662,33 +1659,11 @@ Wire Wire Line
3300 9100 3300 9700
Connection ~ 3300 9700
$Comp
L Device:R_Small R23
U 1 1 5E36392C
P 7050 4200
F 0 "R23" H 7080 4220 50 0000 L CNN
F 1 "R_Small" H 7080 4160 50 0000 L CNN
F 2 "" H 7050 4200 50 0001 C CNN
F 3 "~" H 7050 4200 50 0001 C CNN
1 7050 4200
1 0 0 -1
$EndComp
$Comp
L Device:R_Small R24
U 1 1 5E365043
P 7050 4600
F 0 "R24" H 7080 4620 50 0000 L CNN
F 1 "R_Small" H 7080 4560 50 0000 L CNN
F 2 "" H 7050 4600 50 0001 C CNN
F 3 "~" H 7050 4600 50 0001 C CNN
1 7050 4600
1 0 0 -1
$EndComp
$Comp
L Device:C_Small C24
U 1 1 5E36569F
P 7450 4600
F 0 "C24" H 7460 4670 50 0000 L CNN
F 1 "C_Small" H 7460 4520 50 0000 L CNN
F 1 "0.1 uF" H 7460 4520 50 0000 L CNN
F 2 "" H 7450 4600 50 0001 C CNN
F 3 "~" H 7450 4600 50 0001 C CNN
1 7450 4600
@ -1699,7 +1674,7 @@ L Device:C_Small C25
U 1 1 5E365D23
P 7800 4600
F 0 "C25" H 7810 4670 50 0000 L CNN
F 1 "C_Small" H 7810 4520 50 0000 L CNN
F 1 "1 uF" H 7810 4520 50 0000 L CNN
F 2 "" H 7800 4600 50 0001 C CNN
F 3 "~" H 7800 4600 50 0001 C CNN
1 7800 4600
@ -1769,7 +1744,7 @@ L Device:R_Small R5
U 1 1 5E43FB73
P 3550 4550
F 0 "R5" H 3580 4570 50 0000 L CNN
F 1 "R_Small" H 3580 4510 50 0000 L CNN
F 1 "1kR" H 3580 4510 50 0000 L CNN
F 2 "" H 3550 4550 50 0001 C CNN
F 3 "~" H 3550 4550 50 0001 C CNN
1 3550 4550
@ -1780,7 +1755,7 @@ L Device:R_Small R13
U 1 1 5E4400CE
P 4600 4550
F 0 "R13" H 4630 4570 50 0000 L CNN
F 1 "R_Small" H 4630 4510 50 0000 L CNN
F 1 "1kR" H 4630 4510 50 0000 L CNN
F 2 "" H 4600 4550 50 0001 C CNN
F 3 "~" H 4600 4550 50 0001 C CNN
1 4600 4550
@ -1791,7 +1766,7 @@ L Device:R_Small R14
U 1 1 5E440303
P 4600 5250
F 0 "R14" H 4630 5270 50 0000 L CNN
F 1 "R_Small" H 4630 5210 50 0000 L CNN
F 1 "1kR" H 4630 5210 50 0000 L CNN
F 2 "" H 4600 5250 50 0001 C CNN
F 3 "~" H 4600 5250 50 0001 C CNN
1 4600 5250
@ -1812,8 +1787,8 @@ L Device:C_Small C8
U 1 1 5E4A182C
P 3900 4750
F 0 "C8" H 3910 4820 50 0000 L CNN
F 1 "C_Small" H 3910 4670 50 0000 L CNN
F 2 "" H 3900 4750 50 0001 C CNN
F 1 "1.5 nF" H 3910 4670 50 0000 L CNN
F 2 "Capacitor_SMD:C_0402_1005Metric" H 3900 4750 50 0001 C CNN
F 3 "~" H 3900 4750 50 0001 C CNN
1 3900 4750
-1 0 0 -1
@ -1823,7 +1798,7 @@ L Device:C_Small C9
U 1 1 5E4A1C41
P 4250 4750
F 0 "C9" H 4260 4820 50 0000 L CNN
F 1 "C_Small" H 4260 4670 50 0000 L CNN
F 1 "1.5 nF" H 4260 4670 50 0000 L CNN
F 2 "" H 4250 4750 50 0001 C CNN
F 3 "~" H 4250 4750 50 0001 C CNN
1 4250 4750
@ -1834,8 +1809,8 @@ L Device:C_Small C14
U 1 1 5E4A20AA
P 4400 5450
F 0 "C14" H 4410 5520 50 0000 L CNN
F 1 "C_Small" H 4410 5370 50 0000 L CNN
F 2 "" H 4400 5450 50 0001 C CNN
F 1 "1.5 nF" H 4410 5370 50 0000 L CNN
F 2 "Capacitor_SMD:C_0402_1005Metric" H 4400 5450 50 0001 C CNN
F 3 "~" H 4400 5450 50 0001 C CNN
1 4400 5450
1 0 0 -1
@ -2418,7 +2393,7 @@ U 1 1 5EDB542B
P 6150 9100
F 0 "C20" H 6160 9170 50 0000 L CNN
F 1 "1 nF DNP" H 6160 9020 50 0000 L CNN
F 2 "" H 6150 9100 50 0001 C CNN
F 2 "Capacitor_SMD:C_0402_1005Metric" H 6150 9100 50 0001 C CNN
F 3 "~" H 6150 9100 50 0001 C CNN
1 6150 9100
-1 0 0 -1
@ -2653,7 +2628,7 @@ U 1 1 5F17BABC
P 5650 7750
F 0 "C16" H 5660 7820 50 0000 L CNN
F 1 "10 nF" H 5660 7670 50 0000 L CNN
F 2 "" H 5650 7750 50 0001 C CNN
F 2 "Capacitor_SMD:C_0402_1005Metric" H 5650 7750 50 0001 C CNN
F 3 "~" H 5650 7750 50 0001 C CNN
1 5650 7750
-1 0 0 -1
@ -2772,7 +2747,7 @@ U 1 1 5F4C8CA7
P 6250 7000
F 0 "C21" H 6260 7070 50 0000 L CNN
F 1 "10 uF DNP" H 6260 6920 50 0000 L CNN
F 2 "" H 6250 7000 50 0001 C CNN
F 2 "Capacitor_SMD:C_0603_1608Metric" H 6250 7000 50 0001 C CNN
F 3 "~" H 6250 7000 50 0001 C CNN
1 6250 7000
-1 0 0 -1
@ -2780,16 +2755,16 @@ $EndComp
$Comp
L power:GND #PWR0163
U 1 1 5F4C8CAD
P 6250 6800
F 0 "#PWR0163" H 6250 6550 50 0001 C CNN
F 1 "GND" H 6250 6650 50 0000 C CNN
F 2 "" H 6250 6800 50 0001 C CNN
F 3 "" H 6250 6800 50 0001 C CNN
1 6250 6800
P 6250 6850
F 0 "#PWR0163" H 6250 6600 50 0001 C CNN
F 1 "GND" H 6250 6700 50 0000 C CNN
F 2 "" H 6250 6850 50 0001 C CNN
F 3 "" H 6250 6850 50 0001 C CNN
1 6250 6850
-1 0 0 1
$EndComp
Wire Wire Line
6250 6800 6250 6900
6250 6850 6250 6900
Wire Wire Line
6250 7100 6250 7250
Wire Wire Line
@ -2972,7 +2947,7 @@ U 1 1 5FFE7137
P 1650 6700
F 0 "R1" H 1680 6720 50 0000 L CNN
F 1 "100kR" H 1680 6660 50 0000 L CNN
F 2 "" H 1650 6700 50 0001 C CNN
F 2 "Resistor_SMD:R_0402_1005Metric" H 1650 6700 50 0001 C CNN
F 3 "~" H 1650 6700 50 0001 C CNN
1 1650 6700
-1 0 0 -1
@ -3291,7 +3266,7 @@ U 1 1 60DFAA59
P 3550 9750
F 0 "C5" H 3560 9820 50 0000 L CNN
F 1 "0.1 uF" H 3560 9670 50 0000 L CNN
F 2 "" H 3550 9750 50 0001 C CNN
F 2 "Capacitor_SMD:C_0402_1005Metric" H 3550 9750 50 0001 C CNN
F 3 "~" H 3550 9750 50 0001 C CNN
1 3550 9750
1 0 0 -1
@ -3302,7 +3277,7 @@ U 1 1 60DFAA5F
P 3850 9750
F 0 "C7" H 3860 9820 50 0000 L CNN
F 1 "10 uF" H 3860 9670 50 0000 L CNN
F 2 "" H 3850 9750 50 0001 C CNN
F 2 "Capacitor_SMD:C_0603_1608Metric" H 3850 9750 50 0001 C CNN
F 3 "~" H 3850 9750 50 0001 C CNN
1 3850 9750
1 0 0 -1
@ -3453,8 +3428,9 @@ U 1 1 611B19B2
P 3450 7100
F 0 "C4" H 3460 7170 50 0000 L CNN
F 1 "0.1 uF" H 3460 7020 50 0000 L CNN
F 2 "" H 3450 7100 50 0001 C CNN
F 2 "Capacitor_SMD:C_0402_1005Metric" H 3450 7100 50 0001 C CNN
F 3 "~" H 3450 7100 50 0001 C CNN
F 4 "80-C0402C104M4P" H 3450 7100 50 0001 C CNN "Mouser"
1 3450 7100
1 0 0 -1
$EndComp
@ -3464,7 +3440,7 @@ U 1 1 611B19B8
P 3750 7100
F 0 "C6" H 3760 7170 50 0000 L CNN
F 1 "10 uF" H 3760 7020 50 0000 L CNN
F 2 "" H 3750 7100 50 0001 C CNN
F 2 "Capacitor_SMD:C_0603_1608Metric" H 3750 7100 50 0001 C CNN
F 3 "~" H 3750 7100 50 0001 C CNN
1 3750 7100
1 0 0 -1
@ -3587,8 +3563,6 @@ NoConn ~ 8350 5750
Connection ~ 8950 9450
Wire Wire Line
8950 9450 8950 8850
Text Notes 12800 1750 0 50 ~ 0
TODO set up passives
$Comp
L Memory_Flash:W25Q32JVSS U5
U 1 1 6168A299
@ -4351,4 +4325,43 @@ Wire Wire Line
Connection ~ 13800 2400
Wire Wire Line
13800 2400 13650 2400
$Comp
L Device:R_Small R49
U 1 1 63B240CC
P 13000 2400
F 0 "R49" H 13030 2420 50 0000 L CNN
F 1 "3R0" H 13030 2360 50 0000 L CNN
F 2 "" H 13000 2400 50 0001 C CNN
F 3 "~" H 13000 2400 50 0001 C CNN
1 13000 2400
0 -1 -1 0
$EndComp
Wire Wire Line
13100 2400 13250 2400
Connection ~ 13250 2400
Wire Wire Line
12900 2400 12750 2400
Connection ~ 12750 2400
$Comp
L Device:R_Small R23
U 1 1 5E36392C
P 7050 4200
F 0 "R23" H 7080 4220 50 0000 L CNN
F 1 "10kR 1%" H 7080 4160 50 0000 L CNN
F 2 "" H 7050 4200 50 0001 C CNN
F 3 "~" H 7050 4200 50 0001 C CNN
1 7050 4200
1 0 0 -1
$EndComp
$Comp
L Device:R_Small R24
U 1 1 5E365043
P 7050 4600
F 0 "R24" H 7080 4620 50 0000 L CNN
F 1 "1kR 1%" H 7080 4560 50 0000 L CNN
F 2 "" H 7050 4600 50 0001 C CNN
F 3 "~" H 7050 4600 50 0001 C CNN
1 7050 4600
1 0 0 -1
$EndComp
$EndSCHEMATC

View File

@ -243,7 +243,7 @@ U 1 1 5DCF6874
P 9300 2050
F 0 "C33" H 9310 2120 50 0000 L CNN
F 1 "1 uF X5R 16V" H 9310 1970 50 0000 L CNN
F 2 "" H 9300 2050 50 0001 C CNN
F 2 "Capacitor_SMD:C_0603_1608Metric" H 9300 2050 50 0001 C CNN
F 3 "~" H 9300 2050 50 0001 C CNN
1 9300 2050
0 -1 1 0
@ -273,8 +273,9 @@ U 1 1 5DCFB8B2
P 8600 2050
F 0 "C27" H 8610 2120 50 0000 L CNN
F 1 "0.1 uF X5R 25V" H 8610 1970 50 0000 L CNN
F 2 "" H 8600 2050 50 0001 C CNN
F 2 "Capacitor_SMD:C_0402_1005Metric" H 8600 2050 50 0001 C CNN
F 3 "~" H 8600 2050 50 0001 C CNN
F 4 "81-GRM155R61H104KE9D" H 8600 2050 50 0001 C CNN "Mouser"
1 8600 2050
-1 0 0 -1
$EndComp
@ -319,7 +320,7 @@ U 1 1 5DD02CDB
P 9150 1750
F 0 "C32" H 9160 1820 50 0000 L CNN
F 1 "47 nF X5R 25V" H 9160 1670 50 0000 L CNN
F 2 "" H 9150 1750 50 0001 C CNN
F 2 "Capacitor_SMD:C_0402_1005Metric" H 9150 1750 50 0001 C CNN
F 3 "~" H 9150 1750 50 0001 C CNN
1 9150 1750
0 1 -1 0
@ -349,7 +350,7 @@ U 1 1 5DD07091
P 8700 1550
F 0 "C29" H 8710 1620 50 0000 L CNN
F 1 "1 uF X5R 25V" H 8710 1470 50 0000 L CNN
F 2 "" H 8700 1550 50 0001 C CNN
F 2 "Capacitor_SMD:C_0603_1608Metric" H 8700 1550 50 0001 C CNN
F 3 "~" H 8700 1550 50 0001 C CNN
1 8700 1550
0 1 -1 0
@ -559,7 +560,7 @@ L Device:L_Small L1
U 1 1 5DD614A2
P 12100 2400
F 0 "L1" H 12130 2440 50 0000 L CNN
F 1 "L_Small" H 12130 2360 50 0000 L CNN
F 1 "220 uH 1A" H 12130 2360 50 0000 L CNN
F 2 "" H 12100 2400 50 0001 C CNN
F 3 "~" H 12100 2400 50 0001 C CNN
1 12100 2400
@ -616,7 +617,7 @@ L Device:R_Small R39
U 1 1 5DD6C08A
P 12750 2600
F 0 "R39" H 12780 2620 50 0000 L CNN
F 1 "R_Small" H 12780 2560 50 0000 L CNN
F 1 "3R0" H 12780 2560 50 0000 L CNN
F 2 "" H 12750 2600 50 0001 C CNN
F 3 "~" H 12750 2600 50 0001 C CNN
1 12750 2600
@ -627,7 +628,7 @@ L Device:C_Small C49
U 1 1 5DD6CA40
P 12750 2900
F 0 "C49" H 12760 2970 50 0000 L CNN
F 1 "C_Small" H 12760 2820 50 0000 L CNN
F 1 "22 uF 10V" H 12760 2820 50 0000 L CNN
F 2 "" H 12750 2900 50 0001 C CNN
F 3 "~" H 12750 2900 50 0001 C CNN
1 12750 2900
@ -653,7 +654,7 @@ Wire Wire Line
Wire Wire Line
12750 2400 12350 2400
Connection ~ 12350 2400
Text Label 12750 2400 0 50 ~ 0
Text Label 13450 2400 1 50 ~ 0
VBUCK_5V0
Wire Wire Line
12600 2750 12350 2750
@ -662,7 +663,7 @@ Wire Wire Line
12350 2750 12350 2700
Text Label 12600 2750 2 50 ~ 0
FB
Text Notes 12800 2250 0 50 ~ 0
Text Notes 12500 2400 0 50 ~ 0
350 mA
$Comp
L power:GND #PWR0116
@ -1088,7 +1089,7 @@ L Device:C_Small C50
U 1 1 5DF94C9F
P 13250 2600
F 0 "C50" H 13260 2670 50 0000 L CNN
F 1 "C_Small" H 13260 2520 50 0000 L CNN
F 1 "22 uF" H 13260 2520 50 0000 L CNN
F 2 "" H 13250 2600 50 0001 C CNN
F 3 "~" H 13250 2600 50 0001 C CNN
1 13250 2600
@ -1118,14 +1119,10 @@ F 3 "~" H 15250 2600 50 0001 C CNN
$EndComp
Wire Wire Line
13250 2500 13250 2400
Wire Wire Line
13250 2400 12750 2400
Connection ~ 12750 2400
Wire Wire Line
13650 2500 13650 2400
Wire Wire Line
13650 2400 13550 2400
Connection ~ 13250 2400
Text Label 15800 2400 2 50 ~ 0
FPGA_IO_3V3
Wire Wire Line
@ -1233,7 +1230,7 @@ L Device:R_Small R15
U 1 1 5E0E88C6
P 5500 2950
F 0 "R15" H 5530 2970 50 0000 L CNN
F 1 "R_Small" H 5530 2910 50 0000 L CNN
F 1 "100kR 1%" H 5530 2910 50 0000 L CNN
F 2 "" H 5500 2950 50 0001 C CNN
F 3 "~" H 5500 2950 50 0001 C CNN
1 5500 2950
@ -1244,7 +1241,7 @@ L Device:R_Small R16
U 1 1 5E0E8F15
P 5500 3350
F 0 "R16" H 5530 3370 50 0000 L CNN
F 1 "R_Small" H 5530 3310 50 0000 L CNN
F 1 "10kR 1%" H 5530 3310 50 0000 L CNN
F 2 "" H 5500 3350 50 0001 C CNN
F 3 "~" H 5500 3350 50 0001 C CNN
1 5500 3350
@ -1255,8 +1252,8 @@ L Device:C_Small C17
U 1 1 5E0FD6B3
P 5900 3350
F 0 "C17" H 5910 3420 50 0000 L CNN
F 1 "C_Small" H 5910 3270 50 0000 L CNN
F 2 "" H 5900 3350 50 0001 C CNN
F 1 "150 pF" H 5910 3270 50 0000 L CNN
F 2 "Capacitor_SMD:C_0402_1005Metric" H 5900 3350 50 0001 C CNN
F 3 "~" H 5900 3350 50 0001 C CNN
1 5900 3350
1 0 0 -1
@ -1303,7 +1300,7 @@ L Device:R_Small R21
U 1 1 5E14C62C
P 7050 2950
F 0 "R21" H 7080 2970 50 0000 L CNN
F 1 "R_Small" H 7080 2910 50 0000 L CNN
F 1 "100kR 1%" H 7080 2910 50 0000 L CNN
F 2 "" H 7050 2950 50 0001 C CNN
F 3 "~" H 7050 2950 50 0001 C CNN
1 7050 2950
@ -1314,7 +1311,7 @@ L Device:R_Small R22
U 1 1 5E14C632
P 7050 3350
F 0 "R22" H 7080 3370 50 0000 L CNN
F 1 "R_Small" H 7080 3310 50 0000 L CNN
F 1 "10kR 1%" H 7080 3310 50 0000 L CNN
F 2 "" H 7050 3350 50 0001 C CNN
F 3 "~" H 7050 3350 50 0001 C CNN
1 7050 3350
@ -1325,7 +1322,7 @@ L Device:C_Small C23
U 1 1 5E14C638
P 7450 3350
F 0 "C23" H 7460 3420 50 0000 L CNN
F 1 "C_Small" H 7460 3270 50 0000 L CNN
F 1 "150 pF" H 7460 3270 50 0000 L CNN
F 2 "" H 7450 3350 50 0001 C CNN
F 3 "~" H 7450 3350 50 0001 C CNN
1 7450 3350
@ -1373,7 +1370,7 @@ L Device:R_Small R17
U 1 1 5E155B9C
P 5500 4200
F 0 "R17" H 5530 4220 50 0000 L CNN
F 1 "R_Small" H 5530 4160 50 0000 L CNN
F 1 "100kR 1%" H 5530 4160 50 0000 L CNN
F 2 "" H 5500 4200 50 0001 C CNN
F 3 "~" H 5500 4200 50 0001 C CNN
1 5500 4200
@ -1384,7 +1381,7 @@ L Device:R_Small R18
U 1 1 5E155BA2
P 5500 4600
F 0 "R18" H 5530 4620 50 0000 L CNN
F 1 "R_Small" H 5530 4560 50 0000 L CNN
F 1 "10kR 1%" H 5530 4560 50 0000 L CNN
F 2 "" H 5500 4600 50 0001 C CNN
F 3 "~" H 5500 4600 50 0001 C CNN
1 5500 4600
@ -1395,7 +1392,7 @@ L Device:C_Small C18
U 1 1 5E155BA8
P 5900 4600
F 0 "C18" H 5910 4670 50 0000 L CNN
F 1 "C_Small" H 5910 4520 50 0000 L CNN
F 1 "150 pF" H 5910 4520 50 0000 L CNN
F 2 "" H 5900 4600 50 0001 C CNN
F 3 "~" H 5900 4600 50 0001 C CNN
1 5900 4600
@ -1662,33 +1659,11 @@ Wire Wire Line
3300 9100 3300 9700
Connection ~ 3300 9700
$Comp
L Device:R_Small R23
U 1 1 5E36392C
P 7050 4200
F 0 "R23" H 7080 4220 50 0000 L CNN
F 1 "R_Small" H 7080 4160 50 0000 L CNN
F 2 "" H 7050 4200 50 0001 C CNN
F 3 "~" H 7050 4200 50 0001 C CNN
1 7050 4200
1 0 0 -1
$EndComp
$Comp
L Device:R_Small R24
U 1 1 5E365043
P 7050 4600
F 0 "R24" H 7080 4620 50 0000 L CNN
F 1 "R_Small" H 7080 4560 50 0000 L CNN
F 2 "" H 7050 4600 50 0001 C CNN
F 3 "~" H 7050 4600 50 0001 C CNN
1 7050 4600
1 0 0 -1
$EndComp
$Comp
L Device:C_Small C24
U 1 1 5E36569F
P 7450 4600
F 0 "C24" H 7460 4670 50 0000 L CNN
F 1 "C_Small" H 7460 4520 50 0000 L CNN
F 1 "0.1 uF" H 7460 4520 50 0000 L CNN
F 2 "" H 7450 4600 50 0001 C CNN
F 3 "~" H 7450 4600 50 0001 C CNN
1 7450 4600
@ -1699,7 +1674,7 @@ L Device:C_Small C25
U 1 1 5E365D23
P 7800 4600
F 0 "C25" H 7810 4670 50 0000 L CNN
F 1 "C_Small" H 7810 4520 50 0000 L CNN
F 1 "1 uF" H 7810 4520 50 0000 L CNN
F 2 "" H 7800 4600 50 0001 C CNN
F 3 "~" H 7800 4600 50 0001 C CNN
1 7800 4600
@ -1769,7 +1744,7 @@ L Device:R_Small R5
U 1 1 5E43FB73
P 3550 4550
F 0 "R5" H 3580 4570 50 0000 L CNN
F 1 "R_Small" H 3580 4510 50 0000 L CNN
F 1 "1kR" H 3580 4510 50 0000 L CNN
F 2 "" H 3550 4550 50 0001 C CNN
F 3 "~" H 3550 4550 50 0001 C CNN
1 3550 4550
@ -1780,7 +1755,7 @@ L Device:R_Small R13
U 1 1 5E4400CE
P 4600 4550
F 0 "R13" H 4630 4570 50 0000 L CNN
F 1 "R_Small" H 4630 4510 50 0000 L CNN
F 1 "1kR" H 4630 4510 50 0000 L CNN
F 2 "" H 4600 4550 50 0001 C CNN
F 3 "~" H 4600 4550 50 0001 C CNN
1 4600 4550
@ -1791,7 +1766,7 @@ L Device:R_Small R14
U 1 1 5E440303
P 4600 5250
F 0 "R14" H 4630 5270 50 0000 L CNN
F 1 "R_Small" H 4630 5210 50 0000 L CNN
F 1 "1kR" H 4630 5210 50 0000 L CNN
F 2 "" H 4600 5250 50 0001 C CNN
F 3 "~" H 4600 5250 50 0001 C CNN
1 4600 5250
@ -1812,8 +1787,8 @@ L Device:C_Small C8
U 1 1 5E4A182C
P 3900 4750
F 0 "C8" H 3910 4820 50 0000 L CNN
F 1 "C_Small" H 3910 4670 50 0000 L CNN
F 2 "" H 3900 4750 50 0001 C CNN
F 1 "1.5 nF" H 3910 4670 50 0000 L CNN
F 2 "Capacitor_SMD:C_0402_1005Metric" H 3900 4750 50 0001 C CNN
F 3 "~" H 3900 4750 50 0001 C CNN
1 3900 4750
-1 0 0 -1
@ -1823,7 +1798,7 @@ L Device:C_Small C9
U 1 1 5E4A1C41
P 4250 4750
F 0 "C9" H 4260 4820 50 0000 L CNN
F 1 "C_Small" H 4260 4670 50 0000 L CNN
F 1 "1.5 nF" H 4260 4670 50 0000 L CNN
F 2 "" H 4250 4750 50 0001 C CNN
F 3 "~" H 4250 4750 50 0001 C CNN
1 4250 4750
@ -1834,8 +1809,8 @@ L Device:C_Small C14
U 1 1 5E4A20AA
P 4400 5450
F 0 "C14" H 4410 5520 50 0000 L CNN
F 1 "C_Small" H 4410 5370 50 0000 L CNN
F 2 "" H 4400 5450 50 0001 C CNN
F 1 "1.5 nF" H 4410 5370 50 0000 L CNN
F 2 "Capacitor_SMD:C_0402_1005Metric" H 4400 5450 50 0001 C CNN
F 3 "~" H 4400 5450 50 0001 C CNN
1 4400 5450
1 0 0 -1
@ -2418,7 +2393,7 @@ U 1 1 5EDB542B
P 6150 9100
F 0 "C20" H 6160 9170 50 0000 L CNN
F 1 "1 nF DNP" H 6160 9020 50 0000 L CNN
F 2 "" H 6150 9100 50 0001 C CNN
F 2 "Capacitor_SMD:C_0402_1005Metric" H 6150 9100 50 0001 C CNN
F 3 "~" H 6150 9100 50 0001 C CNN
1 6150 9100
-1 0 0 -1
@ -2653,7 +2628,7 @@ U 1 1 5F17BABC
P 5650 7750
F 0 "C16" H 5660 7820 50 0000 L CNN
F 1 "10 nF" H 5660 7670 50 0000 L CNN
F 2 "" H 5650 7750 50 0001 C CNN
F 2 "Capacitor_SMD:C_0402_1005Metric" H 5650 7750 50 0001 C CNN
F 3 "~" H 5650 7750 50 0001 C CNN
1 5650 7750
-1 0 0 -1
@ -2772,7 +2747,7 @@ U 1 1 5F4C8CA7
P 6250 7000
F 0 "C21" H 6260 7070 50 0000 L CNN
F 1 "10 uF DNP" H 6260 6920 50 0000 L CNN
F 2 "" H 6250 7000 50 0001 C CNN
F 2 "Capacitor_SMD:C_0603_1608Metric" H 6250 7000 50 0001 C CNN
F 3 "~" H 6250 7000 50 0001 C CNN
1 6250 7000
-1 0 0 -1
@ -2972,7 +2947,7 @@ U 1 1 5FFE7137
P 1650 6700
F 0 "R1" H 1680 6720 50 0000 L CNN
F 1 "100kR" H 1680 6660 50 0000 L CNN
F 2 "" H 1650 6700 50 0001 C CNN
F 2 "Resistor_SMD:R_0402_1005Metric" H 1650 6700 50 0001 C CNN
F 3 "~" H 1650 6700 50 0001 C CNN
1 1650 6700
-1 0 0 -1
@ -3291,7 +3266,7 @@ U 1 1 60DFAA59
P 3550 9750
F 0 "C5" H 3560 9820 50 0000 L CNN
F 1 "0.1 uF" H 3560 9670 50 0000 L CNN
F 2 "" H 3550 9750 50 0001 C CNN
F 2 "Capacitor_SMD:C_0402_1005Metric" H 3550 9750 50 0001 C CNN
F 3 "~" H 3550 9750 50 0001 C CNN
1 3550 9750
1 0 0 -1
@ -3302,7 +3277,7 @@ U 1 1 60DFAA5F
P 3850 9750
F 0 "C7" H 3860 9820 50 0000 L CNN
F 1 "10 uF" H 3860 9670 50 0000 L CNN
F 2 "" H 3850 9750 50 0001 C CNN
F 2 "Capacitor_SMD:C_0603_1608Metric" H 3850 9750 50 0001 C CNN
F 3 "~" H 3850 9750 50 0001 C CNN
1 3850 9750
1 0 0 -1
@ -3453,8 +3428,9 @@ U 1 1 611B19B2
P 3450 7100
F 0 "C4" H 3460 7170 50 0000 L CNN
F 1 "0.1 uF" H 3460 7020 50 0000 L CNN
F 2 "" H 3450 7100 50 0001 C CNN
F 2 "Capacitor_SMD:C_0402_1005Metric" H 3450 7100 50 0001 C CNN
F 3 "~" H 3450 7100 50 0001 C CNN
F 4 "80-C0402C104M4P" H 3450 7100 50 0001 C CNN "Mouser"
1 3450 7100
1 0 0 -1
$EndComp
@ -3464,7 +3440,7 @@ U 1 1 611B19B8
P 3750 7100
F 0 "C6" H 3760 7170 50 0000 L CNN
F 1 "10 uF" H 3760 7020 50 0000 L CNN
F 2 "" H 3750 7100 50 0001 C CNN
F 2 "Capacitor_SMD:C_0603_1608Metric" H 3750 7100 50 0001 C CNN
F 3 "~" H 3750 7100 50 0001 C CNN
1 3750 7100
1 0 0 -1
@ -3587,8 +3563,6 @@ NoConn ~ 8350 5750
Connection ~ 8950 9450
Wire Wire Line
8950 9450 8950 8850
Text Notes 12800 1750 0 50 ~ 0
TODO set up passives
$Comp
L Memory_Flash:W25Q32JVSS U5
U 1 1 6168A299
@ -4351,4 +4325,43 @@ Wire Wire Line
Connection ~ 13800 2400
Wire Wire Line
13800 2400 13650 2400
$Comp
L Device:R_Small R49
U 1 1 63B240CC
P 13000 2400
F 0 "R49" H 13030 2420 50 0000 L CNN
F 1 "3R0" H 13030 2360 50 0000 L CNN
F 2 "" H 13000 2400 50 0001 C CNN
F 3 "~" H 13000 2400 50 0001 C CNN
1 13000 2400
0 -1 -1 0
$EndComp
Wire Wire Line
13100 2400 13250 2400
Connection ~ 13250 2400
Wire Wire Line
12900 2400 12750 2400
Connection ~ 12750 2400
$Comp
L Device:R_Small R23
U 1 1 5E36392C
P 7050 4200
F 0 "R23" H 7080 4220 50 0000 L CNN
F 1 "10kR 1%" H 7080 4160 50 0000 L CNN
F 2 "" H 7050 4200 50 0001 C CNN
F 3 "~" H 7050 4200 50 0001 C CNN
1 7050 4200
1 0 0 -1
$EndComp
$Comp
L Device:R_Small R24
U 1 1 5E365043
P 7050 4600
F 0 "R24" H 7080 4620 50 0000 L CNN
F 1 "1kR 1%" H 7080 4560 50 0000 L CNN
F 2 "" H 7050 4600 50 0001 C CNN
F 3 "~" H 7050 4600 50 0001 C CNN
1 7050 4600
1 0 0 -1
$EndComp
$EndSCHEMATC