آموزش میکروکنترلر STM32 – افزایش پایه های میکروکنترلر

در این پست می خواهیم به این موضوع بپردازیم که افزایش پایه های میکروکنترلر یا بطور دقیق تر، افزایش خروجی های میکروکنترلر چگونه ممکن است؟

اگر تمرین پست های قبلی(+ +) را انجام داده باشید، تا الان باید بتوانید با کلید، پیکسل یک ردیف مشخص از دات ماتریکس را جابجا کنید. اما در ادامه میخواهیم یک گام فراتر برویم و کاری کنیم که پیکسل روشن ما بتواند در هر جهتی که کاربر میخواهد حرکت کند. قاعدتاً بهتره که کلیدها را به 4 کلید افزایش دهیم و هر کدام  را برای حرکت بالا، پایین، چپ و راست پیکسل مشخص کنیم. از آنجا که می خواهیم بر روی حرکت پیکسل در ردیف های مختلف هم کنترل داشته باشیم، در نتیجه باید هر 16 پایه‌ی دات ماتریکس را کنترل کنیم.

تا اینجای کار اگر تعداد پایه‌های مورد نیاز به عنوان GPIO را حساب کنید، می‌شود 20 عدد. این در حالی است که کل پایه‌های میکروکنترلر به این تعداد هستند و ما 20 عدد GPIO را نمیتوانیم بر روی این میکرو (STM32F030F4P6) داشته باشیم. 

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

خوشبختانه مهندسین قبلاً به حل این مشکل پرداخته اند و این یک مسئله تازه و پیچیده نیست. برای نمونه در تابلوروان های بزرگ هم نیاز به حل چنین موضوعی وجود داشته.

بطور کلی برای افزایش پایه ‌های میکروکنترلر راه‌های متفاوتی پیشنهاد می‌شود. این روش‌ها به 3 دسته تقسیم می‌شوند. افزایش پایه‌های خروجی (GPIO_Output) ، افزایش پایه‌های ورودی (GPIO_Input) و یا هر دو بطور همزمان. بررسی همه‌ی این روش‌ها از حوصله این پست خارج است و ما در اینجا قصد داریم تنها به توضیح افزایش پایه‌ های خروجی میکروکنترلر به کمک شیفت رجیستر 74HC595 بپردازیم. اما با این حال اگر به دنبال بررسی سایر روش‌ها هستید، از بهترین منابع توضیحاتی است که شرکت ST در اپلیکیشن نوت شماره  AN2591 خود داده است.

قبل از خواندن ادامه این مطلب، بهتر است دیتاشیت 74HC595 را از اینترنت بگیرید و سعی کنید نحوه کار کرد آن را متوجه شوید. راه اندازی این آی سی با میکروکنترلر به چیزی بیشتر از آنچه تاکنون یادگرفته اید، نیاز ندارد. به عبارتی تنها کافی است که نحوه خروجی کردن پایه میکروکنترلر را بلد باشید.

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

راه اندازی 74HC595 :

برای راه اندازی این آی سی تنها به سه پایه از میکرو نیاز داریم. به عبارتی با یک عدد 74HC595 می‌توان 3 عدد پایه را گرفت و به 8 پایه خروجی تبدیل کرد. این در حالی است که این آی‌سی‌ها با یکدیگر سری هم می‌شوند بطوریکه با همان 3 پایه می‌توان تعداد بیشتری خروجی گرفت. در اینجا ما 16 خروجی نیاز داریم تا کنترل ردیف و ستون هر پیکسل را داشته باشیم. پس با این حساب با دو عدد 74HC595 که با هم سری شده‌اند می‌توان به این تعداد خروجی دست پیدا کرد.

پایه‌ها Q0 تا Q7 در دیتاشیت تحت عنوان Parallel Output Data نام دارند. این پایه‌ها در واقع 8 خروجی ما هستند. که به نحوی که در ادامه می‌گوییم دیتا ورودی سریال را بر روی خود قرار می‌دهند.

علاوه بر این 8 پایه، پین دیگری به نام ‘Q7 هم هست که در دیتاشیت تحت عنوان Parallel Output Data معرفی شده اما جز خروجی‌های اصلی به حساب نمی‌آید. کاربرد این پایه برای هنگامی است که می‌خواهیم در ادامه آی سی خود یک 754HC595 دیگر را سری کنیم. در این صورت این پایه را به ورودی آیسی بعد که DS یا Data Serial Input نام دارد متصل می‌شود.

علاوه بر پایه DS که برای ورود اطلاعات به آیسی به کار می‌رود، دو پایه SH و ST هم باید به میکروکنترلر وصل شوند.

بعد از آنکه یک بیت از دیتای مد نظرمان را بر روی DS قرار دادیم، به پایه SH یک پالس می‌دهیم. با این کار مقدار شیفت رجیستر این آیسی یک واحد شیفت می‌خورد و  DS به عنوان آخرین بیت وارد آن می‌شود. پس از آنکه این کار را برای کل بیت‌های مدنظرمان انجام دادیم وقت آن می‌رسد که آن‌ها را بر روی خروجی بیاوریم. این کار با دادن یک پالس به پایه ST صورت می‌گیرد.

اگر دیتاشیت را نگاه کنید متوجه می‌شوید که پالس مدنظر ما باید از نوع بالارونده یا بعبارتی پالسی که وضعیتش از صفر به یک دیجیتال تغییر می‌کند، باشد.

به غیر پایه‎های GND و VCC، دو پایه MR و OE باقی مانده. پایه MR یا Master Reset در صورتی که صفر باشد، تنها بایت شیفت رجیستر آیسی را صفر می‌کند. پس بطور عادی باید آن را به VCC وصل کنیم و حداقل در اینجا نیازی نیست که با میکروکنترلر به آن فرمان دهیم.

پایه OE هم اگر صفر باشد، خروجی ما فعال می‌شود. پس در نتیجه بر عکس پایه MR این پایه باید دائماً به GND وصل باشد تا بتوانیم اطلاعات خود را بر روی پایه‌ها بیاوریم.

توضیحات بالا شاید در ابتدا کمی گنگ به نظر برسد. نگران نباشید. دوباره آن‌ها را مرور کنید و سپس هر آنچه که از آن فهمیده‌اید را با جدول Function Table دیتاشیت مطابقت دهید. سعی کنید همه‌ی حالات گفته شده در این جدول را تحلیل کنید.

تا اینجای کار امیدوارم نحوه کارکرد 74HC595 را متوجه شده باشید. اگر هنوز در این مورد شک دارید کار با این آیسی را گوگل کنید. از آنجا که این آیسی بسیار پرکاربرد و متداول است، مطالب خوبیمثلاً این پست- برای توضیح آن می‌توانید پیدا کنید.

خبرنامه هفتگیِ دیجیلاگیست

سلام

دوشنبه هر هفته، یک ایمیل از طرف دیجیلاگیست برای کسانی که آدرس ایمیل خودشون رو ثبت کردن ارسال میشه و توی اون در خصوص آخرین مطالب و اخبار دیجیلاگیست گزارش داده میشه.

اگه شما هم دوست داری این خبرنامه براتون ارسال بشه، تو کادر زیر آدرس ایمیل خودتون رو وارد کنید و دکمه "مشترک شوید!" را بزنید.

اشتراک شما ایجاد شد

3
Leave a Reply

2 Comment threads
1 Thread replies
1 Followers
 
Most reacted comment
Hottest comment thread
3 Comment authors
  Subscribe  
newest oldest most voted
Notify of
سروش

دست شما دردنکند توضیحات عالی است و لطفا ادامه دهید .

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