Ik heb even het format van de header van de waveform (wfm) file uitgepluist. Excuus voor de wat moeilijk zichtbare kleuren.

000000 A5 A5 00 00 00 00 00 00 00 00 00 00 00 00 00 00
000010 01 00 00 00 00 00 00 00 00 00 00 00 00 08 00 00
000020 01 00 00 00 20 A1 07 00 00 00 00 00 00 00 20 41
000030 00 01 00 00 20 A1 07 00 00 00 00 00 D0 07 00 00
000040 04 00 00 00 00 00 20 41 00 00 00 00 D0 07 00 00
000050 04 00 00 00 00 CA 9A 3B 00 00 00 00 00 00 00 00
000060 00 00 00 00 00 50 43 47 00 CA 9A 3B 00 00 00 00
000070 00 00 00 00 00 00 00 00 00 00 FF FF 00 01 02 03
000080 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 0F 0F 00 00
000090 00 00 02 00 9A 99 99 3E 95 BF D6 33 CD CC CC 3F
0000A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0000B0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0000C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0000D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0000E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0000F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
000100 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
000110 data--> ch1, ch2, LA (in hex! lo-byte hi-byte)

00 08 00 00 = 4 byte long/norm mem 00 80 00 00=512kb, 00 00 08 00=2kb, 01 00 00 00=1Mb
20 A1 07 00 = 4 byte vert.scale ch1 Instelling was hier 5V/div, komt hier overeen met een waarde van 500.000
00 00 = 2 byte vert. pos. ch1
20 41 = probe 10* (80 3f = 1*)
D0 07 00 00 4 byte vert.scale ch2, 20mV/div is hier een waarde 2000
04 00 2 byte vert. pos. ch2
00 CA 9A 3B 00 00 00 00 = horz.scale tijdbasis. Hier was de instelling 1mS/div komt hier overeen met een waarde van 1.000.000.000 (in pico sec dus in feite)
00 00 00 00 00 00 00 00 = pos. horz.scale
00 50 43 47 = beinvloed door memory depth long/norm ??
00 01 02 03... = volgorde van de LA kanalen op het scherm
Het gebied 090h-10Fh bevat hoofdzakelijk trigger instellingen.

Een aantal instellingen komt dubbel voor, de 2e is de instelling tijdens het nemen van de sample. De 1e geeft eventueel een andere waarde als je instellingen veranderd na het samplen.
Dit is wat ik tot nu toe heb weten te achterhalen, helaas komende dagen weinig tijd om het verder af te maken.

Edit: wat aanvullingen/verbeteringen aangebracht.

Mooi werk, alleen die 00 50 43 47 (memory depth is wel een vreemde waarde). Ik heb een wfm met daar AB AA AA 47, maar daar kon ik ook niets van maken.

Klopt, bij nader inzien staat het exacte geheugen gebruik op adres 001C. Die andere waarde veranderd wel in combinatie met het geheugen gebruik, maar kan er ook nog niet veel van maken. (misschien iets met het triggerpunt of verschuiving daarvan?)

Heb er een lijst van gemaakt met hier en daar nog wat meer info.

adr adr data -- opmerking/omschrijving
dec hex bytes
000 000 2 ---- A5 A5, waarschijnlijk een herkenningspunt, gezien de waarde.
002 002 26 -- onbekend --
028 01C 4 ---- MemDepth: 2kb(normal), 512kb(long) of 1Mb (1ch)
036 024 4 ---- !ch1 vert.scale waarde=Volts/div * 10^4
040 028 2 ---- !ch1 vert.position waarde=+1000 tot -1000(dec)
042 02A 4 -- onbekend --
046 02E 2 ---- ch1 probe att. 803F(1*) 2041(10*) C842(100*) 7A44(1000*) (lsb,msb)
048 030 4 -- onbekend --
052 034 4 ---- ch1 vert.scale waarde=Volts/div * 10^4
056 038 2 ---- ch1 vert.position waarde=+1000 tot -1000(dec)
058 03A 2 -- onbekend --
060 03C 4 ---- !ch2 vert.scale waarde=Volts/div * 10^4
064 040 2 ---- !ch2 vert.position waarde=+1000 tot -1000(dec)
066 042 4 -- onbekend --
070 046 2 ---- ch2 probe att. 803F(1*) 2041(10*) C842(100*) 7A44(1000*) (lsb,msb)
072 048 4 -- onbekend --
076 04A 4 ---- ch2 vert.scale waarde=Volts/div * 10^4
080 050 2 ---- ch2 vert.position waarde=+1000 tot -1000(dec)
082 052 2 -- onbekend --
084 054 8 ---- !horz.scale tijdbasis. waarde =sec/div * 10^12
092 05C 8 ---- !horz.position tijdbasis. waarde =sec/div * 10^12
100 064 4 -- onbekend -- beinvloed door long/norm mem ???
104 068 8 ---- horz.scale tijdbasis. waarde =sec/div * 10^12
112 070 8 ---- horz.position tijdbasis. waarde =sec/div * 10^12
120 078 2 -- onbekend --
122 07A 1 ---- bits geven aan of LA d0-7 zichtbaar zijn op de scope
123 07B 1 ---- bits geven aan of LA d8-15 zichtbaar zijn op de scope
124 07C 16 --- volgorde van de LA-kanalen op het scopescherm
140 08C 2 ---- size LA d0-7, d8-15 (0Fh=klein, 07h=groot)
142 08E 2 ---- triggermode edge=0000, puls=0101, vid=0303, slope=0202, alt=0400, pattern=0505, duration=0606
144 090 1 ---- triggersource ch1=00,ch2=01,ext=02,ext/5=03, acLine=05,digch.=07
145 091 3 -- onbekend --
148 094 4 ---- trigger sensitivity setting
152 098 4 ---- trigger hold off setting
156 09C 4 ---- trigger level setting
160 0A0 112 - waarschijnlijk vooral trigger instellingen.
272 110 ------ ch1,ch2,LA (2kb/512kb per kanaal)

Ik heb een Matlab functie geschreven voor het importeren van .wfm bestanden. Daarvoor was droid's informatie erg nuttig. Ik heb deze informatie nog wat uitgebreid en gecorrigeerd. De Rigol scope waarover ik beschik heeft geen logic analyzer, dus dat gedeelte heb ik niet kunnen controleren.

Daarnaast nog een vraag over het verschil tussen 0x24 en 0x34 (en 0x28 en 0x38, ...) Zijn deze altijd hetzelfde, of zijn er situaties waarin ze verschillend zijn?


adr adr data -- description
dec hex bytes
000 000 2  -- A5 A5 probably an identification of the waveform format
016 0A0 1  -- unknown
028 01C 4  -- memory depth, number of samples per channel (N)
036 024 4  -- !ch1 vert.scale (vert.scale * 10^-6 = volts/div)
040 028 2  -- !ch1 vert.position (vert.position / 25 * vert.scale = volts)
042 02A 4  -- onbekend
046 02E 2  -- ch1 probe attenuation (803F: 1x, 2041: 10x, C842: 100x, 7A44: 1000x)
048 030 1  -- unknown
049 031 1  -- indicates whether ch1 is on or off (0: ch1 is turned off, 1: ch1 is active)
050 032 2  -- unknown
052 034 4  -- ch1 vert.scale (vert.scale * 10^-6 = volts/div)
056 038 2  -- ch1 vert.position (vert.position / 25 * vert.scale = volts)
058 03A 2  -- unknown
060 03C 4  -- !ch2 vert.scale (vert.scale * 10^-6 = volts/div)
064 040 2  -- !ch2 vert.position (vert.position / 25 * vert.scale = volts)
066 042 4  -- unknown
070 046 2  -- ch2 probe attentuation (803F: 1x, 2041: 10x, C842: 100x, 7A44: 1000x)
072 048 1  -- unknown
073 049 1  -- indicates whether ch2 is on or off (0: ch2 is turned off, 1: ch2 is active)
074 04A 2  -- unknown
076 04C 4  -- ch2 vert.scale (vert.scale * 10^-6 = volts/div)
080 050 2  -- ch2 vert.position (vert.position / 25 * vert.scale = volts)
082 052 2  -- unknown
084 054 8  -- !horz.scale time/div (horz.scale * 10^-12 = seconds/div)
              The scaling seems to indicate the sample frequency (fs), as far as I can
              tell fs is not directly mentioned in the .wfm file.
              (only single channel) horz.scale <= 50ns/div => fs = 400 MS/s
              horz.scale <= 200ns/div => fs = 200 MS/s
              horz.scale <= 200us/div => fs = 100 MS/s
              horz.scale == 500us/div => fs = 50 MS/s
              horz.scale == 1ms/div => fs = 20 MS/s
              horz.scale == 2ms/div => fs = 10 MS/s
              horz.scale == 5ms/div => fs = 5 MS/s
              horz.scale == 10ms/div => fs = 2 MS/s
              horz.scale == 20ms/div => fs = 1 MS/s
              horz.scale == 50ms/div => fs = 873.80134 kS/s
              horz.scale == 100ms/div => fs = 436.90067 kS/s
              horz.scale == 200ms/div => fs = 218.45034 kS/s
              horz.scale == 500ms/div => fs = 87.380134 kS/s
              horz.scale == 1s/div => fs = 43.690067 kS/s
              horz.scale == 2s/div => fs = 21.84034 kS/s
              horz.scale == 5s/div => fs = 8.7380134 kS/s
              horz.scale == 10s/div => fs = 4.3690067 kS/s
              horz.scale == 20s/div => fs = 2.1845034 kS/s
              horz.scale == 50s/div => fs = 873.80134 S/s
092 05C 8  -- !horz.position time delay (horz.position * 10^-12 = seconds)
              Time of first sample = -N / 2 / fs + horz.position
100 064 4  -- unknown
104 068 8  -- horz.scale time/div (horz.scale * 10^-12 = seconds/div)
112 070 8  -- horz.position time delay (horz.position * 10^-12 = seconds)
120 078 2  -- unknown
122 07A 1  -- bits geven aan of LA d0-7 zichtbaar zijn op de scope
123 07B 1  -- bits geven aan of LA d8-15 zichtbaar zijn op de scope
124 07C 16 -- volgorde van de LA-kanalen op het scopescherm
140 08C 2  -- size LA d0-7, d8-15 (0Fh=klein, 07h=groot)
142 08E 2  -- triggermode edge=0000, puls=0101, vid=0303, slope=0202, alt=0400,
              pattern=0505, duration=0606
144 090 1  -- triggersource ch1=00,ch2=01,ext=02,ext/5=03, acLine=05,digch.=07
145 091 3  -- unknown
148 094 4  -- trigger sensitivity setting
152 098 4  -- trigger hold off setting
156 09C 4  -- trigger level setting
160 0A0 112 - unknown
272 110 N  -- ch1,ch2,LA (1 byte per sample, ranging from 0-255). To convert ch1 and ch2
              to volts use:
              (100 - binData) / 250 * 10 * vert.scale - vert.position = volts