Moja baza narzędziowa to :
- płytka z modułem zegara opartym o STM32G071KBT6, do wizualizacji efektów działania MAX7219
- programator J-LINK EDU Mini firmy Segger,
- środowisko SEGGER IDE,
Na początek fragment schematu mojego zegarka :
O tym jak SPI ogarnąć w STM32G0 pisałem w artykule poprzednim. Poniżej dla przypomnienia pokazuję moją funkcję konfiguracyjną dla SPI1 .
Teraz plik z definicjami dla MAX7219 :
Poniżej funkcja bezpośrednio rozmawiająca z MAX7219 a w szczególności ze wszystkimi układami w kaskadzie na raz. Najpierw wysyłamy adres rejestru do którego się chcemy odwołać a potem daną jaką chcemy zapisać w rejestrze, czyli łącznie mamy 2 x 8 bit. Wysyłam ciurkiem 16-bitów. Funkcji tej używam do konfiguracji układów.
Poniżej funkcja rozmawiająca z MAX7219, która potrafi rozróżnić z którym układem w kaskadzie rozmawia :
Aby zrozumieć jak możemy sterować poszczególnymi MAX7219 w kaskadzie, proponuje obejrzeć poniższy filmik wtedy wszystko się rozjaśni :
https://www.youtube.com/watch?v=SMH45vnRbjI
Aby rozmawiać z pierwszym układem MAX7219 w kaskadzie musimy wysłać najpierw sekwencję NOP (adres: 0x0 data :0x0) a potem sekwencję komendy (np. adres: 0x1 data :0x3) co w kodzie BCD wyświetli nam cyfrę 3 na pozycji DIG0 (Device0) . Jeśli chcemy odwołać się do drugiego układu w kaskadzie to najpierw wysyłamy sekwencję komendy (np. adres: 0x1 data :0x3) a potem sekwencję NOP (adres: 0x0 data :0x0). W efekcie na DIG0 (Device1) zobaczymy cyfrę 3.
Funkcja pokazana powyżej operuje na buforze 4-ro elementowym, dwa bajty na NOP i dwa bajty dla sekwencję komendy. Gdyby w kaskadzie było więcej MAX7219 niż dwa ,bufor musiałby być odpowiednio większy. Po odpowiednim ustawieniu sekwencji wysyłanej w buforze, w zależności do którego MAX7219 się odwołujemy, cały bufor wysyłamy po SPI. Na końcu zatrzaskujemy na CS stanem wysokim i dopiero wtedy dane zostaną zatwierdzone a na wyświetlaczu zobaczymy tego efekt.
Dla uzupełnienia pokażę jeszcze funkcję konfigurującą MAX7219 :
Jak tym wszystkim się posługiwać prezentuje obrazek poniżej :
Efekt działania programu poniżej :
Żeby trochę urozmaicić nasz kod . Stwórzmy sobie interfejs do rozmowy z MAX7219. Interfejs ma tę zaletę, że grupuje nam wszystkie funkcje w obiekcie który wywołujemy. Przećwiczmy sobie zatem tworzenie interfejsu. Tworzymy dwa pliki max7219_interface.h i max7219_interface.h. W pliku .h powołujemy strukturę i deklarujemy wskaźniki na funkcje, tyle wskaźników ile funkcji chcemy dołączyć do interfejsu. Wskaźniki muszą być zgodne z typami funkcji jakie chcemy dołączyć. W pliku tym na końcu deklarujemy nasz interfejs o nazwie max7219.
I to tyle w temacie. MAX7219 bardzo uprzyjemnia działanie z wyświetlaczami LED. Jego zalety to prostota w sterowaniu, wyświetlanie w dwóch formatach BCD i w trybie pojedynczych LED w segmencie , sterowanie jasnością. Niska cena modułów z Chin zachęca wybitnie do stosowania ich w swoich projektach. Czysta przyjemność.
PICmajster
picmajster.blog@gmail.com
Brak komentarzy:
Prześlij komentarz