[DS1054Z][AD2] Rigol na smyczy - automatyczna konfiguracja analizatora SPI

Oscyloskopy, multimetry, generatory, nie tylko z najwyższej półki
Awatar użytkownika
tasza
Geek
Geek
Posty: 1082
Rejestracja: czwartek 12 sty 2017, 10:24
Kontaktowanie:

[DS1054Z][AD2] Rigol na smyczy - automatyczna konfiguracja analizatora SPI

Postautor: tasza » czwartek 19 kwie 2018, 23:51

#slowanawiatr


♪ ♬ ☘ Moja muzyka do kodowania ☘ ♬ ♪
♫ ♩ ♪ Death ⚡ ☘ ⚡ Voice of the Soul ♪ ♩ ♫
https://youtu.be/j3OPOYG6XIQ


W temacie Chiński Moduł LED & Key pozwoliłam sobie na stwierdzenie, że ręczna konfiguracja ustawień analizatora SPI jest w tym oscyloskopie cokolwiek upierdliwa. Opinię ową podtrzymuje, ale aby nie poprzestać na pustej krytyce - poniżej mały przydaś, który wstępnie konfiguruje nam Rigola do tego zadania. Główne parametry to:

* DATA = CHANNEL1
* CLK = CHANNEL2, dane na narastającym zboczu
* CS = CHANNEL3, aktywny stan niski
* 8 bitów danych
* format szesnastkowy
* kolejność bitów - LSB - od najmłodszego

Powyższe zostało ubrane w niewielki skrypt, który po pierwsze konfiguruje do pracy trzy kanały oscyloskopu (DC, 5V/div, 1x, T:200us), następnie woła sekwencje ustawiającą parametry parsera SPI, oto on:

rigspi.sh pisze:

Kod: Zaznacz cały

#!/bin/bash
declare -a scpiCommands=(   
    ":channel1:probe 1"       
   ":channel1:scale 5"         
   ":channel1:range 40"      
   ":channel1:coupling DC"      
   ":channel1:display 1"      

    ":channel2:probe 1"       
   ":channel2:scale 5"         
   ":channel2:range 40"      
   ":channel2:coupling DC"      
   ":channel2:display 1"      

    ":channel3:probe 1"       
   ":channel3:scale 5"         
   ":channel3:range 40"      
   ":channel3:coupling DC"      
   ":channel3:display 1"      

    ":trigger:mode edge"      
    ":trigger:edge:level 1"     
   ":timebase:scale 0.0002"    # T = 200 us/div

   ":decoder1:mode SPI"
   ":decoder1:spi:clk channel2"
   ":decoder1:spi:mosi channel1"
   ":decoder1:spi:cs channel3"
   ":decoder1:format hex"
   ":decoder1:spi:mode CS"
   ":decoder1:spi:endian LSB"
   ":decoder1:spi:width 8"
   ":decoder1:spi:edge RISE"
   ":decoder1:spi:polarity POS"
   ":decoder1:spi:select NCS"
   ":decoder1:format hex"
   ":decoder1:display 1"

)
echo "SPI setup"
for cmd in "${scpiCommands[@]}"
do
   echo "$cmd"
      echo "$cmd" | netcat -w 20 cukierek 5555
   sleep 0.5
done


Oczywiście przed uruchomieniem tego skryptu warto Rigola zresetować komendą SCPI '*RST'.

Dalsza prezentacja na układzie jak we wzmiankowanym wyżej temacie, real-life chińskiej kostki TM1638 a nie akademickie dywagacje, dodatkowo pokażę jak to samo obsługuje Analog Discovery 2.

Do obserwacji mamy w sumie trzy przypadki

prosty transfer ośmiobitowy na przykład sterowanie jasnością wyświetlacza

Kod: Zaznacz cały

.loop      lda #$89
      jsr tm1638_command
      lda #$8A
      jsr tm1638_command
      lda #$8B
      jsr tm1638_command
      lda #$8C
      jsr tm1638_command
      jmp .loop


AD2 - WaveForms
Obrazek

Rigol, gdy wszystko mu odpowiada w bitowych ramkach
Obrazek

Tu się deko pogubił w interpretacji, więc te pakiety oznacza.
Obrazek
Obrazek

transfer szesnastobitowy zapis danej pod wskazany adres

Kod: Zaznacz cały

.loop      lda #DIG_0
      ldb #0
      jsr tm1638_writeat
      jmp .loop


AD2
Obrazek

Rigol, rozmiar pakietu 8 bitów
Obrazek
Tu widzimy, a raczej nie widzimy wprost, gdzie jest starszy a gdzie młodszy bajt, trzeba zerkać na przebiegi aby złapać kontekst

Rigol, rozmiar pakietu 16 bitów
Obrazek
Tu całe słowo jest sensownie poskładane.

transfer mieszany 8/16 bit np. komenda sterująca, potem zapis do pamięci

Kod: Zaznacz cały

.loop      lda #$89
      jsr tm1638_command
      lda #DIG_0
      ldb #0
      jsr tm1638_writeat
      jmp .loop



AD2
Obrazek
Rigol w trybie 16 bit
Obrazek

Wnioski moje, będące subiektywną dość opinią są takie:
* jeżeli chodzi o komfort pracy z analizatorem - AD2 robi z Rigola miazgę
* odzwierciedlenie tego, co naprawdę pomyka przez SPI (a wiem, bo sama dziergałam ten kod) - jest porównywalne, ale do Rigolowej interpretacji trzeba się odrobinę przyzwyczaić, najlepiej testując analizator na znanych sobie sekwencjach i z różnymi ustawieniami.

Pozostała na koniec sprawa triggera wzorcem, czyli rozpoczęcia analizy gdy wpadnie nam określony bajt rozpoczynający jakąś większą sekwencję. Tego nie udało mi się póki co przećwiczyć, ale jeszcze pokombinuję w wolnej chwili.
______________________________________________ ____ ___ __ _ _ _ _
Kończysz tworzyć dopiero, gdy umierasz. (Marina Abramović)

Wróć do „Przyrządy pomiarowe”

Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 1 gość