]> sigrok.org Git - sigrok-dumps.git/blame - swim/tests/README
Samples for the decoder for STM8 series MCUs SWIM protocol.
[sigrok-dumps.git] / swim / tests / README
CommitLineData
8e055025
MJ
1-------------------------------------------------------------------------------
2SWIM
3-------------------------------------------------------------------------------
4
5These are captures of an ST-Link V2 programming an STM8 using the SWIM protocol.
6
7Details:
8https://www.st.com/content/ccc/resource/technical/document/user_manual/ca/89/41/4e/72/31/49/f4/CD00173911.pdf/files/CD00173911.pdf/jcr:content/translations/en.CD00173911.pdf
9
10
11Logic analyzer setup
12--------------------
13
14The logic analyser used was a DreamSourceLab DSLogic (at 10MHz).
15
16 Probe Target
17 ------------------
18 0 RST
19 1 SWIM
20
21
22Data
23----
24
25Using stm8flash with an ST-Link V2 adapter to program an STM8S003F3.
26
27Command line:
28
29 $ stm8flash -c stlinkv2 -p stm8s003f3 -s opt -r /tmp/data; stm8flash -c \
30 stlinkv2 -p stm8s003f3 -s opt -r /tmp/data
31
32 stm8flash is modified both for correctness and to generate the test sequences.
33 The updated version can be found at https://github.com/mjagdis/stm8flash.
34
35
36tests/sample1.sr
37----------------
38
39Read of two blocks of memory from an STM8S103 starting at the base address
40of the OPTs. Repeated twice with no SRST to disable SWIM in between.
41Note that the second enter sequence is not seen as an enter sequence. Since
42SWIM is already active on the target it does NOT recognise a second enter
43sequence and instead sees each low sent by the host as a SWIM reset request
44to which it responds, if you zoom in enough, with its own 16μs sync frame.
45
46
47tests/sample2.sr
48----------------
49
50As sample1 but each of the runs ends with an SWIM reset followed by an SRST
51(system reset) SWIM command. Note that the SWIM reset consists of the host
52pulling the SWIM line low for 16μs to reset the target's SWIM module followed
53by the target acknowledging with its own synchronization frame (i.e. it pulls
54the line low for another 16μs). Note too that the RST bit is not set in
55SWIM_CSR so the SRST does not disable SWIM and the second enter sequence is
56treated as resyncing just as in sample1.
57
58
59tests/sample3.sr
60----------------
61
62As sample2 but now we modify stm8flash to set RST (bit 2) in SWIM_CSR (0x7f80)
63as part of its shutdown. This causes the SRST to disable SWIM as well as reset
64the target and now the subsequent enter sequence behaves as expected.
65
66
67tests/sample4.sr
68----------------
69
70As sample3 but the SRST at the end of each run is removed again. The second
71enter sequence is no longer recognised as an enter sequence and the target
72again responds to each low by with a sync frame indicating it is treating them
73as SWIM reset requests. This demonstrates that the SRST SWIM command is indeed
74responsible for disabling the SWIM module and that an external reset via the
75RST pin is insufficient regardless of the setting of the RST bit in SWIM_CSR.