logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Trzykanałowy generator zegera SI5351 i PIC32MX - pierwsze starcie

p.kaczmarek2 27 Kwi 2019 17:15 4830 13
REKLAMA
  • 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 / 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 (266.16 kB)Musisz być zalogowany, aby pobrać ten załącznik.


    Nagłówek i implementacja biblioteki:
    si5351_p..2.zip (10.32 kB)Musisz być zalogowany, aby pobrać ten załącznik.


    Datasheet SI5351:
    Si5351..pdf (832.46 kB)Musisz być zalogowany, aby pobrać ten załącznik.


    Oryginalna biblioteka dla Arduino (przed portowaniem):
    Si5351Ardu...master.zip (49.38 kB)Musisz być zalogowany, aby pobrać ten załącznik.


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

    Fajne? Ranking DIY
    Pomogłem? Kup mi kawę.
    O autorze
    p.kaczmarek2
    Moderator Smart Home
    Offline 
    Inżynier programista z wieloletnim doświadczeniem embedded i full stack developer.
    Specjalizuje się w: embedded, Full-Stack Developer
    p.kaczmarek2 napisał 14770 postów o ocenie 12913, pomógł 659 razy. Jest z nami od 2014 roku.
  • REKLAMA
  • #2 17929879
    ArturAVS
    Moderator
    Posty: 26418
    Pomógł: 2303
    Ocena: 7833
    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óż.
  • REKLAMA
  • #3 17930375
    Galareta
    Poziom 23  
    Posty: 696
    Pomógł: 14
    Ocena: 182
    Na ali poniżej 20zł kupowałem moduły z tym scalakiem. Bardzo przydatna zabawka;) Gratuluje projektu:)
  • #4 17930533
    gdkj
    Poziom 26  
    Posty: 1526
    Pomógł: 49
    Ocena: 84
    Ten generatorek niedrogo dostępny był na allegro na ładnej płytce. Niestety nie robi sinusa więc nie wszędzie się nada.
  • #5 17930539
    ArturAVS
    Moderator
    Posty: 26418
    Pomógł: 2303
    Ocena: 7833
    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 17930548
    gdkj
    Poziom 26  
    Posty: 1526
    Pomógł: 49
    Ocena: 84
    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 17930559
    ArturAVS
    Moderator
    Posty: 26418
    Pomógł: 2303
    Ocena: 7833
    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.
  • REKLAMA
  • #8 17933686
    fifi_22
    Poziom 8  
    Posty: 79
    Ocena: 16
    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) ;)
  • #9 17933726
    Janusz_kk
    Poziom 39  
    Posty: 5868
    Pomógł: 228
    Ocena: 1478
    Ale on to robi na pic-u i z tego żadnego info nie masz bo to inny kod i kompilator, w https://github.com/etherkit/Si5351Arduino
    masz biblotekę i przykłady pod avr-a i arduino, skompiluj i sam zobaczysz ile to ma.
  • REKLAMA
  • #10 17934604
    ArturAVS
    Moderator
    Posty: 26418
    Pomógł: 2303
    Ocena: 7833
    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 17935760
    Markofes
    Poziom 11  
    Posty: 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 17959749
    ORMO_PL
    Poziom 19  
    Posty: 774
    Pomógł: 16
    Ocena: 80
    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 17959754
    ArturAVS
    Moderator
    Posty: 26418
    Pomógł: 2303
    Ocena: 7833
    ORMO_PL napisał:
    Pierdział przy przestrajaniu

    Takie pierdzenie pojawia się przy wysyłaniu danych do Si.
  • #14 17960533
    ORMO_PL
    Poziom 19  
    Posty: 774
    Pomógł: 16
    Ocena: 80
    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

Podsumowanie tematu

LABEL_AI_GENERATED
W dyskusji omówiono projekt trzykanałowego generatora zegara SI5351 firmy Silabs, który jest sterowany przez mikroprocesor PIC32MX w środowisku MikroC PRO for PIC32. Uczestnicy wymieniają doświadczenia związane z używaniem SI5351, podkreślając jego możliwości generowania częstotliwości do 200MHz oraz konfiguracji przez I2C. Wspomniano o dostępnych modułach, takich jak te od Adafruit, oraz o problemach z generowaniem sygnału sinusoidalnego. Użytkownicy dzielą się również informacjami na temat bibliotek i kodów, które mogą być użyte w projektach opartych na AVR i Arduino. Pojawiły się również uwagi dotyczące zakłóceń w sygnale, które mogą występować podczas pracy z NE602.
Podsumowanie AI na podstawie dyskusji. Może zawierać błędy.
REKLAMA