{"id":499,"date":"2018-03-31T20:18:16","date_gmt":"2018-03-31T20:18:16","guid":{"rendered":"http:\/\/hayperek.pl\/?p=499"},"modified":"2018-05-17T21:22:44","modified_gmt":"2018-05-17T21:22:44","slug":"swiat-w-kolorze-lcd-cz-1","status":"publish","type":"post","link":"https:\/\/hayperek.pl\/en\/2018\/03\/31\/swiat-w-kolorze-lcd-cz-1\/","title":{"rendered":"\u015awiat w kolorze &#8211; LCD cz 1."},"content":{"rendered":"<p>Dzi\u015b nareszcie zajmiemy si\u0119 najistotniejszym elementem uk\u0142adanki &#8211; kolorowym wy\u015bwietlaczem LCD \ud83d\ude42 Na pocz\u0105tek przyjrzyjmy si\u0119 mo\u017cliwo\u015bciom naszego STM32F407 w zakresie sterowania tak\u0105 matryc\u0105.<\/p>\n<h5>Metody sterowania wy\u015bwietlaczem<\/h5>\n<p>Istnieje ca\u0142a gama przer\u00f3\u017cnych, dedykowanych interfejs\u00f3w dla wy\u015bwietlaczy LCD. Najog\u00f3lniej mo\u017cna je podzieli\u0107 na dwie grupy: szeregowe oraz r\u00f3wnoleg\u0142e. Pierwsze z nich do przesy\u0142u obrazu wykorzystuj\u0105 zaledwie kilka linii &#8211; odbywa si\u0119 to jednak kosztem szybko\u015bci od\u015bwie\u017cania. Interfejsy r\u00f3wnoleg\u0142e wymagaj\u0105 znacznie wi\u0119kszej liczby pin\u00f3w (cz\u0119sto powy\u017cej 20), co jednak przek\u0142ada si\u0119 na znacznie szybszy przesy\u0142 danych. Pomijam tu celowo r\u00f3\u017cnicowe interfejsy szeregowe LVDS, poniewa\u017c nie s\u0105 obs\u0142ugiwane przez nasz mikrokontroler i zazwyczaj trafiaj\u0105 do matryc o wysokiej rozdzielczo\u015bci <em>(powy\u017cej VGA &#8211; 640&#215;480)<\/em>.<\/p>\n<h5>Co potrafi nasz mikrokontroler?<\/h5>\n<p>Szeregowy interfejs SPI najwygodniej obs\u0142u\u017cy\u0107, korzystaj\u0105c z jednego z kontroler\u00f3w magistrali SPI w jakie zosta\u0142 wyposa\u017cony uk\u0142ad STM32F407. Po\u0142\u0105czenie wymaga u\u017cycia jedynie czterech linii: \/CS, MISO, MOSI oraz CLK. <\/p>\n<p><a href=\"http:\/\/hayperek.pl\/wp-content\/uploads\/2018\/03\/lcd_4.png\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/hayperek.pl\/wp-content\/uploads\/2018\/03\/lcd_4.png\" alt=\"\" width=\"699\" height=\"345\" class=\"aligncenter size-large wp-image-510\" srcset=\"https:\/\/hayperek.pl\/wp-content\/uploads\/2018\/03\/lcd_4.png 699w, https:\/\/hayperek.pl\/wp-content\/uploads\/2018\/03\/lcd_4-600x296.png 600w, https:\/\/hayperek.pl\/wp-content\/uploads\/2018\/03\/lcd_4-300x148.png 300w\" sizes=\"auto, (max-width: 699px) 100vw, 699px\" \/><\/a><\/p>\n<p>Je\u015bli chodzi o interfejsy r\u00f3wnoleg\u0142e <em>(zar\u00f3wno typu 8080, jak i 6800)<\/em>, do sterowania mo\u017cemy wykorzysta\u0107 zwyk\u0142e piny I\/O, kt\u00f3rymi b\u0119dziemy r\u0119cznie sterowa\u0107. Jest to rozwi\u0105zanie niezwykle elastyczne pod wzgl\u0119dem routowania p\u0142ytki drukowanej. Mo\u017cna bowiem prowadzi\u0107 \u015bcie\u017cki niemal\u017ce dowolnie, poniewa\u017c do komunikacji mo\u017ce zosta\u0107 u\u017cyte praktycznie ka\u017cde wyprowadzenie mikrokontrolera.<\/p>\n<p><a href=\"http:\/\/hayperek.pl\/wp-content\/uploads\/2018\/03\/lcd_3.png\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/hayperek.pl\/wp-content\/uploads\/2018\/03\/lcd_3.png\" alt=\"\" width=\"698\" height=\"322\" class=\"aligncenter size-large wp-image-509\" srcset=\"https:\/\/hayperek.pl\/wp-content\/uploads\/2018\/03\/lcd_3.png 698w, https:\/\/hayperek.pl\/wp-content\/uploads\/2018\/03\/lcd_3-600x277.png 600w, https:\/\/hayperek.pl\/wp-content\/uploads\/2018\/03\/lcd_3-300x138.png 300w\" sizes=\"auto, (max-width: 698px) 100vw, 698px\" \/><\/a><\/p>\n<p>Nieco mniej elastycznym, za to bardziej eleganckim i wydajnym sposobem jest u\u017cycie kontrolera pami\u0119ci <em>(FSMC &#8211; ang. Flexible Static Memory Controller)<\/em>, w jaki wyposa\u017cono uk\u0142ad STM32F407. Zazwyczaj s\u0142u\u017cy on do pod\u0142\u0105czenia zewn\u0119trznych bank\u00f3w pami\u0119ci, jednak mo\u017ce zosta\u0107 u\u017cyty r\u00f3wnie\u017c jako interfejs dla LCD. W\u00f3wczas ka\u017cda operacja odczytu lub zapisu danych do wy\u015bwietlacza jest realizowany jak zwyk\u0142y dost\u0119p do pami\u0119ci. Nie s\u0105 wymagane dodatkowe operacje, np. r\u0119czne sterowanie pinami, jak to mia\u0142o miejsce w poprzedniej metodzie. <\/p>\n<p><a href=\"http:\/\/hayperek.pl\/wp-content\/uploads\/2018\/03\/lcd_2.png\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/hayperek.pl\/wp-content\/uploads\/2018\/03\/lcd_2.png\" alt=\"\" width=\"693\" height=\"336\" class=\"aligncenter size-full wp-image-508\" srcset=\"https:\/\/hayperek.pl\/wp-content\/uploads\/2018\/03\/lcd_2.png 693w, https:\/\/hayperek.pl\/wp-content\/uploads\/2018\/03\/lcd_2-600x291.png 600w, https:\/\/hayperek.pl\/wp-content\/uploads\/2018\/03\/lcd_2-300x145.png 300w\" sizes=\"auto, (max-width: 693px) 100vw, 693px\" \/><\/a><\/p>\n<h5>Podsumowanie<\/h5>\n<p>Spr\u00f3bujmy por\u00f3wna\u0107 opisane metody sterowania.<\/p>\n<hr>\n<p><strong>Interfejs szeregowy SPI<\/strong><br \/>\nZalety:<\/p>\n<ul class=\"pro_cons_list\">\n<li class=\"pro_item\">wymaga jedynie czterech linii sygna\u0142owych,<\/li>\n<li class=\"pro_item\">mo\u017cliwo\u015b\u0107 u\u017cycia sprz\u0119towego kontrolera SPI,<\/li>\n<\/ul>\n<p>Wady:<\/p>\n<ul class=\"pro_cons_list\">\n<li class=\"cons_item\">ni\u017csza pr\u0119dko\u015b\u0107 od\u015bwie\u017cania,<\/li>\n<li class=\"cons_item\">ograniczona dost\u0119pno\u015b\u0107 matryc LCD obs\u0142uguj\u0105cych interfejs SPI,<\/li>\n<\/ul>\n<hr>\n<p><strong>Interfejs r\u00f3wnoleg\u0142y &#8211; sterowanie GPIO<\/strong><br \/>\nZalety:<\/p>\n<ul class=\"pro_cons_list\">\n<li class=\"pro_item\">mo\u017cliwo\u015b\u0107 u\u017cycia dowolnych wyj\u015b\u0107 GPIO mikrokontrolera,<\/li>\n<li class=\"pro_item\">niezwykle prosta konfiguracja,<\/li>\n<\/ul>\n<p>Wady:<\/p>\n<ul class=\"pro_cons_list\">\n<li class=\"cons_item\">ni\u017csza pr\u0119dko\u015b\u0107 od\u015bwie\u017cania ni\u017c przy u\u017cyciu FSMC,<\/li>\n<li class=\"cons_item\">wymaga u\u017cycia oko\u0142o 20 pin\u00f3w procesora,<\/li>\n<li class=\"cons_item\">konieczno\u015b\u0107 r\u0119cznego obs\u0142ugiwania I\/O,<\/li>\n<\/ul>\n<hr>\n<p><strong>Interfejs r\u00f3wnoleg\u0142y &#8211; sterowanie FSMC<\/strong><br \/>\nZalety:<\/p>\n<ul class=\"pro_cons_list\">\n<li class=\"pro_item\">najwi\u0119ksza szybko\u015b\u0107 od\u015bwie\u017cania,<\/li>\n<li class=\"pro_item\">prosty i wygodny interfejs od strony programowej (identyczny z zapisem\/odczytem zwyk\u0142ej pami\u0119ci),<\/li>\n<\/ul>\n<p>Wady:<\/p>\n<ul class=\"pro_cons_list\">\n<li class=\"cons_item\">sztywny mapping pin\u00f3w FSMC,<\/li>\n<li class=\"cons_item\">wymaga u\u017cycia oko\u0142o 20 pin\u00f3w procesora,<\/li>\n<\/ul>\n<p>Na chwil\u0119 obecn\u0105 zdecydowa\u0142em si\u0119 wykorzysta\u0107 najprostsze w realizacji sterowanie GPIO. Pozwoli ono relatywnie szybko uruchomi\u0107 wy\u015bwietlacz i zapewni swobod\u0119 przy mapowaniu pin\u00f3w. W przysz\u0142o\u015bci natomiast, w miar\u0119 potrzeb przejdziemy na interfejs SPI <em>(je\u015bli oka\u017ce si\u0119 wystarczaj\u0105co szybki)<\/em> lub wykorzystamy sterownik FSMC, aby poprawi\u0107 wydajno\u015b\u0107 i upro\u015bci\u0107 sterowanie.<\/p>\n<hr>\n<h5>Gwiazda wieczoru!<\/h5>\n<p>Niedawno w moje r\u0119ce trafi\u0142y dwa, podobne modu\u0142y wy\u015bwietlaczy LCD. Oba maj\u0105 rozdzielczo\u015b\u0107 320&#215;480 pikseli, przek\u0105tn\u0105 3.2 cala oraz posiadaj\u0105 r\u00f3wnoleg\u0142y interfejs typu 8080. Jeden z nich wyposa\u017cony jest w dedykowane z\u0142\u0105cze pasuj\u0105ce do popularnych zestaw\u00f3w Arduino.<\/p>\n<p><a href=\"http:\/\/hayperek.pl\/wp-content\/uploads\/2018\/03\/lcd_1.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/hayperek.pl\/wp-content\/uploads\/2018\/03\/lcd_1-1024x768.jpg\" alt=\"\" width=\"720\" height=\"540\" class=\"aligncenter size-large wp-image-504\" srcset=\"https:\/\/hayperek.pl\/wp-content\/uploads\/2018\/03\/lcd_1-1024x768.jpg 1024w, https:\/\/hayperek.pl\/wp-content\/uploads\/2018\/03\/lcd_1-600x450.jpg 600w, https:\/\/hayperek.pl\/wp-content\/uploads\/2018\/03\/lcd_1-300x225.jpg 300w, https:\/\/hayperek.pl\/wp-content\/uploads\/2018\/03\/lcd_1-768x576.jpg 768w, https:\/\/hayperek.pl\/wp-content\/uploads\/2018\/03\/lcd_1.jpg 1200w\" sizes=\"auto, (max-width: 720px) 100vw, 720px\" \/><\/a><\/p>\n<p>W celu sprawdzenia, pod\u0142\u0105czy\u0142em jeden z nich do p\u0142ytki prototypowej i spr\u00f3bowa\u0142em wype\u0142ni\u0107 ca\u0142y obszar wy\u015bwietlacza jednym kolorem &#8211; oto efekt! \ud83d\ude00<\/p>\n<p><a href=\"http:\/\/hayperek.pl\/wp-content\/uploads\/2018\/03\/lcd_5.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/hayperek.pl\/wp-content\/uploads\/2018\/03\/lcd_5-1024x768.jpg\" alt=\"\" width=\"720\" height=\"540\" class=\"aligncenter size-large wp-image-517\" srcset=\"https:\/\/hayperek.pl\/wp-content\/uploads\/2018\/03\/lcd_5-1024x768.jpg 1024w, https:\/\/hayperek.pl\/wp-content\/uploads\/2018\/03\/lcd_5-600x450.jpg 600w, https:\/\/hayperek.pl\/wp-content\/uploads\/2018\/03\/lcd_5-300x225.jpg 300w, https:\/\/hayperek.pl\/wp-content\/uploads\/2018\/03\/lcd_5-768x576.jpg 768w, https:\/\/hayperek.pl\/wp-content\/uploads\/2018\/03\/lcd_5.jpg 1200w\" sizes=\"auto, (max-width: 720px) 100vw, 720px\" \/><\/a><\/p>\n<p>Jutro druga cz\u0119\u015b\u0107 &#8211; pr\u00f3ba stworzenia biblioteki graficznej. Zapraszam!<\/p>","protected":false},"excerpt":{"rendered":"<p>Dzi\u015b nareszcie zajmiemy si\u0119 najistotniejszym elementem uk\u0142adanki &#8211; kolorowym wy\u015bwietlaczem LCD \ud83d\ude42 Na pocz\u0105tek przyjrzyjmy si\u0119 mo\u017cliwo\u015bciom naszego STM32F407 w zakresie sterowania tak\u0105 matryc\u0105. Metody sterowania wy\u015bwietlaczem Istnieje ca\u0142a gama przer\u00f3\u017cnych, dedykowanych interfejs\u00f3w dla wy\u015bwietlaczy LCD. Najog\u00f3lniej mo\u017cna je podzieli\u0107 na dwie grupy: szeregowe oraz r\u00f3wnoleg\u0142e. Pierwsze z nich do przesy\u0142u obrazu wykorzystuj\u0105 zaledwie kilka [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":518,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3],"tags":[],"class_list":{"0":"post-499","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","6":"hentry","7":"category-stodni","9":"post-with-thumbnail","10":"post-with-thumbnail-large"},"_links":{"self":[{"href":"https:\/\/hayperek.pl\/en\/wp-json\/wp\/v2\/posts\/499","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/hayperek.pl\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/hayperek.pl\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/hayperek.pl\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/hayperek.pl\/en\/wp-json\/wp\/v2\/comments?post=499"}],"version-history":[{"count":15,"href":"https:\/\/hayperek.pl\/en\/wp-json\/wp\/v2\/posts\/499\/revisions"}],"predecessor-version":[{"id":945,"href":"https:\/\/hayperek.pl\/en\/wp-json\/wp\/v2\/posts\/499\/revisions\/945"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/hayperek.pl\/en\/wp-json\/wp\/v2\/media\/518"}],"wp:attachment":[{"href":"https:\/\/hayperek.pl\/en\/wp-json\/wp\/v2\/media?parent=499"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/hayperek.pl\/en\/wp-json\/wp\/v2\/categories?post=499"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/hayperek.pl\/en\/wp-json\/wp\/v2\/tags?post=499"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}