اطلاعیه

Collapse
No announcement yet.

آموزش EmWin روی میکرو های STM32 ((قابل توجه علاقه مندان TFT LCD))

Collapse
این موضوع برجسته شده است.
X
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    #16
    پاسخ : آموزش EmWin روی میکرو های STM32 ((قابل توجه علاقه مندان TFT LCD))

    stm32f103vet6-stm32f103rb
    همشون یه برد ساده هستند که همه پین هاشو اومده بیرون . lcd .... باسیم به برد متصل میکنم.
    من فکر میکنم دوستان 10 مدل برد دارند و نمیشه گفت با چه بردی شروع کنیم
    اگه مرحله به مرحله باشه مثلا اول پروژه درست بشه
    بعد کتابخانه ها بهش اضافه بشه
    تعریف lcd
    تعریف تاچ ....

    اینجوری هر کسی با هر مدل میکرویی که خواست میتونه کار کنه
    البته این نظر منه
    جدیدترین ویرایش توسط sepehr63; ۱۶:۳۱ ۱۳۹۶/۰۹/۱۵.

    دیدگاه


      #17
      پاسخ : آموزش EmWin روی میکرو های STM32 ((قابل توجه علاقه مندان TFT LCD))

      خوب بریم سراغ آموزش ها

      اولین کاری که باید با میکروتون انجام بدین اینه که به صورت جدا گونه TFT LCD رو با میکروتون راه انداخته باشین.
      توی میکرو های کمتر از 100 پایه باید با GPIO این TFT رو راه بندازین
      توی میکرو های 100 پایه تا 144 پایه با واحد کنترلر رم خارجی (FSMC) راه بندازین
      توی میکرو های بالای 144 پایه یا بعضی از 144 پایه ها هم با واحد LTDC و tft های بالای 4.3 اینچ تا 10.1 اینچ راه بندازین

      برای مثال توی میکروی stm32f103ret6 چون 64 پایه هست باید با GPIO راهش بندازیم
      چون LCD ما 16 بیت هست بهتره تا از 16 پین یه پورت کامل استفاده کنیم تا سرعت چند برابر بشه.
      اما توی حالت عادی این میکرو فقط 2 پورت کامل داره (A و B) که بازم چند پایه از آخر پورت A و اوایل پورت B مخصوص پروگرم کردن میکرو هست و غیر قابل دسترس هست
      چاره چیه؟

      خوب اگه به رفرنس منوال میکرو مراجعه کنیم میبینیم که میشه با یه رجیستر AFIO میشه remap پایه های مربوط به پروگرمر رو به صورت زیر تغییر داد :
      1- JTAG و SW هردو فعال
      2-SW فعال و jtag هم فعال بدون پایه ریست
      3-SW فعال و jtag غیر فعال
      4- هردو غیر فعال

      اگه به دیتاشیت هم دقت کنیم می بینیم که فقط پایه jtag پورت B رو اشغال کردند
      پس با کد زیر این jtag رو غیر فعال میکنیم و با روش SW میکرو رو پروگرم میکنیم:
      کد:
      [FONT=Yekan]RCC->APB2ENR |= RCC_APB2ENR_AFIOEN;[/FONT]
      [FONT=Yekan]  AFIO->MAPR |= AFIO_MAPR_SWJ_CFG_1;[/FONT]
      پس حالا میتونیم راحت از پورت B کامل استفاده کنیم.

      خوب این کتابخونه برای راه اندازی TFT های 2.8 اینچ یا 2.4 اینچ با چیپ ili9325 با میکرو STM32f103RET6 :
      دانلود کنید.


      برای میکرو stm32f407 هم با واحد کنترل رم خارجی که میتونید کتابخونه مخصوص رو از دیسک بردتون استفاده کنید.




      کلا این فهرستی از درایور lcd هایی که این سیستم عامل پشتیبانی میکنه:


      Epson S1D19122
      FocalTech FT1509
      Himax HX8353, HX8325A, HX8357, HX8340, HX8347, HX8352A,
      HX8352B, HX8301
      Hitachi HD66772
      Ilitek ILI9320, ILI9325, ILI9328, ILI9335, ILI9338, ILI9340,
      ILI9341, ILI9342, ILI9163, ILI9481, ILI9486, ILI9488,
      ILI9220, ILI9221
      LG Electronics LGDP4531, LGDP4551, LGDP4525
      Novatek NT39122
      OriseTech SPFD5408, SPFD54124C, SPFD5414D
      Raio RA8870, RA8875
      Renesas R61505, R61516, R61526, R61580
      Samsung S6E63D6, S6D0117
      Sitronix ST7628, ST7637, ST7687, ST7735, ST7712, ST7775
      Solomon SSD1284, SSD1289, SSD1298, SSD1355, SSD2119,
      SSD1963, SSD1961, SSD1351
      Syncoam SEPS525
      جدیدترین ویرایش توسط alidehghan288; ۲۱:۳۱ ۱۳۹۶/۰۹/۱۵.
      معيار واقعي بودن تصميم، آن است که دست به عمل بزنيم.

      دیدگاه


        #18
        پاسخ : آموزش EmWin روی میکرو های STM32 ((قابل توجه علاقه مندان TFT LCD))

        جناب دهقان عزیز خیلی موضوع خوبی رو شروع کردید
        لطفا روی برد کاتالیست (هرمدلی که مناسبتر میدونید) آموزش بدید چون یکسری طرح های جالب برای کاتالیست ها در آینده مد نظرمون هست (از جمله مسابقه و ....)

        دیدگاه


          #19
          پاسخ : آموزش EmWin روی میکرو های STM32 ((قابل توجه علاقه مندان TFT LCD))

          نوشته اصلی توسط امیرعلی بلورچیان نمایش پست ها
          جناب دهقان عزیز خیلی موضوع خوبی رو شروع کردید
          لطفا روی برد کاتالیست (هرمدلی که مناسبتر میدونید) آموزش بدید چون یکسری طرح های جالب برای کاتالیست ها در آینده مد نظرمون هست (از جمله مسابقه و ....)
          روی همین برد کاتالیست stm32f407 آموزش میدم که هم خودم دارمش و هم سرعتش خیلی مناسبه.
          معيار واقعي بودن تصميم، آن است که دست به عمل بزنيم.

          دیدگاه


            #20
            پاسخ : آموزش EmWin روی میکرو های STM32 ((قابل توجه علاقه مندان TFT LCD))

            ممنون . من خیلی سرچ کردم . همه جا نوشته بود ssd1963 پشتیبانی نمیکنه ولی توی توضیحات شما ssd1963 هم هست ؟؟
            و مورد بعدی این بود که من توابع emwin دانلود میکردم و به پروژه اضافه میکردم 100 تا اررور مختلف میداد که مشخص هم نمیکرد مربوط به کدام خط هست
            حتی برای رفع این مشکل فیلم آموزشی کویر خریدم که اون هم یک مثال آماده باز کرده بود و توضیح میداد . از مربی اون هم سوال کردم بهم گفت که keil بلد نیستم بهتره برم کیل یاد بگیرم
            اگه ممکنه این موارد هم آموزش بدید . تشکر

            دیدگاه


              #21
              پاسخ : آموزش EmWin روی میکرو های STM32 ((قابل توجه علاقه مندان TFT LCD))

              نوشته اصلی توسط sepehr63 نمایش پست ها
              ممنون . من خیلی سرچ کردم . همه جا نوشته بود ssd1963 پشتیبانی نمیکنه ولی توی توضیحات شما ssd1963 هم هست ؟؟
              و مورد بعدی این بود که من توابع emwin دانلود میکردم و به پروژه اضافه میکردم 100 تا اررور مختلف میداد که مشخص هم نمیکرد مربوط به کدام خط هست
              حتی برای رفع این مشکل فیلم آموزشی کویر خریدم که اون هم یک مثال آماده باز کرده بود و توضیح میداد . از مربی اون هم سوال کردم بهم گفت که keil بلد نیستم بهتره برم کیل یاد بگیرم
              اگه ممکنه این موارد هم آموزش بدید . تشکر
              از 1963 به طور کامل پشتیبانی میکنه
              شما فقط نیاز به چند تا تابع ساده از این lcd دارین.
              اگه این 3 تا تابع رو داشته باشین برای lcd حله:
              1-تابع برای نوشتن فرمان (command) روی lcd
              2-تابع فرستادن دیتای 16 بیتی روی LCD
              3-خواندن دیتای 16 بیتی از روی lcd

              این سه تا تابع توی تمام کتاب خانه های tft های مختلف موجوده.
              بعد توی تنظیمات emwin شما نوع درایور lcd رو GUIDRV_FLEXCOLOR_F66720 انتخواب میکنین و تمومه
              معيار واقعي بودن تصميم، آن است که دست به عمل بزنيم.

              دیدگاه


                #22
                پاسخ : آموزش EmWin روی میکرو های STM32 ((قابل توجه علاقه مندان TFT LCD))

                خوب
                حالا بریم سراغ ساخت پروژه emwin از طریق نرم افزار CubeMX و میکرو stm32f407 :
                خوب طبق معمول میایم یه پروژه جدید توی نرم افزار میسازیم و میکرو رو STM32F407ZG یا هر میکرویی که شما در دسترس دارین انتخواب میکنیم
                قسمت کلاک رو جوری تنظیم میکنیم که میکرو روی حداکثر سرعتش کار کنه که من روی 168 مگاهرتز تنظیم کردم.

                حالا باید LCD رو تنظیم کنیم. توی منو سمت چپ FSMC رو روی چیپ سلکت 4 (توی برد های کاتالیست روی 4 هست) تنظیم کرده و Memory type رو روی LCD Interface نتظیم میکنیم.
                بعد طبق شماتیک برد کاتالیست پایه LCD register select رو روی A10 میذاریم و دیتا روی 16 بیت باشه.

                پیکره بندی LCD تموم شد. حالا می تونید هر امکانی از میکرو که خودتون دوست دارین فعال کنین که البته برای تست فعلا همین LCD خالی بیشتر نیاز نیست.
                از CubeMX خروجی کیل میگیریم.
                توی پروژه کیل سه گروه زیر رو ایجاد کنید:(برای خوشگلی پروژه)
                GUI - Config -Application

                چند تا فایل باید به پروژه اضافه بشه که من اون فایل ها رو اینجا میگذارم:
                دانلود کنید.


                این 3 تا پوشه رو به پروژه اضافه کنید.

                حالا باید به کیل این سه تا پوشه رو تعریف کنید
                برای اینکار پنجره Options for target رو باز کرده و به زبانه C/C++ بروید و توی Include Paths این سه تا پوشه رو جدا جدا معرفی کنید.

                حالا وقتشه که بعضی از این فایل ها رو به پروژه اضافه کنیم
                اول با گروه Config شروع میکنیم.
                توی این گروه فایل های زیر رو اضافه میکنیم:
                1-GUIConf.c
                2-LCDConf.c این فایل مربوط به تنظیمات LCD هست
                3-GUI_X.c

                توی گروه GUI هم فایل GUI_CM4F.lib رو اضافه میکنیم.

                ساخت پروژه تقریبا تمومه
                معيار واقعي بودن تصميم، آن است که دست به عمل بزنيم.

                دیدگاه


                  #23
                  پاسخ : آموزش EmWin روی میکرو های STM32 ((قابل توجه علاقه مندان TFT LCD))

                  سلام، ممنون که این آموزش ور میخاید شروع کنید. لطفا میشه بفرمایید سیستم عامل رو کتابخونه HAL جوابگو هست؟
                  نوشته اصلی توسط alidehghan288 نمایش پست ها
                  روی همین برد کاتالیست stm32f407 آموزش میدم که هم خودم دارمش و هم سرعتش خیلی مناسبه.

                  دیدگاه


                    #24
                    پاسخ : آموزش EmWin روی میکرو های STM32 ((قابل توجه علاقه مندان TFT LCD))

                    نوشته اصلی توسط mrezakhd نمایش پست ها
                    سلام، ممنون که این آموزش ور میخاید شروع کنید. لطفا میشه بفرمایید سیستم عامل رو کتابخونه HAL جوابگو هست؟
                    ما هم داریم با HAL آموزش میدیم
                    اصلا مهم نیست که برنامه میکرو رو با ریجستر ها بنویسیم ، یا با CMSIS باشه یا HAL و یا ...

                    همه چی جواب میده
                    معيار واقعي بودن تصميم، آن است که دست به عمل بزنيم.

                    دیدگاه


                      #25
                      پاسخ : آموزش EmWin روی میکرو های STM32 ((قابل توجه علاقه مندان TFT LCD))

                      نوشته اصلی توسط alidehghan288 نمایش پست ها
                      ما هم داریم با HAL آموزش میدیم
                      اصلا مهم نیست که برنامه میکرو رو با ریجستر ها بنویسیم ، یا با CMSIS باشه یا HAL و یا ...

                      همه چی جواب میده
                      بسیار عالی
                      یه سوال دیگه، این سیستم عامل فقط برای مدیریت ال سی دی استفاده میشه! منابع دیگه رو میشه بهش اضافه کرد یا نه؟
                      مثلا ما همزمان 2 تا USART و 2 تا SPI و 3 تا TIMER رو هم بخایم بهش اضافه کنیم! و بصورت بلادرنگ(Realtime) روی ال سی دی دیتاهاشون رو نمایش بدیم!

                      دیدگاه


                        #26
                        پاسخ : آموزش EmWin روی میکرو های STM32 ((قابل توجه علاقه مندان TFT LCD))

                        این سیستم عامل فقط کارش کنترل گرافیک هست
                        در کنارش راحت میتونید از تمام امکانات میکرو استفاده کنید
                        مثلا کنترل pwm با ولوم مجازی توی سیستم عامل

                        سیستم عامل rtos یا rtl رو میتونید جدا گونه در کنار emwin فعال کنید
                        و یه تسک به emwin اختصاص بدین و یه تسک هم برای تاچ و برای کار خودتون هرچی تسک میخواین ایجاد کنید
                        جدیدترین ویرایش توسط alidehghan288; ۱۵:۲۵ ۱۳۹۶/۰۹/۱۶.
                        معيار واقعي بودن تصميم، آن است که دست به عمل بزنيم.

                        دیدگاه


                          #27
                          پاسخ : آموزش EmWin روی میکرو های STM32 ((قابل توجه علاقه مندان TFT LCD))

                          ممنون
                          چرا توابعی که من دانلود کردم انقدر زیاده ؟؟؟ من 70 مگ دان کردم که تعداد فایل هاش بیشتر بود؟؟؟
                          پروژه که با این توابع شما ساختم اررور نداد ولی با اونها میده ؟؟

                          دیدگاه


                            #28
                            پاسخ : آموزش EmWin روی میکرو های STM32 ((قابل توجه علاقه مندان TFT LCD))

                            احتمالا اونی که شما گرفتین یه چیز دیگه بوده
                            شایدم برای میکرو خاصی ساخته شده بود

                            یه نکته هم بگم اینجا که توی فایل هایی که من قرار داده بودم ، یه فایل کتابخونه ای lib بود
                            GUI_CM4F.lib که مخصوص میکرو هایی با هسته Cortex-M4 هستش
                            اگه شما از میکرو های پایین تر مثل STM32f103 استفاده میکنین باید فایل GUI_CM3.lib رو که توی پوشه زیر موجود هست جایگزین فایل CM4 کنید:
                            C:\Keil\ARM\Segger\emWin\Lib
                            معيار واقعي بودن تصميم، آن است که دست به عمل بزنيم.

                            دیدگاه


                              #29
                              پاسخ : آموزش EmWin روی میکرو های STM32 ((قابل توجه علاقه مندان TFT LCD))

                              اینم یه فیلم از دمو پرینتر سه بعدی که خودم طراحی کردم تا هم انگیزه ای بشه برای بقیه و هم یه ایده ای باشه:
                              پرشین گیگ، ارائه دهنده انواع خدمات هاستینگ و میزبانی فایل و خرید سرور مجازی برای اولین بار در ایران به صورت ابری، با کیفیت عالی و قیمت مناسب


                              میتونیم از این دو ولوم مجازی خروجی PWM بگیریم و یا با تایمر میکرو و خوندن دما ، مثل ترموکوپل خروجی هیتر رو قطع و وصل کنیم.

                              دلیل: ادغام دو پست برای جلوگیری از اسپم

                              خوب بریم سراغ قسمت بعدی آموزش
                              تنظیم فایل LCDConf.c:
                              این فایل میاد و درایور و دستورات lcd ما رو به emwin معرفی میکنه
                              توی این فایل دو تابع خیلی مهم هست و مابقی نوشته خودم هست که میتونه نباشه یا یه چیز دیگه باشه
                              اولیش اینه:
                              کد:
                              [FONT=Yekan]void LCD_X_Config(void) {[/FONT]  GUI_DEVICE * pDevice;
                                CONFIG_FLEXCOLOR Config = {0};
                                GUI_PORT_API PortAPI = {0};
                                //
                                // Set display driver and color conversion
                                //
                                pDevice = GUI_DEVICE_CreateAndLink(DISPLAY_DRIVER, COLOR_CONVERSION, 0, 0);
                                //
                                // Display driver configuration, required for Lin-driver
                                //
                                LCD_SetSizeEx    (0, XSIZE_PHYS,   YSIZE_PHYS);
                                LCD_SetVSizeEx   (0, VXSIZE_PHYS,  VYSIZE_PHYS);
                                //
                                // Orientation
                                //
                                Config.Orientation   = GUI_SWAP_XY | GUI_MIRROR_Y;
                                GUIDRV_FlexColor_Config(pDevice, &Config);
                                //
                                // Set controller and operation mode
                                //
                                #ifndef WIN32
                                PortAPI.pfWrite16_A0  = LCD_WR_REG;
                                PortAPI.pfWrite16_A1  = LCD_WR_DATA;
                                PortAPI.pfWriteM16_A1 = LCD_X_8080_16_WriteM01_16;
                                PortAPI.pfReadM16_A1  = LCD_X_8080_16_ReadM01_16;
                                GUIDRV_FlexColor_SetFunc(pDevice, &PortAPI, GUIDRV_FLEXCOLOR_F66708, GUIDRV_FLEXCOLOR_M16C0B16);
                                #endif
                              [FONT=Yekan]}[/FONT]
                              توی این تابع چند چیز معرفی میشه:
                              1-تابع برای نوشتن یک دونه فرمان روی LCD
                              2-تابع برای نوشتن یک دونه دیتا 16 بیتی روی LCD
                              3- تابع برای نوشتن چندین دیتای 16 بیتی روی LCD
                              4-تابع برای خواندن چندین دیتای 16 بیتی از LCD
                              5-, و آخرین چیز هم درایور LCD که خط زیر مشخص کننده اونه:
                              کد:
                              GUIDRV_FlexColor_SetFunc(pDevice, &PortAPI, GUIDRV_FLEXCOLOR_F66708, GUIDRV_FLEXCOLOR_M16C0B16);
                              برای LCD هایی با چیپ ili9325 مقدار GUIDRV_FLEXCOLOR_F66708 رو توی تابع بالا بذارید
                              برای LCD هایی با چیپ ssd1289 هم مقدار GUIDRV_FLEXCOLOR_F66702 رو قرار بدین
                              و برای LCD های بالای 4.3 اینچ که با درایور ssd1963 راه اندازی میشن مقدارGUIDRV_FLEXCOLOR_F66720 رو قرار بدین.


                              تابع بعدی هم که توش دستورات مربوط به مقدار دهی اولیه LCD و یا initialization هست که اونم بایدتوش تابع LCD_Init مربوط به lcd خودتونو توش قرار بدین.
                              معيار واقعي بودن تصميم، آن است که دست به عمل بزنيم.

                              دیدگاه


                                #30
                                پاسخ : آموزش EmWin روی میکرو های STM32 ((قابل توجه علاقه مندان TFT LCD))

                                سلام وقت شما بخیر
                                ممنون بابت زحماتی که میکشید.
                                من یه یه سالی میشه که دارم از LCD 3.2 اینچ با درایور hx8347a و emWin استفاده میکنم.
                                خیلی خوبه و خلیم کارا رو راحت کرده.
                                یه مشکلی دارم باهاش.
                                اینه که موقع ساختن یه ویجت بزرگ یا ساخت یه پنجره بزرگ یا حتی GUI_Clear پرش میندازه. برای فهم ساده تر فرض کنید تابع GUI_Clear رو انداختین توی یه لوپی که مدام داره تکرار میشه. صفحه بشدت پرش داره.
                                میکروم هم stm32f407VGT هست.
                                ممنون میشم راهنمایی کنید.
                                ?Why not

                                دیدگاه

                                لطفا صبر کنید...
                                X