niedziela, 10 lutego 2019

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

Wreszcie nadeszła wiekopomna chwila czyli pierwsza "poważniejsza" robota programistyczna w środowisku SEGGER. Dokonałem konwersji biblioteki dla wyświetlacza ILI9341 z MCU PIC32MM do ATSAML21. Wyświetlacz ten  znajduje się na mojej sprytnej płytce developerskiej ATSAML21. Głupio byłoby zatem nie mieć takiej biblioteki w wydaniu dla ATSAM-a. Program napisany jest bez użycia ASF a z wykorzystaniem plików nagłówkowych dostarczonych przez producenta i znajdujących się w środowisku SEGGER.
Bardzo dobrym pomysłem okazało się napisanie biblioteki dla wyświetlacza ILI93741 najpierw na MCU PIC32MM a potem  mając działający soft przeniesienie go na ATSAML21. O ile w przypadku PIC32MM biblioteka odpaliła od pierwszego kopa o tyle w wersji dla ATSAML21 miałem drobne problemy ale wynikające jeszcze z braku wprawy w programowaniu ATSAM-ów.
Sama konfiguracja sprzętowa za pomocą rejestrów nie była problemem. Jak już poczujemy specyfikę ATSAM-ów to z każdym dniem obcowania z nimi wszystko staje się proste. Do sterowania wyświetlaczem w zakresie SPI wykorzystałem moduł SERCOM5 podłączony do Generatora nr 1. 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 ATSAML21

   CS (Chip Select) --> Ground

   RST (Reset)         --> PA25

   DC/RS (Command / Data) --> PA24

   MOSI (Serial Data) --> PB02

   SCK (Serial Clock) --> PB03

   LED --> +3.3V

 Dla przypomnienia moja płytka developerska dla ATSAML21/D21 wygląda tak :



Na płytce umieściłem ATSAML21G18B
Płytka wyszła niechcący superancko i sprawia mi jak na razie sporo satysfakcji. 
Jej ogromną zaletą jest koszt produkcji, który jest drobnym ułamkiem kwoty jaką by trzeba było dać za płytki producenta. A płytki do ATSAM-ów potrafią naprawdę sporo kosztować, taka dziwna polityka odstraszająca amatorów/hobbystów od poznania tych bardzo ciekawych mikrokontrolerów. Choć ostatnio idą w tym względzie duże zmiany . ATSAM-y trafiły m.in do oficjalnych płytek ARDUINO. Pojawił się również wysyp płytek ADAFRUIT z ATSAM-ami , nawet u naszych lokalnych dystrybutorów już są dostępne. Sam byłem zaskoczony ilością dostępnych modeli. Można by rzec Ameryka stawia na Tolka Banana czyli na ATSAM-y.

Tu przy okazji warto zauważyć pewien "ukryty" trend , który jest nam serwowany nie jako przy okazji, mianowicie chodzi o moduły kryptograficzne (ATECC608 i 508) jakie są dodawane do nowych płytek np. Arduino. Niby dla poprawy bezpieczeństwa w sieci  i takie tam frazesy dla lemingów. Ale prawda jest całkiem inna , podstawową intencją producentów jest ochrona własnych interesów np przed zalewem Chińskich modułów .  A jak to działa w praktyce ?. np do chmury Arduino , która zaraz będzie udostępniona użytkownikom , połączą się bezpłatnie tylko moduły z kryptografią na pokładzie i z kodami dostarczonymi przez producenta urządzenia. Oznacza to tyle, że moduły np. Chińskie bez kluczy wybranego producenta zaszytych w urządzeniu i chmurze nie połączą się z chmurą lub połączą ale za opłatą abonamentu. Ten trend dotyczy również nowych MCU z rdzeniami Cortex M23 i M33. Microchip już oferuje ATSAML11 z rdzeniem M23, który jest obecnie taką fortecą , że Chińczyk będzie miał ogromny problem złamać tego procka. STM też zapowiada hucznie w reklamach model MCU z M33 ale on raczej nie dorówna wyrobowi Microchipa w zakresie bezpieczeństwa.
A tutaj filmik jak wygląda współpraca oryginalnego Arduino z ATSAM na pokładzie  z nową chmurą  Arduino IoT Cloud. Klon takiego Arduino nie połączy się z chmurą. Chińczycy musieliby dla swoich klonów stawiać swoją chmurę. Idą w sumie ciekawe czasy.

Drugim aspektem nieprzyjaznym dla hobbystów są relatywnie drogie narzędzia do programowania np taki ATMEL ICE Basic kosztuje ok 450 zł. W tym względzie ogromnie mnie cieszy, że używając środowiska SEGGER mam możliwość programowania ATSAM-ów za pomocą taniego J-LINK EDU mini. A współpraca ATSAM-ów z programatorem  i środowiskiem SEGGER jest po prostu bajecznie doskonała i to wszytko w środowisku LINUX.

W projekcie  wydzieliłem funkcjonalnie pliki. W oddzielnych plikach mamy konfigurację zegara, pinów, SPI tak aby łatwiej to można było ogarnąć.
Trzeba przyznać , że dużym luksusem jest fakt, że wyświetlacza nie trzeba było wieszać na kabelkach lub działać na płytce stykowej , która jest w wielu przypadkach zawodna. Wyświetlacz osadzony na docelowej płytce developerskiej w wersji odłączanej to jest luksus , który bardzo cieszy.

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/ATSAML21_ILI9341.git


i dodajemy w środowisku SEGGER za pomocą opcji File --> Open Solution

Na koniec wspomnę , że obcowanie z ATSAM-ami daje dużą satysfakcję, to nie jest nudny jak flaki z olejem STM32 ale od samego początku intrygujący mikrokontroler o ciekawie ułożonych i nie banalnych peryferiach. Trud w poznaniu jego zostanie z nawiązką zrekompensowany.  Moim zdanie warto pochylić nad nim głowę tym bardziej , że zaczyna on być poważnie traktowany przez duże organizacje takie jak np. Arduino a Microchip rozwija tę serię czego przykładem są nowe modele takie jak ATSAML11 i 10. Tutaj mamy link do oferowanych obecnie modeli ATSAM-ów : Quick Reference ale lista ta nie wyczerpuje wszystkich dostępnych w sprzedaży modeli. Należy pamietać , że w ekosystemie ATSAM mamy również bogatą ofertę mikroprocesorów.


Pozdrawiam
picmajster.blog@gmail.com



Linki :

IDE SEGGER
ATSAML21G18B 
ILI9341
Projekt ILI9341 - na GitHub dla środowiska SEGGER
Artykuł o ATSAML21 

Brak komentarzy:

Prześlij komentarz