ARM:0015 STM32CubeMX ekraniukų bibliotekos 2 dalis

Pratesimas- grafinių ekraniukų bibliotekos gcc C kalbos puristams. Kiek paoptimizuotos, pataisytos kelios ardruinistų ir adafruitistų klaidos. Ir aišku pridėta savų klaidų. Vienas ekraniukas I2C, visi kiti SPI. Ekraniukai naudoja tuos pačius SPI, D/C ir RESET signalus, ekraniukai pasirenka su CS signalu. Tai svabu, nes pats naujausias ekraniukas (240 x 240) neturi CS kojos išvestos į jungtį. Jungiant prie dedikuoto SPI tai nėra problema. Deja šiame projekte teko palituoti.

SPI and I2C graphic LCD OLED modules with STM32 stm32cubemx gcc
Ekraniukai (iš kairės į dešinę): ILI9341 (320 x 240), ST7789W (240 x 240), seniausias ST7735R (160 x 128, galimos kitos konfiguracijos), SSD1306 (128 x 64), SSD1306 (128 x 32, I2C).

Mažiesiems ekranams neparašytos grafinės bibliotekos, kaip matosi iš nuotraukos, naudojamas (vogtas) šriftas turi klaidas. Manau, vėliau pabaigsiu Windows softą šriftų redagavimui ir ekskportui, nes užkniso tie šriftai.
Bibliotekos kiek kitų versijų nei pirmame straipsnelyje, nes teko kiek unifikuoti ir optimizuoti. Pvz- jei reikia perduoti kelis baitus iš eilės, tai ir siunčiam kelis baitus, o ne kelis kartus siunčiam po baitą. Arba va:


//buvo:
for (pixels = 0; pixels < x1 - x0 ; pixels++) { ili9341_send_word(color); }
//tapo:
for(x0=x0;x0<x1;x0++){ILI9341_send_word(color);}

Pirma eilute originali, antra mano. Sutaupom kintamąjį ir bereikalingą skaičiavimą.

Dar vienas:


//buvo:
for(i=0;i < (w * h);i++)
{
c1 = *buffer++;
c2 = *buffer++;
ili9341_send_byte(c1);
ili9341_send_byte(c2);
}

//tapo:
ILI9341_write_buffer(buffer, w*h*2);

Kiek teko pamakaluoti kodą, nes kažkodėl ne visur suveikė “static”, o bibliotekos taigi kartojasi. Gi niekas negamina tokio kvailo projekto su tiek skirtingų ekraniukų.

Visas source kodas ir sukompiliuoti binarai:
LCD OLED screens SPI and I2C libraries for STM32CubeMX with demo program.
Konfiguracijos pagrinde vienoje vietoje ir darosi su #define. OLED ekraniukai naudoja harwarinį skrolinimą, galima diminti, kad pamažinti burn-out.

3 replies on “ARM:0015 STM32CubeMX ekraniukų bibliotekos 2 dalis”

  1. ok!Ne visai į temą,?man jau kokie 10 m. pakilus fix mintis. kad visur eina kreivi softai. kai kur dėl elementaraus tingumo(pohuiškumo) kai kur dėl padliskumo, kad sena geležį į šiukšlyną kuo greičiau. pašneku su firmos kompiuterastais, (ir arkliukui aišku kad jiems darbas nuo to+ cash)sakau taigi taip ir taip , Atsakymas,-nu jo,…KLAUSIMAS kiek atominiu elektrinių išeitų atjungt ištiesinus softą?

  2. > raimis, kiek metų užsiimi programavimu (jei programuoji apskritai)? Va, kai kodo rašymo stažas bus 30+ metų, tokių kvailų minčių nebekils ir noras tapti programavimo Tadu Blinda išnyks kaip rytinis rūkas 🙂 Programas rašo žmonės, o žmonės, deja, nėra tobuli. Dirbant profesionaliai, spaudžia laikas, riboja biudžetas arba tiesiog žmogiškai projektas jau “skersai gerklės stovi”, tai norisi jį kuo greičiau užbaigti, einant pačiu lengviausiu keliu, kuris nebūtinai yra kokybiškas.

  3. Gintaras teisus. Daug PC softo optimizacija prasta, bet šiais laikais, kai papildomas gigas RAM’o arba keli šimtai gigų vietos HDD kainuoja gerokai pigiau, negu papildomos valandos programuotojų paslaugų, tai visi ir eina paprasčiausiu keliu.

Leave a Reply

Your email address will not be published. Required fields are marked *