Fun with Registers: Episode 3 "Off and On"
The CH1/2 switching procedure does two large IDENTICAL transfers (T1 and T2) and a small one that actually matters (T3)
Let's start with T3, 21 register writes.
1D:00000002
24:00000010
2B:00000A50
2C:000007FF
06:000000C4
06:000000C4
2D:00000DD1
2E:00000000
02:000186A0
01:00000000
04:000186A0
03:00000000
2F:00010000
30:00010000
05:00000020
38:07FFDFFF
39:07FFDFFF
08:000FFFFF
09:000FFFFF
37:00000001
37:00000000This is actually the "classical" CH1/2 parameters setting, from the previous episodes you've seen that this train of registers comes when one rotates the digitizer button and change a channel parameter, it could be possible that actually this is all you need to set the parameters, at least in sine wave.
##### Commercial break >
#####
T1 and T2 are two identical transfers of 4 identical large-patterns, they seem to be used to build the waveform displayed on the LCD by sampling 100 times the FPGA waveform RAM and also a mystery part of the RAM that could be a calibration constant.
Each large-pattern has 100 basic-patterns, or samples, the address/block from where to read is given in the register 0x12 (at least), the readback is done via register 0x0E, another register that it's read is 0x18, but it always return 32bit of 0, could be a way to prime the SPI block or maybe some status.
The RAM addresses/blocks in the register 0x12 are always spaced at the 0XA2 offsets.
The waveform samples are nice and clear, with some peculiarities (the wave first value doesn't start from 0), but the the accompanying calibraton/offset/mystery constant is vey strange, please see the plots. Please see the attached plots.
Basic-Pattern (sample) element:
12:00063F5B <- Setting the sample point address, waveform.
0F:00000001 <- Write op, unknown purpose.
0F:00000000 <- Write op, unknown purpose.
18:00000000 <- Read but result is always full 0.
0E:XXXXXXXX <- Read operation there, waveform value.
12:00063F5A <- Setting the sample point address, calibration ?
0F:00000001 <- Write op, unknown purpose.
0F:00000000 <- Write op, unknown purpose.
18:00000000 <- Read op, always 0.
0E:XXXXXXXX <- Read op, calibration constant value ?
Notes:
At the large patterns start there is a small 4 register op header, purpose unknown:
14:00000000 <- Write op, unknown purpose.
16:00000000 <- Write op, unknown purpose.
18:00000000 <- Read op, always 0
18:00000000 <- Read op, always 0
All uses data files are attached for independent verification, plots of one full waveform sample and the corresponding calibration offsets/constants are attached.
All data derived from member fremen67 capture file fy6600_CH1_OFF_ON_100Mhz_FULL.dsl form a previous message.
Cheers and tired,
DC1MC