Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki



Teraz jest 19 kwi 2024, o 05:07


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 2 ] 
Autor Wiadomość
PostNapisane: 4 mar 2021, o 17:34 
Offline
Użytkownik

Dołączył(a): 20 lut 2013
Posty: 167
Pomógł: 0

Witam. Panowie potrzebuje pomocy :( . Mianowicie próbuje okiełznać komunikację z ADC AD7192 przez programowe SPI (Biblioteka do SPI od Mirka).

Czytając notę katalogową wychodzi mi że:
" The SCLK active edge is the falling edge of SCLK. " - strona 7 czyli aktywnym zboczem jest zbocze opadające ?
W stanie nie aktywność SCLK ma być w stanie wysokim, i od najstarszego bitu czyli MSB - strona 8

Według tego wychodzi że trzeba ustawić w bibliotece MK_SPI:
czyli PHASE na 0 I POLARITY NA 1

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.



No teraz zacząłem pisać sobie bibliotekę do odczytu/zapisu tego układu:

AD7192_def.h
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.



AD7192.h
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.



AD7192.c
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


i w main.c
Najprościej próbuje odczytać stan tego rejestru konfiguracyjnego i odczytaną wartość wypluwam na uarta żeby mieć podgląd co odczytał:

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


W nocie i tabeli 14 na stronie 18
"Idling the DIN pin high between data transfers minimizes the effects of spurious SCLK pulses on the serial interface. "

Wysyłam bajt do rejestru komunikacyjnego: 01010000 - i to wygląda niby dobrze
Z noty wynika że powinien odebrać 24 bity i taką wartość tego rejestru 00000000 00000001 00010111.

Z tego wywnioskowałem żeby zamiast: spi_xmit_byte(0x00); wpisać spi_xmit_byte(0xFF); w funkcji odczytu. W jakimś sensie to pomogło

Jednak w odpowiedzi jakby wartość przesuniętą o jeden bit, tzn brakuje najmłodszego( tzn. całość jest przesunięta w prawo o 1 bit?). Co powoduje to przesunięcie i jak je usunąć ? :? :shock:

Wartość fizycznie wygląda dobrze w Salae Logic a w putty widać to przesunięcie o którym pisałem:
ObrazekObrazek

Link do noty:
https://www.analog.com/media/en/technic ... AD7192.pdf



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 5 mar 2021, o 00:35 
Offline
Użytkownik

Dołączył(a): 26 mar 2014
Posty: 34
Pomógł: 11

Aktywnym zboczem dla ADC jest zbocze opadające ale dopiero przy zboczu narastającym dane są poprawne. Strona 11, opis pinu DOUT/RDY.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
Wyświetl posty nie starsze niż:  Sortuj wg  
Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 2 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 12 gości


Nie możesz rozpoczynać nowych wątków
Nie możesz odpowiadać w wątkach
Nie możesz edytować swoich postów
Nie możesz usuwać swoich postów
Nie możesz dodawać załączników

Szukaj:
Skocz do:  
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO