aboutsummaryrefslogtreecommitdiffstats
path: root/sw/eval-clock-cw-tx/README.md
blob: c83d0ba3b6aad68aa86203cffb46d4ff8106d946 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
CW TX firmware for eval-clock (2021)
====================================

Sends CW and FELDHELL https://www.qsl.net/zl1bpu/HELL/Feld.htm

Taken from ../picardy and then adapted. Includes two FELDHELL fonts from fldigi, therefore the project is also
GPL-licensed, and my own code is MIT licensed.

pios are different than on picardy: both Si5351 and display are on same i2c

PB3 is PTTOUTn
PB15 is CWOUTn

WSPR beacon (Added 2023)
------------------------

Let's try to make a WSPR beacon too. Transmit trigger happens with the USB message `wspr\n`, the message itself
is fixed at compile time.

Centered on 10140.200 kHz plus/minus 100Hz, which is set by USB message too.

From https://swharden.com/software/FSKview/wspr/ :
Each symbol represents a frequency shift of 12000 / 8192 Hz (1.46Hz) per symbol value giving four-level multi-FSK
modulation. The transmitted symbol length is the reciprocal of the tone spacing, or approximately 0.683 seconds, so the
complete message of 162 symbols takes around 110.6 seconds to send and occupies a bandwidth of approximately 6Hz.

12000/8192 = 375/256

Transmission starts one second into an even UTC minute.

HB9EGM JN36 1W is `75 1D C4 F7 A0 17 80`. Tones:

    1, 1, 2, 0, 0, 2, 2, 2, 1, 2, 0, 0, 3, 3, 1, 0, 2, 2, 3, 2, 0, 1, 0, 1, 3, 3, 1, 0, 2, 2, 0, 0, 2, 0, 3, 2, 0, 3, 0,
    1, 2, 0, 2, 0, 2, 0, 3, 2, 1, 1, 0, 2, 3, 3, 0, 3, 0, 2, 2, 3, 1, 0, 3, 0, 2, 2, 0, 1, 3, 2, 3, 0, 3, 2, 3, 0, 1, 0,
    0, 3, 0, 0, 1, 2, 1, 3, 0, 2, 2, 1, 3, 2, 3, 0, 3, 2, 0, 0, 3, 2, 0, 0, 0, 2, 3, 2, 0, 1, 2, 0, 1, 1, 1, 0, 3, 1, 2,
    2, 1, 1, 0, 3, 2, 2, 2, 1, 1, 1, 0, 0, 2, 2, 2, 3, 0, 3, 2, 2, 3, 3, 0, 0, 2, 2, 2, 2, 0, 3, 3, 0, 1, 2, 1, 3, 0, 0,
    0, 1, 1, 2, 2, 0


Programming
-----------

Put target in reset

    make openocd

    cargo run

Deassert RESET

    gdb% load
    gdb% cont