سلام خدمت همه دوستان
من خیلی وقته در تلاشم که TFT LCD 3.2 inch Wide موجود در سایت که البته فعلا ناموجود هست را بر روی برد توسعه خود ECA (stm32f103zet6) راه اندازی کنم.
اگر به لینک بالا مراجعه کنید نمونه کد برای راه اندازی LCD با استفاده از FSMC موجود هست که کار میکند. ولی در تلاشی که داشتم با کتابخانه HAL راه اندازی ش کنم توفیقی حاصل نشد.
طبق چیزی که از FSMC متوجه شدم برای توشتن در LCD بسته به بانک SRAM که انتخاب میکنیم (در اینجا بانک 4 و NE4) در دو آدرس حافظه برای ارسال داده و دستور مینویسیم و بقیه سیگنالینگ توسط FSMC انجام می شود.
توابع نوشتن داده و دستور به شکل بالا هستند که تعریف LCD_RAM و LCD_REG به صورت زیر هستند.
این تعاریف با نمونه کتابخانه هایی که دیدم نمیخونه و اصلا متوجه نمیشم که دو حافظه برای نوشتن دستور و دیتا چطور از هم تفکیک میشن.
به صورت مثال در فایل درایور ssd1963 که در زیر لینکشو دادم به شکل زیر هست.
که آدرس دیتا و دستور به قرار زیر هستن.
من فایل کتابخانه LCD خودم (HX8352) و یک کتابخانه نمونه (SSD1963) رو میذارم که دومی با HAL نوشته شده. همچنین (main.c، fsmc.c و lcd.c ) خودم رو هم قرار میدم. ممنون میشم اگر کسی اطلاعاتی داره کمک کنه. چون من کم نگشتم هم تو انجمن و هم تو نت برای این درایور با fsmc و hal کتابخونه ای پیدا نکردم. ممنون . میخواستم کل پروژه رو بذارم حجمش خیلی بالا بود. فایل CUBE رو هم گذاشتم ،
من خیلی وقته در تلاشم که TFT LCD 3.2 inch Wide موجود در سایت که البته فعلا ناموجود هست را بر روی برد توسعه خود ECA (stm32f103zet6) راه اندازی کنم.
اگر به لینک بالا مراجعه کنید نمونه کد برای راه اندازی LCD با استفاده از FSMC موجود هست که کار میکند. ولی در تلاشی که داشتم با کتابخانه HAL راه اندازی ش کنم توفیقی حاصل نشد.
طبق چیزی که از FSMC متوجه شدم برای توشتن در LCD بسته به بانک SRAM که انتخاب میکنیم (در اینجا بانک 4 و NE4) در دو آدرس حافظه برای ارسال داده و دستور مینویسیم و بقیه سیگنالینگ توسط FSMC انجام می شود.
کد:
[LEFT]void LCD_WR_REG(uint16_t regval) { LCD->LCD_REG=regval; } void LCD_WR_DATA(uint16_t data) { LCD->LCD_RAM=data; }[/LEFT]
کد:
[LEFT]typedef struct { uint16_t LCD_REG; uint16_t LCD_RAM; } LCD_TypeDef; #define LCD_BASE ((uint32_t)(0x6C000000 | 0x000007FE)) #define LCD ((LCD_TypeDef *) LCD_BASE) [/LEFT]
به صورت مثال در فایل درایور ssd1963 که در زیر لینکشو دادم به شکل زیر هست.
کد:
[LEFT]void Lcd_Write_Cmd(uint16_t Cmd) { *(uint16_t *) (LCD_REG) = Cmd; } //////////////////////// void Lcd_Write_Data(uint16_t data) { *(uint16_t *) (LCD_DATA)= data; }[/LEFT]
کد:
[LEFT]// Adress for data #define LCD_DATA 0x60020000 // Adress for command #define LCD_REG 0x60000000[/LEFT]
من فایل کتابخانه LCD خودم (HX8352) و یک کتابخانه نمونه (SSD1963) رو میذارم که دومی با HAL نوشته شده. همچنین (main.c، fsmc.c و lcd.c ) خودم رو هم قرار میدم. ممنون میشم اگر کسی اطلاعاتی داره کمک کنه. چون من کم نگشتم هم تو انجمن و هم تو نت برای این درایور با fsmc و hal کتابخونه ای پیدا نکردم. ممنون . میخواستم کل پروژه رو بذارم حجمش خیلی بالا بود. فایل CUBE رو هم گذاشتم ،