Elektroda.pl
Elektroda.pl
X
Elektroda.pl
PCBway
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Trzykanałowy generator zegera SI5351 i PIC32MX - pierwsze starcie

p.kaczmarek2 27 Kwi 2019 17:15 1704 13
  • Trzykanałowy generator zegera SI5351 i PIC32MX - pierwsze starcie

    Witajcie moi drodzy
    Tutaj opiszę moje pierwsze starcie z SI5351 firmy Silabs. Celem projektu było uruchomienie trzykanałowego generatora zegara SI5351 sterowanego przez I2C w połączeniu z mikroprocesorem PIC32MX w środowisku MikroC PRO for PIC32. Projekt obejmował samodzielne ogarnięcie PCB i biblioteki pod SI.

    Krótko o SI5351
    Trzykanałowy generator zegera SI5351 i PIC32MX - pierwsze starcie
    Trzykanałowy generator zegera SI5351 i PIC32MX - pierwsze starcie
    SI5351 to trzykanałowy generator zegara w obudowie 10-MSOP (w obudowie 20-QFN ma aż 8 kanałów!). Zasilany może być z napięcia 2.5-3.3V. Konfiguruje się go poprzez I2C. Może generować częstotliwości aż do 200MHz.
    Do swojego działania wymaga zasadniczo tylko rezonatora kwarcowego 25/27MHz (i oczywiście odpowiednich kondensatorów i zasilania, ale to wiadomo :D). Po więcej informacji odsyłam do noty katalogowej:
    Trzykanałowy generator zegera SI5351 i PIC32MX - pierwsze starcie



    Użyty hardware
    Płytkę pod SI5351 (dokładniej SI5351A) zaprojektowałem samodzielnie, ale zleciłem jej wykonanie chińskiej firmie. Właściwie to płytka pod SI5351 była jednym elementem panelu który ja zamówiłem, a on składał się z wielu małych modułów które zaprojektowałem, więc nie mam samodzielnego projektu Eagle/Gerberów pod to, ale myślę że przy takim prostym układzie to nie problem. Każdy może odwzorować to co zrobiłem ze zdjęcia:
    Trzykanałowy generator zegera SI5351 i PIC32MX - pierwsze starcie Trzykanałowy generator zegera SI5351 i PIC32MX - pierwsze starcie
    Jak widać SI5351 na płytce znajdują się elementy montowane powierzchniowo i elementy przewlekane. Zrobiłem tak by uprościć wykonanie całości, jak również dlatego że rezonatory kwarcowe 27MHz miałem już pod ręką w THT.
    Na płytce znajduje się jeden błąd - umieszczenie rezonatora kwarcowego koliduje z kondensatorami od niego, ale to nie przeszkadza w uruchomieniu całości - po prostu 'kwarc' można dać po drugiej stronie płytki.
    Do odpalenia powyższego modułu użyłem własnej 'PIC32 Development Board' z PIC32MX250F128B na pokładzie oraz MCP2221 użytym do prostego 'debugowania' (a właściwie wypisywania tylko komunikatów przez UART na USB).
    Trzykanałowy generator zegera SI5351 i PIC32MX - pierwsze starcie
    Tak wygląda z bliska zlutowany moduł (użyłem najzwyklejszej lutownicy kolbowej):
    Trzykanałowy generator zegera SI5351 i PIC32MX - pierwsze starcie
    Rezonator kwarcowy jest po drugiej stronie PCB (widać na zdjęciu luty).

    Całość programowana była z pomocą PICKIT3 (i MPLAB X IPE):
    Trzykanałowy generator zegera SI5351 i PIC32MX - pierwsze starcie

    Software - biblioteka dla SI5351
    Nie byłem w stanie znaleźć dobrej biblioteki SI5351 dla PIC32MX i mikroC PRO for PIC32, były jedynie rozwiązania Open Source dla wszędobylskiego Arduino. Zatem wziąłem jedno z tych rozwiązań, a dokładnie te repozytorium:
    https://github.com/etherkit/Si5351Arduino/tree/master/src
    I przeportowałem ten kod z C++ i Arduino do C i MikroC PRO for PIC32.
    Całość poszła bez problemów i wyszła mi dość bogata biblioteka która końcowo była w stanie obsłużyć taki kod:
    Kod: c
    Zaloguj się, aby zobaczyć kod

    Powyższy kod ustawia wyjścia SI5351 o adresie I2C 192 na kolejno 14MHz, 4MHz i 1.2MHz.

    Opracowana biblioteka korzysta z drugiej magistrali I2C PIC32MX, tzn. z "I2C2". Jeśli ktoś chce podłączyć SI5351 do pierwszej magistrali, to musi zmienić w kodzie wywołania "I2C2_*" na "I2C".
    Po więcej informacji odsyłam do dokumentacji I2C w MikroC:
    https://download.mikroe.com/documents/compilers/mikroc/pic32/help/i2c_library.htm

    Poprawność działania sprawdzałem na oscyloskopie; nie zrobiłem na SI5351 jeszcze pełnoprawnego generatora sygnału, jedynie testowałem bibliotekę pod PIC32.
    Trzykanałowy generator zegera SI5351 i PIC32MX - pierwsze starcie Trzykanałowy generator zegera SI5351 i PIC32MX - pierwsze starcie
    Nie sprawdzałem bardziej zaawansowanych funkcjonalności biblioteki, gdyż nie będą mi one potrzebne do zastosowania jakie planuję.

    Podsumowanie
    W ten sposób udało mi się uruchomić SI5351 w połączeniu z PIC32MX. Odpalony moduł zamierzam wykorzystać przy budowie odbiornika krótkofalarskiego - użyty układ generuje do 3 sygnałów na raz, więc pewnie można zastąpić nim i BFO, i VFO. Opracowaną bibliotekę daję do załączników, może komuś się przyda.


    Załączniki
    Demonstracyjny projekt w MikroC PRO for PIC32 (PIC32MX250F128B z rezonatorem 8MHz):
    PIC32MX250...SI5351.zip Download (266.16 kB)Punkty: 4 dla użytkownika


    Nagłówek i implementacja biblioteki:
    si5351_p..2.zip Download (10.32 kB)Punkty: 4 dla użytkownika


    Datasheet SI5351:
    Si5351..pdf Download (832.46 kB)Punkty: 0.5 dla użytkownika


    Oryginalna biblioteka dla Arduino (przed portowaniem):
    Si5351Ardu...master.zip Download (49.38 kB)Punkty: 0.5 dla użytkownika


    Jakby ktoś odpalał SI5351 z PIC i potrzebował pomocy, to proszę dać znać, z chęcią pomogę.

    Fajne! Ranking DIY
    Potrafisz napisać podobny artykuł? Wyślij do mnie a otrzymasz kartę SD 64GB.
  • PCBway
  • #2
    arturavs
    Poziom 40  
    Si5351X to bardzo ciekawa rodzina generatorów. W zeszłym roku uruchomiłem syntezę ZL2PD ( https://www.zl2pd.com/si5351_VFO_with_Nokia_LCD.html ), z drobnymi modyfikacjami.
    W tym roku uruchomiłem syntezę RS-HFIQ ( https://sites.google.com/site/rshfiqtransceiver/ ), do współpracy z moim odbiornikiem SDR. W syntezie ZL2PD, przy włączeniu funkcji RIT zależnie od pasma słyszalne były ptaszki podczas przestrajania. Szkoda tylko że układ jest produkowany w tak maleńkiej obudowie( w tej chwili dla mnie nie do przylutowania ze względu na chorobę ).
    W swoich konstrukcjach użyłem modułu Adafruit ( https://botland.com.pl/pl/konwertery-pozostal...uit-si5351a-generator-sygnalu-160mhz-i2c.html ) zakupionego w TME.
    Fakt droższy sporo od samego Si, no ale cóż.
  • #3
    Galareta
    Poziom 21  
    Na ali poniżej 20zł kupowałem moduły z tym scalakiem. Bardzo przydatna zabawka;) Gratuluje projektu:)
  • PCBway
  • #5
    arturavs
    Poziom 40  
    gdkj napisał:
    nie wszędzie się nada.

    Nada się nada. Już nie jedna konstrukcja na Si powstała.
    gdkj napisał:
    nie robi sinusa
    i nie musi, dla większości mieszaczy np. diodowych to obojętne( wszak dioda też jest elementem nieliniowym).
  • #6
    gdkj
    Poziom 26  
    arturavs napisał:
    gdkj napisał:
    nie wszędzie się nada.

    Nada się nada. Już nie jedna konstrukcja na Si powstała.
    gdkj napisał:
    nie robi sinusa
    i nie musi, dla większości mieszaczy np. diodowych to obojętne( wszak dioda też jest elementem nieliniowym).


    Nie samym mieszaczem człowiek żyje ;) . Ale dobry entuzjazm.
    Pozdrawiam.
  • #7
    arturavs
    Poziom 40  
    gdkj napisał:
    Nie samym mieszaczem człowiek żyje ;)

    Mimo że minimalna częstotliwość to ok. 2,5kHz to do zastosowań audio się nie nadaje.
    Gdyby Kolega poczytał notę katalogową, to by wiedział jakie było przeznaczenie układu w/g producenta.
  • #8
    fifi_22
    Poziom 4  
    Pamiętam swoje boje z si na avr... Przegrałem, tzn. Coś generował, ale kod ważył ~8kb.
    Mógłbyś napisać ile zajmuje ta biblioteka wraz z przykładem po kompilacji? (oczywiście po przepisaniu na np. avr to się zmieni, ale chciałbym wiedzieć orientacyjnie) ;)
  • #10
    arturavs
    Poziom 40  
    fifi_22 napisał:
    Coś generował, ale kod ważył ~8kb

    ZL2PD wraz z fontami i obrazkiem, oraz obsługą VFO i BFO po skompilowaniu w Bascom-Avr niecałe 16 kB. A dużo funkcji jest zaimplementowane.
  • #11
    Markofes
    Poziom 10  
    Fajna konstrukcja.
    Jaką częstotliwość max. udało się uzyskać?
    PIC32...czy oby nie przerośnięty na sterowanie tą syntezą, czy tu to tak rozwojowo zostału użyty ?
    ps. popełnmiłem podobną konstrukcję - z AVR, (arduino) z małym dodatkiem - może pełnić f-cje prostego wobuloskopu na PC. Wykorzystałem biblioteki dostępne w sieci,mi udało się uzyskać nieco ponad 150MHz, Generator jak najbardziej przydatny (mimo iż nie sinus..) do wielu zastosowań w zupełniści wystarczający.
  • #12
    ORMO_PL
    Poziom 19  
    Niestety źle wspominam. Uruchamiałem Si5351 pod Arduino dla celów stricte KFowych. Miało to napędzać mieszacz na NE602. Pomimo zdławienia wyjścia i zastosowania wielorakich tłumików dalej jakiś zegar (Wyświetlacz?) wbijał mi się w NE602. Pierdział przy przestrajaniu. Może coś źle robiłem?

    AD9850 pomimo tego że f jest razy mniejsza - sprawdza się lepiej do KFu.
  • #13
    arturavs
    Poziom 40  
    ORMO_PL napisał:
    Pierdział przy przestrajaniu

    Takie pierdzenie pojawia się przy wysyłaniu danych do Si.
  • #14
    ORMO_PL
    Poziom 19  
    arturavs napisał:
    ORMO_PL napisał:
    Pierdział przy przestrajaniu

    Takie pierdzenie pojawia się przy wysyłaniu danych do Si.



    Tak, też, jednak skrośnie wchodziło wszystko do mieszacza.

    Inna sprawa że NE602 ma dość niski poziom wejścia