Pustaka UM3236 LVGL kanggo Tampilan LCD
Manual pangguna
Pambuka
Ing konteks modern saka industri otomotif, iku umum kanggo berkembang GUI liyane lan liyane Komplek malah kanggo tampilan LCD cilik. Kanggo nyukupi kabutuhan iki, komponen anyar, AEK-LCD-LVGL, wis digawe lan ditambahake ing ekosistem AutoDevKit.
Komponen anyar iki ngimpor perpustakaan grafis LVGL, lan digunakake karo komponen AEK-LCD-DT028V1 kanggo ngembangake GUI kompleks luwih cepet.
LVGL (perpustakaan grafis sing entheng lan serbaguna) minangka perpustakaan grafis open-source gratis, ditulis ing basa C, nyedhiyakake alat kanggo nggawe GUI kanthi grafis sing gampang digunakake, efek visual sing apik, lan pendhudhukan memori sing sithik.
LVGL kuat banget amarga ngemot unsur sing wis ditemtokake, kayata tombol, grafik, dhaptar, panggeser, lan gambar. Nggawe grafis kanthi animasi, anti-aliasing, opacity, lan gulung lancar disederhanakake nganggo LVGL. Pustaka kompatibel karo akeh jinis piranti input, kayata touchpad, mouse, keyboard, lan encoders. Sasaran saka manual pangguna iki kanggo nuduhake carane nggawe LCD GUI gampang, nggunakake AutoDevKit.
Cathetan: Kanggo rincian liyane babagan LVGL, waca dokumentasi resmi. Kode sumber kasedhiya kanggo diundhuh saka GitHub.
arsitektur AEK-LVGLGambar ing ndhuwur nuduhake arsitektur piranti lunak LVGL sing digabungake menyang AutoDevKit.
Arsitektur piranti lunak ditondoi dening:
- Pustaka LVGL: nindakake fungsi grafis canggih adhedhasar perpustakaan grafis dhasar AEK-LCD-DT028V1:
– aek_ili9341_drawPixel: nyetak piksel ing LCD AEK-LCD-DT028V1;
– aek_lcd_get_touchFeedback: ndeteksi tutul ing layar tutul LCD AEK-LCD-DT028V1;
- aek_lcd_read_touchPos: entuk koordinat titik sing kena;
– aek_lcd_set_touch Umpan Balik: menehi tandha yen tumindak tutul wis rampung. - Pustaka grafis dhasar: nindakake fungsi grafis dhasar lan nelpon primitif driver tingkat rendah.
- Pembalap tingkat rendah: ngetrapake periferal MCU. Ing kasus iki, protokol SPI digunakake.
- AEK-LCD-DT028V1: Papan evaluasi LCD.
dhasar LVGL
Perpustakaan LVGL sesambungan karo komponen AEK-LCD-DT028V1 liwat loro pembalap Disprove lan IndevDriver, minangka ditampilake ing gambar ngisor iki.Disprove tanggung jawab kanggo nyiapake gambar buffer lan ngirim menyang lapisan ngisor kanggo nampilake ing LCD. Iki nggunakake struktur diketik lv_disp_drv_t ing ngisor iki:
- draw_buf: nuduhake menyang struktur buffer memori kang LVGL ndudohke.
- nyewa: résolusi horisontal tampilan ing piksel.
- Verres: résolusi vertikal tampilan ing piksel.
- flush_cb: nuduhake fungsi sing digunakake kanggo print buffer memori kanggo tampilan LCD.
- monitor_cb: ngawasi jumlah piksel lan wektu sing dibutuhake kanggo nampilake data.
Ing sisih liya, IndevDriver njupuk informasi tutul LCD saka lapisan ngisor. Iki nggunakake struktur diketik lv_indev_drv_t ing ngisor iki:
jinis: lapangan iki ngemot jinis piranti input. Macro sing kasedhiya sing wis ditemtokake kalebu:
– LV_INDEV_TYPE_POINTER (digunakake ing kasus kita)
– LV_INDEV_TYPE_KEYPAD
– LV_INDEV_TYPE_ENCODER
– LV_INDEV_TYPE_BUTTON
redact: nuduhake fungsi sing digunakake kanggo njupuk informasi tutul.
flush_cb lan redact: diarani adhedhasar periodik, mungguh, ing wektu refresh layar sing ditemtokake pangguna lan input refresh tutul. Pustaka LVGL ngatur wektu refresh liwat jam internal. Rong fungsi LVGL dhasar digunakake kanggo manajemen wektu: - lv_tick_inc (uint32_t x): Tujuan saka fungsi iki kanggo nyinkronake wektu LVGL karo wektu fisik MCU. Nganyari centhang kudu disetel antarane 1 nganti 10 milidetik miturut spesifikasi LVGL. Ing
cilik kita, kita nyetel kanggo 5 milliseconds. - lv_timer_handler (kosong): nganyari obyek LVGL internal adhedhasar wektu liwati. Wektu fisik dipantau liwat programmable interrupt timer (PIT) periferal MCU.
Antarmuka antarane LVGL lan komponen AEK-LCD-DT028V1
Antarmuka antarane AEK-LCD-LVGL lan komponen AEK-LCD-DT028V1 dileksanakake dening file jenenge lcd_lvgl.c sing ana ing sangisore folder "aek_lcd_lvgl_component_rla". Iki file ngandhut fungsi kanggo:
- miwiti perpustakaan LVGL,
- ngatur timer internal LVGL,
- antarmuka perpustakaan LVGL karo perpustakaan grafis dhasar dipun ginakaken dening komponen AEK-LCD-DT028V1.
Lima fungsi utama kasebut diterangake ing paragraf ing ngisor iki.
3.1 Tampilan Init
Fungsi aek_lcd_lvgl_display_init initialize loro struktur tombol LVGL, Disprove lan IndevDriver.
3.1.1 mbantah
Tujuan utama struktur Disprove yaiku nyekel buffer gambar kanggo LVGL. Titik lapangan Disprove draw_buf ing struktur buffer memori bisa ngemot nganti rong buffer memori sing beda. Kolom draw_buf diwiwiti kanthi fungsi lv_disp_draw_buf_init ().Ing kode ndhuwur, paramèter DISP_HOR_RES lan DISP_VER_RES makili dimensi LCD.
Cathetan:
Ukuran buffer kudu disesuaikan miturut memori sistem sing kasedhiya. Pandhuan LVGL resmi nyaranake milih ukuran buffer gambar paling sethithik 1/10 saka ukuran layar. Yen buffer opsional kapindho digunakake, LVGL bisa nutul menyang siji buffer nalika data saka buffer liyane dikirim kanggo ditampilake ing latar mburi.Parameter liyane saka struktur yaiku dimensi layar, rong fungsi, flush lan monitor_cb, sing bakal dianalisis mengko. Sawise kapenuhan, struktur kudu kedhaftar karo lv_disp_drv_register () fungsi darmabakti kanggo nyetel tampilan aktif.
3.1.2 IndevDriver
IndevDriver diinisialisasi kaya ing ngisor iki:Kolom sing ditetepake yaiku jinis piranti sing digunakake lan fungsi kanggo ngatur. Uga ing kasus iki, struktur initialized kudu didaftar kanggo nggawe piranti dadi aktif.
3.2 Siram
Fungsi flush nggunakake perpustakaan grafis dhasar komponen AEK-LCD-DT028V1 kanggo tarik, ing LCD, gambar saiki ing buffer memori initialized miturut paragraf sadurungé.Balung fungsi siram wis diwenehake dening fungsi LVGL lan disesuaikan kanggo driver layar LCD sing digunakake (yaiku, aek_ili9341_drawPixel - gambar piksel). Parameter input yaiku:
- garing: pitunjuk menyang Disprove
- area: buffer sing ngemot wilayah tartamtu sing kudu dianyari
- werna: buffer sing ngemot werna kanggo dicithak.
3.3 monitor_cb
Fungsi monitor_cb ditetepake ing pandhuan LVGL resmi lan ora mbutuhake pangaturan dhewe.3.4 my_input_read
Fungsi my_input_read tanggung jawab kanggo ngatur input saka layar LCD ing tingkat dhuwur.
Balung fungsi ditemtokake dening perpustakaan LVGL. Parameter input yaiku:
- drv: pointer menyang driver input initialized
- data: ngemot koordinat x,y piksel sing diowahi saka titik sing disentuh Gambar ing ngisor iki nuduhake implementasi fungsi my_input_read:
3.5 Refresh layar
Fungsi aek_lcd_lvgl_refresh_screen nganyari timer internal LVGL.
Cathetan: Fungsi iki kudu diselehake kanthi bener ing kode aplikasi kanggo ngrampungake watesan wektu LVGL.
Ekosistem AutoDevKit
Pangembangan aplikasi sing nggunakake AEK-LCD-LVGL njupuk advan lengkaptage saka AutoDevKit ekosistem, sing komponen dhasare yaiku:
- AutoDevKit Studio IDE bisa diinstal saka www.st.com/autodevkitsw
- Piranti lunak debugging SPC5-UDESTK kanggo Windows utawa Debugger sing Dibukak
- AEK-LCD-LVGL drive
4.1 AutoDevKit Studio
AutoDevKit Studio (STSW-AUTODEVKIT) minangka lingkungan pangembangan terpadu (IDE) adhedhasar Eclipse sing dirancang kanggo mbantu pangembangan aplikasi sing dipasang adhedhasar mikrokontroler SPC5 Power Architecture 32-bit.
Paket kasebut kalebu tuntunan aplikasi kanggo miwiti proyek kanthi kabeh komponen sing relevan lan unsur kunci sing dibutuhake kanggo ngasilake kode sumber aplikasi pungkasan. AutoDevKit Studio uga nduweni fitur:
- kamungkinan nggabungake produk piranti lunak liyane saka pasar Eclipse standar
- lisensi gratis GCC GNU C Compiler komponèn
- dhukungan kanggo kompiler standar industri
- dhukungan kanggo mikrokontroler multi-inti
- Editor PinMap kanggo nggampangake konfigurasi pin MCU
- komponen hardware lan software terpadu, mriksa kompatibilitas komponen, lan MCU lan piranti konfigurasi peripheral
- kamungkinan kanggo nggawe solusi sistem anyar saka sing wis ana kanthi nambah utawa mbusak Boards fungsi kompatibel
- kode anyar bisa kui langsung kanggo sembarang MCU kompatibel
- API aplikasi tingkat dhuwur kanggo ngontrol saben komponen fungsi, kalebu sing kanggo komponen AEK-LCDLVGL.
Kanggo informasi luwih lengkapq waca UM2623 (khususe, Bagean 6 lan Bagean 7) utawa nonton video tutorial.
4.2 komponen AEK_LCD_LVGL
Driver AEK-LVGL diwenehake karo STSW-AUTODEVKIT (saka versi 2.0.0 ing) instalasi kanggo nggampangake phase program.
Nganyari instalasi AutoDevKit kanggo entuk versi paling anyar. Sawise diinstal kanthi bener, pilih komponen sing jenenge AEK_LVGL Component RLA.
4.2.1 AEK_LCD_LVGL konfigurasi komponen
Kanggo ngatur komponen, tindakake prosedur ing ngisor iki.
Langkah 1. Setel wektu Refr_Period. Iki minangka periode layar refresh (nilai sing disaranake yaiku 30).
Langkah 2. Setel wektu Read_Period. Iki wektu minimal antarane rong deteksi tutul ing ngisor iki (nilai sing disaranake yaiku 30).
Langkah 3. Centhang kothak Draw Complex kanggo ngaktifake widget canggih kaya bayangan, gradien, sudhut bunder, bunder, busur, garis miring, lan transformasi gambar.
Langkah 4. Pilih fonts sing arep digunakake. Coba sing saben font mbutuhake memori lampu kilat ekstra kanggo kode aplikasi kui.
Cara nggawe proyek AutoDevKit nganggo komponen AEK-LCD-LVGL adhedhasar SPC58EC
Langkah-langkah kasebut yaiku:
Langkah 1. Gawe aplikasi AutoDevKit Studio anyar kanggo mikrokontroler seri SPC58EC lan tambahake komponen ing ngisor iki:
– SPC58ECxx Init Paket Komponen RLA
– SPC58ECxx Low Level Drivers Komponen RLA
Cathetan:
Tambah komponen kasebut ing wiwitan, yen komponen sing isih ana ora katon.
Langkah 2. Tambah komponen tambahan ing ngisor iki:
Langkah 2a. Komponen Paket AutoDevKit Init
Langkah 2b. SPC58ECxx Platform Komponen RLA
Langkah 2 c. AEK-LCD-DT028V1 Komponen RLA (ndeleng UM2939 kanggo konfigurasi)
Langkah 2d. AEK-LCD-LVGL Komponen RLALangkah 3. Klik tombol [Alokasi] ing jendhela konfigurasi AEK-LCD-LVGL. Operasi iki delegasi konfigurasi AEK-LCD-LVGL menyang AutoDevKit.
Langkah 4. Alokasi wis ngaktifake peripheral timer PIT. Sampeyan bisa verifikasi ing komponen Driver Low-Level.Langkah 5. Generate lan mbangun aplikasi nggunakake lambang cocok ing AutoDevKit Studio. Folder proyek banjur diisi karo anyar files, kalebu utama.c. Folder komponèn wis populated banjur karo AEKLCD-DT028V1 lan
driver AEK-LCD-LVGL.
Langkah 6. Bukak manic file lan kalebu AEK-LCD-DT028V1.h lan AEK_LCD_LVGL.h files.Langkah 7. Ing manic file, sawise fungsi irqIsrEnable(), lebokake fungsi wajib ing ngisor iki:
Langkah 8. Ing main.c, nyalin lan nempel mantanample saka perpustakaan LVGL dijupuk saka guide resmi lan masang ing utama ().
Langkah 9. Simpen, generate, lan ngumpulake aplikasi.
Langkah 10. Bukak papan view editor diwenehake dening AutoDevKit Iki menehi grafis point-to-point guide carane kabel Boards.
Langkah 11. Sambungake AEK-LCD-DT028V1 menyang port USB ing PC nggunakake mini-USB kanggo kabel USB.
Langkah 12. Bukak SPC5-UDESTK-SW lan mbukak debug kang file ing folder AEK-LCD-LVGL– Application /UDE.
Langkah 13. Mbukak lan debug kode.
Kasedhiya demo kanggo AEK-LVGL
Ana sawetara demo sing diwenehake karo komponen AEK-LCD-LVGL:
- Aplikasi Tes SPC582Bxx_RLA AEK_LCD_LVGL
- Aplikasi Tes SPC58ECxx_RLA AEK-LCD_LVGL
- demo AVAS layar ganda – SPC58ECxx_RLA_MainEcuForIntegratAVASControl – Aplikasi Tes
Cathetan: Demo liyane bisa uga kasedhiya karo rilis AutoDevKit anyar.
Aplikasi canggih example - demo AVAS layar dual
Aplikasi canggih wis dileksanakake nggunakake LVGL. Aplikasi iki nggambar ukuran mobil kanggo rpm mesin ing tampilan lan ngatur animasi ukuran sing gegandhengan.
Aplikasi AVAS sing diimplementasikake adhedhasar papan AEK-AUD-C1D9031 lan simulasi swara mesin mobil kanthi kecepatan rendah kanggo ngelingake para pejalan kaki babagan kendharaan listrik sing nyedhaki.
Ing demo, kita simulasi akselerasi lan deceleration (yaiku, nambah / nyuda rpms) mesin mobil lan volume liwat panel kontrol dileksanakake ing layar LCD saka AEK-LCD-DT028V1.Kita wis nambah demo kanthi nambah LCD AEK-LCD-DT028V1 kaloro lan nggunakake perpustakaan LVGL kanggo nggawe spedometer kanggo ngukur nilai rpm mesin.
7.1 widget LVGL digunakake
Kanggo ngembangake demo AVAS layar dobel, kita wis nggunakake widget LVGL ing ngisor iki:
- Gambar sing digunakake minangka latar mburi tachometer
- Busur sing digunakake minangka indikator tachometer
- Animasi sing nganyari nilai busur miturut rpm mesin
7.1.1 Widget gambar LVGL
Kanggo nggunakake gambar karo perpustakaan LVGL, Ngonversi menyang larik C kanthi nggunakake online free konverter.Cathetan:
Nalika ngowahi gambar elinga centhang kothak format Big-Endian.
Ing demo AVAS layar dual, susunan C sing makili gambar tachometer wis dijenengi Gauge. Widget gambar wis disesuaikan minangka nderek:ngendi:
- lv_img_declare: digunakake kanggo ngumumake gambar sing diarani Gauge.
- lv_img_create: digunakake kanggo nggawe obyek gambar lan masang menyang layar saiki.
- lv_img_set_src: iki minangka gambar sing dipikolehi saka konverter LVGL sing ditampilake sadurunge (disaranake nggunakake format jpg).
- lv_obj_align: digunakake kanggo nyelarasake gambar menyang tengah karo offset diwenehi.
- lv_obj_set_size: digunakake kanggo nyetel ukuran gambar.
Cathetan:
Kanggo rincian liyane babagan carane ngatur gambar nganggo perpustakaan LVGL, waca dokumentasi resmi.
7.1.2 Widget busur LVGL
A busur multicolored wis digawe kanggo nuduhake engine rpms cepet. Busur multicolored kasusun saka rong werna contiguous, abang lan biru, mungguh.Kode ing ngisor iki nuduhake carane nggawe a busur:
ngendi:
- lv_arc_create: nggawe obyek busur.
- lv_arc_set_rotation: nyetel rotasi busur.
- lv_arc_set_bg_angles: nyetel nilai busur maksimum lan minimal ing derajat.
- lv_arc_set_value: nyetel nilai awal busur ing nol.
- lv_obj_set_size: nyetel dimensi busur.
- lv_obj_remove_style: mbusak pointer final busur.
- lv_obj_clear_flag: nyetel busur minangka ora bisa diklik.
- lv_obj_align: nyelarasake busur menyang tengah kanthi offset sing ditemtokake.
7.1.3 Widget animasi gadhah
Fungsi animasi busur tartamtu digawe lan diterusake menyang mesin LVGL kanggo nampilake owah-owahan rpm. Kode fungsi yaiku ing ngisor iki:ngendi:
- busur: punika pitunjuk kanggo widget busur saiki
- wektu tundha: wektu tundha sadurunge animasi diwiwiti
- wiwitan: punika posisi busur dhisikan
- pungkasan: punika posisi busur final
- kacepetan: punika kacepetan animasi ing unit / secs.
Cathetan: Kanggo rincian liyane babagan fungsi animasi sing digunakake, deleng dokumentasi LVGL. Ngelingi yen busur lengkap kasusun saka rong lengkungan sing cedhak, kita kudu ngatur fungsi animasi kanthi bener. Kanggo maksud iki, ayo nganalisa rong skenario sing beda:
- Kasus: animasi kalebu siji busur Ing kasus prasaja iki, kita nemtokake animasi siji menyang busur.
- Kasus: animasi melu rong lengkungan Ing kasus iki, animasi busur kapindho diwiwiti ing pungkasan animasi sing pisanan.
Fungsi LVGL tartamtu (lv_anim_speed_to_time) ngitung wektu animasi. Wektu eksekusi iki digunakake kanggo ngitung wektu tundha animasi busur kapindho.7.2 implementasine dual inti
Ing demo AVAS layar dobel, tugas tampilan lan puter maneh audio dieksekusi bebarengan ing sistem sing dipasang ing wektu nyata. Kanggo ngatasi kemungkinan mundhut saka respon sistem, kita wis mutusaké kanggo nggunakake loro intine beda: siji darmabakti kanggo tampilan lan siji kanggo puter maneh audio.
Papan AEK-MCU-C4MLIT1 dadi tuan rumah mikrokontroler SPC58EC80E5 kanthi prosesor inti dual, sing paling pas kanggo kasus kasebut ing ndhuwur.
Ing rinci:
- Inti 2: Iku pisanan kanggo miwiti, initializes perpustakaan lan banjur nglakokaké kode aplikasi.
- Inti 0: Telpon fungsi aek_lcd_lvgl_refresh_screen () ing daur ulang utama, supaya terus-terusan nganyari tampilan lan maca input tutul.
Fungsi PIT lan aek_lcd_lvgl_refresh_screen () kudu diselehake ing inti padha.
Riwayat revisi
Tabel 1. Riwayat revisi dokumen
Tanggal | Revisi | Owah-owahan |
4-Okt-23 | 1 | Rilis wiwitan. |
WARTA PENTING - Wacan kanthi ati-ati
STMicroelectronics NV lan anak perusahaan ("ST") nduweni hak kanggo nggawe owahan, koreksi, dandan, modifikasi, lan dandan kanggo produk ST lan / utawa dokumen iki sawayah-wayah tanpa kabar. Para panuku kudu entuk informasi paling anyar babagan produk ST sadurunge nggawe pesenan. Produk ST didol miturut syarat lan kahanan adol ST nalika diakoni pesenan. Para panuku mung tanggung jawab kanggo milih, milih, lan nggunakake produk ST lan ST ora duwe tanggung jawab kanggo pitulung aplikasi utawa desain produk para panuku.
Ora ana lisensi, nyata utawa diwenehake, kanggo hak properti intelektual sing diwenehake dening ST ing kene.
Adol maneh produk ST kanthi pranata sing beda karo informasi sing kasebut ing kene bakal ngilangi garansi sing diwenehake dening ST kanggo produk kasebut.
ST lan logo ST iku merek dagang saka ST. Kanggo informasi tambahan babagan merek dagang ST, waca www.st.com/trademarks. Kabeh jeneng produk utawa layanan liyane minangka properti sing nduweni.
Informasi ing dokumen iki ngganti lan ngganti informasi sing diwenehake sadurunge ing sembarang versi sadurunge dokumen iki. © 2023 STMicroelectronics – Kabeh hak dilindhungi undhang-undhang
UM3236 - Rev 1 - Oktober 2023
Kanggo informasi luwih lengkap hubungi sales STMicroelectronics lokal saka
Dokumen / Sumber Daya
![]() |
STMicroelectronics UM3236 LVGL Pustaka kanggo Tampilan LCD [pdf] Manual pangguna AEK-LCD-DT028V1, UM3236, UM3236 Perpustakaan LVGL kanggo Layar LCD, Perpustakaan LVGL kanggo Layar LCD, Perpustakaan kanggo Layar LCD, Layar LCD |