diff --git a/F0-nolib/canbus/kicad/stm32-rescue.lib b/F0-nolib/canbus/kicad/stm32-rescue.lib index 4df6a8b..5482c15 100644 --- a/F0-nolib/canbus/kicad/stm32-rescue.lib +++ b/F0-nolib/canbus/kicad/stm32-rescue.lib @@ -1,6 +1,411 @@ -EESchema-LIBRARY Version 2.3 +EESchema-LIBRARY Version 2.4 #encoding utf-8 # +# +3.3V +# +DEF +3.3V #PWR 0 0 Y Y 1 F P +F0 "#PWR" 0 -150 50 H I C CNN +F1 "+3.3V" 0 140 50 H V C CNN +F2 "" 0 0 50 H I C CNN +F3 "" 0 0 50 H I C CNN +DRAW +P 2 0 1 0 -30 50 0 100 N +P 2 0 1 0 0 0 0 100 N +P 2 0 1 0 0 100 30 50 N +X +3V3 1 0 0 0 U 50 50 1 1 W N +ENDDRAW +ENDDEF +# +# +5V +# +DEF +5V #PWR 0 0 Y Y 1 F P +F0 "#PWR" 0 -150 50 H I C CNN +F1 "+5V" 0 140 50 H V C CNN +F2 "" 0 0 50 H I C CNN +F3 "" 0 0 50 H I C CNN +DRAW +P 2 0 1 0 -30 50 0 100 N +P 2 0 1 0 0 0 0 100 N +P 2 0 1 0 0 100 30 50 N +X +5V 1 0 0 0 U 50 50 1 1 W N +ENDDRAW +ENDDEF +# +# C +# +DEF C C 0 10 N Y 1 F N +F0 "C" 25 100 50 H V L CNN +F1 "C" 25 -100 50 H V L CNN +F2 "" 38 -150 50 H I C CNN +F3 "" 0 0 50 H I C CNN +$FPLIST + C_* +$ENDFPLIST +DRAW +P 2 0 1 20 -80 -30 80 -30 N +P 2 0 1 20 -80 30 80 30 N +X ~ 1 0 150 110 D 50 50 1 1 P +X ~ 2 0 -150 110 U 50 50 1 1 P +ENDDRAW +ENDDEF +# +# CONN_01X01 +# +DEF CONN_01X01 J 0 40 Y N 1 F N +F0 "J" 0 100 50 H V C CNN +F1 "CONN_01X01" 100 0 50 V V C CNN +F2 "" 0 0 50 H I C CNN +F3 "" 0 0 50 H I C CNN +$FPLIST + Pin_Header_Straight_1X* + Pin_Header_Angled_1X* + Socket_Strip_Straight_1X* + Socket_Strip_Angled_1X* +$ENDFPLIST +DRAW +S -50 5 10 -5 0 1 0 N +S -50 50 50 -50 0 1 0 N +X P1 1 -200 0 150 R 50 50 1 1 P +ENDDRAW +ENDDEF +# +# CONN_01X03 +# +DEF CONN_01X03 J 0 40 Y N 1 F N +F0 "J" 0 200 50 H V C CNN +F1 "CONN_01X03" 100 0 50 V V C CNN +F2 "" 0 0 50 H I C CNN +F3 "" 0 0 50 H I C CNN +$FPLIST + Pin_Header_Straight_1X* + Pin_Header_Angled_1X* + Socket_Strip_Straight_1X* + Socket_Strip_Angled_1X* +$ENDFPLIST +DRAW +S -50 -95 10 -105 0 1 0 N +S -50 5 10 -5 0 1 0 N +S -50 105 10 95 0 1 0 N +S -50 150 50 -150 0 1 0 N +X P1 1 -200 100 150 R 50 50 1 1 P +X P2 2 -200 0 150 R 50 50 1 1 P +X P3 3 -200 -100 150 R 50 50 1 1 P +ENDDRAW +ENDDEF +# +# CONN_02X03 +# +DEF CONN_02X03 J 0 1 Y N 1 F N +F0 "J" 0 200 50 H V C CNN +F1 "CONN_02X03" 0 -200 50 H V C CNN +F2 "" 0 -1200 50 H I C CNN +F3 "" 0 -1200 50 H I C CNN +$FPLIST + Pin_Header_Straight_2X* + Pin_Header_Angled_2X* + Socket_Strip_Straight_2X* + Socket_Strip_Angled_2X* + IDC_Header_Straight_* +$ENDFPLIST +DRAW +S -100 -95 -50 -105 0 1 0 N +S -100 5 -50 -5 0 1 0 N +S -100 105 -50 95 0 1 0 N +S -100 150 100 -150 0 1 0 N +S 50 -95 100 -105 0 1 0 N +S 50 5 100 -5 0 1 0 N +S 50 105 100 95 0 1 0 N +X P1 1 -250 100 150 R 50 50 1 1 P +X P2 2 250 100 150 L 50 50 1 1 P +X P3 3 -250 0 150 R 50 50 1 1 P +X P4 4 250 0 150 L 50 50 1 1 P +X P5 5 -250 -100 150 R 50 50 1 1 P +X P6 6 250 -100 150 L 50 50 1 1 P +ENDDRAW +ENDDEF +# +# CP +# +DEF CP C 0 10 N Y 1 F N +F0 "C" 25 100 50 H V L CNN +F1 "CP" 25 -100 50 H V L CNN +F2 "" 38 -150 50 H I C CNN +F3 "" 0 0 50 H I C CNN +$FPLIST + CP_* +$ENDFPLIST +DRAW +S -90 20 -90 40 0 1 0 N +S -90 20 90 20 0 1 0 N +S 90 -20 -90 -40 0 1 0 F +S 90 40 -90 40 0 1 0 N +S 90 40 90 20 0 1 0 N +P 2 0 1 0 -70 90 -30 90 N +P 2 0 1 0 -50 110 -50 70 N +X ~ 1 0 150 110 D 50 50 1 1 P +X ~ 2 0 -150 110 U 50 50 1 1 P +ENDDRAW +ENDDEF +# +# Conn_01x01 +# +DEF Conn_01x01 J 0 40 Y N 1 F N +F0 "J" 0 100 50 H V C CNN +F1 "Conn_01x01" 0 -100 50 H V C CNN +F2 "" 0 0 50 H I C CNN +F3 "" 0 0 50 H I C CNN +$FPLIST + Connector*:*_??x*mm* + Connector*:*1x??x*mm* + Pin?Header?Straight?1X* + Pin?Header?Angled?1X* + Socket?Strip?Straight?1X* + Socket?Strip?Angled?1X* +$ENDFPLIST +DRAW +S -50 5 0 -5 1 1 6 N +S -50 50 50 -50 1 1 10 f +X Pin_1 1 -200 0 150 R 50 50 1 1 P +ENDDRAW +ENDDEF +# +# Conn_01x02 +# +DEF Conn_01x02 J 0 40 Y N 1 F N +F0 "J" 0 100 50 H V C CNN +F1 "Conn_01x02" 0 -200 50 H V C CNN +F2 "" 0 0 50 H I C CNN +F3 "" 0 0 50 H I C CNN +$FPLIST + Connector*:*_??x*mm* + Connector*:*1x??x*mm* + Pin?Header?Straight?1X* + Pin?Header?Angled?1X* + Socket?Strip?Straight?1X* + Socket?Strip?Angled?1X* +$ENDFPLIST +DRAW +S -50 -95 0 -105 1 1 6 N +S -50 5 0 -5 1 1 6 N +S -50 50 50 -150 1 1 10 f +X Pin_1 1 -200 0 150 R 50 50 1 1 P +X Pin_2 2 -200 -100 150 R 50 50 1 1 P +ENDDRAW +ENDDEF +# +# Conn_01x07 +# +DEF Conn_01x07 J 0 40 Y N 1 F N +F0 "J" 0 400 50 H V C CNN +F1 "Conn_01x07" 0 -400 50 H V C CNN +F2 "" 0 0 50 H I C CNN +F3 "" 0 0 50 H I C CNN +$FPLIST + Connector*:*_??x*mm* + Connector*:*1x??x*mm* + Pin?Header?Straight?1X* + Pin?Header?Angled?1X* + Socket?Strip?Straight?1X* + Socket?Strip?Angled?1X* +$ENDFPLIST +DRAW +S -50 -295 0 -305 1 1 6 N +S -50 -195 0 -205 1 1 6 N +S -50 -95 0 -105 1 1 6 N +S -50 5 0 -5 1 1 6 N +S -50 105 0 95 1 1 6 N +S -50 205 0 195 1 1 6 N +S -50 305 0 295 1 1 6 N +S -50 350 50 -350 1 1 10 f +X Pin_1 1 -200 300 150 R 50 50 1 1 P +X Pin_2 2 -200 200 150 R 50 50 1 1 P +X Pin_3 3 -200 100 150 R 50 50 1 1 P +X Pin_4 4 -200 0 150 R 50 50 1 1 P +X Pin_5 5 -200 -100 150 R 50 50 1 1 P +X Pin_6 6 -200 -200 150 R 50 50 1 1 P +X Pin_7 7 -200 -300 150 R 50 50 1 1 P +ENDDRAW +ENDDEF +# +# DB9_Female +# +DEF DB9_Female J 0 40 Y N 1 F N +F0 "J" 0 550 50 H V C CNN +F1 "DB9_Female" 0 -575 50 H V C CNN +F2 "" 0 0 50 H I C CNN +F3 "" 0 0 50 H I C CNN +$FPLIST + DB*F* +$ENDFPLIST +DRAW +C -70 -400 30 0 1 0 N +C -70 -200 30 0 1 0 N +C -70 0 30 0 1 0 N +C -70 200 30 0 1 0 N +C -70 400 30 0 1 0 N +C 50 -300 30 0 1 0 N +C 50 -100 30 0 1 0 N +C 50 100 30 0 1 0 N +C 50 300 30 0 1 0 N +P 2 0 1 0 -150 -400 -100 -400 N +P 2 0 1 0 -150 -300 20 -300 N +P 2 0 1 0 -150 -200 -100 -200 N +P 2 0 1 0 -150 -100 20 -100 N +P 2 0 1 0 -150 0 -100 0 N +P 2 0 1 0 -150 100 20 100 N +P 2 0 1 0 -150 200 -100 200 N +P 2 0 1 0 -150 300 20 300 N +P 2 0 1 0 -150 400 -100 400 N +P 5 0 1 10 -150 525 -150 -525 150 -375 150 375 -150 525 f +X 1 1 -300 400 150 R 50 50 1 1 P +X 2 2 -300 200 150 R 50 50 1 1 P +X 3 3 -300 0 150 R 50 50 1 1 P +X 4 4 -300 -200 150 R 50 50 1 1 P +X 5 5 -300 -400 150 R 50 50 1 1 P +X 6 6 -300 300 150 R 50 50 1 1 P +X 7 7 -300 100 150 R 50 50 1 1 P +X 8 8 -300 -100 150 R 50 50 1 1 P +X 9 9 -300 -300 150 R 50 50 1 1 P +ENDDRAW +ENDDEF +# +# DB9_Male +# +DEF DB9_Male J 0 40 Y N 1 F N +F0 "J" 0 550 50 H V C CNN +F1 "DB9_Male" 0 -575 50 H V C CNN +F2 "" 0 0 50 H I C CNN +F3 "" 0 0 50 H I C CNN +$FPLIST + DB*M* +$ENDFPLIST +DRAW +C -70 -400 30 0 1 0 F +C -70 -200 30 0 1 0 F +C -70 0 30 0 1 0 F +C -70 200 30 0 1 0 F +C -70 400 30 0 1 0 F +C 50 -300 30 0 1 0 F +C 50 -100 30 0 1 0 F +C 50 100 30 0 1 0 F +C 50 300 30 0 1 0 F +P 2 0 1 0 -150 -400 -100 -400 N +P 2 0 1 0 -150 -300 20 -300 N +P 2 0 1 0 -150 -200 -100 -200 N +P 2 0 1 0 -150 -100 20 -100 N +P 2 0 1 0 -150 0 -100 0 N +P 2 0 1 0 -150 100 20 100 N +P 2 0 1 0 -150 200 -100 200 N +P 2 0 1 0 -150 300 20 300 N +P 2 0 1 0 -150 400 -100 400 N +P 5 0 1 10 -150 -525 -150 525 150 375 150 -375 -150 -525 f +X 1 1 -300 -400 150 R 50 50 1 1 P +X 2 2 -300 -200 150 R 50 50 1 1 P +X 3 3 -300 0 150 R 50 50 1 1 P +X 4 4 -300 200 150 R 50 50 1 1 P +X 5 5 -300 400 150 R 50 50 1 1 P +X 6 6 -300 -300 150 R 50 50 1 1 P +X 7 7 -300 -100 150 R 50 50 1 1 P +X 8 8 -300 100 150 R 50 50 1 1 P +X 9 9 -300 300 150 R 50 50 1 1 P +ENDDRAW +ENDDEF +# +# D_Schottky +# +DEF D_Schottky D 0 40 N N 1 F N +F0 "D" 0 100 50 H V C CNN +F1 "D_Schottky" 0 -100 50 H V C CNN +F2 "" 0 0 50 H I C CNN +F3 "" 0 0 50 H I C CNN +$FPLIST + TO-???* + *SingleDiode + *_Diode_* + *SingleDiode* + D_* +$ENDFPLIST +DRAW +P 2 0 1 0 50 0 -50 0 N +P 4 0 1 8 50 50 50 -50 -50 0 50 50 N +P 6 0 1 8 -75 25 -75 50 -50 50 -50 -50 -25 -50 -25 -25 N +X K 1 -150 0 100 R 50 50 1 1 P +X A 2 150 0 100 L 50 50 1 1 P +ENDDRAW +ENDDEF +# +# D_Zener +# +DEF D_Zener D 0 40 N N 1 F N +F0 "D" 0 100 50 H V C CNN +F1 "D_Zener" 0 -100 50 H V C CNN +F2 "" 0 0 50 H I C CNN +F3 "" 0 0 50 H I C CNN +$FPLIST + TO-???* + *SingleDiode + *_Diode_* + *SingleDiode* + D_* +$ENDFPLIST +DRAW +P 2 0 1 0 50 0 -50 0 N +P 3 0 1 8 -50 -50 -50 50 -30 50 N +P 4 0 1 8 50 -50 50 50 -50 0 50 -50 N +X K 1 -150 0 100 R 50 50 1 1 P +X A 2 150 0 100 L 50 50 1 1 P +ENDDRAW +ENDDEF +# +# GND +# +DEF GND #PWR 0 0 Y Y 1 F P +F0 "#PWR" 0 -250 50 H I C CNN +F1 "GND" 0 -150 50 H V C CNN +F2 "" 0 0 50 H I C CNN +F3 "" 0 0 50 H I C CNN +DRAW +P 6 0 1 0 0 0 0 -50 50 -50 0 -100 -50 -50 0 -50 N +X GND 1 0 0 0 D 50 50 1 1 W N +ENDDRAW +ENDDEF +# +# Jumper_NO_Small +# +DEF Jumper_NO_Small JP 0 30 N N 1 F N +F0 "JP" 0 80 50 H V C CNN +F1 "Jumper_NO_Small" 10 -60 50 H V C CNN +F2 "" 0 0 50 H I C CNN +F3 "" 0 0 50 H I C CNN +DRAW +C -40 0 20 0 1 0 N +C 40 0 20 0 1 0 N +X 1 1 -100 0 40 R 50 50 0 1 P +X 2 2 100 0 40 L 50 50 0 1 P +ENDDRAW +ENDDEF +# +# LED-RESCUE-stm32 +# +DEF LED-RESCUE-stm32 D 0 40 Y N 1 F N +F0 "D" 0 100 50 H V C CNN +F1 "LED-RESCUE-stm32" 0 -100 50 H V C CNN +F2 "" 0 0 50 H V C CNN +F3 "" 0 0 50 H V C CNN +$FPLIST + LED* +$ENDFPLIST +DRAW +P 2 0 1 8 -50 -50 -50 50 N +P 2 0 1 0 -50 0 50 0 N +P 4 0 1 8 50 -50 50 50 -50 0 50 -50 N +P 5 0 1 0 -120 -30 -180 -90 -150 -90 -180 -90 -180 -60 N +P 5 0 1 0 -70 -30 -130 -90 -100 -90 -130 -90 -130 -60 N +X K 1 -150 0 100 R 50 50 1 1 P +X A 2 150 0 100 L 50 50 1 1 P +ENDDRAW +ENDDEF +# # LM1117-3.3-RESCUE-stm32 # DEF LM1117-3.3-RESCUE-stm32 U 0 30 Y Y 1 F N @@ -42,4 +447,249 @@ X OUT 8 400 -200 100 L 50 50 1 1 O ENDDRAW ENDDEF # +# MCP2551-I_SN +# +DEF MCP2551-I_SN U 0 40 Y Y 1 F N +F0 "U" -400 350 50 H V L CNN +F1 "MCP2551-I_SN" 100 350 50 H V L CNN +F2 "Housings_SOIC:SOIC-8_3.9x4.9mm_Pitch1.27mm" 0 -500 50 H I C CIN +F3 "" 0 0 50 H I C CNN +$FPLIST + SOIC*Pitch1.27mm* +$ENDFPLIST +DRAW +S -400 300 400 -300 0 1 10 f +X TXD 1 -500 200 100 R 50 50 1 1 I +X VSS 2 0 -400 100 U 50 50 1 1 W +X VDD 3 0 400 100 D 50 50 1 1 W +X RXD 4 -500 100 100 R 50 50 1 1 O +X Vref 5 -500 -100 100 R 50 50 1 1 w +X CANL 6 500 -100 100 L 50 50 1 1 B +X CANH 7 500 100 100 L 50 50 1 1 B +X Rs 8 -500 -200 100 R 50 50 1 1 I +ENDDRAW +ENDDEF +# +# PWR_FLAG +# +DEF PWR_FLAG #FLG 0 0 N N 1 F P +F0 "#FLG" 0 75 50 H I C CNN +F1 "PWR_FLAG" 0 150 50 H V C CNN +F2 "" 0 0 50 H I C CNN +F3 "" 0 0 50 H I C CNN +DRAW +P 6 0 1 0 0 0 0 50 -40 75 0 100 40 75 0 50 N +X pwr 1 0 0 0 U 50 50 0 0 w +ENDDRAW +ENDDEF +# +# Q_NMOS_GSD +# +DEF Q_NMOS_GSD Q 0 0 Y N 1 F N +F0 "Q" 200 50 50 H V L CNN +F1 "Q_NMOS_GSD" 200 -50 50 H V L CNN +F2 "" 200 100 50 H I C CNN +F3 "" 0 0 50 H I C CNN +DRAW +C 65 0 111 0 1 10 N +C 100 -70 11 0 1 0 F +C 100 70 11 0 1 0 F +P 2 0 1 0 2 0 10 0 N +P 2 0 1 0 30 -70 100 -70 N +P 2 0 1 10 30 -50 30 -90 N +P 2 0 1 0 30 0 100 0 N +P 2 0 1 10 30 20 30 -20 N +P 2 0 1 0 30 70 100 70 N +P 2 0 1 10 30 90 30 50 N +P 2 0 1 0 100 -70 100 -100 N +P 2 0 1 0 100 -70 100 0 N +P 2 0 1 0 100 100 100 70 N +P 3 0 1 10 10 75 10 -75 10 -75 N +P 4 0 1 0 40 0 80 15 80 -15 40 0 F +P 4 0 1 0 100 -70 130 -70 130 70 100 70 N +P 4 0 1 0 110 20 115 15 145 15 150 10 N +P 4 0 1 0 130 15 115 -10 145 -10 130 15 N +X G 1 -200 0 200 R 50 50 1 1 I +X S 2 100 -200 100 U 50 50 1 1 P +X D 3 100 200 100 D 50 50 1 1 P +ENDDRAW +ENDDEF +# +# Q_PMOS_GSD +# +DEF Q_PMOS_GSD Q 0 0 Y N 1 F N +F0 "Q" 200 50 50 H V L CNN +F1 "Q_PMOS_GSD" 200 -50 50 H V L CNN +F2 "" 200 100 50 H I C CNN +F3 "" 0 0 50 H I C CNN +DRAW +C 65 0 111 0 1 10 N +C 100 -70 11 0 1 0 F +C 100 70 11 0 1 0 F +P 2 0 1 0 2 0 10 0 N +P 2 0 1 0 30 -70 100 -70 N +P 2 0 1 10 30 -50 30 -90 N +P 2 0 1 0 30 0 100 0 N +P 2 0 1 10 30 20 30 -20 N +P 2 0 1 0 30 70 100 70 N +P 2 0 1 10 30 90 30 50 N +P 2 0 1 0 100 -70 100 -100 N +P 2 0 1 0 100 -70 100 0 N +P 2 0 1 0 100 100 100 70 N +P 3 0 1 10 10 75 10 -75 10 -75 N +P 4 0 1 0 90 0 50 -15 50 15 90 0 F +P 4 0 1 0 100 -70 130 -70 130 70 100 70 N +P 4 0 1 0 110 -20 115 -15 145 -15 150 -10 N +P 4 0 1 0 130 -15 115 10 145 10 130 -15 N +X G 1 -200 0 200 R 50 50 1 1 I +X S 2 100 -200 100 U 50 50 1 1 P +X D 3 100 200 100 D 50 50 1 1 P +ENDDRAW +ENDDEF +# +# R +# +DEF R R 0 0 N Y 1 F N +F0 "R" 80 0 50 V V C CNN +F1 "R" 0 0 50 V V C CNN +F2 "" -70 0 50 V I C CNN +F3 "" 0 0 50 H I C CNN +$FPLIST + R_* + R_* +$ENDFPLIST +DRAW +S -40 -100 40 100 0 1 10 N +X ~ 1 0 150 50 D 50 50 1 1 P +X ~ 2 0 -150 50 U 50 50 1 1 P +ENDDRAW +ENDDEF +# +# SP0502BAHT +# +DEF SP0502BAHT D 0 40 Y N 1 F N +F0 "D" 225 100 50 H V L CNN +F1 "SP0502BAHT" 225 25 50 H V L CNN +F2 "TO_SOT_Packages_SMD:SOT-23" 225 -50 50 H I L CNN +F3 "" 125 125 50 H I C CNN +$FPLIST + SOT?23* +$ENDFPLIST +DRAW +S -175 100 175 -100 0 1 10 f +P 2 0 1 0 -100 100 -100 50 N +P 2 0 1 0 0 -50 0 -100 N +P 2 0 1 0 100 100 100 50 N +P 4 0 1 0 -150 75 -125 50 -75 50 -50 25 N +P 4 0 1 0 -100 0 -100 -50 100 -50 100 0 N +P 4 0 1 0 -100 50 -75 0 -125 0 -100 50 F +P 4 0 1 0 50 75 75 50 125 50 150 25 N +P 4 0 1 0 100 50 75 0 125 0 100 50 F +X A 3 0 -200 100 U 50 50 0 0 I +X K 1 -100 200 100 D 50 50 1 1 I +X K 2 100 200 100 D 50 50 1 1 I +ENDDRAW +ENDDEF +# +# STM32F042C6Tx +# +DEF STM32F042C6Tx U 0 40 Y Y 1 L N +F0 "U" -3000 1725 50 H V L BNN +F1 "STM32F042C6Tx" 3000 1725 50 H V R BNN +F2 "LQFP48" 3000 1675 50 H V R TNN +F3 "" 0 0 50 H V C CNN +DRAW +S -3000 -1700 3000 1700 0 1 10 f +X VBAT 1 -3100 1100 100 R 50 50 1 1 W +X ADC_IN0/RTC_TAMP2/SYS_WKUP1/TIM2_CH1/TIM2_ETR/TSC_G1_IO1/USART2_CTS/PA0 10 3100 100 100 L 50 50 1 1 B +X ADC_IN1/TIM2_CH2/TSC_G1_IO2/USART2_DE/USART2_RTS/PA1 11 3100 0 100 L 50 50 1 1 B +X ADC_IN2/SYS_WKUP4/TIM2_CH3/TSC_G1_IO3/USART2_TX/PA2 12 3100 -100 100 L 50 50 1 1 B +X ADC_IN3/TIM2_CH4/TSC_G1_IO4/USART2_RX/PA3 13 3100 -200 100 L 50 50 1 1 B +X ADC_IN4/I2S1_WS/SPI1_NSS/TIM14_CH1/TSC_G2_IO1/USART2_CK/USB_OE/PA4 14 3100 -300 100 L 50 50 1 1 B +X ADC_IN5/CEC/I2S1_CK/SPI1_SCK/TIM2_CH1/TIM2_ETR/TSC_G2_IO2/PA5 15 3100 -400 100 L 50 50 1 1 B +X ADC_IN6/I2S1_MCK/SPI1_MISO/TIM16_CH1/TIM1_BKIN/TIM3_CH1/TSC_G2_IO3/PA6 16 3100 -500 100 L 50 50 1 1 B +X ADC_IN7/I2S1_SD/SPI1_MOSI/TIM14_CH1/TIM17_CH1/TIM1_CH1N/TIM3_CH2/TSC_G2_IO4/PA7 17 3100 -600 100 L 50 50 1 1 B +X PB0/ADC_IN8/TIM1_CH2N/TIM3_CH3/TSC_G3_IO2 18 -3100 100 100 R 50 50 1 1 B +X PB1/ADC_IN9/TIM14_CH1/TIM1_CH3N/TIM3_CH4/TSC_G3_IO3 19 -3100 0 100 R 50 50 1 1 B +X PC13/RTC_OUT_ALARM/RTC_OUT_CALIB/RTC_TAMP1/RTC_TS/SYS_WKUP2 2 -3100 500 100 R 50 50 1 1 B +X PB2/TSC_G3_IO4 20 -3100 -100 100 R 50 50 1 1 B +X PB10/CEC/I2C1_SCL/SPI2_SCK/TIM2_CH3/TSC_SYNC 21 -3100 -900 100 R 50 50 1 1 B +X PB11/I2C1_SDA/TIM2_CH4 22 -3100 -1000 100 R 50 50 1 1 B +X VSS 23 -200 -1800 100 U 50 50 1 1 W +X VDD 24 -200 1800 100 D 50 50 1 1 W +X PB12/SPI2_NSS/TIM1_BKIN 25 -3100 -1100 100 R 50 50 1 1 B +X PB13/I2C1_SCL/SPI2_SCK/TIM1_CH1N 26 -3100 -1200 100 R 50 50 1 1 B +X PB14/I2C1_SDA/SPI2_MISO/TIM1_CH2N 27 -3100 -1300 100 R 50 50 1 1 B +X PB15/RTC_REFIN/SPI2_MOSI/SYS_WKUP7/TIM1_CH3N 28 -3100 -1400 100 R 50 50 1 1 B +X CRS_SYNC/RCC_MCO/TIM1_CH1/USART1_CK/PA8 29 3100 -700 100 L 50 50 1 1 B +X PC14/RCC_OSC32_IN 3 -3100 400 100 R 50 50 1 1 B +X I2C1_SCL/TIM1_CH2/TSC_G4_IO1/USART1_TX/PA9 30 3100 -800 100 L 50 50 1 1 B +X I2C1_SDA/TIM17_BKIN/TIM1_CH3/TSC_G4_IO2/USART1_RX/PA10 31 3100 -900 100 L 50 50 1 1 B +X CAN_RX/I2C1_SCL/TIM1_CH4/TSC_G4_IO3/USART1_CTS/USB_DM/PA11 32 3100 -1000 100 L 50 50 1 1 B +X CAN_TX/I2C1_SDA/TIM1_ETR/TSC_G4_IO4/USART1_DE/USART1_RTS/USB_DP/PA12 33 3100 -1100 100 L 50 50 1 1 B +X IR_OUT/SYS_SWDIO/USB_OE/PA13 34 3100 -1200 100 L 50 50 1 1 B +X VSS 35 -100 -1800 100 U 50 50 1 1 W +X VDDIO2 36 100 1800 100 D 50 50 1 1 W +X SYS_SWCLK/USART2_TX/PA14 37 3100 -1300 100 L 50 50 1 1 B +X I2S1_WS/SPI1_NSS/TIM2_CH1/TIM2_ETR/USART2_RX/USB_OE/PA15 38 3100 -1400 100 L 50 50 1 1 B +X PB3/I2S1_CK/SPI1_SCK/TIM2_CH2/TSC_G5_IO1 39 -3100 -200 100 R 50 50 1 1 B +X PC15/RCC_OSC32_OUT 4 -3100 300 100 R 50 50 1 1 B +X PB4/I2S1_MCK/SPI1_MISO/TIM17_BKIN/TIM3_CH1/TSC_G5_IO2 40 -3100 -300 100 R 50 50 1 1 B +X PB5/I2C1_SMBA/I2S1_SD/SPI1_MOSI/SYS_WKUP6/TIM16_BKIN/TIM3_CH2 41 -3100 -400 100 R 50 50 1 1 B +X PB6/I2C1_SCL/TIM16_CH1N/TSC_G5_IO3/USART1_TX 42 -3100 -500 100 R 50 50 1 1 B +X PB7/I2C1_SDA/TIM17_CH1N/TSC_G5_IO4/USART1_RX 43 -3100 -600 100 R 50 50 1 1 B +X PF11 44 -3100 700 100 R 50 50 1 1 B +X PB8/CAN_RX/CEC/I2C1_SCL/TIM16_CH1/TSC_SYNC 45 -3100 -700 100 R 50 50 1 1 B +X PB9/CAN_TX/I2C1_SDA/IR_OUT/SPI2_NSS/TIM17_CH1 46 -3100 -800 100 R 50 50 1 1 B +X VSS 47 0 -1800 100 U 50 50 1 1 W +X VDD 48 -100 1800 100 D 50 50 1 1 W +X PF0/CRS_SYNC/I2C1_SDA/RCC_OSC_IN 5 -3100 900 100 R 50 50 1 1 I +X PF1/I2C1_SCL/RCC_OSC_OUT 6 -3100 800 100 R 50 50 1 1 I +X NRST 7 -3100 1300 100 R 50 50 1 1 I +X VSSA 8 100 -1800 100 U 50 50 1 1 W +X VDDA 9 0 1800 100 D 50 50 1 1 W +ENDDRAW +ENDDEF +# +# SW_Push +# +DEF SW_Push SW 0 40 N N 1 F N +F0 "SW" 50 100 50 H V L CNN +F1 "SW_Push" 0 -60 50 H V C CNN +F2 "" 0 200 50 H I C CNN +F3 "" 0 200 50 H I C CNN +DRAW +C -80 0 20 0 1 0 N +C 80 0 20 0 1 0 N +P 2 0 1 0 0 50 0 120 N +P 2 0 1 0 100 50 -100 50 N +X 1 1 -200 0 100 R 50 50 0 1 P +X 2 2 200 0 100 L 50 50 0 1 P +ENDDRAW +ENDDEF +# +# USB_A-RESCUE-stm32 +# +DEF USB_A-RESCUE-stm32 P 0 40 Y Y 1 F N +F0 "P" 200 -200 50 H V C CNN +F1 "USB_A-RESCUE-stm32" -50 200 50 H V C CNN +F2 "" -50 -100 50 V V C CNN +F3 "" -50 -100 50 V V C CNN +$FPLIST + USB* +$ENDFPLIST +DRAW +S -250 -150 150 150 0 1 0 N +S -205 -150 -195 -120 0 1 0 N +S -105 -150 -95 -120 0 1 0 N +S -5 -150 5 -120 0 1 0 N +S 95 -150 105 -120 0 1 0 N +X VBUS 1 -200 -300 150 U 50 50 1 1 W +X D- 2 -100 -300 150 U 50 50 1 1 P +X D+ 3 0 -300 150 U 50 50 1 1 P +X GND 4 100 -300 150 U 50 50 1 1 W +X shield 5 300 100 150 L 50 50 1 1 P +ENDDRAW +ENDDEF +# #End Library diff --git a/F0-nolib/canbus/kicad/stm32.pro b/F0-nolib/canbus/kicad/stm32.pro index 39fd092..514e787 100644 --- a/F0-nolib/canbus/kicad/stm32.pro +++ b/F0-nolib/canbus/kicad/stm32.pro @@ -1,4 +1,4 @@ -update=Чт 11 янв 2018 23:12:54 +update=Вт 23 окт 2018 16:51:41 version=1 last_client=kicad [pcbnew] @@ -27,41 +27,4 @@ NetIExt=net version=1 [eeschema] version=1 -LibDir=/home/eddy/kicad/Kicad-Libraries/library -[eeschema/libraries] -LibName1=stm32-rescue -LibName2=power -LibName3=device -LibName4=transistors -LibName5=conn -LibName6=linear -LibName7=regul -LibName8=74xx -LibName9=cmos4000 -LibName10=adc-dac -LibName11=memory -LibName12=xilinx -LibName13=microcontrollers -LibName14=dsp -LibName15=microchip -LibName16=analog_switches -LibName17=motorola -LibName18=texas -LibName19=intel -LibName20=audio -LibName21=interface -LibName22=digital-audio -LibName23=philips -LibName24=display -LibName25=cypress -LibName26=siliconi -LibName27=opto -LibName28=atmel -LibName29=contrib -LibName30=valves -LibName31=stm32 -LibName32=vreg -LibName33=elements -LibName34=ESD_Protection -LibName35=switches -LibName36=acs712 +LibDir= diff --git a/F0-nolib/usbcdc/Makefile b/F0-nolib/usbcdc/Makefile index 881c852..92fccb8 100644 --- a/F0-nolib/usbcdc/Makefile +++ b/F0-nolib/usbcdc/Makefile @@ -11,7 +11,7 @@ DEFS += -DUSARTNUM=1 #DEFS += -DEBUG # change this linking script depending on particular MCU model, # for example, if you have STM32F103VBT6, you should write: -LDSCRIPT = stm32f042k.ld +LDSCRIPT = ld/stm32f042k.ld INDEPENDENT_HEADERS= @@ -48,7 +48,7 @@ STARTUP = $(OBJDIR)/startup.o OBJS += $(STARTUP) DEPS := $(OBJS:.o=.d) -INC_DIR ?= ../inc +INC_DIR ?= ../../inc INCLUDE := -I$(INC_DIR)/F0 -I$(INC_DIR)/cm LIB_DIR := $(INC_DIR)/ld diff --git a/F0-nolib/usbcdc/main.c b/F0-nolib/usbcdc/main.c index a77c04c..96426f5 100644 --- a/F0-nolib/usbcdc/main.c +++ b/F0-nolib/usbcdc/main.c @@ -136,8 +136,13 @@ int main(void){ printuhex(getCANID()); newline(); break; + case 'T': + SEND("Time (ms): "); + printu(Tms); + newline(); + break; case 'U': - USB_send("Test string for USB\n"); + USB_send("Test string for USB; a very long string that don't fit into one 64-byte buffer, what will be with it?\n"); break; case 'W': SEND("Wait for reboot\n"); @@ -151,6 +156,7 @@ int main(void){ "'G' - get CAN address\n" "'R' - software reset\n" "'S' - reinit CAN (with new address)\n" + "'T' - gen time from start (ms)" "'U' - send test string over USB\n" "'W' - test watchdog\n" ); @@ -162,6 +168,7 @@ int main(void){ if(L){ // text waits for sending txt[L] = 0; usart_send(txt); + USB_send(txt); L = 0; } } diff --git a/F0-nolib/usbcdc/usart.c b/F0-nolib/usbcdc/usart.c index f00f10b..ccc8d63 100644 --- a/F0-nolib/usbcdc/usart.c +++ b/F0-nolib/usbcdc/usart.c @@ -89,6 +89,13 @@ void usart_send(const char *str){ } } +void usart_sendn(const char *str, uint8_t L){ + for(uint8_t i = 0; i < L; ++i){ + if(odatalen[tbufno] == UARTBUFSZO) transmit_tbuf(); + tbuf[tbufno][odatalen[tbufno]++] = *str++; + } +} + void newline(){ usart_putchar('\n'); transmit_tbuf(); @@ -223,15 +230,21 @@ void printu(uint32_t val){ // print 32bit unsigned int as hex void printuhex(uint32_t val){ usart_send("0x"); - uint8_t *ptr = (uint8_t*)&val + 3; + uint8_t *ptr = (uint8_t*)&val + 3, start = 1; int i, j; for(i = 0; i < 4; ++i, --ptr){ + if(!*ptr && start) continue; for(j = 1; j > -1; --j){ + start = 0; register uint8_t half = (*ptr >> (4*j)) & 0x0f; if(half < 10) usart_putchar(half + '0'); else usart_putchar(half - 10 + 'a'); } } + if(start){ + usart_putchar('0'); + usart_putchar('0'); + } } // dump memory buffer diff --git a/F0-nolib/usbcdc/usart.h b/F0-nolib/usbcdc/usart.h index b717165..fc9c5ff 100644 --- a/F0-nolib/usbcdc/usart.h +++ b/F0-nolib/usbcdc/usart.h @@ -50,6 +50,7 @@ void transmit_tbuf(); void usart_setup(); int usart_getline(char **line); void usart_send(const char *str); +void usart_sendn(const char *str, uint8_t L); void newline(); void usart_putchar(const char ch); void printu(uint32_t val); diff --git a/F0-nolib/usbcdc/usb_lib.c b/F0-nolib/usbcdc/usb_lib.c index d4fb0b1..d52b85c 100644 --- a/F0-nolib/usbcdc/usb_lib.c +++ b/F0-nolib/usbcdc/usb_lib.c @@ -83,7 +83,7 @@ const uint8_t USB_ConfigDescriptor[] = { 0x01, /* bNumInterfaces: 1 interface */ 0x01, /* bConfigurationValue: Configuration value */ 0x00, /* iConfiguration: Index of string descriptor describing the configuration */ - 0x80, /* bmAttributes - Bus powered */ + 0xa0, /* bmAttributes - Bus powered, Remote wakeup */ 0x32, /* MaxPower 100 mA */ /*---------------------------------------------------------------------------*/ @@ -127,17 +127,11 @@ const uint8_t USB_ConfigDescriptor[] = { 0x00, /* bInterval: ignore for Bulk transfer */ }; -const uint8_t USB_StringLangDescriptor[] = { - STRING_LANG_DESCRIPTOR_SIZE_BYTE, // bLength - 0x03, // bDescriptorType - 0x09, // wLANGID_L - 0x04 // wLANGID_H -}; - +_USB_LANG_ID_(LANG_US); // these descriptors are not used in PL2303 emulator! -_USB_STRING_(USB_StringSerialDescriptor, L"0.01") -_USB_STRING_(USB_StringManufacturingDescriptor, L"Russia, SAO RAS") -_USB_STRING_(USB_StringProdDescriptor, L"TSYS01 sensors controller") +_USB_STRING_(USB_StringSerialDescriptor, u"0") +_USB_STRING_(USB_StringManufacturingDescriptor, u"Prolific Technology Inc.") +_USB_STRING_(USB_StringProdDescriptor, u"USB-Serial Controller") static usb_dev_t USB_Dev; static ep_t endpoints[MAX_ENDPOINTS]; @@ -173,8 +167,26 @@ void WEAK break_handler(){ // handler of vendor requests void WEAK vendor_handler(config_pack_t *packet){ + SEND("Vendor, reqt="); + printuhex(packet->bmRequestType); + SEND(", wval="); + printuhex(packet->wValue); + usart_putchar('\n'); if(packet->bmRequestType & 0x80){ // read - uint8_t c = '?'; + uint8_t c; + switch(packet->wValue){ + case 0x8484: + c = 2; + break; + case 0x0080: + c = 1; + break; + case 0x8686: + c = 0xaa; + break; + default: + c = 0; + } EP_WriteIRQ(0, &c, 1); }else{ // write ZLP EP_WriteIRQ(0, (uint8_t *)0, 0); @@ -218,16 +230,30 @@ uint16_t EP0_Handler(ep_t ep){ wr0(USB_ConfigDescriptor, sizeof(USB_ConfigDescriptor)); break; case STRING_LANG_DESCRIPTOR: - wr0(USB_StringLangDescriptor, STRING_LANG_DESCRIPTOR_SIZE_BYTE); + wr0((const uint8_t *)&USB_StringLangDescriptor, STRING_LANG_DESCRIPTOR_SIZE_BYTE); + #ifdef EBUG + SEND("STRING_LANG_DESCRIPTOR\n"); + #endif break; case STRING_MAN_DESCRIPTOR: wr0((const uint8_t *)&USB_StringManufacturingDescriptor, USB_StringManufacturingDescriptor.bLength); + #ifdef EBUG + SEND("STRING_MAN_DESCRIPTOR: "); + usart_sendn((char*)&USB_StringManufacturingDescriptor, USB_StringManufacturingDescriptor.bLength); usart_putchar('\n'); + #endif break; case STRING_PROD_DESCRIPTOR: wr0((const uint8_t *)&USB_StringProdDescriptor, USB_StringProdDescriptor.bLength); + #ifdef EBUG + SEND("STRING_PROD_DESCRIPTOR: "); + usart_sendn((char*)&USB_StringProdDescriptor, USB_StringProdDescriptor.bLength); usart_putchar('\n'); + #endif break; case STRING_SN_DESCRIPTOR: wr0((const uint8_t *)&USB_StringSerialDescriptor, USB_StringSerialDescriptor.bLength); + #ifdef EBUG + SEND("STRING_SN_DESCRIPTOR\n"); + #endif break; case DEVICE_QALIFIER_DESCRIPTOR: wr0(USB_DeviceQualifierDescriptor, DEVICE_QALIFIER_SIZE_BYTE); @@ -280,7 +306,6 @@ uint16_t EP0_Handler(ep_t ep){ } }else if((setup_packet.bmRequestType & VENDOR_MASK_REQUEST) == VENDOR_MASK_REQUEST){ // vendor request vendor_handler(&setup_packet); - WRITEDUMP("VENDOR"); epstatus = SET_NAK_RX(epstatus); epstatus = SET_VALID_TX(epstatus); }else if((setup_packet.bmRequestType & 0x7f) == CONTROL_REQUEST_TYPE){ // control request diff --git a/F0-nolib/usbcdc/usb_lib.h b/F0-nolib/usbcdc/usb_lib.h index 50c2cf7..3a91eb6 100644 --- a/F0-nolib/usbcdc/usb_lib.h +++ b/F0-nolib/usbcdc/usb_lib.h @@ -109,16 +109,29 @@ #define EP_TYPE_ISO 0x02 #define EP_TYPE_INTERRUPT 0x03 +#define LANG_US (uint16_t)0x0409 + #define _USB_STRING_(name, str) \ -const struct name \ +static const struct name \ { \ uint8_t bLength; \ uint8_t bDescriptorType; \ - wchar_t bString[(sizeof(str) - 2) / 2]; \ + uint16_t bString[(sizeof(str) - 2) / 2]; \ \ } \ name = {sizeof(name), 0x03, str}; +#define _USB_LANG_ID_(lng_id) \ + \ +static const struct USB_StringLangDescriptor \ +{ \ + uint8_t bLength; \ + uint8_t bDescriptorType; \ + uint16_t bString; \ + \ +} \ +USB_StringLangDescriptor = {0x04, 0x03, lng_id}; + // EP0 configuration packet typedef struct { uint8_t bmRequestType;