Ponieważ moja płytka developerska dla ATSAML10 i 11 stała się faktem (ostateczna wersja 3.1), dlatego po szybkim rozpracowaniu SPI w ATSAML10 ,zająłem się dostosowaniem biblioteki dla wyświetlacza kolorowego LCD 2.2 ILI9341 . Wyświetlacz ten znajduje się na mojej sprytnej płytce developerskiej dedykowanej ATSAML10 i 11. Program dla ATSAML10 napisany jest bez użycia ASF a z wykorzystaniem plików nagłówkowych dostarczonych przez producenta i znajdujących się w środowisku SEGGER. Identyczną bibliotekę poczyniłem dla PIC32MM i ATSAML21. W sumie biblioteka jest bardzo przyjazna do robienie konwersji dla innych MCU.
Wyświetlacz ILI9341 nabędziemy bez problemu na dalekowschodnim portalu aukcyjnym na literę A :
- Sterownik firmy ILITEK : IL9341
- Rozdzielczość: 240 * 320
- Przekątna 2.2"
- Głębia kolorów 65k/262k
- Sterowanie SPI
- 5 wires (CS, DC, SCK, MOSI, RST) for controling
- Rozmiar modułu: 67mm (długość) * 40mm (szerokość) * 4mm (grubość)
- Czytnik kart SD
- MISO: Serial clock output
- LED: 3.3V Power Supply pin
- SCK: Serial clock input
- MOSI: Serial data input
- DC: Data / Command selection
- RST: Reset, Low level active
- CS: Chip Selection, Low level active
- GND: Ground
- VDD: 3.3V Power Supply pin
Zaletą tego wyświetlacza w rozmiarze 2.2" jest relatywnie spora rozdzielczość 320x240 a to robi wrażenie jeśli zrobimy na nim np. ładne menu. Wyświetlana grafika i tekst jest tak soczysty , że normalnie można to zjeść oczami :) .Na pokładzie mamy również czytnik kart SD.
Do sterowania wyświetlaczem w zakresie SPI w ATSAML10 wykorzystałem moduł SERCOM0 podłączony do Generatora nr 0. Prędkości zegara nie zmieniałem jest ona taka jak po starcie procka czyli 4MHz. Źródłem taktowania jest wewnętrzny OSC16M, który maksymalnie możemy ustawić na 16MHz. Piny jakie wykorzystałem w projekcie wynikały z połączeń znajdujących się na mojej płytce developerskiej :
CS (Chip Select) --> Ground
RST (Reset) --> PA06
DC/RS (Command / Data) --> PA07
MOSI (Serial Data) --> PA24
SCK (Serial Clock) --> PA25
LED --> +3.3V
Dla przypomnienia moja płytka developerska dla ATSAML10/11 wygląda tak :
Na płytce umieściłem ATSAML10E16A w obudowie 32 pin. Obudowa ta jest prosta do przylutowania.
Płytka wyszła superancko i prezentuje się bardzo elegancko w ładnej czerwieni. To co najbardziej mnie w niej cieszy to slot dla rewelacyjnego w/g mnie modułu radiowego SI4463 do , którego w następnej kolejności popełnię bibliotekę dla ATSAML10. Mając biblioteki dla LCD i modułu radiowego będę mógł w wygodny sposób kontynuować zabawy z SI4463.
Płytka wyszła superancko i prezentuje się bardzo elegancko w ładnej czerwieni. To co najbardziej mnie w niej cieszy to slot dla rewelacyjnego w/g mnie modułu radiowego SI4463 do , którego w następnej kolejności popełnię bibliotekę dla ATSAML10. Mając biblioteki dla LCD i modułu radiowego będę mógł w wygodny sposób kontynuować zabawy z SI4463.
Wszystkie ATSAM-y programuję za pomocą łatwo dostępnego i relatywnie taniego J-LINK EDU mini firmy SEEGER. Tak swoją drogą jak poznamy specyfikę rejestrów ATSAML10 i 11 to od razu nabywamy umiejętności programowania ATSAML21 i odwrotnie. Warto tu też zauważyć, że rodzina ATSAMLxx jest znacząco mniej zabugowana niż ATSAMDxx.
W projekcie wydzieliłem funkcjonalnie pliki. W oddzielnych plikach mamy konfigurację zegara, pinów, SPI tak aby łatwiej to można było ogarnąć.
Biblioteka gotowa. Zapraszam do używania. Projekt z GitHub ściągamy lokalnie na dysk za pomocą komendy (Linux w konsoli):
git clone https://github.com/PICmajster/ATSAML10_ILI9341.git
i dodajemy w środowisku SEGGER za pomocą opcji File --> Open Solution
Pozdrawiam
picmajster.blog@gmail.com
picmajster.blog@gmail.com
Linki :
IDE SEGGER
ILI9341
ATSAML10E16 - strona produktu
Biblioteka na GitHub
Brak komentarzy:
Prześlij komentarz