【国外项目分享】STM32L0 Watch(下)
% D* F2 \4 X z& M$ P/ V
) r# D E0 [6 N) @5 v! {9 X5 l+ |2 ]4 I5 a/ d* j
简介0 ]2 Z& I8 B9 N5 A! t
STM32L051K8单片机,1.28寸锐存LCD, CR2032电池,3D打印件,20mm表带,受到Max K的Chronio项目的启发。
0 l3 f2 R; X) x; l% o5 _2 [3 c4 a
; S- A7 p7 j/ |4 ~4 n适当的汇编
" E7 { I+ d$ ?0 M7 h7 x3 U* q$ K" i k5 E! k& Q- v) z
下面,我将详细介绍如何将手表从光板组装到成品。 / S t+ Z3 D- k
+ m; V3 r: |: m8 Z i
- - - - -工具
* X! a- P! Z( R2 x/ ~
/ s% o9 m- [/ Y; Y) k! C$ @/ y; |1 f1 w+ T8 X4 }
- 烙铁及铅(较薄为佳)
- 液体通量(上图为el cheapo通量)
- SMD镊子
- PCB虎钳(我没有帮手)
- 螺丝刀集
- 焊锡芯(未图示)
* {- k9 {0 ~, f' ~+ e1 s" b
& Z% d) o6 ?2 @1 e使用BOM可以很容易地确定哪一部分应该放在哪里!1 c2 ]4 |% f1 ]* C/ N Q
9 B0 R+ w3 Z, q; |& H* V6 @& g
- - - - - -裸板! `9 J* B1 S4 g, v; }) g( ^
; Z+ [/ X d% U: B/ l( N7 g2 n# F( `9 {5 ^
首先,我们将在黑板的顶部工作。具体来说,我喜欢焊接的第一件事就是FPC连接器。这是最难焊接与0.5毫米销间距。
' z/ j6 S% Y9 [$ C( f) B6 j9 q N& ~2 [$ w
- - - - - - FPC连接器
2 U+ P% v6 t( w: X( X- k0 R4 n c! }9 [$ O" J
使用大量的焊剂和焊锡芯来清除任何多余的焊料。假设大头针1是最左边的大头针。(不是) ; G& p! d1 t( B* R4 [. j; ]( f& }
4 r, z) ~$ K' r; X
不要担心短引脚1和2,或短引脚3、4、5和6。分别是GND和VBAT。然而,其余的引脚必须相互隔离。
( J$ Y5 ?& F R9 n* |9 n; J! ~: I8 w3 B5 }0 ~& s0 b
- - - - - -正面
+ O. |8 ^8 q- ^" G3 b9 w
; \8 t- g8 V5 d8 m# _' r: i5 t/ H' Z+ m h- ^8 x. {
将所有的焊料焊接在顶板上。走一遍,慢慢来。一定要做得比照片中我做的更好。
3 U$ F5 s0 |2 `& s
# c, i/ S8 N+ |1 Q, F- - - - - -晶体
& Y0 H0 P0 N; g7 I1 S3 O' b3 B0 O4 Q# w1 R( d8 l* x
8 n1 l% A) P# t+ z, J
之前我哪里看到过,不要把水晶加热太多,否则会损坏它,所以要小心焊接。 $ J5 q$ P/ o& ]2 ~
- m# T* m3 r* u+ ?
- - - STM32集成电路# m( { v) P m# F
% n7 m6 f& u( |! W9 u
7 _- `, ]$ I2 w) C0 F将所有衬垫上的集成电路对齐。确保包上的点与板上的点相匹配。 8 P. X+ D" V( w0 a d- S
% ~& \- }* v% z+ p6 b, ^; y1 t$ c! g7 P9 J9 F* @
这里都焊接好了。正如你所看到的,我对自己的变化非常宽容。 * s5 X U( i4 R( F
! h: F6 C' ^3 K7 v2 [- - -背面
h) T+ t% }" C+ F# D$ l, p& a- P! ^
- s3 x6 T* X9 D5 u2 ?1 V- J现在你可以翻转电路板,在背面焊接其余的钝化剂。所有这些仅仅是100n个电容和10k个电阻。
. o, u2 J o) P4 s! S: K1 M$ W7 V% E
——按钮
- K' i3 b4 G, D8 Q! L: Z9 ^1 N2 k( }4 f( y# I
( _5 Y2 Y$ ^8 r( _
放置按钮并使用板上的孔对齐它们。焊接起来有点困难,因为引线没有向外延伸。热空气站可能更适合这种情况。 ! _% X2 q* e9 I
6 z# r+ R" A6 I9 |& D& L3 b- - - - - -焊垫
$ G" z5 H" e4 m0 ?% z: y$ F* v: M: w. Q/ S3 P
8 {: ~. ^1 c) y! n% N
别忘了在大的方形焊盘上加一点焊料。这有助于创造一个更紧密的适合电池,并确保良好的连接。这会产生一个小肿块,大概1毫米厚或者更小。
8 A" G" C/ |0 D4 l; }/ R1 |2 s; d( v' v- I8 p* Y
——电池座
- \4 E4 n4 O, ]6 g
4 D8 g; {7 d/ C1 E4 Q- Q1 n8 A- G# T5 c
4 C; H2 u1 [# J4 H) R最后,焊接电池座上。这是整个建造过程中唯一的通孔部分。 / d7 G% l4 }/ I# ]$ M( ? x2 J
3 f" V ]! ]2 [$ A- F# \7 E- - - - - -连接STLink8 g9 [2 c+ x! m' q
2 w9 b P2 [+ H5 a- Q
- O5 i3 C* ~# p9 t9 v
我用的是中国的ST-Link克隆版。只需将程序员的五个相关引脚连接到板上:SWCLK、SWDIO、NRST、VCC和GND。
5 K% K# |# S: o I$ S& x/ I2 a9 ^/ d. D7 m( n5 @# m% w+ R
- - - - - 打开OCD
z1 f/ g) U) C! G+ H: g
3 ?- t4 g& w* s; Y! n打开CLI。输入以下命令启动OpenOCD调试器。
: a: c3 U4 f; t4 j2 _8 j/ ]
% {. t4 r4 d" P- P8 W* _( H3 @(这部分我使用Linux。网上应该有关于如何为Windows设置OpenOCD的教程。实际上,编写这部分是与操作系统无关的,因此只需搜索一个特定的教程就可以设置OpenOCD)
& ^! p+ o4 h' j' T8 M& a9 w& B& V6 a4 F- Z& F+ G3 t
openocd -f interface/stlink-v2.cfg -f target/stm32l0.cfg 2 ]5 ]7 |2 U2 ~. H% d5 [: p; e; n. v3 l
输出应该是这样的:
+ g1 S0 h: l3 v3 E+ g9 a: `
+ @8 N, l6 X2 BOpen On-Chip Debugger 0.10.0-dev-00399-g19df456 (2016-11-04-15:40)
( b7 ^( X0 u" F! d9 n: |Licensed under GNU GPL v2: N3 j5 \. W4 ^/ j4 D$ J% J$ W
For bug reports, read' R8 D1 M1 F# S- w* U* M- [
http://openocd.org/doc/doxygen/bugs.html
, U7 N* k3 X; D0 u+ j/ TInfo : auto-selecting first available session transport "hla_swd". To override use 'transport select <transport>'.
. R! p& [; i1 ~5 t# ^ K( ^adapter speed: 300 kHz. d |' ?$ b1 @
adapter_nsrst_delay: 100$ j; V' `; N) F9 A! v
Info : The selected transport took over low-level target control. The results might differ compared to plain JTAG/SWD
; [3 E" C* h. Y6 k2 w' U$ fnone separate# V, O/ I/ p( J2 H& R0 [
Info : Unable to match requested speed 300 kHz, using 240 kHz
( m; Z8 n8 M" L9 k2 a7 B$ z( p) aInfo : Unable to match requested speed 300 kHz, using 240 kHz
$ A( F% `/ l) e6 {, k7 k! [% yInfo : clock speed 240 kHz/ a7 q ~1 j2 l/ @- T @$ t, |
Info : STLINK v2 JTAG v27 API v2 SWIM v6 VID 0x0483 PID 0x37489 w) Y2 P7 p6 z8 T0 v
Info : using stlink api v2
1 d6 u! @. X) f3 C% mInfo : Target voltage: 3.216787
2 ]9 T1 o x1 s9 BInfo : stm32l0.cpu: hardware has 4 breakpoints, 2 watchpoints 3 ` e J M- R0 \4 r7 Q( H
1 Z! J8 V! x7 `2 T: z9 S8 ?$ W1 f——SW4STM32编程5 I% K! z& l' l: X" \
$ N5 d1 [* Z# v$ A3 _: [. i
为STM32 (SW4STM32)启动System Workbench,加载项目,并通过单击Run将其闪到板上。9 Y0 P. M: R( q/ H7 f7 l& |
; ^$ A; @% R: x7 X# G- - - - - -连接屏幕
. d! H* k$ T! u9 N0 }& E
; T) z. O) Q. z$ j1 a) k" k1 y1 t* R$ P4 D
断开编程器,连接电池,并通过10针FPC连接器连接屏幕,你应该能在显示器上看到钟面。 ) A) b U! ~1 e- g
9 c. S. O+ `, i- h- - - - - -测试按钮3 q* f& A, S+ q, X! w" V
4 I' ?; _8 ~0 p( H1 p/ Q: u
按下按钮。顶部和底部按钮应该分别向前和向后移动分针。中间的按钮应该重置秒针。之前的图片没有秒针,所以需要手动测试。您还可以取消对代码中的行进行注释,以启用秒针。 - Z( B+ T2 h3 R* _+ b+ l
' E0 X% o' g2 D6 O& ]$ I无论如何,如果按钮不工作,确保焊接接头是正确的。如果需要重做。
1 E+ w% r, Z2 `; {1 e7 p3 ^& U6 s& A& d1 U& j6 x* q/ S# [+ c& N9 m$ V: N
-附加屏幕支持
5 X7 g, [# w3 j( }: U, J" o/ O; c5 K8 }& k) \/ A- I* I& F8 @& W I8 B
强烈建议预先点击屏幕支架上的孔。您可以使用M3丝锥,也可以只使用一个螺丝钉,然后一直用螺丝钉来创建线程。 $ c) ~- e/ O7 V9 q* z7 m' U0 p
) U1 n0 k2 t! N, A3 h" E将屏保支架放置在板上,并将底部的两个M3x8沉头螺钉部分拧入。注意部件相对于屏幕的方向。 + `/ Y" y) f; V
' v5 A5 C: U! B: z0 g# f) x. r& {: J$ |7 L m! C; @2 \8 U5 o# P) n
螺丝应该突出那么多,所以你仍然可以把它放在后面的部分和螺丝进去。
4 R0 x6 Z; `$ j; ^' v' `' t/ \: ]5 Z N# Z( f% d
- - - - - -后挡板
1 h% J2 b* B" S# l+ a# U) ]
' T5 y# ]9 O' j. F( N" |1 Y! H L这里的板和屏幕的支持是拧入后面的部分。只有一小部分可以穿进去,所以要小心别把洞放大了。拧紧螺丝,直到顶部与屏幕支架齐平。
4 ^: P I, g, ]. M' F$ q
# c% z4 Z! v; y1 U+ s' D屏幕应该能够平齐坐在屏幕支持。插入时小心不要弯曲或打碎液晶显示器。这些东西很容易坏!
; M( T u& B" ]& U( d8 y" ]——中间部分和灵活的按钮
% `# K! k" B& V. s
/ ]% T3 c" c* p" W现在可以通过组装插入中间部分。请注意,孔在按钮所在的一侧,而薄片更接近底部。 , M: c3 m' n, j' C% q4 q
7 K0 B& ]3 Z1 R4 @) S" A3 x( ]
现在把灵活的按钮放在里面。请注意,实际按钮是从中心垂直偏移的,并在顶部齐平。 7 t. g. L4 ^% j2 J1 y7 z8 P! H; n* I
8 y& d: r" v6 n) n/ G" S
-从背后安装盖子和螺丝 " w! i. Y. e7 E7 z
/ f1 Y9 |: }4 n: {: v( b
2 C6 n3 q7 j7 O( Q& u5 D
将盖子放在前面,从后面插入M3x12沉头螺钉。但是一定要拧紧。 & p+ [" w& @1 z( r+ a4 v& U/ ?5 K- }& ?
% S7 j3 D1 c! `3 g7 O
基本完成了。是的,螺丝有点突出,但不麻烦。 3 n. W( X0 d$ J1 t5 }
. y3 s2 E6 Y( E; v. b+ p* P) D1 A' U6 C
后续与附件下载>>
' n. ]7 e/ O( s9 J : x# f1 k4 t) Z: ]- P
& q7 I# f( I' N; ]7 |, w
: D6 A, a) V0 i5 W
4 D" N3 {$ `- J! t |