LCD Display အတွက် UM3236 LVGL စာကြည့်တိုက်များ
အသုံးပြုသူလက်စွဲ
နိဒါန်း
မော်တော်ယာဥ်လုပ်ငန်း၏ ခေတ်သစ်အခြေအနေတွင်၊ LCD ဖန်သားပြင်အသေးစားများအတွက်ပင် ပို၍ရှုပ်ထွေးသော GUI များကို တီထွင်ရန်မှာ များနေပါသည်။ ဤလိုအပ်ချက်ကိုဖြည့်ဆည်းရန်အတွက် အစိတ်အပိုင်းအသစ် AEK-LCD-LVGL ကို ဖန်တီးပြီး AutoDevKit ဂေဟစနစ်သို့ ပေါင်းထည့်ထားသည်။
ဤအစိတ်အပိုင်းအသစ်သည် LVGL ဂရပ်ဖစ်စာကြည့်တိုက်ကို တင်သွင်းပြီး ရှုပ်ထွေးသော GUI များကို ပိုမိုမြန်ဆန်စွာဖွံ့ဖြိုးတိုးတက်စေရန် AEK-LCD-DT028V1 အစိတ်အပိုင်းဖြင့် အသုံးပြုထားသည်။
LVGL (ပေါ့ပါးပြီး စွယ်စုံရဂရပ်ဖစ်စာကြည့်တိုက်) သည် C language ဖြင့် ရေးသားထားသော အခမဲ့၊ အဖွင့်-ရင်းမြစ် ဂရပ်ဖစ်စာကြည့်တိုက်ဖြစ်ပြီး အသုံးပြုရလွယ်ကူသော ဂရပ်ဖစ်များ၊ လှပသောရုပ်ပုံလွှာများနှင့် မန်မိုရီနည်းသော အလုပ်အကိုင်များကို ဖန်တီးရန် ကိရိယာများကို ပံ့ပိုးပေးသည့် GUI များကို ဖန်တီးပေးပါသည်။
LVGL သည် ခလုတ်များ၊ ဇယားများ၊ စာရင်းများ၊ ဆလိုက်ဒါများနှင့် ပုံများကဲ့သို့သော ကြိုတင်သတ်မှတ်ထားသောဒြပ်စင်များပါ၀င်သောကြောင့် အလွန်အစွမ်းထက်ပါသည်။ ကာတွန်းရုပ်ပုံများ၊ ဆန့်ကျင်ဘက်၊ အလင်းပိတ်ခြင်းနှင့် ချောမွေ့စွာ လှိမ့်ခြင်းတို့ဖြင့် ဂရပ်ဖစ်ဖန်တီးခြင်းကို LVGL ဖြင့် ရိုးရှင်းစေသည်။ စာကြည့်တိုက်သည် touchpads၊ mouses၊ keyboards နှင့် encoders များကဲ့သို့သော input devices အမျိုးအစားများစွာနှင့် တွဲဖက်အသုံးပြုနိုင်ပါသည်။ ဤအသုံးပြုသူလက်စွဲ၏ရည်ရွယ်ချက်မှာ AutoDevKit ကိုအသုံးပြု၍ LCD GUI ကို လွယ်ကူစွာဖန်တီးနည်းကိုပြသရန်ဖြစ်သည်။
မှတ်ချက် - LVGL နှင့်ပတ်သက်သော အသေးစိတ်အချက်အလက်များအတွက်၊ တရားဝင်စာရွက်စာတမ်းများကို ကိုးကားပါ။ အရင်းအမြစ်ကုဒ်ကို GitHub မှ ဒေါင်းလုဒ်လုပ်နိုင်သည်။
AEK-LVGL ဗိသုကာအထက်ပါပုံသည် AutoDevKit တွင် ပေါင်းစပ်ထားသော LVGL ဆော့ဖ်ဝဲလ်ဗိသုကာလက်ရာကို ပြသထားသည်။
ဆော့ဖ်ဝဲလ်ဗိသုကာလက်ရာသည် အောက်ပါတို့ကို ခွဲခြားသတ်မှတ်ထားသည်။
- LVGL စာကြည့်တိုက်- AEK-LCD-DT028V1 အခြေခံ ဂရပ်ဖစ်စာကြည့်တိုက်ကို အခြေခံ၍ အဆင့်မြင့် ဂရပ်ဖစ်လုပ်ဆောင်ချက်များကို အကောင်အထည်ဖော်သည်-
– aek_ili9341_drawPixel- ၎င်းသည် AEK-LCD-DT028V1 LCD ပေါ်တွင် ပစ်ဇယ်များကို ပရင့်ထုတ်သည်။
– aek_lcd_get_touchFeedback: ၎င်းသည် AEK-LCD-DT028V1 LCD ထိတွေ့မျက်နှာပြင်ပေါ်တွင် ထိသည်ကို တွေ့ရှိရသည်၊
– aek_lcd_read_touchPos- ၎င်းသည် ထိမိသောအချက်၏ သြဒီနိတ်များကို ရရှိသည်။
– aek_lcd_set_touch တုံ့ပြန်ချက်- ထိတွေ့လုပ်ဆောင်ချက်ပြီးမြောက်ကြောင်း အလံပြထားသည်။ - အခြေခံဂရပ်ဖစ်စာကြည့်တိုက်- ၎င်းသည် အခြေခံဂရပ်ဖစ်လုပ်ဆောင်ချက်များကို အကောင်အထည်ဖော်ပြီး အဆင့်နိမ့် ဒရိုက်ဘာ primitives များကို ခေါ်သည်။
- အဆင့်နိမ့် ဒရိုက်ဘာ- ၎င်းသည် MCU အရံပစ္စည်းများကို အသုံးပြုသည်။ ဤကိစ္စတွင်၊ SPI ပရိုတိုကောကို အသုံးပြုသည်။
- AEK-LCD-DT028V1- LCD အကဲဖြတ်ဘုတ်။
LVGL အခြေခံများ
LVGL စာကြည့်တိုက်သည် အောက်ဖော်ပြပါပုံတွင်ပြထားသည့်အတိုင်း Disprove နှင့် IndevDriver နှစ်ခုမှတစ်ဆင့် AEK-LCD-DT028V1 အစိတ်အပိုင်းနှင့် အပြန်အလှန်အကျိုးသက်ရောက်သည်။Disprove သည် buffer image ကိုပြင်ဆင်ပြီး LCD ပေါ်တွင်ပြသရန်အောက်ဆုံးအလွှာသို့ပေးပို့ရန်တာဝန်ရှိသည်။ ၎င်းသည် အောက်ပါ lv_disp_drv_t ရိုက်ထည့်ထားသော ဖွဲ့စည်းပုံကို အသုံးပြုသည်။
- draw_buf- ၎င်းသည် LVGL ဆွဲသည့် memory buffer တည်ဆောက်ပုံကို ညွှန်ပြသည်။
- ငှားရမ်းသူများ- pixels ဖြင့် ပြသမှု၏ အလျားလိုက် ကြည်လင်ပြတ်သားမှု။
- Verres- pixels ဖြင့် ပြသသည့် ဒေါင်လိုက် ကြည်လင်ပြတ်သားမှု။
- flush_cb- ၎င်းသည် LCD မျက်နှာပြင်သို့ မန်မိုရီကြားခံကို ပရင့်ထုတ်ရန် အသုံးပြုသည့် လုပ်ဆောင်ချက်ကို ညွှန်ပြသည်။
- monitor_cb- ၎င်းသည် pixels အရေအတွက်နှင့် ဒေတာပြသရန် လိုအပ်သည့်အချိန်ကို စောင့်ကြည့်သည်။
အခြားတစ်ဖက်တွင်၊ IndevDriver သည် အောက်အလွှာမှလာသော LCD ထိတွေ့သတင်းအချက်အလက်ကို ရယူသည်။ ၎င်းသည် အောက်ပါ lv_indev_drv_t ရိုက်ထည့်ထားသော ဖွဲ့စည်းပုံကို အသုံးပြုသည်။
အမျိုးအစား- ဤအကွက်တွင် ထည့်သွင်းသည့် စက်အမျိုးအစား ပါဝင်သည်။ ကြိုတင်သတ်မှတ်ထားသော မက်ခရိုများ ပါဝင်သည်-
– LV_INDEV_TYPE_POINTER (ကျွန်ုပ်တို့၏ကိစ္စတွင်သုံးသည်)
– LV_INDEV_TYPE_KEYPAD
– LV_INDEV_TYPE_ENCODER
– LV_INDEV_TYPE_BUTTON
redact- ထိတွေ့သတင်းအချက်အလက်ရယူရန် အသုံးပြုသည့် လုပ်ဆောင်ချက်ကို ညွှန်ပြသည်။
flush_cb နှင့် redact- အသုံးပြုသူသတ်မှတ်ထားသော စခရင်အား ပြန်လည်စတင်သည့်ကာလနှင့် ထိတွေ့ refresh ထည့်သွင်းမှုတွင် အခါအားလျော်စွာ အခြေခံခေါ်ဝေါ်သည်။ LVGL စာကြည့်တိုက်သည် အတွင်းပိုင်းနာရီမှတဆင့် ပြန်လည်စတင်ချိန်များကို စီမံခန့်ခွဲသည်။ အချိန်စီမံခန့်ခွဲမှုအတွက် အခြေခံ LVGL လုပ်ဆောင်ချက်နှစ်ခုကို အသုံးပြုသည်- - lv_tick_inc(uint32_t x): ဤလုပ်ဆောင်ချက်၏ရည်ရွယ်ချက်မှာ MCU ၏ရုပ်ပိုင်းဆိုင်ရာအချိန်နှင့် LVGL အချိန်ကို ထပ်တူပြုရန်ဖြစ်သည်။ LVGL သတ်မှတ်ချက်အရ tick အပ်ဒိတ်ကို 1 မှ 10 မီလီစက္ကန့်ကြား သတ်မှတ်ရပါမည်။ ၌
ကျွန်ုပ်တို့၏ကိစ္စ၊ ကျွန်ုပ်တို့ ၎င်းကို 5 မီလီစက္ကန့်ဟု သတ်မှတ်သည်။ - lv_timer_handler (ပျက်ပြယ်): ၎င်းသည် ကုန်လွန်သွားသောအချိန်အပေါ်အခြေခံ၍ အတွင်းပိုင်း LVGL အရာဝတ္ထုများကို အပ်ဒိတ်လုပ်သည်။ ရုပ်ပိုင်းဆိုင်ရာအချိန်အား MCU ၏ programmable interrupt timer (PIT) peripheral မှတဆင့် စောင့်ကြည့်သည်။
LVGL နှင့် AEK-LCD-DT028V1 အစိတ်အပိုင်းအကြား အင်တာဖေ့စ်
AEK-LCD-LVGL နှင့် AEK-LCD-DT028V1 အစိတ်အပိုင်းတစ်ခုမှ မျက်နှာပြင်ကို အကောင်အထည်ဖော်သည် file “aek_lcd_lvgl_component_rla” ဖိုင်တွဲအောက်တွင်ရှိသော lcd_lvgl.c ဟု အမည်ပေးထားသည်။ ဒီ file လုပ်ဆောင်ချက်များ ပါဝင်သည်-
- LVGL စာကြည့်တိုက်ကို စတင်ပါ၊
- LVGL အတွင်းပိုင်း အချိန်တိုင်းကိရိယာကို စီမံခန့်ခွဲခြင်း၊
- AEK-LCD-DT028V1 အစိတ်အပိုင်းမှ လုပ်ဆောင်သည့် အခြေခံဂရပ်ဖစ်စာကြည့်တိုက်နှင့် LVGL စာကြည့်တိုက်ကို ချိတ်ဆက်ပါ။
အဓိကလုပ်ဆောင်ချက်ငါးခုကို အောက်ပါစာပိုဒ်များတွင် ရှင်းပြထားသည်။
3.1 Display Init
aek_lcd_lvgl_display_init လုပ်ဆောင်ချက်သည် LVGL သော့တည်ဆောက်ပုံနှစ်ခုဖြစ်သော Disprove နှင့် IndevDriver ကို အစပြုသည်။
3.1.1 ငြင်းဆိုပါ။
Disprove ဖွဲ့စည်းပုံ၏ အဓိကပန်းတိုင်မှာ LVGL အတွက် ပုံဆွဲကြားခံကို ထိန်းသိမ်းထားရန်ဖြစ်သည်။ Disprove draw_buf အကွက်သည် မတူညီသော memory buffers နှစ်ခုအထိ ပါဝင်နိုင်သည့် memory buffer တည်ဆောက်ပုံတွင် အမှတ်ပေးသည်။ draw_buf အကွက်ကို lv_disp_draw_buf_init() လုပ်ဆောင်ချက်ဖြင့် အစပြုထားသည်။အထက်ပါ ကုဒ်တွင် DISP_HOR_RES နှင့် DISP_VER_RES ဘောင်များသည် LCD အတိုင်းအတာကို ကိုယ်စားပြုသည်။
မှတ်ချက် -
စနစ်ရနိုင်သော memory အရ ကြားခံအရွယ်အစားကို စိတ်ကြိုက်ပြင်ဆင်ရပါမည်။ တရားဝင် LVGL လမ်းညွှန်သည် မျက်နှာပြင်အရွယ်အစား၏ အနည်းဆုံး 1/10 ရှိသော ပုံဆွဲကြားခံအရွယ်အစားကို ရွေးချယ်ရန် အကြံပြုထားသည်။ ဒုတိယရွေးချယ်နိုင်သော ကြားခံတစ်ခုကို အသုံးပြုပါက၊ LVGL သည် အခြားကြားခံ၏ဒေတာကို နောက်ခံတွင်ပြသရန် ပေးပို့နေချိန်တွင် LVGL သည် ကြားခံတစ်ခုသို့ နှိပ်နိုင်သည်။ဖွဲ့စည်းပုံ၏ အခြားသော ကန့်သတ်ချက်များမှာ နောက်မှခွဲခြမ်းစိတ်ဖြာမည့် ဖန်သားပြင်အတိုင်းအတာ၊ လုပ်ဆောင်ချက်နှစ်ခု၊ flush နှင့် monitor_cb တို့ဖြစ်သည်။ ဖြည့်စွက်ပြီးသည်နှင့်၊ တက်ကြွသောပြသမှုကိုသတ်မှတ်ရန် သီးခြား lv_disp_drv_register() လုပ်ဆောင်ချက်ဖြင့် မှတ်ပုံတင်ရပါမည်။
3.1.2 IndevDriver
IndevDriver ကို အောက်ပါအတိုင်း အစပြုထားပါသည်။အဓိက သတ်မှတ်ထားသော အကွက်များသည် အသုံးပြုသည့် စက်အမျိုးအစားနှင့် ၎င်းကို စီမံခန့်ခွဲသည့် လုပ်ဆောင်ချက်ဖြစ်သည်။ ဤကိစ္စတွင်၊ စက်ပစ္စည်းကို တက်ကြွစေရန်အတွက် ကနဦးဖွဲ့စည်းပုံကိုလည်း မှတ်ပုံတင်ရန် လိုအပ်သည်။
3.2 ရေဆေးချပါ။
flush လုပ်ဆောင်ချက်သည် AEK-LCD-DT028V1 အစိတ်အပိုင်း အခြေခံဂရပ်ဖစ်စာကြည့်တိုက်ကို အသုံးပြု၍ LCD ပေါ်တွင်၊ ယခင်စာပိုဒ်အရ မန်မိုရီကြားခံတွင်ရှိသော ပုံကို စတင်ရေးဆွဲရန် စတင်သည်။flush လုပ်ဆောင်ချက်အရိုးစုကို LVGL လုပ်ဆောင်ချက်က ပံ့ပိုးပေးပြီး အသုံးပြုနေသည့် LCD မျက်နှာပြင်ဒရိုက်ဗာအတွက် စိတ်ကြိုက်ပြင်ဆင်ထားသည် (ဆိုလိုသည်မှာ aek_ili9341_drawPixel – pixel ပုံဆွဲခြင်း)။ ထည့်သွင်းမှု ကန့်သတ်ချက်များမှာ-
- အခြောက်- Disprove သို့ညွှန်ပြသည်။
- ဧရိယာ- အပ်ဒိတ်လုပ်ရန် လိုအပ်သော သီးခြားဧရိယာများပါရှိသော ကြားခံ
- အရောင်- ပုံနှိပ်ရမည့်အရောင်များပါရှိသော ကြားခံ။
3.3 monitor_cb
monitor_cb လုပ်ဆောင်ချက်ကို တရားဝင် LVGL လမ်းညွှန်တွင် သတ်မှတ်ထားပြီး စိတ်ကြိုက်ပြင်ဆင်မှုများ မလိုအပ်ပါ။3.4 my_input_read
my_input_read လုပ်ဆောင်ချက်သည် မြင့်မားသောအဆင့်တွင် LCD ဖန်သားပြင်မှလာသော input ကို စီမံခန့်ခွဲရန် တာဝန်ရှိသည်။
လုပ်ဆောင်ချက်အရိုးစုကို LVGL စာကြည့်တိုက်က သတ်မှတ်သည်။ ထည့်သွင်းမှု ကန့်သတ်ချက်များမှာ-
- drv- ကနဦးထည့်သွင်းထားသော ဒရိုက်ဗာသို့ ညွှန်ပြသည်။
- ဒေတာ- ထိမိသည့်နေရာများ၏ pixel-ပြောင်းလဲထားသော x၊y သြဒီနိတ်ပါရှိသည်၊ အောက်ဖော်ပြပါပုံသည် my_input_read လုပ်ဆောင်ချက်ကို အကောင်အထည်ဖော်မှုကို ပြသသည်-
3.5 မျက်နှာပြင်ကို ပြန်လည်စတင်ပါ။
aek_lcd_lvgl_refresh_screen လုပ်ဆောင်ချက်သည် LVGL အတွင်းပိုင်းအချိန်မာများကို အပ်ဒိတ်လုပ်သည်။
မှတ်ချက် - LVGL အချိန်ကန့်သတ်ချက်များကိုဖြည့်ဆည်းရန် ဤလုပ်ဆောင်ချက်ကို အပလီကေးရှင်းကုဒ်တွင် မှန်ကန်စွာထည့်သွင်းရပါမည်။
AutoDevKit ဂေဟစနစ်
AEK-LCD-LVGL ကို အသုံးပြုသည့် အပလီကေးရှင်း ဖွံ့ဖြိုးတိုးတက်မှုသည် အပြည့်အဝ advan လိုအပ်သည်။tage ၏ AutoDevKit ဂေဟစနစ်၏ အခြေခံ အစိတ်အပိုင်းများမှာ-
- AutoDevKit Studio IDE ကနေ install လုပ်လို့ရတယ်။ www.st.com/autodevkitsw
- Windows သို့မဟုတ် Opened debugger အတွက် SPC5-UDESTK အမှားရှာပြင်သည့်ဆော့ဖ်ဝဲ
- AEK-LCD-LVGL ဒရိုက်
4.1AutoDevKit စတူဒီယို
AutoDevKit Studio (STSW-AUTODEVKIT) သည် SPC5 Power Architecture 32-bit မိုက်ခရိုကွန်ထရိုလာများကို အခြေခံ၍ မြှုပ်သွင်းထားသော အပလီကေးရှင်းများ ဖွံ့ဖြိုးတိုးတက်ရေးကို အထောက်အကူပြုရန် ဒီဇိုင်းထုတ်ထားသည့် Eclipse ကို အခြေခံ၍ ပေါင်းစပ်ဖွံ့ဖြိုးတိုးတက်သည့် ပတ်ဝန်းကျင် (IDE) ဖြစ်သည်။
ပက်ကေ့ဂျ်တွင် နောက်ဆုံးအပလီကေးရှင်းအရင်းအမြစ်ကုဒ်ကိုထုတ်လုပ်ရန်အတွက် သက်ဆိုင်ရာအစိတ်အပိုင်းများနှင့် အဓိကအစိတ်အပိုင်းများအားလုံးကို ပရောဂျက်များစတင်ရန် အပလီကေးရှင်း wizard ပါ၀င်သည်။ AutoDevKit Studio တွင်လည်း ပါရှိပါသည်။
- စံ Eclipse စျေးကွက်မှ အခြားဆော့ဖ်ဝဲထုတ်ကုန်များကို ပေါင်းစပ်နိုင်ခြေ
- အခမဲ့ GCC လိုင်စင် GNU C Compiler အစိတ်အပိုင်း
- စက်မှုလုပ်ငန်းအဆင့်မီ ရေးဖွဲ့သူများအတွက် ပံ့ပိုးမှု
- Multi-core microcontrollers များအတွက်ပံ့ပိုးမှု
- MCU ပင်၏ဖွဲ့စည်းပုံကို အဆင်ပြေချောမွေ့စေရန် PinMap တည်းဖြတ်သူ
- ပေါင်းစပ် ဟာ့ဒ်ဝဲနှင့် ဆော့ဖ်ဝဲ အစိတ်အပိုင်းများ၊ အစိတ်အပိုင်း လိုက်ဖက်ညီမှု စစ်ဆေးခြင်း နှင့် MCU နှင့် အရံဖွဲ့စည်းမှု ကိရိယာများ
- တွဲဖက်အသုံးပြုနိုင်သည့် လုပ်ဆောင်ချက်ဘုတ်များကို ထည့်သွင်းခြင်း သို့မဟုတ် ဖယ်ရှားခြင်းဖြင့် ရှိပြီးသားစနစ်များမှ စနစ်ဖြေရှင်းချက်အသစ်များကို ဖန်တီးနိုင်ခြေ
- မည်သည့် MCU အတွက်မဆို ကုဒ်အသစ်ကို ချက်ချင်းထုတ်ပေးနိုင်သည်။
- AEK-LCDLVGL အစိတ်အပိုင်းတစ်ခုအပါအဝင် လုပ်ဆောင်နိုင်သော အစိတ်အပိုင်းတစ်ခုစီကို ထိန်းချုပ်ရန် အဆင့်မြင့်အက်ပ် API များ။
ပိုမိုသိရှိလိုပါကq ကိုကိုးကားပါ။ UM2623 (အထူးသဖြင့်၊ အပိုင်း ၆ နှင့် အပိုင်း ၇) သို့မဟုတ် ဗီဒီယိုသင်ခန်းစာများကို ကြည့်ပါ။
4.2 AEK_LCD_LVGL အစိတ်အပိုင်း
AEK-LVGL ဒရိုက်ဘာများကို ပရိုဂရမ်ရေးဆွဲခြင်းအဆင့်ကို လွယ်ကူချောမွေ့စေရန်အတွက် STSW-AUTODEVKIT (ဗားရှင်း 2.0.0 တွင်) ထည့်သွင်းပေးထားပါသည်။
နောက်ဆုံးထွက်ဗားရှင်းကိုရရန် သင်၏ AutoDevKit ထည့်သွင်းမှုကို အပ်ဒိတ်လုပ်ပါ။ စနစ်တကျထည့်သွင်းပြီးသည်နှင့် AEK_LVGL Component RLA အမည်ရှိ အစိတ်အပိုင်းကို ရွေးချယ်ပါ။
4.2.1 AEK_LCD_LVGL အစိတ်အပိုင်း ဖွဲ့စည်းမှု
အစိတ်အပိုင်းကို configure လုပ်ရန်၊ အောက်ပါလုပ်ထုံးလုပ်နည်းကို လိုက်နာပါ။
အဆင့် 1. Refr_Period အချိန်ကို သတ်မှတ်ပါ။ ဤသည်မှာ ပြန်လည်ဆန်းသစ်စခရင်ကာလဖြစ်သည် (အကြံပြုထားသောတန်ဖိုးမှာ 30)။
အဆင့် 2. Read_Period အချိန်ကို သတ်မှတ်ပါ။ ၎င်းသည် အောက်ပါထိတွေ့မှုနှစ်ခုကြားရှိ အနိမ့်ဆုံးအချိန်ဖြစ်သည် (အကြံပြုထားသည့်တန်ဖိုးမှာ 30)။
အဆင့် 3. အရိပ်များ၊ gradients၊ လုံးဝန်းသောထောင့်များ၊ စက်ဝိုင်းများ၊ arcs၊ skew မျဉ်းများနှင့် ပုံအသွင်ပြောင်းခြင်းကဲ့သို့သော အဆင့်မြင့် widget ကိုဖွင့်ရန် Draw Complex box ကို အမှန်ခြစ်ပါ။
အဆင့် 4. သင်အသုံးပြုလိုသောဖောင့်များကိုရွေးချယ်ပါ။ ဖောင့်တစ်ခုစီသည် ထုတ်လုပ်လိုက်သော အပလီကေးရှင်းကုဒ်အတွက် အပို flash memory လိုအပ်ကြောင်း သုံးသပ်ကြည့်ပါ။
SPC58EC ကိုအခြေခံ၍ AEK-LCD-LVGL အစိတ်အပိုင်းဖြင့် AutoDevKit ပရောဂျက်ကို ဖန်တီးနည်း
အဆင့်များမှာ-
အဆင့် 1. SPC58EC စီးရီးမိုက်ခရိုကွန်ထရိုလာအတွက် AutoDevKit Studio အပလီကေးရှင်းအသစ်ကို ဖန်တီးပြီး အောက်ပါအစိတ်အပိုင်းများကို ပေါင်းထည့်ပါ-
- SPC58ECxx Init Package Component RLA
- SPC58ECxx Low Level Drivers Component RLA
မှတ်ချက် -
အစတွင် ဤအစိတ်အပိုင်းများကို ထည့်ပါ၊ သို့မဟုတ်ပါက ကျန်အစိတ်အပိုင်းများကို မမြင်နိုင်ပါ။
အဆင့် 2. အောက်ပါ နောက်ထပ် အစိတ်အပိုင်းများကို ထည့်ပါ-
အဆင့် 2a AutoDevKit Init Package အစိတ်အပိုင်း
အဆင့် 2b။ SPC58ECxx ပလပ်ဖောင်း အစိတ်အပိုင်း RLA
အဆင့် 2c။ AEK-LCD-DT028V1 အစိတ်အပိုင်း RLA (ကြည့်ပါ။ UM2939 configuration အတွက်)
အဆင့် 2d။ AEK-LCD-LVGL အစိတ်အပိုင်း RLAအဆင့် 3. AEK-LCD-LVGL ဖွဲ့စည်းမှုဝင်းဒိုးရှိ [ခွဲဝေသတ်မှတ်ခြင်း] ခလုတ်ကို နှိပ်ပါ။ ဤလုပ်ဆောင်ချက်သည် AEK-LCD-LVGL ဖွဲ့စည်းမှုပုံစံကို AutoDevKit သို့ လွှဲအပ်ထားသည်။
အဆင့် 4. ခွဲဝေပေးမှုသည် PIT timer အရံအတားကို ဖွင့်ထားသည်။ Low-Level Driver အစိတ်အပိုင်းတွင် ၎င်းကို သင်အတည်ပြုနိုင်သည်။အဆင့် 5. AutoDevKit Studio တွင် သင့်လျော်သော အိုင်ကွန်များကို အသုံးပြု၍ အပလီကေးရှင်းကို ဖန်တီးပြီး တည်ဆောက်ပါ။ ထို့နောက် ပရောဂျက်ဖိုင်တွဲကို အသစ်ဖြင့်ဖြည့်သွင်းသည်။ filemain.c အပါအဝင် s ထို့နောက် အစိတ်အပိုင်းဖိုင်တွဲကို AEKLCD-DT028V1 နှင့် ဖြည့်သွင်းထားသည်။
AEK-LCD-LVGL ယာဉ်မောင်းများ။
အဆင့် 6. စိတ်ကြွမှုကိုဖွင့်ပါ။ file AEK-LCD-DT028V1.h နှင့် AEK_LCD_LVGL.h ပါဝင်သည် files.အဆင့် 7. စိတ်ကြွစေခြင်း။ fileirqIsrEnable() လုပ်ဆောင်ချက်ပြီးနောက်၊ အောက်ပါ မဖြစ်မနေ လုပ်ဆောင်ချက်များကို ထည့်သွင်းပါ။
အဆင့် 8. main.c တွင် ex ကို ကူးယူပြီး paste လုပ်ပါ။ample LVGL စာကြည့်တိုက်မှ တရားဝင်လမ်းညွှန်မှယူ၍ main() တွင် ထည့်သွင်းပါ။
အဆင့် ၉။ အပလီကေးရှင်းကို သိမ်းဆည်း၊ ထုတ်လုပ်ပြီး စုစည်းပါ။
အဆင့် 10။ ဘုတ်ကိုဖွင့်ပါ။ view AutoDevKit မှ ပံ့ပိုးပေးသော တည်းဖြတ်သူသည် ၎င်းသည် ပျဉ်ပြားများကို ကြိုးမည်သို့ ကြိုးလုပ်နည်းအတွက် ဂရပ်ဖစ် အချက်ပြလမ်းညွှန်ကို ပေးဆောင်ပါသည်။
အဆင့် 11. AEK-LCD-DT028V1 အား mini-USB သို့ USB ကြိုးကို အသုံးပြု၍ သင့် PC ရှိ USB အပေါက်သို့ ချိတ်ဆက်ပါ။
အဆင့် 12. SPC5-UDESTK-SW ကိုဖွင့်ပြီး အမှားရှာပြင်ခြင်းကိုဖွင့်ပါ။ file AEK-LCD-LVGL– အပလီကေးရှင်း /UDE ဖိုင်တွဲတွင်။
အဆင့် 13. သင့်ကုဒ်ကို run ပြီး debug လုပ်ပါ။
AEK-LVGL အတွက် ရနိုင်သော သရုပ်ပြများ
AEK-LCD-LVGL အစိတ်အပိုင်းဖြင့် ပေးထားသော သရုပ်ပြများစွာ ရှိပါသည်။
- SPC582Bxx_RLA AEK_LCD_LVGL စမ်းသပ်လျှောက်လွှာ
- SPC58ECxx_RLA AEK-LCD_LVGL စမ်းသပ်လျှောက်လွှာ
- မျက်နှာပြင်နှစ်ခု AVAS သရုပ်ပြ - SPC58ECxx_RLA_MainEcuForIntegratAVASControl - စမ်းသပ်ခြင်း အပလီကေးရှင်း
မှတ်ချက် - AutoDevKit အသစ်ထွက်ရှိမှုများနှင့်အတူ နောက်ထပ်သရုပ်ပြများကို ရနိုင်ပါမည်။
အဆင့်မြင့် အပလီကေးရှင်း ဥပမာample – မျက်နှာပြင်နှစ်ခု AVAS သရုပ်ပြ
LVGL ကို အသုံးပြု၍ အဆင့်မြင့် အပလီကေးရှင်းတစ်ခုကို အကောင်အထည်ဖော်ခဲ့သည်။ ဤအပလီကေးရှင်းသည် ဖန်သားပြင်တစ်ခုတွင် အင်ဂျင် rpms အတွက် ကားတိုင်းထွာတစ်ခုဆွဲပြီး သက်ဆိုင်ရာ gauge ကာတွန်းများကို စီမံခန့်ခွဲသည်။
အကောင်အထည်ဖော်ထားသည့် AVAS အက်ပလီကေးရှင်းသည် AEK-AUD-C1D9031 ဘုတ်ပေါ်တွင် အခြေခံထားပြီး လမ်းသွားလမ်းလာများအား လျှပ်စစ်ကားတစ်စီးအနီးသို့ ချဉ်းကပ်လာသူများကို သတိပေးရန်အတွက် ကားအင်ဂျင်သံကို အနိမ့်အမြန်နှုန်းဖြင့် ပုံဖော်ထားသည်။
သရုပ်ပြတွင်၊ ကျွန်ုပ်တို့သည် AEK-LCD-DT028V1 ၏ LCD ဖန်သားပြင်ပေါ်တွင် အသုံးပြုထားသည့် ကားအင်ဂျင်တစ်ခု၏ အရှိန်နှင့် အရှိန်လျှော့ခြင်း (ဆိုလိုသည်မှာ rpms တိုး/လျော့ခြင်း) နှင့် ၎င်း၏အသံအတိုးအကျယ်ကို AEK-LCD-DTXNUMXVXNUMX ၏ LCD မျက်နှာပြင်ပေါ်ရှိ ထိန်းချုပ် panel မှတဆင့် တုပပါသည်။ဒုတိယ AEK-LCD-DT028V1 LCD နှင့် LVGL စာကြည့်တိုက်ကို အသုံးပြု၍ အင်ဂျင် rpm တန်ဖိုးများကို တိုင်းတာရန် အမြန်နှုန်းပြကိရိယာကို ဖန်တီးခြင်းဖြင့် ကျွန်ုပ်တို့သည် ဒီမိုကို တိုးချဲ့ထားပါသည်။
7.1 LVGL ဝစ်ဂျက်များကို အသုံးပြုထားသည်။
မျက်နှာပြင်နှစ်ခု AVAS သရုပ်ပြကို ဖော်ဆောင်ရန်အတွက်၊ ကျွန်ုပ်တို့သည် အောက်ပါ LVGL ဝစ်ဂျက်များကို အသုံးပြုထားပါသည်။
- tachometer နောက်ခံအဖြစ် အသုံးပြုထားသော ပုံ
- တာတိုမီတာညွှန်ပြချက်အဖြစ် အသုံးပြုသော arc တစ်ခု
- အင်ဂျင် rpm အရ arc တန်ဖိုးကို အပ်ဒိတ်လုပ်သည့် ကာတွန်းတစ်ခု
7.1.1 LVGL ရုပ်ပုံဝစ်ဂျက်
LVGL စာကြည့်တိုက်ဖြင့် ပုံတစ်ပုံကို အသုံးပြုရန်၊ အခမဲ့အွန်လိုင်းအသုံးပြုခြင်းဖြင့် ၎င်းကို C အခင်းအကျင်းသို့ ပြောင်းပါ။ converter ။မှတ်ချက် -
ပုံကိုပြောင်းသည့်အခါ Big-Endian ဖော်မတ်၏အကွက်ကို အမှတ်ခြစ်ရန် မမေ့ပါနှင့်။
မျက်နှာပြင်နှစ်ခု AVAS သရုပ်ပြတွင်၊ tachometer ပုံရိပ်ကိုကိုယ်စားပြုသည့် C အခင်းအကျင်းကို Gauge ဟုခေါ်သည်။ ပုံဝစ်ဂျက်ကို စိတ်ကြိုက်ပြင်ဆင်ထားသည်။ အောက်ပါအတိုင်း-ဘယ်မှာလဲ-
- lv_img_declare- Gauge ဟုခေါ်သော ပုံတစ်ခုကို ကြေညာရန် အသုံးပြုသည်။
- lv_img_create- ရုပ်ပုံအရာဝတ္ထုတစ်ခုကို ဖန်တီးပြီး ၎င်းကို လက်ရှိဖန်သားပြင်တွင် ပူးတွဲပြုလုပ်ရန် အသုံးပြုသည်။
- lv_img_set_src- ဤသည်မှာ ယခင်က ပြသထားသည့် LVGL converter မှရရှိသော ပုံဖြစ်သည် (jpg ဖော်မတ်ကို အသုံးပြုရန် အကြံပြုထားသည်)။
- lv_obj_align- ပေးထားသော အော့ဖ်ဆက်ဖြင့် ပုံအား အလယ်သို့ ညှိရန် အသုံးပြုသည်။
- lv_obj_set_size: ပုံအရွယ်အစားကို သတ်မှတ်ရန် အသုံးပြုသည်။
မှတ်ချက် -
LVGL စာကြည့်တိုက်ဖြင့် ပုံတစ်ပုံကို စီမံခန့်ခွဲနည်း အသေးစိတ်အတွက် တရားဝင်စာရွက်စာတမ်းကို ကိုးကားပါ။
7.1.2 LVGL arc ဝိဂျက်တစ်ခု
အင်ဂျင်ချက်ချင်း rpms ကိုပြသရန် ရောင်စုံရောင်စုံ arc တစ်ခုကို ဖန်တီးထားသည်။ ရောင်စုံ မျဉ်းကြောင်းများ တွင် အနီနှင့် အပြာ အသီးသီး ပါ၀င်သည်။အောက်ပါ ကုဒ်သည် တစ်ခု ဖန်တီးပုံ ကို ပြသည် arc-
ဘယ်မှာလဲ-
- lv_arc_create- arc object တစ်ခုကို ဖန်တီးသည်။
- lv_arc_set_rotation- arc လှည့်ခြင်းကို သတ်မှတ်သည်။
- lv_arc_set_bg_angles- အမြင့်ဆုံးနှင့် အနိမ့်ဆုံး arc တန်ဖိုးကို ဒီဂရီတွင် သတ်မှတ်သည်။
- lv_arc_set_value- arc ကနဦးတန်ဖိုးကို သုညတွင် သတ်မှတ်သည်။
- lv_obj_set_size- arc အတိုင်းအတာများကို သတ်မှတ်သည်။
- lv_obj_remove_style- arc နောက်ဆုံးညွှန်ပြချက်ကို ဖယ်ရှားသည်။
- lv_obj_clear_flag- arc ကို နှိပ်၍မရဟု သတ်မှတ်သည်။
- lv_obj_align- သတ်မှတ်ထားသော အော့ဖ်ဆက်ဖြင့် အလယ်သို့ တန်းညှိသည်။
7.1.3 ဆက်စပ်သက်ဝင်လှုပ်ရှား Widget
rpm အပြောင်းအလဲများကိုပြသရန် သီးခြား arc animation လုပ်ဆောင်ချက်ကို ဖန်တီးပြီး LVGL အင်ဂျင်သို့ ပေးပို့ပါသည်။ function code ကတော့ အောက်ပါ-ဘယ်မှာလဲ-
- arc: သည် လက်ရှိ arc widget သို့ ညွှန်ပြသည်။
- နှောင့်နှေးခြင်း- ကာတွန်းမစတင်မီ နှောင့်နှေးချိန်ဖြစ်သည်။
- start: သည် ကနဦး arc အနေအထားဖြစ်သည်။
- end: သည် နောက်ဆုံး arc အနေအထားဖြစ်သည်။
- မြန်နှုန်း- သည် ယူနစ်/စက္ကန့်အတွင်း ကာတွန်းအမြန်နှုန်းဖြစ်သည်။
မှတ်ချက် - အသုံးပြုထားသော ကာတွန်းလုပ်ဆောင်ချက်များအကြောင်း နောက်ထပ်အသေးစိတ်အချက်အလက်များအတွက် LVGL စာရွက်စာတမ်းကို ကိုးကားပါ။ ပြီးပြည့်စုံသော arc တွင် ဆက်နွှယ်နေသော arches နှစ်ခုပါ၀င်သည်ဟု ယူဆပါက၊ ကျွန်ုပ်တို့သည် ကာတွန်းလုပ်ဆောင်ချက်ကို ကောင်းမွန်စွာ စီမံခန့်ခွဲရမည်ဖြစ်ပါသည်။ ဤရည်ရွယ်ချက်အတွက်၊ မတူညီသော မြင်ကွင်းနှစ်ခုကို ခွဲခြမ်းစိတ်ဖြာကြည့်ကြပါစို့။
- Case- ကာတွန်းတွင် arc တစ်ခုပါ၀င်သည် ဤရိုးရှင်းသောကိစ္စတွင်၊ ကျွန်ုပ်တို့သည် တစ်ခုတည်းသော animation တစ်ခုကို arc သို့ သတ်မှတ်ပေးပါသည်။
- ဖြစ်ရပ်- ကာတွန်းတွင် ခုံးနှစ်ခုပါ၀င်သည် ဤကိစ္စတွင်၊ ဒုတိယ arc ၏ ကာတွန်းသည် ပထမတစ်ခု၏ ကာတွန်း၏အဆုံးတွင် စတင်သည်။
သီးခြား LVGL လုပ်ဆောင်ချက် (lv_anim_speed_to_time) သည် ကာတွန်းအချိန်ကို တွက်ချက်သည်။ ဒုတိယ arc ကာတွန်း၏ နှောင့်နှေးမှုကို တွက်ချက်ရန် ဤလုပ်ဆောင်ချိန်ကို အသုံးပြုသည်။7.2 Dual Core အကောင်အထည်ဖော်ခြင်း။
မျက်နှာပြင်နှစ်ခု AVAS သရုပ်ပြတွင်၊ ပြသမှုနှင့် အသံပြန်ဖွင့်ခြင်း လုပ်ဆောင်ချက်များကို အချိန်နှင့်တစ်ပြေးညီ ထည့်သွင်းထားသော စနစ်တွင် တစ်ပြိုင်နက် လုပ်ဆောင်ပါသည်။ စနစ်တုံ့ပြန်နိုင်မှု ဆုံးရှုံးမှုကို ကျော်လွှားရန်အတွက် မတူညီသော cores နှစ်ခုကို အသုံးပြုရန် ဆုံးဖြတ်ခဲ့သည်- တစ်ခုသည် ဖန်သားပြင်အတွက် သီးသန့်ဖြစ်ပြီး တစ်ခုသည် အသံပြန်ဖွင့်ရန်အတွက် တစ်ခုဖြစ်သည်။
AEK-MCU-C4MLIT1 ဘုတ်တွင် dual core ပရိုဆက်ဆာပါရှိသော SPC58EC80E5 မိုက်ခရိုကွန်ထရိုလာကို အထက်ဖော်ပြပါကိစ္စများအတွက် အကောင်းဆုံးဖြစ်သည်။
အသေးစိတ်-
- Core 2- စတင်ရန် ပထမဆုံးဖြစ်ပြီး၊ ၎င်းသည် စာကြည့်တိုက်ကို အစပြုကာ အက်ပ်ကုဒ်ကို လုပ်ဆောင်သည်။
- Core 0- ၎င်းသည် မျက်နှာပြင်ကို စဉ်ဆက်မပြတ် အပ်ဒိတ်လုပ်ပြီး ထိတွေ့ထည့်သွင်းမှုကို ဖတ်ရန် ပင်မကွင်းအတွင်း aek_lcd_lvgl_refresh_screen() လုပ်ဆောင်ချက်ကို ခေါ်သည်။
PIT လုပ်ဆောင်ချက်များနှင့် aek_lcd_lvgl_refresh_screen() ကို တူညီသော core တွင် ထားရှိရပါမည်။
ပြန်လည်ပြင်ဆင်မှုမှတ်တမ်း
ဇယား ၁။ စာရွက်စာတမ်း ပြန်လည်ပြင်ဆင်မှုမှတ်တမ်း
ရက်စွဲ | ပြန်လည်ပြင်ဆင်ခြင်း။ | အပြောင်းအလဲများ |
၂၈-အောက်တိုဘာ-၂၂ | 1 | ကနဦး ထုတ်ဝေမှု။ |
အရေးကြီးသတိပေးချက် - ဂရုတစိုက်ဖတ်ပါ။
STMicroelectronics NV နှင့် ၎င်း၏လုပ်ငန်းခွဲများ (“ST”) သည် ST ထုတ်ကုန်များနှင့်/သို့မဟုတ် ဤစာရွက်စာတမ်းအား အသိပေးခြင်းမရှိဘဲ အပြောင်းအလဲများ၊ ပြုပြင်မှုများ၊ မြှင့်တင်မှုများ၊ ပြုပြင်မွမ်းမံမှုများနှင့် တိုးတက်မှုများကို အချိန်မရွေးပြုလုပ်ပိုင်ခွင့်ကို လက်ဝယ်ရှိသည်။ အမှာစာမတင်မီ ဝယ်ယူသူများသည် ST ထုတ်ကုန်များဆိုင်ရာ နောက်ဆုံးရသက်ဆိုင်ရာအချက်အလက်များကို ရယူသင့်သည်။ ST ထုတ်ကုန်များကို အမှာစာလက်ခံသည့်အချိန်တွင် ST ၏ရောင်းချမှုစည်းကမ်းချက်များနှင့်အညီ ရောင်းချပါသည်။ ဝယ်ယူသူများသည် ST ထုတ်ကုန်များ၏ ရွေးချယ်မှု၊ ရွေးချယ်မှုနှင့် အသုံးပြုမှုအတွက် တစ်ခုတည်းတွင် တာဝန်ရှိပြီး ST သည် လျှောက်လွှာအကူအညီ သို့မဟုတ် ဝယ်ယူသူများ၏ ထုတ်ကုန်ဒီဇိုင်းအတွက် တာဝန်မရှိဟု ယူဆပါသည်။
ဤနေရာတွင် ST မှ ပေးအပ်သည့် မည်သည့်ဉာဏပစ္စည်းမူပိုင်ခွင့်ကိုမဆို လိုင်စင်၊ ဖော်ပြခြင်း သို့မဟုတ် အဓိပ္ပာယ်ဖွင့်ဆိုထားခြင်းမရှိပါ။
ဤနေရာတွင်ဖော်ပြထားသော အချက်အလက်များနှင့် ကွဲပြားသော ပြဋ္ဌာန်းချက်များရှိသော ST ထုတ်ကုန်များကို ပြန်လည်ရောင်းချခြင်းသည် ထိုထုတ်ကုန်အတွက် ST မှပေးသော အာမခံတစ်စုံတစ်ရာကို ပျက်ပြယ်စေမည်ဖြစ်သည်။
ST နှင့် ST လိုဂိုများသည် ST ၏ကုန်အမှတ်တံဆိပ်များဖြစ်သည်။ ST အမှတ်တံဆိပ်များအကြောင်း နောက်ထပ်အချက်အလက်များအတွက် ကိုးကားပါ။ www.st.com/trademarks. အခြားထုတ်ကုန် သို့မဟုတ် ဝန်ဆောင်မှုအမည်များအားလုံးသည် ၎င်းတို့၏ သက်ဆိုင်ရာပိုင်ရှင်များ၏ ပိုင်ဆိုင်မှုဖြစ်သည်။
ဤစာရွက်စာတမ်းရှိ အချက်အလက်ကို အစားထိုးပြီး ဤစာရွက်စာတမ်း၏ ယခင်ဗားရှင်းတစ်ခုခုတွင် ယခင်က ပေးခဲ့သည့် အချက်အလက်များကို အစားထိုးသည်။ © 2023 STMicroelectronics - အခွင့်အရေးအားလုံးကို လက်ဝယ်ရှိသည်။
UM3236 – Rev 1 – အောက်တိုဘာလ 2023
နောက်ထပ်အချက်အလက်များအတွက် သင့်ပြည်တွင်းရှိ STMicroelectronics အရောင်းဌာနသို့ ဆက်သွယ်ပါ။
စာရွက်စာတမ်းများ / အရင်းအမြစ်များ
![]() |
LCD Display အတွက် STMicroelectronics UM3236 LVGL စာကြည့်တိုက်များ [pdf] အသုံးပြုသူလက်စွဲ AEK-LCD-DT028V1၊ UM3236၊ UM3236 LVGL စာကြည့်တိုက်များ၊ LCD Display အတွက် LVGL စာကြည့်တိုက်များ၊ LCD Display များအတွက် စာကြည့်တိုက်များ၊ LCD Display များ |