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
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
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:
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).
Tak wygląda z bliska zlutowany moduł (użyłem najzwyklejszej lutownicy kolbowej):
Rezonator kwarcowy jest po drugiej stronie PCB (widać na zdjęciu luty).
Całość programowana była z pomocą PICKIT3 (i MPLAB X IPE):
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++
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.
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):
Nagłówek i implementacja biblioteki:
Datasheet SI5351:
Oryginalna biblioteka dla Arduino (przed portowaniem):
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ę.