سلام
خیلی وقت بود که به صورت جسته گریخته با ssd1963 و stm32f407 به روش fsmc ال سی دی راه می انداختم و تست می گرفتم و هر دفعه در تنظیمات زمان fsmc مشکل بود
مثلا یه وقت تو یه پروژه به خوبی کار می کرد بعد همون تنظیمات روی PCB مشابه کار نمی کرد
یا مثلا چندبار صفحه که عوض می شد دیگه گیر می کرد و نمی رفت جلو تر
جالب این جا بود که با بعضی تنظیمات با سرعت خیلی بالایی می شد صفحه رو با چند تا رنگ رفرش کرد همون تابع lcd_clear
تا این که امروز متوجه مطلبی شدم
اگر دقت کنید می بینید که با stm32f1xx که کلاکش 72 مگاهرتزی هست این مشکل وجود نداره
حالا این مشکل چرا هست
برای اینکه شما تصویرتون یا متنتون رو پخش کنید میایید به ssd1963 می گید به من یه ابعاد مربعی مثلا 10 در 10 بده که از 0 و 0 شروع شده باشه اونوقت هر چی میدید اون خودش تو اون مربع 10 در 10 می ریزتش
که هر کی یه اسم برای این موضوع گذاشته مثلا SetCursor یا SetArea
داخل این تابع
این ها نوشته شده
من طبق تستس که کردم اگر بین هر کدوم از این خط ها یه تاخیر ایجاد کنید مشکل حل میشه ولی یه مشکل دیگه اضافه میشه
اونم اینه که متن و نوشته هاتون بسیار کند می شن چرا چون برای نوشتن یک حرف باید چندین بار این تابع اجرا بشه تا بتونید نقطه به نقطه بنویسید
که این مشکل رو میشه به روش دیگه ای حل کرد و این طوری که بیاید یه آرایه تعریف کنید و بعد متنتون رو توی اون آرای بنویسید و بدید به تابع پخش تصویر این طوری خیلی سریع میشه و مسئله صدا زدن تابع مزاحم کم تر پیش میاد
این تجربه بنده بود
اگر کسی از دوستان تجربه بهتری دارند ارائه بفرمایند یا اینکه اگر بنده اشتباه می کنم توضیح بدهند
خیلی وقت بود که به صورت جسته گریخته با ssd1963 و stm32f407 به روش fsmc ال سی دی راه می انداختم و تست می گرفتم و هر دفعه در تنظیمات زمان fsmc مشکل بود
مثلا یه وقت تو یه پروژه به خوبی کار می کرد بعد همون تنظیمات روی PCB مشابه کار نمی کرد
یا مثلا چندبار صفحه که عوض می شد دیگه گیر می کرد و نمی رفت جلو تر
جالب این جا بود که با بعضی تنظیمات با سرعت خیلی بالایی می شد صفحه رو با چند تا رنگ رفرش کرد همون تابع lcd_clear
تا این که امروز متوجه مطلبی شدم
اگر دقت کنید می بینید که با stm32f1xx که کلاکش 72 مگاهرتزی هست این مشکل وجود نداره
حالا این مشکل چرا هست
برای اینکه شما تصویرتون یا متنتون رو پخش کنید میایید به ssd1963 می گید به من یه ابعاد مربعی مثلا 10 در 10 بده که از 0 و 0 شروع شده باشه اونوقت هر چی میدید اون خودش تو اون مربع 10 در 10 می ریزتش
که هر کی یه اسم برای این موضوع گذاشته مثلا SetCursor یا SetArea
داخل این تابع
LCD_WriteCom(CMD_SET_COLUMN);
LCD_WriteRAM(start_x >> 8);
LCD_WriteRAM(start_x);
LCD_WriteRAM(end_x >> 8);
LCD_WriteRAM(end_x);
LCD_WriteCom(CMD_SET_PAGE);
LCD_WriteRAM(start_y >> 8);
LCD_WriteRAM(start_y);
LCD_WriteRAM(end_y >> 8);
LCD_WriteRAM(end_y);
این ها نوشته شده
من طبق تستس که کردم اگر بین هر کدوم از این خط ها یه تاخیر ایجاد کنید مشکل حل میشه ولی یه مشکل دیگه اضافه میشه
اونم اینه که متن و نوشته هاتون بسیار کند می شن چرا چون برای نوشتن یک حرف باید چندین بار این تابع اجرا بشه تا بتونید نقطه به نقطه بنویسید
که این مشکل رو میشه به روش دیگه ای حل کرد و این طوری که بیاید یه آرایه تعریف کنید و بعد متنتون رو توی اون آرای بنویسید و بدید به تابع پخش تصویر این طوری خیلی سریع میشه و مسئله صدا زدن تابع مزاحم کم تر پیش میاد
این تجربه بنده بود
اگر کسی از دوستان تجربه بهتری دارند ارائه بفرمایند یا اینکه اگر بنده اشتباه می کنم توضیح بدهند
دیدگاه