راه اندازی نمایشگر OLED رنگی SSD1351 با STM32 – بخش اول

راه اندازی نمایشگر OLED با STM32
نوشته شده توسط

سلام به شما همراهان همیشگی. در این مطلب به معرفی ماژول‌ OLED رنگی Waveshare و نحوه راه‌اندازی آن‌ها با استفاده از میکروکنترلر‌های STM32 خواهیم پرداخت. این مطلب دارای 2 بخش بوده که در بخش اول به معرفی ماژول OLED RGB Waveshare و تنظیمات اولیه جهت راه‌اندازی، در نرم افزار CubeMX پرداخته شده است.  در بخش دوم، نحوه اضافه کردن کتاب‌خانه‌ها، تظیمات مربوط به Keil جهت پشتیبانی از زبان ++C و استفاده از توابع آماده جهت کار و راه اندزای ماژول OL‌ED تشریح خواهد شد. پس با من تا انتهای مطلب همراه باشید. همچنین میتونید سایر مطالب من رو از این قسمت مطالعه کنید.

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


معرفی نمایشگر‌های O‌LED

OLED ها نوع پیشرفته تری از نمایشگرهای LED هستند که در آن‌ها از یک لایه ترکیبات آلی استفاده شده است. این نمایشگر‌ها دارای ضخامت کمی نیز می‌باشند. معمولا در نمایشگر­هایی که دارای کیفیت تصویر بالایی هستند، از تکنولوژی OLED استفاده شده است.

OLED مخفف Organic Light Emitting Diodes و به معنای دیود ساطع کننده نور ارگانیک است. هر زمان که جریان الکتریکی از میان ترکیبات آلی موجود در پنل‌های OLED، و فیلتر‌های مربوط به تولید رنگ عبور کند، تصاویر بر روی این پنل‌ها شکل می‌گیرد.

هر پیکسل کوچک OLED با توجه به میزان الکتریسیته‌ای که دریافت می‌کند از خود نور می‌تاباند. در صورت ارسال جریان زیادی از الکتریسیته نور زیادی خواهید داشت و در صورت ارسال هیچ جریانی هیچ نوری ساطع نخواهد شد. یکی از دلایل کیفیت عالی تصویر در نمایشگرهای OLED همین امر است.


معرفی ماژول OLED رنگی Waveshare با رابط SPI

نمایشگر OLED RGB Waveshare
نمایشگر OLED RGB Waveshare

ماژول نمایشگر RGB OLED، یک ماژول 1.5 اینچی 128 در 128 پیکسل است. که تا 16 بیت رنگ (65 کیلو رنگ) را جهت نمایش پشتیبانی می­‌کند. این ماژول دارای کنترلر SSD1351 به صورت آنبورد بوده و از ارتباط SPI پشتیبانی می­‎‌کند.

مشخصات کلی

مشخصات
درایور SSD1351
رابط SPI چهار سیم و یا سه سیم
رنگ قابل نمایش RGB، 65k رنگ
وضوح 128 * 128
ولتاژ کاری 3.3V و 5V

معرفی پایه‌­ های اینترفیس SPI

نام پایه توضیحات
VCC تغذیه (ورودی 3.3 تا 5 ولت)
GND زمین
DIN ورودی دیتا
CLK کلاکِ دیتای ورودی
CS چیپ سلکت (Active Low)
DC ارتباط 4 سیمِ SPI: انتخاب دیتا/دستور (1 برای دیتا و 0 برای دستور)

ارتباط 3 سیمِ SPI: اتصال به زمین، صفر نگه داشته شود.

RST ریست (Active low)

نحوه ایجاد ارتباط با کنترلر SSD1351

SSD1351 یک کنترلر دات ماتریس OLED/PLED برای اسکرین‌ هایی در ابعاد 128 در 128 پیکسل RGB بوده و همراه با یک SRAM به تعداد 128*128*128 بیتیِ نهفته به عنوان بافر نمایش می‌باشد. این کنترلر از 256k و 65k خاکستری پشتیبانی می‌کند. از اینترفیس‌­های پشتیبانی شده جهت برقراری ارتباط  با این کنترلر می­‌توان به 8080، 6800 8 بیتی، SPI سه سیم و SPI چهار سیم اشاره کرد.

برای کاهش سایز و استفاده کمتر از منابع IO، ماژولِ  OLED RGB طراحی شده توسط Waveshare، از ارتباط سه سیم SPI و یا چهار سیم استفاده می‌کند.

ارتباط SPI به صورت 4 سیم

فرمت ارسال دیتا در ارتباط 4 سیم SPI
ارسال دیتا در ارتباط 4 سیم SPI

برای برقراری ارتباط به صورت SPI  چهار سیم، ابتدا باید پایه DC صفر یا یک شود و سپس دیتا ارسال گردد.

اگر DC = 1 باشد، دیتای ارسالی در حافظه SRAM کنترلرِ SSD1351 به عنوان دیتای قابل نمایش ذخیره می‌گردد. در این حالت، طول دیتا باید بیشتر از 1 بایت باشد.

اگر DC = 0 باشد، دیتای ارسالی به عنوان دستور کنترلی مورد استفاده قرار می‌گیرد، همچنین طول دستور معمولا 1 بایت است.

ارتباط SPI به صورت 3 سیم

فرمت ارسال دیتا به صورت 3 سیم با SPI
فرمت ارسال دیتا به صورت 3 سیم با SPI

تفاوت بین SPI سه سیم و SPI  چهار سیم در این است که حالت 3 سیم یک بیت، قبل از بایت ارسالی قرار می‌دهد که نوع دیتا را به عنوان دستور یا دیتا مشخص می­‌کند. این کار جایگزین 0 و 1 کردن پایه DC در حالت 4 سیم خواهد بود.

نکته: در صورتی که از حالت 3 استفاده گردد، دقت شود که پایه DC باید به زمین متصل شود و همچنین دیتای ارسالی به جای 8 بیت باید 9 بیت باشد.

پایه های نمایشگر OLED مدل RGB
پایه های نمایشگر OLED مدل RGB

وسایل مورد نیاز

  • برد BluePill چیپ STM32F103C8
  • ماژول OL‌ED RGB مارک Waveshare
  • پروگرامر ST-link
  • برد برد
  • سیم برد بردی

دریافت فایل کتاب‌خانه

در این‌جا قصد داریم با استفاده از میکروکنترلر STM32F103C8 ماژول OLED RGB با وضوح 128 در 128 پیکسلِ Waveshare را راه‌اندازی کنیم. برای این کار از یک کتاب‌خانه آماده استفاده خواهیم کرد. که توسط Waveshare به اشتراک گذاشته شده است. تنظیمات اولیه و ایجاد فایل پروژه در نرم افزار STM32CUBEMX انجام شده و در محیط Keil برنامه توسعه داده خواهد شد.

از طریق این لینک می­توانید به سایت Waveshare جهت دانلود کتاب‌خانه و مثال آماده مراجعه کنید. در صفحه باز شده، بر روی Demo Code کلیک کرده و فایل‌های مورد نیاز را دانلود کنید. توجه شود که علاوه بر نمونه کد جهت راه‌اندازی این ماژول با میکروکنترلر‌های STM32، فایل دانلود شده شامل نمونه کد برای راه‌اندازی ماژول OL‌ED با آردوینو و رزبری پای نیز می‌باشد.

دریافت فایل‌های مورد نیاز از وب سایت Waveshare
دریافت فایل‌های مورد نیاز از وب سایت Waveshare

ایجاد پروژه و اعمال تنظیمات در نرم افزار STM32CUBEMX

بعد از ایجاد پروژه و انتخاب میکرو مورد نظر که در اینجا برای ما STM32F103C8 می‌باشد. ابتدا برای عملکرد بهتر OLED، به سراغ فرکانس رفته و آن را بالا خواهیم برد. در نرم افزار STM32CUBEMX ابتدا به بخش System Core رفته و RCC را انتخاب کنید. در قسمت RCC Mode and Configuration بخش HSE را باز کرده و گزینه Crystal/Ceramic Resonator را برای انتخاب کریستال خارجی به عنوان منبع کلاک انتخاب کنید.

در سربرگ Clock Configuration، فرکانس ورودی را با توجه به کریستال روی برد Bluepill، بر روی 8 مگاهرتز قرار داده و PLL Source Mux را بر روی HSE قرار دهید. System Clock Mux را بروی PLLCLK قرار داده و فرکانس مد نظر خود را در بخش HCLK تایپ کرده و Enter کنید تا تنظیم فرکانس بخش‌های مختلف میکرو توسط Cube انجام گیرد. در این جا حداکثر فرکانس کاری برای میکروی روی برد ما 72 مگاهرتز می‌باشد.

اعمال تنظیمات در CubeMX
اعمال تنظیمات در CubeMX

انتخاب پروتکل SPI

حال نوبت به تنظیم واحد SPI می‌رسد. برای این کار به سر برگ Connectivity رفته و یکی از SPI ها را انتخاب کنید. ما در این‌جا SPI1 را انتخاب می‌­کنیم تا نیاز به تغییر شماره پورت SPI در کتاب‌خانه نداشته باشیم.

اعمال تنظیمات در CubeMX
اعمال تنظیمات در CubeMX

از آن‌جایی که صرفا می‌خواهیم به OL‌ED دیتا بدهیم و خواندن از طرف نمایشگر برای ما مدنظر نیست. Mode را بر روی Transmit Only Master قرار می‌دهیم. البته توجه شود که ماژول OLED صرفا پایه ورودی دیتا دارد و پایه خروجی بر روی برد این ماژول تعریف نگردیده است.

در اینجا میکروکنترلر Master و OLED به صورت Slave در نظر گرفته می‌شود. حال به سربرگ Parameters Settings رفته Prescaler را به گونه‌ای تنظیم می‌کنیم که Baud Rate واحد SPI حدود 5MBits/s  قرار گیرد. در این‌جا ما Prescaler را با توجه به فرکانس تنظیم شده میکرو، بر روی 16 قرار دادیم تا Baud Rate مد نظر به صورت حدودی حاصل گردد.

تنظیم پایه‌ها در محیط نرم افزار CubeMX
تنظیم پایه‌ها در محیط نرم افزار CubeMX

پایه PA7 که در اینجا به عنوان SPI_MOSI تعریف شده است، باید به پایه DIN ماژول OLED و پایه PA5 که پایه SCK در SPI است به پایه CLK ماژول متصل گردد. همچنین سه پایه میکرو را به دلخواه به عنوان خروجی انتخاب کرده تا به پایه‌های دیگر نمایشگر OL‌ED یعنی RST، CS، DC به آن‌ها متصل گردند.

در اینجا ما PA0 ،PA1 و PA2 را به عنوان خروجی قرار داده‌ایم. توجه شود که در کتاب‌خانه مورد استفاده، به صورت پیش فرض از ارتباط SPI چهار سیم برای راه‌اندازی ماژول استفاده شده است به همین دلیل پایه DC نیز باید به میکروکنترلر متصل گردد.

نحوه اتصال پایه‌ ها بین میکرو و ماژول OLED

نام پایه OL‌ED پایه میکرو STM32
VCC 3.3V+
GND G
DIN PA7
CLK PA4
CS PA1
DC PA2
RST PA0

به سربرگ Project Manager رفته و یک نام برای پروژه خود انتخاب کنید. IDE مد نظر خود را برای توسعه کد (که در این‌جا برای ما Keil IDE) می‌باشد را انتخاب و Generate Code را جهت تولید پروژه انتخاب کنید.

ذخیره سازی پروژه و تولید کد
ذخیره سازی پروژه و تولید کد

بعد از Generate کردن، برای نوشتن برنامه و اضافه کردن کتاب‌خانه‌ها وارد محیط Keil خواهیم شد.

محیط Keil IDE
محیط Keil IDE

در قسمت بعدی این آموزش، اضافه کردن کتاب‌خانه‌ها به Keil و نحوه استفاده از توابع آن بررسی خواهد شد. از آن‌جایی که کتاب‌خانه پیش رو با زبان ++C نوشته شده است، نیاز است تا تغییراتی در Keil جهت پشتیبانی از این زبان در پروژه ایجاد گردد که در قسمت بعدی به آن خواهیم پرداخت.


نتیجه‌گیری

در این مطلب به نمایشگر‌های OL‌ED و ویژگی‌های آن‌ها پرداختیم. ماژول OLED RGB ساخت شرکت Waveshare مبتنی بر کنترلر SSD1351 را بررسی کرده و فرمت ارسال دیتا و دستور از طریق پروتکل SPI در این نمایشگر شرح داده شد. همچنین از طریق نرم افزار CubeMX پیکربندی اولیه و تنظیم پورت‌های SPI و خروجی‌ها در میکرو برای OLED انجام شد.

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

یک دیدگاه برای “راه اندازی نمایشگر OLED رنگی SSD1351 با STM32 – بخش اول

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

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