فایل lcdconfig ام همینه
راستش با این توضیحاتی که داده شد و اینکه جواب نمیگیرم الآن دیگه مطمئن نیستم ili9320باشه یا ssd1289
....
با تشکر از توجه دوستان
فایل lcdconfig ام همینه
راستش با این توضیحاتی که داده شد و اینکه جواب نمیگیرم الآن دیگه مطمئن نیستم ili9320باشه یا ssd1289
....
با تشکر از توجه دوستان
متوجه شدم که کنترلر السیدیم SSD1298 بوده تا الآن!!!! حالا باز دارم روش کار میکنم، بهتر شده، اما جواب نداده هنوز!!
ویرایش توسط elahe11556 : 03-02-2014 در ساعت 17:51
حالا این شد.من هستم و قول میدم تا ال سی دی رو راه نندازم اف نشم و دائم ان باشم.خیلی هم با هاش ور رفتم برای همین یکم راه افتادم تنظیمات و درایور GUIDRV_CompactColor_16 رو هم پیدا کردم.شما بفرماید تا من انجام بدم.اون درایور ssd1289 که یکی از دوستان بالا گذاشته خیلی کامله و تمام موارد که در کاتالوگ و سایت اصلی در مورد GUIDRV_CompactColor_16 گفته را لحاظ کرده ولی نمیشه راش انداخت.یک اقای دیگه هم ادعا داشت که ال سی دی رو راه انداخته و چند تا فیلم هم ازش گذاشت ولی فکر کنم برای گشف این دستاورد دزدیدنش چون خبری اش نیشت.طفلی فیلم میزاشت سرمون بود
ویرایش توسط D.S : 03-02-2014 در ساعت 19:20
سلام به همگی این فایلهای کانفیگ من هست لطفا نگاه کنید ببینید مشکل چیه.من تو LCDConf مجبور شدم این چند خط رو که مربوط به تاچ هست رو حذف کنم.
نکته دیگه برد اموزشی که دارم پایه های دیتا ال سی دی پشت هم نیستن.هدرش رو ببینید متوجه میشید.مشکل من وقتی شبیح سازی میکنم روی gpi init گیر میکنه
این فایلها رو دیدم. این راهش نیست!
از این فایلها میشه فهمید که درایور این السیدی همونطور که گفتید GUI_Compact color هست. در راهنمای emwin 5.22 صفحه 964 هم درایور السیدی رو ذکر کرده که بصورت 16 بیتی ساپورت شده.
می مونه تابع ست فانکشنش که اون هم در صفحه 989 گفته که از مود GUIDRV_FLEXCOLOR_F66702 باید استفاده بشه.
همونطور که میدونید تنظیمات السیدی در فایل LCDConf.c انجام میشه. تابعی به نام LCD_X_Config در اون هست. در این تابع دوتا پارامتری که ذکر شد به emwin معرفی میشه.
اولیGUI_COMPACT_COLOR هست که باید به این صورت معرفی بشه:
GUI_DEVICE_CreateAndLink(DISPLAY_DRIVER, COLOR_CONVERSION, 0, 0);
ماکروی DISPLAY_DRIVER رو در بالای فایل پیدا کنید و مقدارش رو GUIDRV_COMPACT_COLOR_16 قرار بدین.
ماکروی COLOR_CONVERSION رو هم در بالای تابع پیدا کنید و مقدارش رو GUICC_M565 قرار بدین که به معنای 64k رنگ هست (16 بیت):
/* Color conversion */
#define COLOR_CONVERSION GUICC_M565
/* Display driver */
#define DISPLAY_DRIVER GUIDRV_COMPACT_COLOR_16
حالا در تابع LCD_X_Config این دستور رو در انتهای اون بنویسید:
PortAPI.pfWrite16_A0 = LCD_X_8080_16_Write00_16;
PortAPI.pfWrite16_A1 = LCD_X_8080_16_Write01_16;
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_F66702, GUIDRV_FLEXCOLOR_M16C0B16);
در تابع set function ماکروی GUIDRV_FLEXCOLOR_M16C0B16 رو با توجه به جدول صفحه 990 انتخاب کنید. من حدس میزنم که باس 16 بیتی استفاده شده باشه به همین دلیل از این گزینه استفاده کردم. ضمنا این السیدی به احتمال زیاد حافظه cache نداره. بعدها که السیدی راه افتاد میتونید این ماکرو رو عوض کنید و باجایگذاری GUIDRV_FLEXCOLOR_M16C1B16 تست کنید که السیدی cache داره یا نه.
4 تا مقدار دهی هم بالای این تابع می بینید که برای اعلان اشاره گر توابع ارسال فرمان (A0)، داده (A1) و ارسال بلوکی فرمان و داده بکار میره. اینجا شما باید به درایور السیدی تون مراجعه کنید (فایلهای GLCD.H, GLCD.C) و این توابع رو پیدا کنید. درصفحه 991 گفته که آرگومانهای این توابع باید چطوری باشه. این توابع رو بجای LCD_X_8080_6... بنویسید.
این کارها رو انجام بدین و هرجا سوالی بود بفرمایید
من در خدمتتون هستم
ویرایش توسط mansoory : 04-02-2014 در ساعت 00:36
تا الان روش کار کردم نشد.بیشتر تنظیمات همین بود.دوستان که میخوان تست کنن فقط از ورژن 5.18 استفاده کنند که این السیدی رو ساپرت میکنه.من به دو قسمت شک دارم.اول توابعی هست که باید برای السیدی از روی هدر اصلی بنویسم و دوم به LCD_X_Config که من به این شکل نوشتم
در مورد کش هم این السی دی داره.فایلهای منو لطفا ببینید مخصوصا دستورات LCD_X_Write00_16 را.فایل هدر اصلی السیدی هم هستکد:void LCD_X_Config(void) { 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 // LCD_SetSizeEx (0, XSIZE_PHYS, YSIZE_PHYS); LCD_SetVSizeEx (0, VXSIZE_PHYS, VYSIZE_PHYS); PortAPI.pfWrite16_A0 = LCD_X_Write00_16; PortAPI.pfWrite16_A1 = LCD_X_Write01_16; PortAPI.pfWriteM16_A1 = LCD_X_WriteM01_16; PortAPI.pfReadM16_A1 = LCD_X_ReadM01_16; GUIDRV_FlexColor_SetFunc(pDevice, &PortAPI, GUIDRV_FLEXCOLOR_F66702, GUIDRV_FLEXCOLOR_M16C1B16); /*#if (USE_TOUCH == 1) // // Set orientation of touch screen // GUI_TOUCH_SetOrientation(DISPLAY_ORIENTATION); // // Calibrate touch screen // GUI_TOUCH_Calibrate(GUI_COORD_X, 0, WIDTH - 1, TOUCH_LEFT, TOUCH_RIGHT); GUI_TOUCH_Calibrate(GUI_COORD_Y, 0, HEIGHT - 1, TOUCH_TOP, TOUCH_BOTTOM); #endif */ }
سلام.نه جواب نمیده.guidrv_flexcolor_f66702 خیلی اذیتم کرد و ارور میداد برای همین با همه قسمتاش ور رفتم.
لینک چینی فایل http://download.csdn.net/detail/gongjian32/5254709 اسم فایل هم emwin518_stm32f4_ssd1289_keil
اگه بشه دانلودش کرد احتمالا کمک بزرگیه.
این فایل رو بالاتر اقای arvin گذاشته
شرمنده.
الان بخش Compact Color رو مجدد خوندم. یه اشتباهی کرده بودم. نیازی به تابع ست فانکشن نیست.
اونجا گفته که در فایل LCDConf.h این ماکرو باید ست تعریف بشه:
[PHP]#define LCD_USE_COMPACT_COLOR_16[/PHP]
با تعریف این ماکرو، emwin دنبال یه فایل به نام LCDConf_CompactColor_16.h میگرده. باقی ماکروها باید در این فایل تعریف بشه/
البته این فایل رو من در فولدر emwin پیدا نکردم. ولی یکی از دوستان که السیدی رو برای stm پورت کرده این فایل رو پیداش کرده. من اینجا آپلودش کردم.
همه کارها رو ایشون انجامش داده . فقط شماباید بجای فایل LCD_X_16BitIF_STM32.c، معادلش رو برای LPC1768 بنویسید که اونم کار سختی نیست.
موفق باشید.
بله تو این فایل همه تنظیمات درست هست ولی کار نمیکنه.تو lcd canf این توابع باید باشه یا نه چون تو اون درایور که اروین گداشته نیست.منکه دیگه دارم ناامید میشم.کسی نتونسته؟
کد:PortAPI.pfWrite16_A0 = LCD_X_8080_16_Write00_16; PortAPI.pfWrite16_A1 = LCD_X_8080_16_Write01_16; PortAPI.pfWriteM16_A1 = LCD_X_8080_16_WriteM01_16; PortAPI.pfReadM16_A1 = LCD_X_8080_16_ReadM01_16;
شما با اینا مشکل داری؟
اینکه کاری نداره!
این توابع توی فایل LCD_X_16BitIF_STM32.c قرار گرفته که به درد شما نمیخوره.
اینجا شما باید از توابع موجود در GLCD.h , GLCD.C استفاده کنید.
به این نمونه توجه کنید:
در فایل GLCD.C این تابع برای ارسال فرمان (A0) السیدی SSD1963 استفاده شده:
[PHP]void ssd1963_WriteIndex (usigned short c)[/PHP]
شما باید ماکرویی به اینصورت در LCDConf.h تعریف کنید:
[PHP]#define LCD_X_8080_16_Write00 ssd1963_WriteIndex[/PHP]
و برای ارسال داده هم این تابع تعریف شده:
[PHP]void ssd1963_WriteData (unsigned short c)[/PHP]
که برای اون هم این ماکرو رو تعریف کنید:
[PHP]#define LCD_X_8080_16_Write01 ssd1963_WriteData [/PHP]
برای دوتای بعدی هم دوتا تابع درست کنید و در یک حلقه for دستورات ارسال write index و write data رو قرار بدین.
موفق باشید
اقای منصوری تو تابع lcd_x_config من اگه دو خط پاین رو حذف نکنم دونبال این تابع میگردم و ارور میده.این مهم هست برای اول کار که با تاچ کاری ندارم
اقای منصوری من این فایل glcd رو ندارم.فقط با بردم lcd.h هست که توبعی توش هست.لطفا یا این فایل و برام بفرستید یا اینکهاز روی اون کتابخانه بگید کدو توابع هست.هدر مورد نظر در فایلهایی که فرستادم هستکد:.\Output\LPC1788_EA_LPC1788_KEIL_CMSIS\Debug_FLASH\Obj\Start_LPC1788_EA_LPC1788_KEIL_CMSIS.axf: Error: L6218E: Undefined symbol GUI_TOUCH_X_ActivateX (referred from GUI_TOUCH_DriverAnalog.o). .\Output\LPC1788_EA_LPC1788_KEIL_CMSIS\Debug_FLASH\Obj\Start_LPC1788_EA_LPC1788_KEIL_CMSIS.axf: Error: L6218E: Undefined symbol GUI_TOUCH_X_ActivateY (referred from GUI_TOUCH_DriverAnalog.o). .\Output\LPC1788_EA_LPC1788_KEIL_CMSIS\Debug_FLASH\Obj\Start_LPC1788_EA_LPC1788_KEIL_CMSIS.axf: Error: L6218E: Undefined symbol GUI_TOUCH_X_MeasureX (referred from GUI_TOUCH_DriverAnalog.o). .\Output\LPC1788_EA_LPC1788_KEIL_CMSIS\Debug_FLASH\Obj\Start_LPC1788_EA_LPC1788_KEIL_CMSIS.axf: Error: L6218E: Undefined symbol GUI_TOUCH_X_MeasureY (referred from GUI_TOUCH_DriverAnalog.o). Target not created
ویرایش توسط mzarkoob : 01-04-2014 در ساعت 18:42 دلیل: ادغام
ویرایش توسط mzarkoob : 01-04-2014 در ساعت 18:43 دلیل: ادغام
خسته شدم نمیتونم.اصلا معلوم نیست مشکل از این توابع باشه.چون انواع اقسام درست کردم نشد.یک نقطه هم نمیاد رو السیدی دلم خوش باشه.من اینارو با هدر ال سی دی خودم نوشتم
کد:/********************************************************************* * * LCD_X_Write00_16 * * Purpose: * Write to controller, with A0 = 0 */ void LCD_X_Write00_16(U16 c) { LCD_RS(0) LCD_RD(1) lcd_send(c); LCD_WR(0) wait(); LCD_WR(1) } /********************************************************************* * * LCD_X_Write01_16 * * Purpose: * Write to controller, with A0 = 1 */ void LCD_X_Write01_16(U16 c) { LCD_RS(1) LCD_RD(1) lcd_send(c); LCD_WR(0) wait(); LCD_WR(1) } /********************************************************************* * * LCD_X_Read01_16 * * Purpose: * Read from controller, with A0 = 1 */ U16 LCD_X_Read01_16(void) { unsigned short val = 0; LCD_RS(1) LCD_WR(1) LCD_RD(0) val = lcd_read(); LCD_RD(1) return val; } /********************************************************************* * * LCD_X_WriteM01_16 * * Purpose: * Write multiple bytes to controller, with A0 = 1 */ void LCD_X_WriteM01_16(U16 * pData, int NumWords) { LCD_RS(1) for (; NumWords; NumWords--) { wr_dat(*pData); pData++; } } /********************************************************************* * * LCD_X_WriteM00_16 * * Purpose: * Write multiple bytes to controller, with A0 = 0 */ void LCD_X_WriteM00_16(U16 * pData, int NumWords) { LCD_RS(0); for (; NumWords; NumWords--) { wr_cmd(*pData); pData++; } } /********************************************************************* * * LCD_X_ReadM01_16 * * Purpose: * Read multiple bytes from controller, with A0 = 1 */ void LCD_X_ReadM01_16(U16 * pData, int NumWords) { LCD_RS(1); for (; NumWords; NumWords--) { rd_reg(*pData); pData++; } }
دوتا کار کوچیک مونده:
1- فایلهای GLCD.H و GLCD.C که برات فرستادم رو خارج از emwin تست کن. اگه کار کرد برو توی فایل LCDConf.C توی تایع LCD_X_DisplayDriver در قسمت LCD_X_INITCONTROLLER: تابع پیکربندی السیدی رو فراخوانی کن. تابع خودش احتمالا مشکل داشته باشه.
توی فایل GLCD.C این تابع اینطوری اومده:
void LCD_Initializtion(void)
2- پروژه رو دیباگ کن و ببین آیا در GUI_Init گیر میکنه یا نه؟ وقتی گیر کرد Pause کن و ببین آیا وارد HardFault Handler شده؟
ضمنا کل پروژه ات رو آپ کن ببینم که اگه سیستم عامل استفاده کردی مشکلش کجاست
منتمام فایلهای اینیت ال سیدی رو جدا گانه با پایه ها چک کردم کار میکنه.برنامه دقیقا روی HardFault Handler گیر میکنه.من از سیستم عامل استفاده نکردم.
سلاااممم
آقا من 2 روز نبودم چه کردین شونصد تا پست زدین، آفرین واقعا دمت گرم پیگیری...
چند تا نکته:
d.s :
اول شما حواست باشه ولتاژی که داری به lcd ایت میدی از 2.8 بیشتر نباشه که کلا کار نکنه.
ببینید،من همین درایور 1289 رو با emwin راه انداختم، دنبال compact color نرو که به این راحتیا نیست.
بدبختا خودشون اومدن تو ورژن 5.22 درایور 1289 رو به flex color ها اضافه کردن که راحت باشی. دیگه مشکل چیه؟شما الان بدون emwin کامل lcd ایت رو راه انداختی؟
اگر آره فایل کتابخانه lcd ایت رو که کاملا ازشش جواب گرفتی بفرست تا روی LCDConf.c تنظیمش کنم برات. خودتم کاملا تمام فایل های emwin 5.22 رو تو یه پروژه آماده emwin جایگزین کن. همشو، تمام هدرها، تمام سورس ها و تمام لایبرری ها.
** یه نکته هم بگم: درسته اکثر توابع سطح پایین emwin برای درایورهای 16 بیت نوشته شده ولی رو 8 بیت هم جواب میدن، شما لایبرری خودتو 8 بیت بنویس اینترفیسی که به emwin معرفی میکنی 16 بیت باشه، مشکلی پیش نمیاد. من با st همین 1289 رو تو 8 بیتو 16 بیت راه اندازی کردم، اصللا مهم نیست شما لایبرری lcd رو چجوری نوشته باشی...
** یک نکته دیگه: جناب منصوری عزیز، من دقیقا اون موقع که درگیر 1289 بودم رفتم از تو پروژه یه بنده خدایی که با emwin فول لایسنس آپ کرده بود فایلهای compact color ها رو دانلود کردم و
گذاشتم تو پروژم، ولی جواب نداد. فکر میکنم داخل .lib اصلی emwin اطلاعات نوع لایسنس مورد استفاده نگه داری میشه و مانع کار کردن پروژه میشه...
ویرایش توسط sjafarim : 04-02-2014 در ساعت 18:53