STM32, پروژه, توصیه شده, مقاله

راه‌اندازی TFT LCD با استفاده از LTDC – بخش اول

راه‌اندازی TFT LCD با استفاده از LTDC

سلام در مجموعه آموزش سیستم‌های گرافیکی، در اولین جلسه با راه‌اندازی LTDC و نمایش یک عکس کار را شروع می‌کنیم و با عنایت خداوند به مباحث پیشرفته‌تر می‌پردازیم.

احتمالا شما هم با نمایشگرهای مختلف مانند مدل‌های کاراکتری 2*16 با درایور معروف HD44780 و یا مدل‌های گرافیکی 128*64 با درایور KS0108 و یا یک مدل گرافیکی دیگر با نام  نوکیا 1202 با درایورSTE2007 که آموزش‌های آن در سیسوگ درحال تهیه است، آشنا هستید. اگر به این نمایشگرها دقت کنید آی‌سی‌هایی بر روی آن تعبیه شده که در نقش راه‌انداز یاهمان درایور عمل می‌کنند. 

قطعا نمایشگرهای oled نیز طرفداران خاص خودش را دارد. اما اگر بخواهید یک hmi لمسی بسازید چه می‌‎کنید؟ برای پاسخ با ما باشید …

درایور یعنی چه؟ یک واسط سخت‌افزاری که کنترل اطلاعات و پیکسل‌های نمایشگر و همچنین ارتباط با میکروکنترلر توسط آن بااستفاده از پریفرال‌هایی جانبی مانند GPIO ،I2C ،SPI و … صورت می‌گیرد. پس برای اینکه شما بتوانید با این نوع نمایشگرهای دارای درایور کار کنید بایستی حتما یک کتابخانه جهت برقراری ارتباط با آن بنویسید. (به اصطلاح با درایور حرف بزنید)

اما آنچه که در این مقاله به آن می‌پردازیم ساخت یک hmi می‌باشد، از این رو حتما به نمایشگرهای با نام tft lcd تمام رنگی در فروشگاه‌ها که معمولا به صورت 40 یا 50 پین عرضه شده‌اند ودارای ابعاد مختلف مانند 4.3 اینچ، 7 اینچ و … هستند برخورد کرده‌اید اما ابعاد نمایشگر مهم نیست بلکه رزولوشن مهم است. برای مثال من در این آموزش از نمایشگر 4.3 اینچ با رزولوشن 480*272 استفاده خواهم کرد. برای اینکه شما این نوع ال‌سی‌دی‌ها را راه‌اندازی کنید به واحدی به نام (LTDC (Lcd Tft Display Controller نیاز دارید.

با استفاده از این پریفرال بدون درایور و مستقیم با استفاده از میکروکنترلر به پیکسل‌ها مقدار دهی می‌کنید و  هر پیکسل از رنگ اصلی Red ،Green ،Blue تشکیل شده یعنی اگر به هر رنگ 6 بیت اختصاص بدهیم نحوه کنترل ما 18 بیتی خواهد بود.

آیا این واحد در سری‌های دیگر میکروکنترلرهای شرکت ST مانند سری F1 نیز وجود دارد؟ خیر! اما این نوع نمایشگرها نیز با درایور به بازار عرضه شده‌اند مانند tft lcd با درایور ssd1963 که می‌توان از gpio و یا درصورت نیاز به سرعت بیشتر از fmc /fsmc که در این سری وجود دارد استفاده کرد.که در بخش های بعدی حتما به این موضوع خواهیم پرداخت.

در انتها صرفا به بیان این نکته که آی‌سی‌های مخصوص جهت کارهای گرافیکی-نمایشی مانند (… FT8xx (ft810, ft800 وجود دارد بسنده می‌کنیم و توضیحات جامع‌تر را به قسمت‌های آتی این مجموعه موکول می‌کنیم.

برگردیم سر اصل مطلب…

راه‌اندازی TFT LCD با استفاده از LTDC

من در این آموزش از میکروکنترلر STM32F429igt6 و محیط CubeIDE استفاده می‌کنم.

خب ابتدا یک پروژه در نرم‌افزار ایجاد و میکروی خودتان رو انتخاب کنید. (هر میکرویی که واحد LTDC را داراست)

سپس با رفتن به بخش RCC کلاک میکرو را بر روی کریستال خارجی قرار دهید همچنین از بخش SYS جهت پروگرام/دیباگ آن را بر روی (SW (serial wire تنظیم کنید.

واحد LTDC را پیدا کنید و با توجه به سخت‌افزار خودتان یکی از سه حالت 16 بیتی،  18 بیتی و یا 24 بیتی را انتخاب کنید. برد من درحالت 16 بیتی طراحی شده است، بنابراین من از این حالت استفاده می‌کنم.

 

راه‌اندازی TFT LCD با استفاده از LTDC

 

همانطور که مشاهده می‌کنید نرم‌افزار پایه‌های پیش‌فرضی برای این کار انتخاب کرده است که شما در صورت نیاز بایستی آن‌ها را تغییر بدهید و زبانه‌ای به صورت زیر باز می‌شود که با توجه به دیتاشیت ال‌سی‌دی آن را با هم تکمیل خواهیم کرد. (من در عکس زیر تکمیل کردم)


راه‌اندازی TFT LCD با استفاده از LTDC

 

ما برای تکمیل کادرهای بالا نیاز داریم این اطلاعات رو از دیتاشیت استخراج کنیم که من جدول مربوط به lcd خودمان را قرار می‌دهم.

 راه‌اندازی TFT LCD با استفاده از LTDC

 

بر اساس مقادیر میانه جدول، اطلاعات خواسته شده در نرم‌افزار را کامل می‌کنیم.

دقت کنید که مقادیر Horizontal Synchronization Width و Vertical Synchronization Height را که نرم‌افزار خواسته (با کادر قرمز رنگ درتصویر cube مشخص کردیم) پس از اینکه مقادیر back porch و front porch و همچنین عرض و ارتفاع lcd را دادید به گونه‌ای بایستی مقداردهی کنید که گزینه Total width نرم‌افزار با مقدار HSD period time جدول ( یعنی 525) و همچنین Total Height نرم‌افزار با VSD period time (یعنی 288) جدول برابر بشود.

سپس به مرحله دوم تنظیمات layer setting می‌رویم و مراحل زیر را به ترتیب انجام می‌دهیم:

 

راه‌اندازی TFT LCD با استفاده از LTDC

میکروی من از دو لایه پشتیبانی می‌کند که من فعلا آن را روی یک لایه قرار می‌دهم.

نوع فرمت پیکسل را انتخاب می‌کنیم.

نقاط شروع و پایان عرض و ارتفاع را مشخص می‌کنیم.

مقدار alpha blending (این مورد فکر کنم همان شفافیت یا ترنسپرنسی باشد)

اینجا آدرس شروع بافر و همینطور ابعاد تصویر است.

خب اگر شما هم  مثل من نیاز به تغییر پایه‌ها دارید این کار را انجام بدید و پایه‌ها رو در ماکزیمم سرعت خروجی تنظیم کنید.

 

راه‌اندازی TFT LCD با استفاده از LTDC

 

و درنهایت فرکانس مورد نظر lcd را از همان جدول تنطیم می‌کنیم.

 

راه‌اندازی TFT LCD با استفاده از LTDC

خب تنظیمات مربوط به میکروکنترلر تمام شد، اکنون بر روی code generation کلیک کنید تا پروژه ساخته بشود.

من از تصویر زیر برای نمایش استفاده می‌کنم، اما شما می‌توانید از هرتصویری در سایز 480*272 استفاده کنید (اگر تصویرتان بزرگ‌تر بود از نرم افزار paint ویندوز و از ابزار resize استفاده کنید)

 

sisoog

 

و برای نمایش بایستی عکس خودمان را تبدیل به آرایه بکنیم، برای این منظور از نرم افزار lcd-image-converter کمک می‌گیریم. پس از اجرای نرم‌افزار عکس را مانند زیر باز کنید.

 

راه‌اندازی TFT LCD با استفاده از LTDC

 

بر روی conversion کلیک کنید.

 

راه‌اندازی TFT LCD با استفاده از LTDC

 

خب طبق عکس زیر فرمت عکس و  آرایه را تنظیم کنید.

 

راه‌اندازی TFT LCD با استفاده از LTDC

 

در نهایت مانند عکس زیر، بعد از convert کردن فایل را ذخیره کنید.

 

راه‌اندازی TFT LCD با استفاده از LTDC

 

حالا فایل تولید شده را در نرم‌افزار CubeIDE اضافه کنید. کافیه فایل را کپی و در یکی از پوشه‌های هدرها paste کنید. فایل را باز کنید، در انتهای فایل یک متغیر وجود دارد که باید آن را حذف کنید.

 

راه‌اندازی TFT LCD با استفاده از LTDC

 

سپس فایل رو فراخوانی کنید.

 

راه‌اندازی TFT LCD با استفاده از LTDC

 

کافیه اسم آرایه عکس رو با type-cast کردن به بافر بدید (چون آرایه ما 16 بیتی و آدرس 32 بیتی هست این کار الزامی است)

 

راه‌اندازی TFT LCD با استفاده از LTDC

 

حال اگر برنامه را کامپایل و پروگرام بکنید با خروجی زیر مواجه خواهید شد:

 

راه‌اندازی TFT LCD با استفاده از LTDC

خب در قسمت اول توانستیم واحد LTDC را در ابتدایی‌ترین حالت راه‌اندازی کنیم، با ما همراه باشید تا در قسمت‌های بعدی با ویژگی‌های بیشتری از واحد LTDC آشنا بشویم.

 

برای دانلود نرم‌افزار و فایل‌های پروژه از قسمت زیر اقدام کنید:

 

انتشار مطالب با ذکر نام و آدرس وب سایت سیسوگ، بلامانع است.

شما نیز میتوانید یکی از نویسندگان سیسوگ باشید.   همکاری با سیسوگ

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

23 دیدگاه در “راه‌اندازی TFT LCD با استفاده از LTDC – بخش اول

  1. جواد گفت:

    سلام . راه اندازی تاچ برای LCD برد دیسکاوری STM32F7 رو می زارید؟ اصلاً حاضرم بخرم ازتون. از کجا میشه پیدا کرد گیر نیاوردم تو نت . با اکلیپس نه ها . با کیل .

    1. جواد گفت:

      یا خصوصی برام بفرستید هزینشو هم قبل ارسال میدم JKJAK111@GMAIL.COM

    2. Sisoog Os Sisoog Os گفت:

      سلام دوست عزیز فعلا قصدی نداریم دوستانی هم که اینجا میبنن و دارند میتونن از ما بخان تا ایمیل شما را بهشون بدیم

  2. جواد گفت:

    active width رو از کجا اوردید چرا نشون ندادید ؟ منم پیدا نکردم تو دیتاشیتم .

    1. درود
      هنگام خرید یک نمایشگر ، فروشنده با چند پارامتر فنی آن را معرفی میکند:
      1- سایز :مانند 5اینچ
      2- رزولوشن: مانند480*272 که دقیقا منظور از active width همان تعداد پیکسل در عرض نمایشگر است یعنی 480.
      3- نوع نمایشگر: مانند کاراکتری
      4- نوع راه اندازی و درایور
      ..

  3. محمد گفت:

    سلام ممنون از اموزش های خوبتون. لطفا موارد زیر رو براساس LTDC اموزش بدین.
    1- استفاده از DMA2D
    2- ارتباط با کتابخانه های گرافیکی مثل EMWIN
    3- کتابخانه ی Touch GFX

    1. سلام ضمن عذرخواخی از همه دوستان بابت تاخیر در انتشار مطالب، به زودی قسمت های جدید اپلود خواهد شد ممنون از همراهمی شما
      بله این موارد در آموزش هم پوشش داده شده.

  4. mohsen گفت:

    سلام جناب مهندس تشکر بابت اموزش خوبتون
    اگر ممکن است میکروهای مختلف و نرم افزارهای مختلفی که برای ساخت GUI هست مثل emwin ,touchgfx , qt ,ویا هر نرم افزار دیگه ای که میشناسید رو یه مقایسه ای بکنید
    من تجربه کار گرافیکی با میکرو رو ندارم و هم میکرومنترلر وهم نرم افزارهای زیادی پیدا کردم که قابلیت کار گرافیکی دارند ولی من نمیدونم کدومشون رو انتخاب کنم
    پروژه ای هم که مدنظرم هست ساخت رابط گرافیکی نسبتا سنگین برای یک دستگاه در زمینه تجهیزات مهندسی پزشکیه .

  5. محمد امین گفت:

    سلام
    اول ی تشکر بکنم از مدیریت سایت سیسوگ که می شه گفت سایت بی نظیر نباشه کم نظیره.
    آقای مهندس می شه یکم جلوتر بریم، تقریبا تو تمام آموزش راه اندازی lcd از نمایش یک عکس که محتوای عکس تبدیل شده به کد هگز و داخل میکرو ریخته شده و به نمایش در می آد، سخن گفته شده است.
    در خواست دارم از راه کار پخش فیلم( دنباله ای از تصاویر 24 فریم در ثانیه احتمالا میکرو به sdram نیاز خواهد دشت ) و امکان پخش با میکروی ذکر شده یا استفاده از دوربین دیجیتال و یا آنالوگ و نمایش آن توسط lcd یه سرنخ هایی بدین یا اگه لینک یا منبع خارجی تو این زمینه دارین معرفی کنین.

    1. سلام ممنون از این انرژی مثبتتون
      بله چشم حتما تمام تلاشمون رو خواهیم کرد تا به مباحث پیشرفته تری هم بپردازیم برای پخش و نمایش فیلم بنده هم کاری انجام ندادم ولی به زودی تست هایی رو شروع میکنم و حتما اطلاع میدم ..

  6. اقا مطلبت عالی و تک بود!! لطفا اموزش کار با TouchGFX رو هم بزارید.

    1. سلام مهندس گلچین پور عزیز ..
      ممنون از محبت شما ..انشالا در ادامه به touch gfx و stemwin هم خواهیم پرداخت

  7. َAmir گفت:

    سلام
    روزتون بخیر و خسته نباشید
    چند سوال داشتم :
    دیتاشیت LCD TFT ها رو از چه سایتی تهیه کنیم که مشخصات VSD و HSD و … که گفتین داشته باشه ؟؟ در فروشگاه های ایران انواع مختلف TFT وجود دارد اما پارت نامبر ندارد … چطور دیتاشیت را تهیه کنیم که پارامترها رو داشته باشه ؟؟ دیتاشیت LCD ها با سایر قطعات فرق داره …
    —————————————————————————————————————————————————————–
    فایل هایی که قرار دادین قابل دانلود نیست. لطفا بررسی فرمایید.
    —————————————————————————————————————————————————————–
    راجب توابع کیوب اگه ممکنه مفصل توضیح بدین.
    —————————————————————————————————————————————————————–
    بی صبرانه منتظر قسمت دوم اموزش این بخش هستیم. لطفا ادامه بدین.
    —————————————————————————————————————————————————————–
    ازتون بابت مطالبی که قرار دادین تشکر میکنم.
    ممنونیم.

    1. درود بر امیر نازنین. مشکل دانلود فایل‌ها برطرف شد، از هم‌اکنون می‌توانید فایل‌ها را دانلود کنید.

      در رابطه با سوال‌هایتان هم نویسنده در اسرع وقت جواب خواهند داد.

    2. سلام ممنون از همراهی شما انشالا این مجموعه آموزشی رو در حد توان تامراحل قابل قبولی پیش خواهیم برد.

      اغلب از فروشگاه هایی که ال سی دی تهیه میشه ، امکان دانلود دیتاشیت مربوطه وجودداره و معمولا ال سی دی های با رزولوشن یکسان اطلاعات دیتاشیت تفاوت انچنانی با یکدیگر ندارند _اما اگر الان نیاز به دیتاشیت با رزولوشن متفاوت از انچه در اموزش گفته شده دارید کافیه که تو فروشگاه ها دیتاشیت رو گیر بیارید یا با مقداری جست و جو در گوگل یک دیتاشیت رو پیدا و باکمی حوصله بصورت عملی تست کنید( باتوجه به بازه گسترده مقادیر زمانی مشکل خاصی نخواهید داشت نگران نباشید)

      با تشکر از ققنوس عزیز مشکل فایل ها حل شده.

      دررابطه با توابع HAL که نرم افزار کیوب برامون میسازه تااینجای کار جز قسمتی که ادرس شروع عکس رو دادیم استفاده ای نشده و فقط در حد راه اندازی و مقدار دهی به ریجسترا کمک گرفتیم ولی اگر بخشی مجهوله بفرمایید تاهمون قسمت رو توضیح بدیم.

      انشالا قسمت دوم در حال اتمامه و به زودی منتشر میشه ممنون ازاینکه مارو دنبال میکنید

      خواهش میکنم خوشحالیم که درکنارتون هستیم.

  8. hosi گفت:

    سلام
    عزیز از کجا میتونم lcd-image-converter دانلود کنم ؟؟

    1. سلام باسپاس از شما.
      متاسفانه اپلود فایل های پروژه و نرم افزارهای مورد نیاز فراموش شده که امروز حتما اپلود میکنم.

  9. Arian Badvi Arian Badvi گفت:

    چکیده منظم و کاربردی‌یی ست.تشکر بابت زمانی که صرف کردید.

    1. خواهش میکنم ..ممنون از همراهی شما.

  10. مسعود رضاپور گفت:

    بسیار عالی و کامل👍👍

    1. ممنون از شما مهندس بابت ضبط این ویدیو..

  11. Mahdi Zamani Mahdi Zamani گفت:

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