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



Teraz jest 29 mar 2024, o 07:41


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 2 ] 
Autor Wiadomość
PostNapisane: 25 cze 2017, o 17:43 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 15 lut 2016
Posty: 248
Lokalizacja: Norwegia
Pomógł: 16

Było już trochę powiedziane o układach syntezerów DDS z rodziny AD9850/51.
Przyznam że jestem urzeczony tymi układami i ostatni rok czasu spędziłem z nimi wiele fajnych godzin.
Na początku na bazie AD9850 chciałem stworzyć sobie swoją własną autorską przystawkę do oscyloskopu, która poszerzała by jego możliwości o coś w rodzaju wobuloskopu pracującego w zakresie od 100KHz do 50MHz. Jako miłośnik raczej wysokich częstotliwości, takie urządzenie mogło by pomóc mi w badaniu filtrów W.CZ oraz P.CZ i tym podobnych czynności.
Porzuciłem jednak myśl o budowie przystawi do oscyloskopu i postanowiłem zbudować samodzielne taki właśnie analizator obwodów i filtrów W.CZ. W jednym z wątków przedstawiłem fragmenty moich zmagań z wyświetlaczem graficznym ST7920 który ma posłużyć do obrazowania wykresów pomiarowych w tym urządzeniu. Tutaj chcę przedstawić bibliotekę do właśnie układów DDS AD9850/AD9851.

Może to głupie tworzyć bibliotekę do tak prostego układu, i ktoś z bardziej zaawansowanych powie że to przerost formy nad treścią.. Jednak dla mnie to są bardzo fajne informacje których rok temu nie mogłem znaleźć w internecie a przynajmniej podanych w prostej formie zrozumiałej dla takiego elmera jak ja.

Układy AD985x to bezpośrednie syntezery częstotliwości które można sterować przez SPI. Można z nich zbudować dokładne generatory sinus i prostokąt z możliwością kontrolowania częstotliwości z dokładnością 1Hz. Prostota ich budowy jest wręcz niebywała. Jeżeli więc ktoś potrzebuje takiego generatora w którym będzie można płynnie zmieniać częstotliwość od niemal zera do 70MHz to zachęcam do sięgnięcia po nie, szczególnie że dostępne są w postaci modułów za śmieszne pieniądze.

AD9850 i AD9851 to prawie takie same układy z tą różnicą że AD9850 generuje poprawnego sinusa do 50MHz natomiast AD9851 do 70MHz. Steruje się tymi układami w taki sam sposób, z małą różnicą. Otóż AD9851 wymaga nieco zmienionego bajtu konfiguracyjnego o którym jak zauważyłem bardzo wielu zapomina. W internecie jest sporo narzekających ludzi na rzekomo skopane układy które generują poprawny sinus tylko do 5MHz a powyżej produkują sieczkę.
Problem tkwi właśnie w inicjacji tych układów. Reszta to już tylko przyjemna zabawa.

Przedstawiam zatem moją elmerską bibliotekę, wypociny lamusa... czy co tam chcecie powiedzieć :)
UWAGA ostatni bajt w funkcji SendSpi dla AD9850 powinien być 0x00 natomiast dla AD9851 0x01. Różnica ta wynika z tego że AD9851 sterowany jest zegarem 30MHz i ustawienie tego bitu powoduje włączenie mnożnika tej częstotliwości razy 6 co daje w efekcie 180MHz. Jeżeli o tym zapomnimy i to układ będzie taktowany 30MHz i generowany sinus przestanie praktycznie istnieć powyżej 5MHz.

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


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


w powyższej bibliotece brakuje definicji zegara której z pewnych względów nie chciałem tam umieszczać. Jednak poniżej prezentuję komendy za pomocą których można wysłać żądaną nastawę do DDSa.
Zegar w należy zdefiniować zależności od układu
AD9850 125MHz (125000000)
AD9851 180MHz (180000000)
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


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

data to właśnie nastawa częstotliwości podana w Hz czyli
1MHz / data=1000000
30MHz / data=30000000
40,261 853MHz / data=40261853
itd :)

Może prostackie ale ja nie znalazłem nigdzie w necie prostego (dla lamusa) opisu tych układów dla tego przedstawiłem to w ten sposób.

Podane ustawienia sprzętowego SPI są dla Atmega32. bardzo ważne jest to że wysyłać dane trzeba LSB first. (DORD na LSB first)
Powodzenia w zabawie z generatorkami.

_________________
SP2LUB - LA1BUA



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 26 cze 2017, o 09:05 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 15 lut 2017
Posty: 369
Lokalizacja: Gliwice
Pomógł: 34

Gratuluję zgrabnej biblioteki.
Na liście swoich zadań mam te układy, a tu gotowiec na podorędziu.
Na pewno wykorzystam, gdy już przyjdzie pora :)



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 2 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