niedziela, 21 lipca 2019

ATSAML10 - biblioteka dla kolorowego wyświetlacz ILI9341 2.2" 320x240.

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
Rozkład pinów :
  • 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 :
Signal LCD  ---> MCU ATSAML10

   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.
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

Linki :

IDE SEGGER
ILI9341
ATSAML10E16 - strona produktu 
Biblioteka na GitHub

Brak komentarzy:

Prześlij komentarz