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
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
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
AD7192.h
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
AD7192.c
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ł:
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ąć ?
Wartość fizycznie wygląda dobrze w Salae Logic a w putty widać to przesunięcie o którym pisałem:
Link do noty:
https://www.analog.com/media/en/technic ... AD7192.pdf